《迅雷链精品课》第八课:迅雷链多链结构
上一节课我们学习了以太坊数据存储的相关内容,今天我们深入学习迅雷链的多链结构。通过这节课我们将了解迅雷链和主流区块链的特性,了解单链和多链各自的优缺点。
第八课 迅雷链多链结构
主流区块链单链的缺陷
单节点数据量大
比特币、以太坊、EOS 等主流区块链都是以单链形式存储所有数据,区别只是存储的数据格式和内容有差异。就如现实业务场景中用 mysql 在一台服务器存储数据一样,这样的存储方式受限于单节点的存储容量,也影响到新加入节点的接入成本。首先看一下比特币和以太坊区块链当前节点存储的数据量(注:图表和数据来源于互联网):
图 1 (源自:https://www.statista.com/statistics/647523/worldwide-bitcoin-blockchain-size/)
比特币区块链不同阶段区块链数据变化情况如图 1 所示,截至 2020 年第三季度数据量已经达到 300Gb,每季度这一数字增长大约 12Gb。
图 2 (源自:https://cn.etherscan.com/chartsync/chaindefault)
以太坊区块链不同阶段区块链数据变化情况如图 2 所示,截至 2020 年第三季度数据量已经达到 502Gb,每季度这一数字增长大约 100Gb。
随着区块链在日常生活中运用的越来越频繁,参与的用户越来越多,相信比特币和以太坊等这类型公链的单节点数据存储量会以更快的速率增长。这种随时间不断快速增长的数据对于单节点来说是不可持续的,面对扩容只是时间早晚的问题。同时新加入的一个节点,在同步区块的时间上越来越长,也需要考虑存储容量问题,所以无形之中增加了接入成本。
数据入链效率低
主流区块链所有数据都围绕着一条主链,而且以区块构成的链式结构具有严格的先后顺序,所以大量的用户数据在这些链上是按照一定的顺序打包入链的,不存在并行打包的情况。在打包区块非常快的情况下,瓶颈就在一个区块可以打包多少数据;否则打包区块太慢本身就是瓶颈。就如以太坊公链上某一个游戏合约,大量的合约数据未能及时入链,导致后续用户数据上链的手续费涨的非常高。在公链不断升级优化的情况下,数据的入链效率会有很大的提高,但要支撑日常的业务数据而且面向全球用户,单链也会遇到非常大的挑战。
迅雷链多链结构
迅雷链在设计初期充分研究了当前区块链公链的优势与缺陷,同时结合迅雷链的发展方向和定位,设计了当前业界领先的同构多链,支持平行扩展的架构。同构多链即系统由一条条相对独立(独立进行共识)的链组成,每条链有多个节点,不同的账户数据和业务数据分布在不同的链上,接入层将请求路由到发送方所在的链上进行区块打包与共识,所以提高了整体的数据入链效率和并发数;支持可平行扩展即系统中链的数量能够按业务需求动态增加,这也为大部分需要使用区块链的业务场景提供了一个高可用的基础平台。图 3 所示为迅雷链多链架构简化图:
图 3 迅雷链多链架构简化图
备注:
CHAIN 表示单条区块链;
AccessServer 是接入服务兼路由转发;
Peer 是非记账节点,它负责接收用户请求和验证数据有效性,同时广播给记账节点;
Validator 是记账节点,达成共识和产生区块;
(图中绿色线条表示数据流走向)
数据入链流程:
1. 客户端将请求发到迅雷链接入层;
2. 接入层首先会对请求做部分验证,针对非法的请求直接返回失败,有效的请求根据 from(发起方)地址路由到分区链的 peer 节点;
3. peer 节点先针对请求做严格数据验证,包括签名、账户信息等,验证成功的数据会在本链中广播,否则直接返回失败并删除数据;
4. validator 收到待打包数据,同样先验证一次数据的有效性,然后按照共识算法打包数据并对新产生的区块进行投票。在所有 validator 节点达成共识之后,新的区块入链,链中其他节点也都会同步最新入链的区块到本地;
5. 链间通信服务监听到一个新的区块,就针对区块中的每一条数据,验证 to(接收方)地址是不是在本链,如果在本链则不处理;否则按照链间通信协议将该数据转发到目标分区链;
6. 目标分区链收到跨链数据,首先要验证数据有效性,验证的信息包括该数据在源链所属区块的区块头信息,验证人投票信息,merkle proof 信息,to 地址等。如果验证通过,则在目录分区链广播数据,并按正常流程打包入链;
7. 目标分区链的链接通信服务监听到新的区块,同样会针对块中的每一笔数据进行处理, 如果 to 地址不再本链就进行转发;如果 to 地址是本链但又是跨链数据,则通过链间通信协议将数据执行结果返回源链。
多链并发执行
多链顾名思义就是多条区块链,属于不同链上的数据可以并行打包入链。拿电站水闸举例来说,原来是一个闸门放水,现在开了十个闸门,那么整个电站的放水量在不考虑上游水量的情况下扩大了 10 倍。同样的,多链结构的区块链同时多个区块打包数据并行落盘存储,在单位时间内,上链的数据量扩大了多倍,降低了数据入链的延迟,而且降低了因为排队导致数据入链手续费上涨情况发生的概率。
同时迅雷链使用 DPoA+PBFT 共识算法。迅雷链的 DPoA 按验证人节点的存储容量、网络稳定性、带宽、时延、CPU 使用率等指标作为衡量标准来选择投票节点,并定期随机更换,以获得更好的公平性和网络效率;PBFT 是一种基于严格数学证明的强一致性算法,经过多阶段的信息交互最终达成共识,只要系统中有三分之二以上的诚实节点,就能保证最终达成共识且没有分叉,所以出块效率比 POW、POS、DPOS 等共识算法快。
迅雷链的目标就是要赋能于实体经济,对接各种业务场景数据,为企业和个人搭建一个高效的区块链平台,所以在数据上链的效率方面一直非常重视。从大规模,高并发的场景出发,区块链基础平台如果在体验方面明显感觉比传统中心化存储更慢,那么普通用户就很难接受,企业把业务迁移到区块链平台的意愿也就很低,所以多链的结构在支撑业务发展方面具有一定的优势。
链间通信
链间通信是迅雷链多链结构中非常复杂的服务,没有链间通信,多链结构只能算是多条独立的区块链,无法组成一个整体,更成为不了区块链基础平台。链间通信协议严格遵循了区块链本身对数据可信和防篡改的要求,规范了链与链之间的数据交换标准。
在迅雷链平台上,链间通信最多数据的就是跨链数据。用户数据和业务数据分布在不同链上,免不了会有一个请求相关的 from 和 to 在不同链上,那么为了请求能正确执行,就涉及到跨链执行请求。在传统分库分表的业务逻辑处理中,跨库或者跨表的操作虽然比较复杂,但在区块链流程中跨链数据处理起来更复杂,因为这个过程中要解决可信和共识的问题。
针对一笔需要处理的跨链请求,数据在 from 地址所在链(后续简称 from 链)打包之后,该数据要发到 to 地址所在链(后续简称 to 链)继续处理。在 to 链上的节点需要验证这条数据的签名以及是不是本链的数据,其次要验证在 from 链入块的区块头和验证人签名,然后还要验证跨链请求的 merkle proof,最后跨链请求在 to 链入块之后,还需要给 from 链反馈处理结果,如果 from 链长时间没有反馈结果,还需要重复发送该请求。
单节点数据量低
迅雷链的同构多链架构设计,相比一条主链来说,业务数据被分散了,每条链只存储部分数据,这样对于每条链上的每个节点来说,数据存储量和增长率相比以太坊和比特币节点,降低了非常多。当然有人会说迅雷链的单链也会遇到单点存储量大的问题,只是相对来说会需要更长的时间,其实迅雷链平行扩展的特性是可以解决这个问题的。如果某些链的数据增长很快,可以针对这些单链平行扩展出多条链,即缓解了数据存储量大的问题,还能提高原链的并发数。
单节点的区块链数据不是很大,就有利于新节点的接入,因为无论是同步历史区块数据的时间成本,还是硬件资源的投入成本都非常低。区块链需要能稳定的运行,无间断的提供服务,是需要很多节点来参与的,否则当节点数很少时,区块链的可用性就会受到威胁。
业务数据可分离
在迅雷链上,用户数据和业务数据分布在不同的单链上,单链与单链之间没有直接的关联关系,所以不同业务的数据其实是分离的。数据分离的好处就是一个单链上的节点只能看到属于它这条链上的数据,其他链上的数据一定程度上是看不到的。比如两家不同性质的企业,他们更关心的是自己公司相关的数据,所以能看到自己业务所在的单链数据是第一需求,那么他们只要作为一个节点加入这条单链,就可以看到所有与自身业务相关的数据。在这个过程中,无关的数据比较少,而且数据量不大,使用方便快捷。
其实业务数据分离再进一步发展,可以实现在区块链上的隐私数据保护。隐私保护也是区块链当前积极探讨的一个话题,无论是个人还是企业都有这方面的需求。
小结
以区块链作为解决方案逐渐被各行业理解和接受,因为它确实为企业或者行业提高了效能,降低了成本。然而区块链正在快速发展和技术升级过程中,在业务和技术的驱动下会出现具有行业特色、成熟的区块链架构和解决方案。虽然单链有其比较明显的缺陷,但在个别业务场景下(如金融行业)还是比其它区块链更适合。所以不同业务场景,应该从需求与成本等方面选择不同的区块链架构以及共识算法。
*恭喜完成第八课的学习,第九课我们将学习区块链技术与 P2P 网络的结合,欢迎关注~
版权声明: 本文为 InfoQ 作者【迅雷链】的原创文章。
原文链接:【http://xie.infoq.cn/article/d772efa1251a5b8daf0782ea1】。文章转载请联系作者。
评论