近日,BUMO 发布Oribts多链技术MVP版本,该技术可大幅提高公链的扩展性和性能并突破“不可能三角”,所谓的区块链“不可能三角”,也称为“三元悖论”,就是指区块链网络无论采用哪种共识机制来决定新区块的生成方式,皆无法同时兼顾扩展性(Scability)、安全性(Security)、去中心(Decentralization)这三项要求,至多只能三者取其二。
(不可能三角示意图)
BUMO发布的Oribts对用户十分友好,用户只需要填写几个关键参数,即可便捷灵活的创建一条安全可靠的BUMO子链。实际测试中,BUMO创建3000条子链,TPS可突破百万,其性能和扩展性已经处于全球领先水平。
(BUMO Orbits架构图)
BUMO Orbits在提升扩展性的同时,还可极大提升公链的性能。BUMO多链依据网络ID将主链扩展至多个子链,每一个子链只需要运行该子链的共识协议,网络上的交易可以分散到子链中来进行处理。因此子链越多,就有越多的交易同时被处理和验证。通过这种平行处理的方式,将大任务拆分成多个可并行处理小任务,BUMO多链有效提升整体网络性能。
BUMO多链除了实现性能和可扩展性的提升,也在其它很多方面取得了很多技术突破:a、共识方面采用多链隔离共识的方式,有效避免不同链共识相互影响。
b、P2P通信方面对Gossip协议进行了有效的改进,大幅度减少了不同链之间的消息冗余。
c、节点方面提出了观察者角色,观察能够准确的识别子链节点做恶,有效的提升了子链的安全。
d、激励机制,主链验证节点不仅可以去参与主链的的挖矿也能去子链挖矿,这样验证节点不仅可以获得主链的奖励也可以获得子链的收益。
目前主流的扩容技术方案按照层次分可以分成3层:
(扩容分层图)
Layer 0:该层也叫数据传输层可扩展方案,主要解决优化网络传输速度,减少网络延时。目前有BDN分发、组播锁定组、QUIC UDP 协议等。
Layer 1:这层主要是对链本身做改变,主要是通过网络层、数据层、共识层去改变链本身的特性,目前在这层的技术有隔离见证、分片、DAG等技术。
Layer 2:Layer2也叫链下扩展,构建在BUMO主链上。它们不要求对基层协议的更改,相反的,它们只是以BUMO智能合约的形式存在,与链下软件进行交互。目前的解决方案有状态通道、主子链技术、侧链等。
BUMO对以上三层扩容技术方案都经过深入的研究,最终采用Layer2主子链技术。原因在于:Layer0 可以很好的改善网络传输问题,但是对于公链的tps来说改变的只是微小甚微。Layer1 的分片和DAG的方式需要对公链底层做大修改,会带来很多潜在的问题,目前来看分片和DAG等技术虽然也有很多项目,到现在为止大部分还处于研究阶段,能够上poc测试的用例都还没有,还不太成熟。Layer2,BUMO为什么选择主子链技术不选状态通道呢?由于状态通道过于中心化,安全性还得不到太多保障。
经过上述的研究和考量,bumo多链有以下特性:
安全性高:子链的安全可以借助于主链安全得到保证,子链不要部署很多节点,这样不仅提升了安全也节约了资源。
扩展性高:理论上可以无限扩展子链,且每条子链都是一个独立的生态系统,通过BU关联,具有极强扩展性。
性能高:子链扩展后独立执行,且相互之间性能不会影响,性能成线性增长。
按照互联网正常带宽中位数13Mbps为例,子链构成每笔交易实际大小为0.5k,则一个区块打包一万笔交易大小为5MB,理论吞吐量极限最大值为31200TPS(10000TPS × 13Mbps / 5Mb × 10s),实际测量的情况可以由下图反应,当子链的条数挂载20条的时候tps达到了66532,挂载300条子链的时候达到了904256,一直到挂载3000条子链的时候达到了峰值9398623,达到3000后再增加链的条数tps反而有所下降。从下图测试数据可以说明我们的子链挂载条数在3000这个极值范围,TPS大概能够突破900万,超过3000条子链整个网络就不会太稳定。
隔离性:对于不同的业务场景可以构建不同子链,有效对不同数据进行了隔离。如果子链出现了问题也不会影响其它子链的运行。
三、如何搭建一条属于自己的子链
BUMO多链具备上述这么多优势,相信会有非常多开发者想尝试构建一条自己的子链,以下就为BUMO开发者提供构建子链的方式。
在BUMO上搭建子链非常简单便捷,开发者需要在主链上进行注册,缴纳消费金(一定数量的BU,用于子链向主链提交区块头信息所消耗的手续费),并把自己的子链节点加入到主链,这样就构建了一条子链。
(开发者自主搭建子链示意图)
上述是对BUMO多链技术的简单介绍,如果想要详细了解BUMO多链提供的功能,欢迎去Demo演示环境(地址:https://multichain.bumo.io/)体验。假如你是开发者,对区块链技术有非常深的理解,欢迎研究我们多链源码(地址:https://github.com/bumoproject/bumo/tree/feature/multichain)。