最近研究了一下Bloxroute这个项目,算是扩容方案里面比较独特的,其参考了互联网时代的CDN的思路,它基本没有动共识相关的东西,而是重新构建了一个中心化的网络,通过一定的技术来加速整个区块的传播,可扩展性和性能提升非常不错,整个技术方案也非常有意思。
区块链分发网络
Bloxroute通过在全球部署服务器构造了一个高吞吐,低延时的网络,这个网络中的服务器被称为中继,这个网络经过优化,可以快速的传播区块链中的交易和区块。为了让区块链的节点和这个网络通讯,还开发了一套网关软件,可以让区块链中的消息和BDN的协议进行交互。具体如下图所示:
网络中的角色
Beosin:Thoreum Finance项目被黑客攻击,被盗资金约58万美元:金色财经报道,据Beosin EagleEye 安全预警与监控平台检测显示,Thoreum Finance项目被黑客攻击,涉及金额约为58万美元。由于ThoreumFinance项目方创建的未开源合约0x79fe的transfer函数疑似存在漏洞,当transfer函数的from和to地址相同时,由于使用临时变量存储余额,导致给自己转账时,余额会成倍增加,攻击者重复操作多次,最终获利2000BNB。
Beosin安全团队通过Beosin Trace进行追踪,发现被盗资金已全部转入tornado cash。[2023/1/19 11:21:19]
在整个BDN网络中分为多种角色:
1、网关
2、中继
EOS在5分钟内涨幅超过2.50%:据火币全球站数据显示,EOS/USDT在5分钟内出现剧烈波动,涨超2.50%,达到2.50%。当前报价为 3.03 美元,行情波动较大,请注意风险控制。[2020/7/29]
3、控制平面
4、远程区块链节点
网关:
网关是一种可以将你的区块链全节点连接到BDN的应用程序,网关可以比区块链的P2P网络更快的将区块和交易传输到你的全节点。对于与网关相连的区块链全节点来说,网关是透明的,就像另外一个节点一样,但是因为网关不保存区块链的状态,所以网关需要远程的区块链节点来响应节点的请求。
当开启网关后,用户需要指定一个IP,然后网关连接到控制平面,并提供它的IP,控制平面根据网关提供的IP的地理位置,返回一组最接近网关的中继服务器列表,并通过ping来确认最低延时的中继服务器,从而提高传输的效率。
声音 | EOS社区:出块节点开始测试EOS VM 性能大幅提升:今日EOS NewYork发推表示出块节点们陆续开始测试EOS VM, 这仅是近期发布的EOSIO 2.0众多新功能之一。 初始数据显示,CPU性能比当前EOS主网上最快的BP提升了5倍,较主网刚上线时的版本提升近60倍。[2020/1/21]
中继:
中继是组成BDN的骨干,中继服务器遍布世界各地,给各地的区块链节点提供更快的传输服务。
为了提高传输效率,分别设计了两种中继——交易中继和区块中继,分别传输区块链中的交易和区块,这样设计可以保证,交易和区块的传输互不影响。
交易中继和区块中继虽然逻辑上是分离的,但是物理上可以在同一台机器上,通过不同的端口来提供交易和区块的传输服务
控制平面:
行情 | EOS 出现剧烈波动:据Binance数据显示,下跌: EOS 现报价1.69美元,5分钟变化超过$0.04,波动较大,请做好风险控制[2018/12/7]
控制平面主要负责给连接进BDN的网关,提供最低延时的中继服务器
远程区块链节点:
网关在跟全节点进行通讯的时候,使用的是区块链原生的P2P协议,但是因为他们并不是全节点,他们无法完成一些全节点的功能,比如验证某个区块是否合法,这个时候如果跟它联通的节点向网关请求信息是无法响应的,所以需要部署一些远程区块链节点来帮助网关响应正常的区块链请求。
从整个设计中,我看到了高端路由的设计方式,也就是控制平面和数据平面的思想,这当然跟团队本身就是搞网络出身相关。
EOS启动进行时:快照验证仍在继续,不存在创世区块分叉的情况:据IMEOS消息,EOS主网启动团队仍在全力进行快照验证中,其中来自EOS Cafe、eosDAC的快照文件已经确认。目前还未正式进入启动阶段,不存在EOS创世块分叉的情况。EOS主网启动团队将经历快照验证、启动、检验、投票几个阶段,主网上线过程可能将维持几天。[2018/6/3]
通过这四个角色搭建的一套网络,可以从地理位置上分配更近,延迟更低的服务器来进行区块的传播,从而达到了提升性能的目的。当然这只是从网络拓扑本身来提高性能,其实Bloxroute还从其他方面来进一步提升传输的性能。
高性能和可扩展性的关键
除了网络拓扑优化之外,Bloxroute还使用了基于交易索引的区块压缩技术和直通路由技术来提升性能。
基于交易索引的区块压缩技术
我们知道在区块链中,每笔交易产生后会先进入一个交易池中,然后通过P2P网络进行扩散,进入每个节点的交易池中,然后等待被矿工打包。在Bloxroute的方案中,当未验证的交易被传输到中继后,会生成一个唯一的shortID和这笔交易对应,然后再将这个sID和交易一起传播到其他的中继中,再由中继将这个交易索引对同步到和其相连的其他网关中,具体流程如图所示:
经过这一轮传播后,所有的网关里面都包含了交易和交易的索引,这个时候它还不能发挥作用,需要等到矿工挖出区块才行。
我们知道矿工经过POW竞争后,将未确认的交易包含在区块中,并进行传播,当矿工将它新的区块发送给网关后,网关会根据交易和交易索引表,将区块中的交易部分全部替换成索引,因为交易索引一般只是4个字节的容量,所以这样替换一下子将区块的大小缩减了很多,从而达到扩容的目的。
然后网关会讲压缩的块传播到中继,并进一步传播到其他的网关,这个时候网关需要将压缩后的区块进行还原,首先它会根据索引来查找自己的高速缓存,如果不巧没有找到,它会去请求连接的网关进行还原,如果还是还原不了,则它会直接丢弃这个压缩的区块。如果成功还原压缩的区块,网关就会将还原后的区块传输给和它相连的全节点。
Bloxroute的交易压缩是非常出彩的部分,本身在整个区块中,区块头只占非常小的部分,而区块体中的交易占大头,在区块链本身的P2P网络中非常难压缩,因为还涉及到区块和交易验证的问题,而在BDN中完全不需要管这些东西,只要交易和交易索引的对应关系不要搞错,可以非常方便的进行压缩。
直通路由技术
在区块链的P2P网络中,任何区块在传播之前都需要验证它的有效性,所以每个节点必须接受该区块的全部信息,然后验证完后才能传播给下一个节点。而在BDN中不需要验证区块的有效性,所以当中继接受到一个区块的网络包后,它不需要等待其他网络包到来组成一个完整的区块,而是立即将这个包传输到下一个中继或者网关去,从而提升了传输的效率。
我们可以看到图中,中继没有等到区块全部接收到后在传播,而是接收一部分后就立即传播了。
结尾
Bloxroute使用了非常精妙的手段进行了扩容,对区块链的入侵性小,可扩展性高,提升了非常多性能,但好的技术也需要市场推动,我们对这个项目拭目以待。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。