一 区块链不可能三角--扩容、扩展、无限扩展( 二 )


总结POW算法很少出现分叉,而且一般分叉很快就会消失的解决方案是:区块同步时间(区块大小1MB)远小于区块生成的时间间隔(10分钟出一个块)区块大小增大导致区块传输延迟增大,于是区块延迟/区块间隔的比例增大导致网络中可能出现分叉的几率增大 。同理,如果减小区块间隔也会造成一样的结果
比特币不可扩展——因为它的输出不能随着扩大区块大小(减小区块间隔)并且在碰上网速带宽的边界之前无限提升,而是在那之前就先碰上比特币POW算法自身安全性对于同步依赖的边界了 。
可扩展性的改进:
想要改进比特币的POW算法,使得它能够摆脱安全性对于同步性的依赖,使得我们能够简单地通过扩大区块大小(减小区块间隔)来提升输出,直到遇到网速的边界为止,这类的尝试,我们称为“扩展比特币( )”,而这样的算法,则可以称为“可扩展的POW算法”,因为,相比于比特币的POW,它们从这个角度上来讲更可扩展了 。
这一类算法例如-NG,GHOST,等 。然后,可扩展性也在同一级别的还包括使用了类比特币POW结构的POS例如Snow White和 。
3 可扩展的第二个定义—无限扩展
在传统分布式系统里,通常(可扩展)的定义是指系统的输出是否能够随着增加节点的数量而线性增加,如果能,就是可扩展的 。所以用这个定义的话,如果一个区块链系统是的,那么如果他有1000个节点的输出是x,那么如果我们加上1000个节点,输出应该变成2x 。比如,如果把比特币的网络扩大一倍,那么TPS应该翻倍 。
【一区块链不可能三角--扩容、扩展、无限扩展】然而,如上所述,比特币并没有这样的性质——比特币的算法决定了它的输出就是7TPS,因此,比特币不是可扩展的 。
但是,其实这带来了一个问题——从可扩展的第二个定义角度讲,就算是第一个定义中可扩展的POW也不是的,即便到现在为止,也几乎没有哪个区块链是的,其实这也好理解——一个 的分布式系统中,每增加一台服务器它都能增加相应的输出的原因是,新增加的这台服务器可以独立承担一部分任务 。
而区块链和传统数据库不同,它几乎一定在某种程度上需要多个节点存储同样的数据(传统分布式数据库的人管这叫异地多活,冗余设计),否则就失去了去中心的意义,所以,一定从某种程度上,它无法达到多出几个节点就提高多少输出的效果 。除非,它要做出一定的安全性牺牲,或者可信假设,而这就是总是被人津津乐道的“区块链不可能三角”
然而,即便如此,高输出的吸引力还是巨大的——区块链出现之后,人们总是把区块链对标互联网,也总是把公链对标未来的互联网独角兽 。然而,如果区块链达不到这样的可扩展性,那么它的输出最终会受制于网络,是无论如何支撑不起互联网独角兽的场景的 。为了将这种可扩展和之前所说的可扩展区分开,在区块链共识算法的语境下,这种被称为scale-out,即无限扩展 。
总体来说,能够达到无限扩展目前的方法有两类——链下技术和分片,前者其实本身就不在不可能三角的框架之中,链下技术更多的是一种把区块链当成可信中介,然后根据不同应用和场景,然后考虑不同区块链的特性,提出一个可以借由区块链的链下解决方案 。例如链下支付通道,实际上就是储值卡这种针对小额高频交易的解决方案在区块链场景中的映射 。从理论上来讲,链下技术和链上最大的区别在于BFT中的一致性,链上技术需要共识算法保证交易的一致性(尽管可能会需要在安全性或者去中心上做出妥协),而链下技术中交易的一致性共识算法本身是不管的,而依赖于链下方案本身的设计以及双方根据场景对链下的协商 。