首页 >  区块链项目 >  正文
Layer0层扩容,做区块链的CDN
发布日期:2019-11-29

最近研究了一下Bloxroute这个项目,算是扩容方案里面比较独特的,其参考了互联网时代的CDN的思路,它基本没有动共识相关的东西,而是重新构建了一个中心化的网络,通过一定的技术来加速整个区块的传播,可扩展性和性能提升非常不错,整个技术方案也非常有意思。

区块链分发网络

Bloxroute通过在全球部署服务器构造了一个高吞吐,低延时的网络,这个网络中的服务器被称为中继,这个网络经过优化,可以快速的传播区块链中的交易和区块。为了让区块链的节点和这个网络通讯,还开发了一套网关软件,可以让区块链中的消息和BDN的协议进行交互。具体如下图所示:

Layer0层扩容,做区块链的CDN

网络中的角色

在整个BDN网络中分为多种角色:

1、网关

2、中继(交易中继和区块中继)

3、控制平面

4、远程区块链节点

网关:

网关是一种可以将你的区块链全节点连接到BDN的应用程序,网关可以比区块链的P2P网络更快的将区块和交易传输到你的全节点。对于与网关相连的区块链全节点来说,网关是透明的,就像另外一个节点一样,但是因为网关不保存区块链的状态,所以网关需要远程的区块链节点来响应节点的请求。

当开启网关后,用户需要指定一个IP,然后网关连接到控制平面,并提供它的IP,控制平面根据网关提供的IP的地理位置,返回一组最接近网关的中继服务器列表,并通过ping来确认最低延时的中继服务器,从而提高传输的效率。

中继:

中继是组成BDN的骨干,中继服务器遍布世界各地,给各地的区块链节点提供更快的传输服务。

为了提高传输效率,分别设计了两种中继——交易中继和区块中继,分别传输区块链中的交易和区块,这样设计可以保证,交易和区块的传输互不影响。

交易中继和区块中继虽然逻辑上是分离的,但是物理上可以在同一台机器上,通过不同的端口来提供交易和区块的传输服务

控制平面:

控制平面主要负责给连接进BDN的网关,提供最低延时的中继服务器(根据地理位置信息)

Layer0层扩容,做区块链的CDN

远程区块链节点:

网关在跟全节点进行通讯的时候,使用的是区块链原生的P2P协议,但是因为他们并不是全节点,他们无法完成一些全节点的功能,比如验证某个区块是否合法,这个时候如果跟它联通的节点向网关请求信息是无法响应的,所以需要部署一些远程区块链节点来帮助网关响应正常的区块链请求。

从整个设计中,我看到了高端路由的设计方式,也就是控制平面和数据平面的思想,这当然跟团队本身就是搞网络出身相关。

通过这四个角色搭建的一套网络,可以从地理位置上分配更近,延迟更低的服务器来进行区块的传播,从而达到了提升性能的目的。当然这只是从网络拓扑本身来提高性能,其实Bloxroute还从其他方面来进一步提升传输的性能。

高性能和可扩展性的关键

除了网络拓扑优化之外,Bloxroute还使用了基于交易索引的区块压缩技术和直通路由技术来提升性能。

基于交易索引的区块压缩技术

我们知道在区块链中,每笔交易产生后会先进入一个交易池中,然后通过P2P网络进行扩散,进入每个节点的交易池中,然后等待被矿工打包。在Bloxroute的方案中,当未验证的交易被传输到中继后,会生成一个唯一的short ID(交易索引)和这笔交易对应,然后再将这个sID和交易一起传播到其他的中继中,再由中继将这个交易索引对同步到和其相连的其他网关中,具体流程如图所示:

Layer0层扩容,做区块链的CDN

Layer0层扩容,做区块链的CDN

经过这一轮传播后,所有的网关里面都包含了交易和交易的索引,这个时候它还不能发挥作用,需要等到矿工挖出区块才行。

我们知道矿工经过POW竞争后,将未确认的交易包含在区块中,并进行传播,当矿工将它新的区块发送给网关后,网关会根据交易和交易索引表,将区块中的交易部分全部替换成索引(如果没有索引,则保持原交易不变),因为交易索引一般只是4个字节的容量,所以这样替换一下子将区块的大小缩减了很多,从而达到扩容的目的。

Layer0层扩容,做区块链的CDN

然后网关会讲压缩的块传播到中继,并进一步传播到其他的网关,这个时候网关需要将压缩后的区块进行还原,首先它会根据索引来查找自己的高速缓存,如果不巧没有找到,它会去请求连接的网关进行还原,如果还是还原不了,则它会直接丢弃这个压缩的区块。如果成功还原压缩的区块,网关就会将还原后的区块传输给和它相连的全节点。

Layer0层扩容,做区块链的CDN

Bloxroute的交易压缩是非常出彩的部分,本身在整个区块中,区块头只占非常小的部分,而区块体中的交易占大头,在区块链本身的P2P网络中非常难压缩,因为还涉及到区块和交易验证的问题,而在BDN中完全不需要管这些东西,只要交易和交易索引的对应关系不要搞错,可以非常方便的进行压缩。

直通路由技术

在区块链的P2P网络中,任何区块在传播之前都需要验证它的有效性,所以每个节点必须接受该区块的全部信息,然后验证完后才能传播给下一个节点。而在BDN中不需要验证区块的有效性,所以当中继接受到一个区块的网络包后,它不需要等待其他网络包到来组成一个完整的区块,而是立即将这个包传输到下一个中继或者网关去,从而提升了传输的效率。

Layer0层扩容,做区块链的CDN

我们可以看到图中,中继没有等到区块全部接收到后在传播,而是接收一部分后就立即传播了。

结尾

Bloxroute使用了非常精妙的手段进行了扩容,对区块链的入侵性小,可扩展性高,提升了非常多性能,但好的技术也需要市场推动,我们对这个项目拭目以待。