首页 >> 大全

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

2023-06-18 大全 66 作者:考证青年

1 区块链不可能三角

区块链可扩展性,也就是不可能三角

2 可扩展的第一个定义—可扩展的POW

可扩展性的定义:

在不加任何限定下,这是指某个表现y随着某个变量x的增长的变化情况,如果y能够随着x的增长而线性增长,我们会说y是 (线性可扩展)的,或者就简单地说是可扩展的。换句话说,如果我们定一个很高的目标y,如果我们知道“这种东西我们只要用某f方法,然后把x堆起来就一定可以达到”,那么我们就说这个f方法是可扩展的

比特币的7TPS(每个区块1MB,每笔交易大小250B,10分钟生成一个区块,每笔交易的时间为1MB/250B/10分钟=/250/10*60=7笔交易/s)是不可扩展的。因为想要提升比特币的7TPS,尤其是想要把它提高到能和传统支付手段相比的输出,例如,我们能做的事很有限。最自然而然的方法是加大区块大小,或者降低区块间隔,而因为即便没有严谨的数学分析和证明,人们也知道这是不可能的,因为要是把区块加大1000倍到一个G然后十分钟一个区块,除网速带宽限制外还有分叉安全性问题。

比特币的POW算法里,安全性依赖于区块同步的时间远小于区块间隔时间的前提

比特币的安全性的前提是——假设所有矿工都是逐利的,那么任何人想要作弊,都需要打败50%的算力,因为你必须要拥有超过其他人的算力,才能挖出比别人更长的链。然而,这个竞争是公平的前提是,作弊者和其他所有人都在挖同一条链,即全网对于当前最长链在大多数时间里是同步的。然而,对于比特币而言,这是不一定的。而这也是比特币的POW和传统分布式系统的算法不一样的地方——比特币中允许网络中出现短暂的不一致,即分叉,即网络中的两部分不同节点同时分别认为两条不同的链是合法的。这个时候,如果恶意节点想要挖出最长的链,他不再需要竞争过其他所有人了。假设一个分叉中两条链各被50%的算力接受,那么这个时候如果网络中总是存在着两个分叉,实际上等同于网络分区,举个最简单的情况,就是说当你挖到区块的时候,另外一条链也挖了一块出来但是你们这一半没有收到,然后两边都继续挖下一块,于是最终你有26%的算力你的链就是最长的。如果链始终处于两个分叉的状态,就代表始终总有一半人不和你竞争,全网算力存在浪费现象,可以认为比特币的安全性下降了。而如果网络中一直有分叉,很难收敛,那么就总有人不是在最终的最长链上挖矿,于是整个网络的安全性就达不到POW理论上的50%的水平;而分叉无法收敛,则不仅仅是安全性下降,而是交易永远无法确认。

比特币很少出现分叉,而且一般分叉很快就会消失的解决方案:

分叉是怎么出现的——当A挖到一个块的时候,A会尽快把这个块公布到全网,越多的人知道,就越多人会继续在后面挖矿,于是这一条链比别人长的可能性就越大,于是这一块最终出现在最长链上的可能性就越高——而在比特币中,只有最长链上的才是最终结果。然而,如果A的这块还没有被网络中的另一点B收到的时候,B也挖到了一块,而B在不知道A挖到这块的前提下,也会做同样的事情,于是就产生了分叉,而网络也会被分割成两部分,先收到A的块的就会认为A的链更有前途,在后面继续挖,反之亦然。在现在的比特币网络中,一个区块是1M,传输和验证起来都比较快,所以需要把一个区块同步到全网的时间很短,只有当两个节点在这段时间里同时挖到区块才可能产生分叉。因此,如果区块传输延迟远小于区块生成间隔的话,分叉的概率就会很小,而连续几次分叉的概率就更小,所以大概率分叉在一个区块后就会结束,留下一个深度1的孤块。而如果我们加大区块大小,或者缩短区块间隔,使得区块同步时间和区块生成间隔的比例没有那么悬殊的时候,那么同步所需要的时间就会变长,于是产生分叉的可能性就会增加。而如果同步区块时间超过了区块间隔,那么分叉数量就永远不会减少,而是会越来越多。

总结POW算法很少出现分叉,而且一般分叉很快就会消失的解决方案是:区块同步时间(区块大小1MB)远小于区块生成的时间间隔(10分钟出一个块)区块大小增大导致区块传输延迟增大,于是区块延迟/区块间隔的比例增大导致网络中可能出现分叉的几率增大。同理,如果减小区块间隔也会造成一样的结果

比特币不可扩展——因为它的输出不能随着扩大区块大小(减小区块间隔)并且在碰上网速带宽的边界之前无限提升,而是在那之前就先碰上比特币POW算法自身安全性对于同步依赖的边界了。

可扩展性的改进:

想要改进比特币的POW算法,使得它能够摆脱安全性对于同步性的依赖,使得我们能够简单地通过扩大区块大小(减小区块间隔)来提升输出,直到遇到网速的边界为止,这类的尝试,我们称为“扩展比特币( )”,而这样的算法,则可以称为“可扩展的POW算法”,因为,相比于比特币的POW,它们从这个角度上来讲更可扩展了。

这一类算法例如-NG,GHOST, 等。然后,可扩展性也在同一级别的还包括使用了类比特币POW结构的POS例如Snow White和。

3 可扩展的第二个定义—无限扩展

在传统分布式系统里,通常(可扩展)的定义是指系统的输出是否能够随着增加节点的数量而线性增加,如果能,就是可扩展的。所以用这个定义的话,如果一个区块链系统是的,那么如果他有1000个节点的输出是x,那么如果我们加上1000个节点,输出应该变成2x。比如,如果把比特币的网络扩大一倍,那么TPS应该翻倍。

然而,如上所述,比特币并没有这样的性质——比特币的算法决定了它的输出就是7TPS,因此,比特币不是可扩展的。

但是,其实这带来了一个问题——从可扩展的第二个定义角度讲,就算是第一个定义中可扩展的POW也不是的,即便到现在为止,也几乎没有哪个区块链是的,其实这也好理解——一个 的分布式系统中,每增加一台服务器它都能增加相应的输出的原因是,新增加的这台服务器可以独立承担一部分任务。

而区块链和传统数据库不同,它几乎一定在某种程度上需要多个节点存储同样的数据(传统分布式数据库的人管这叫异地多活,冗余设计),否则就失去了去中心的意义,所以,一定从某种程度上,它无法达到多出几个节点就提高多少输出的效果。除非,它要做出一定的安全性牺牲,或者可信假设,而这就是总是被人津津乐道的“区块链不可能三角”

然而,即便如此,高输出的吸引力还是巨大的——区块链出现之后,人们总是把区块链对标互联网,也总是把公链对标未来的互联网独角兽。然而,如果区块链达不到这样的可扩展性,那么它的输出最终会受制于网络,是无论如何支撑不起互联网独角兽的场景的。为了将这种可扩展和之前所说的可扩展区分开,在区块链共识算法的语境下,这种被称为scale-out,即无限扩展。

总体来说,能够达到无限扩展目前的方法有两类——链下技术和分片,前者其实本身就不在不可能三角的框架之中,链下技术更多的是一种把区块链当成可信中介,然后根据不同应用和场景,然后考虑不同区块链的特性,提出一个可以借由区块链的链下解决方案。例如链下支付通道,实际上就是储值卡这种针对小额高频交易的解决方案在区块链场景中的映射。从理论上来讲,链下技术和链上最大的区别在于BFT中的一致性,链上技术需要共识算法保证交易的一致性(尽管可能会需要在安全性或者去中心上做出妥协),而链下技术中交易的一致性共识算法本身是不管的,而依赖于链下方案本身的设计以及双方根据场景对链下的协商。

但是,通常不用scale-out这个词来形容链下算法——因为链下算法天然scale-out,所以没有必要再特地去用这个词来形容。所以,一般说道scale-out都是分片算法,能够归于这一类的算法包括,,和 ,以及偏工程的以太坊分片和,VAPOR。

从这种角度看来,两者似乎和很火的另外两个概念即“第二层(链下扩容)”和“第一层(链上扩容)”方案的定义非常类似,但是实际上,第一层和第二层的概念更多地不是从我们在这里考虑的无限扩展角度出发的,而是从“要不要改变主链算法”或者“是不是通过链上抵押把交易挪到链下进行”这种角度定义的,所以,实际上,除了分片,许多达不到“无限扩展”而只是“可扩展”,即我们的第一个定义以及我们接下来要讲的第三个定义的方案,也被称为第一层方案。

这其中,最容易造成混淆的是DAG(有向无环图)。由于一些DAG项目的宣传,以及很多人对于DAG结构直观印象造成的错误概念,DAG在很多综述类文章中被和分片并列,认为是无限扩展的——然而,DAG只是一个概念,而把DAG用于区块链的方法有很多,例如GHOST,,,, ,IOTA,,等等。尽管DAG理论上有无限扩展的可能,但是目前的所有有具体算法的DAG方案(光有个概念的不算)中,没有一个是无限扩展的,而都只是可扩展。

4 可扩展的第三个定义—可扩展的BFT

现在,如果管第一类的可扩展叫做“可扩展”,第二类叫做“无限扩展”,似乎“可扩展”这个词也没有什么歧义。

然而,实际上还有第三个概念,就是BFT类算法。

对于拜占庭容错算法PBFT(实用拜占庭容错),核心过程有三个阶段,分别是pre-(预准备)阶段,(准备)阶段和(提交)阶段。对于pre-阶段,主节点广播pre-消息给其它节点即可,因此通信次数为n-1;对于阶段,每个节点如果同意请求后,都需要向其它节点再 广播消息,所以总的通信次数为n*(n-1),即n2-n;对于阶段,每个节点如果达到状态后,都需要向其它节点广播消息,所以总的通信次数也为n*(n-1),即n2-n。所以总通信次数为(n-1)+(n2-n)+(n2-n),即2n2-n-1,因此pbft算法消息复杂度为O(n2)

PBFT的O(N2)是个什么概念呢?用可扩展性的概念去分析一下——假设每个节点的带宽是c,那么全网的总吞吐量上限是cN。那么,消息复杂度是O(N2)的概念是,如果把节点数量翻一倍,那么全网的带宽变成原来的两倍,但是所需要消耗的资源却是原来的四倍。换句话说,PBFT岂止是不可扩展,简直是可扩展的反面,所以采用PBFT算法的区块链的共识节点基本上都只有十几或者几十个。

然而,当区块链出现之后,人们又开始重新审视BFT的时候,O(N2)消息复杂度就完全没法用了。于是,人们开始考虑更“可扩展”的BFT算法,即O(N)消息复杂度的BFT算法,这类BFT算法就多了,包括,,-Iroha,,乃至和的BFT的部分,都属于此类。他们确实是“使用了(更)可扩展的BFT的区块链”,然而,当有的地方单纯地在突出他们的优势的时候说“可扩展”或者简单地把他们称为“可扩展的区块链”的时候,就和第一类可扩展的POW混在一起了,需要知道的是可扩展的POW和可扩展的BFT的来历并不一样。

5 可扩展的第3.5个定义——比特币扩容

此外,还有第3.5类可扩展,也就是比特币扩容方案——例如大区块和隔离见证。

之所以是第3.5类,是因为从任何角度来讲,它们都只是提高了一些输出,而完全没有解决可扩展性问题。然而,扩容本身英文也是,而且从历史角度讲,这两个方案的确也是扩展的第一步,因为——

大区块-->分叉多-->采用GHOST-->可扩展POW

隔离见证-->解决比特币可变性问题-->方便链下方案的实现-->无限扩展

所以,从这种角度讲,说两个方案扩展了比特币也无可厚非——只不过最终,真正在比特币上的升级,也就只停留在了这第一步上。

6 不同定义之间的关系

首先,第3.5类只有两种方案,大区块和隔离见证首先可以排除出去,因为这两种方案现在基本上只会以“扩容”的名称出现,只有非常不专业的地方会用“可扩展”的名义去拿它和其他可扩展算法比较。

其次,在目前,能标榜自己是“无限扩展”的,基本上也不会介绍自己是“可扩展”的。如果这里仍有疑问的话,也只要记住,分片和链下技术是不应该和其他“可扩展”方案放在一起比较的,因为这两个方案的可扩展性更高,即在大网络中的输出更高,但是会在安全性或者中心化上做出一些妥协。更基础一些的不同是——看这些算法为了保证一致性,是不是要求每个节点都记录每一笔交易,如果是,则消息复杂度至少是O(N),于是当网络中加入节点的时候,输出一定是不会增加的。而想要无限扩展,就一定有一些交易,是不需要广播到整个网络的。

然后,剩下的所有可扩展算法,即我们定义中的第一种和第三种,其实最终都殊途同归,达到了一样的可扩展性,即O(N)消息复杂度。然后,两者的输出最终都只会受到网络网速和响应延迟的约束,最终,比较优秀的算法大概在实验室环境下,达到这个量级,最终当然还是会取决于算法的优劣以及实现的优化程度,但是实验室环境模拟的大网络的延迟实际上是远好于实际的水平,所以在现实中,随着网络的扩大,输出不随着节点数量增加的提升而提升是个美好的想象——输出几乎一定会随着网络的增大而下降。

这其中最容易混淆的就是DAG,但是这类算法中,我们之前也已经介绍过了,无论是工业界的IOTA, 还是偏学术的和,无论在某些媒体或,文章,或者他们自己白皮书中是怎么介绍的,请记住,它们严格都是“可扩展”的共识算法,而不是“无限扩展”的。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了