首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链技术之间的框架与层级

今天我将为你梳理区块链各个技术之间的关系框架与层级,让你能够更加直观的掌握区块链的技术精髓。

一、区块链平台架构

系统架构决定了应用的适用范围、跨链及链上链下的数据整合的可行性,甚至商业变革的方向。因此,各平台架构的升级理念,无不体现平台对于区块链技术和商业模式的理解。

传统区块链倾向于把架构分为数据层、网络层、共识层、激励层、合约层、应用层。

区块链平台架构示例

数据层

封装了底层数据区块的链式结构、相关非对称公私钥数据加密技术和时间戳技术的可追加、不可更改的分布式数据库系统,做为分布式账本的形式存在。

网络层

建立在IP通信协议和P2P网络的基础上,包括分布式组网机制、数据传播机制和数据验证机制。

共识层

封装网络节点的各类共识机制算法。

激励层

集成经济因素,主要在公有链中用到。

合约层

封装各类脚本、算法和智能合约,是可编程特性的基础。

应用层

封装了区块链的各种应用场景和案例,提供可编程环境、通过智能合约将业务规则转化成平台自动执行的合约。

二、区块链核心技术组件

1、支撑技术

哈希函数

哈希函数在比特币系统中也有着重要的应用,区块链中的数据并不只是原始数据或者交易记录,还包括它们的哈希函数值,即将原始数据编码为特定长度的、由数字和字母组成的字符串后,记入区块链。

Merkle树

Merkle树是数据结构中的一种树,可以是二叉树,也可以是多叉树,它具有树结构的所有特点。

P2P网络

P2P网络(peer-to-peer network,对等网络)是一种在对等者(peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。

分布式数据库

比特币系统中的区块就像一个记账本一样,记录了所有比特币的交易信息,每一个比特币用户的比特币收支情况都被永久地嵌入了数据区块中以供别人查询。这些数据区块中的交易数据存放在每一个比特币用户的客户端节点中,所有的这些节点则组成了比特币及其坚韧的分布式数据库系统。任何一个节点的数据被破坏都不会影响整个数据库的正常运转,因为其他的健康节点中都保存了完整的数据库

数字签名

数字签名就是在信息后面加上另一段内容,作为发送者的证明并且证明信息没有被篡改。一般是发送者将信息用哈希算法处理得出一个哈希值,然后用私钥对该哈希值进行加密,得出一个签名。然后发送者再将信息和签名一起发送给接收者。接收者使用发送者的公钥对签名进行解密,还原出哈希值,再通过哈希算法来验证信息的哈希值和解密签名还原出来的哈希值是否一致,从而可以鉴定信息是否来自发送者或验证信息是否被篡改。

加密算法

除了哈希算法以外,比特币中还存在一种为交易加密的非对称加密算法(椭圆曲线加密算法)。非对称加密算法指的就是存在一对数学相关的密钥,使用其中一个密钥进行加密的数据信息,只有使用另一个密钥才能对该信息进行解密。这对密钥中,对外公开的密钥叫作公钥,不公开的密钥就叫作私钥。

2、应用技术

挖矿与分叉问题

区块在挖矿过程中产生。所谓挖矿,实际上是穷举随机数算法,把上个区块的哈希值加上10分钟内的全部交易单打包,再加上一个随机数,算出一个256位的字符串哈希值,输入的随机数Nonce使哈希值满足一定条件就获得这个区块的交易记账权。新产生的区块需要快速广播出去,以便其他节点进行对其验证,以防造假。每个区块存着上一个区块的哈希值,可以溯源到源头,只有经过验证后才最终获得区块的交易记账权。

时间戳和不可篡改性

时间戳是指从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,通常是一个字符序列,唯一地标识某一刻的时间。在比特币系统中,获得记账权的节点在链接区块时需要在区块头中加盖时间戳,用于记录当前区块数据的写入时间。每一个随后区块中的时间戳都会对前一个时间戳进行增强,形成一个时间递增的链条。时间戳技术本身并没有多复杂,但在区块链技术中应用时间戳却是一个重大创新,时间戳为未来基于区块链的互联网和大数据增加了一个时间维度,使得数据更容易追溯,重现历史也成为可能。同时,时间戳可以作为存在性证明(Proof of Existence)的重要参数,它能够证实特定数据必然在某特定时刻是的确存在的,这保证了区块链数据库是不可篡改和不可伪造的,这也为区块链技术应用于公证、知识产权注册等时间敏感领域提供了可能。

避免双重支付

区块链技术通过区块链接形成的时间戳技术加上验证比特币是否满足UTXO(未花费交易)和数字签名,有效避免了双重支付的问题。

比特币的隐私模型

在比特币的隐私模型中,所有的交易不需要第三方的操控,也不需要提供任何身份信息,只需要提供比特币的地址就可以跟任何人完成一次准匿名的交易。

共识机制

没有中心控制的情况下,在互相没有信任基础的个体之间就交易的合法性等达成共识的共识机制。

主要共识机制对比

PoW 工作量证明(Proof of Work)

例如比特币的挖矿机制。

优点:

完全去中心化,节点自由进出,避免了建立和维护中心化信用机构的成本。只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致。

缺点:

目前比特币挖矿造成大量的资源浪费;另外挖矿的激励机制也造成矿池算力的高度集中,背离了当初去中心化设计的初衷。更大的问题是PoW机制的共识达成的周期较长,每秒只能最多做7笔交易,不适合商业应用。

PoS权益证明

要求节点提供拥有一定数量的代币证明来获取竞争区块链记账权的一种分布式共识机制。

优点:

在一定程度上缩短了共识达成的时间,降低了PoW机制的资源浪费。

缺点:

破坏者对网络攻击的成本低,网络的安全性有待验证。另外拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性。

DPoS 股份授权证明

持股者投票选出一定数量的见证人,每个见证人按序有两秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一个时间片对应的见证人。持股人可以随时通过投票更换这些见证人。

优点:

大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。

缺点:

选举固定数量的见证人作为记账候选人有可能不适合于完全去中心化的场景。另外在网络节点数少的场景,选举的见证人的代表性也不强。

分布式一致性算法

基于传统的分布式一致性技术。其中有分为解决拜占庭将军问题的拜占庭容错算法,如PBFT。另外解决非拜占庭问题的分布式一致性算法(Pasox、Raft)

优点:

实现秒级的快速共识机制,保证一致性。

缺点:

去中心化程度不如公有链上的共识机制;更适合多方参与的多中心商业模式。

区块链的链接模型

区块链即由一个个区块组成的链。每个区块分为区块头和区块体(含交易数据)两个部分。区块头包括用来实现区块链接的前一区块的哈希(PrevHash)值(又称散列值)和用于计算挖矿难度的随机数(nonce)。前一区块的哈希值实际是上一个区块头部的哈希值,而计算随机数规则决定了哪个矿工可以获得记录区块的权力。

数据区块

以比特币为例,比特币的交易记录会保存在数据区块之中,比特币系统中大约每10分钟会产生一个区块,每个数据区块一般包含区块头(Header)和区块体(Body)两部分。

UTXO交易模式

UTXO(Unspent Transaction Outputs)是未花费的交易输出,它是比特币交易过程中的基本单位。

它是比特币交易生成及验证的一个核心概念。交易构成了一组链式结构,所有合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。所有的未花费的输出即整个比特币网络的UTXO。

三、区块链可编程规则

解锁脚本

脚本是区块链上实现自动验证、自动执行合约的重要技术。每一笔交易的每一项输出严格意义上并不是指向一个地址,而是指向一个脚本。脚本类似一套规则,它约束着接收方怎样才能花掉这个输出上锁定的资产。

交易规则

用于规范交易过程中的原则。

交易优先级

区块链交易的优先级由区块链协议规则决定。

对于比特币而言,交易被区块包含的优先次序由交易广播到网络上的时间和交易额的大小决定。随着交易广播到网络上的时间的增长,交易的链龄增加,交易的优先级就被提高,最终会被区块包含。

对于以太坊而言,交易的优先级还与交易的发布者愿意支付的交易费用有关,发布者愿意支付的交易费用越高,交易被包含进区块的优先级就越高。

Merkle证明

比特币区块链使用了Merkle证明,为的是将交易存储在每一个区块中。使得交易不能被篡改,同时也容易验证交易是否包含在一个特定区块中。同时还可以用于快速支付验证。

RLP

RLP(Recursive Length Prefix,递归长度前缀编码)是Ethereum中对象序列化的一个主要编码方式,其目的是对任意嵌套的二进制数据的序列进行编码。

四、区块链的交易流程

区块链的交易并不是通常意义上的一手交钱一手交货的交易,而是转账。

如果每一笔转账都需要构造一笔交易数据会比较笨拙,为了使得价值易于组合与分割,比特币的交易被设计为可以纳入多个输入输出,即一笔交易可以转账给多个人。

1、交易的生成

当前所有者利用私钥对前一次交易和下一位所有者签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。

2、交易的传播

当前所有者将交易单广播至全网,每个节点都将收到的交易纳入一个区块中。

3、工作量证明

每个节点通过相当于解一道数学题的工作量证明机制,从而获得创建新区块的权力,并争取得到数字货币的奖励。

4、整个网络节点的验证

当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳的交易,并由全网其他节点核对。

5、记录到区块链

全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。

五、技术特点

1、分布式、去中心化

由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。

2、时序数据

采用带有时间戳的链式区块结构存储数据,从而为数据增加了时间维度,具有极强的可追溯性及可验证性。

3、集体维护

采用特定机制保证分布式系统中所有节点均可参与数据块的验证过程,并通过共识算法选点特点节点将新区块添加到区块链。

4、可编程

可提供灵活的脚本代码系统,支持用户创建高级的去中心化应用。

5、安全性高

不需要第三方的进入,而是通过一个技术来达到,先前预定的一个技术来达到整个交易的完成。

6、自治性

区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。

7、不可篡改

一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。

8、开放性

系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。

9、匿名性

由于节点和节点之间是无需互相信任的,因此节点和节点之间无需公开身份,在系统中的每个参与的节点都是匿名的。

总结一下:

1、区块链具有分布式、去中心化,时序数据,集体维护,可编程,安全性高,自治性,不可篡改,开放性,匿名性的特点。

2、传统区块链架构分为数据层、网络层、共识层、激励层、合约层、应用层。

3、区块链核心技术组件包括支持技术:哈希函数、Merkle树、P2P网络、分布式数据库、数字签名、加密算法;应用技术:挖矿与分叉问题、时间戳和不可篡改性、避免双重支付、比特币的隐私模型、共识机制、区块链的链接模型、数据区块、UTXO交易模式。

注:区块链Beat社区开始正式组建,仅限区块链投资投行人士及货币交易所人士加入本群,可在公众号留言您的微信号,本人通过加您的微信号将您拉入区块链相关社群;

免责声明:本公众号所有文(报告)基于已公开的资料信息或受访人提供的信息撰写,但区块链Beta及文章作者不保证该等信息资料的完整性、准确性。在任何情况下,本文(报告)中的信息或所表述的意见均不构成对任何人的投资建议。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180521G00V4W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券