NXTER.ORG

区块链扩展VS缠结扩展

区块链扩展VS缠结扩展

指出DAG可扩展性可能存在的弱点

本文由Jelurida联合创始人兼董事会总经理—Lior Yaffe编写。

表面上看,像IOTA和Byteball这样的分布式记账所使用的DAG(有向无环图)设计看起来像是一个了不起的创新。与现有区块链设计中交易容器的大量区块不同,DAG构建了引用旧交易的交易图,因此可以在节点收到交易时立即确认交易,而不必等待下一个区块。

任何试图使用区块链的人都会很快意识到交易的快速确认时间是一个优势,它不必等待交易被分组到同一个区块中,然后才能确认其状态或余额变化。

事实上,只要DAG节点已经知道该交易批准的两笔交易,DAG就可以快速确认交易。但是,同步节点之间的状态似乎是现有DAG实现的主要问题,例如,IOTA目前依赖于单个协调节点,而Byteball依赖于由开发人员自己控制的12个见证节点来检查DAG的状态。

但是为什么DAG的同步比区块链的同步更困难呢?简单地说,由于块链状态由每个块修改,而DAG状态由每个交易修改。

作为一个花费无尽的时间在区块链负载测试和扩展上工作的人,我可以证明,即使所有参与者都诚实并且按照协议规则工作,但是在负载较重的情况下运行的区中心化网络自然会产生分叉。我还可以证明,切换到更好的分支是节点需要执行的最繁重的操作之一,因为它必须撤销在接入空闲区块中现有交易所做的更改,并应用包含在更好的分叉区块中的交易所做的更改。

然而,我声称,区块链优于DAG的一个优点是,区块链只对区块的顺序敏感而不是交易的顺序,这使得它的可扩展性不小于DAG。

正如我在之前发布的关于扩展的文章中解释的,在分布式网络中,不同节点将在不同时间以不同顺序看到交易,并且交易率越高,这些顺序差异出现的频率越高。

对于区块链来说,这并不是一个严重的问题,因为区块生成是人为制作的困难,因此将平均区块生成频率限制在以太坊15秒,NXT / Ardor 1分钟和比特币10分钟。这意味着即使在负载较重的情况下,由冲突块引起的分叉也很少发生,并且当它们确实发生时,节点有时间执行切换到更好的分叉所需的大型处理,并且在生成更多块之前,与另一个节点同步状态。

然而,在DAG,事务传播的延迟和可能的顺序差异导致了几个问题,而交易吞吐量增加,节点开始获取其他节点提交的交易,而这些节点还不知道其中一个或两个已批准的交易,因此无法将它们添加到DAG中。

DAG拥护者指出,为了消除协调员和白名单节点的要求,您必须同时进行大量的交易处理,因此,我想指出DAG实现中的几个弱点,我预计这些弱点将出现在DAG网络上每秒接受1000个并发交易,可能少得多。

在1000 TPS网络中,当一个远程DAG节点接收到交易时,比如提交一秒后((回想一下光速是最终的,并且因特网的运行速度比光速慢得多),这个远程节点已经滞后在网络中其他更多中央节点之后的1000个交易,这将导致几个问题:

(1)这个节点几乎肯定不能立即处理一些交易,因为提交者节点所看到的未获批准的交易仍在网络中传播,因此必须将它们保留在可能不断增长的未确认池中这会耗尽节点资源。

(2)当最终所有经批准的原型交易的子缠结到达节点时,这些交易可以批准已经埋藏在DAG的当前提示之后的多层嵌套的交易,当负载到达某个临界点时,DAG将开始像云一样向各个方向扩展,越来越多的提示表示未经批准的事务数量不断增加。

(3)假设交易在被添加到DAG时执行。交易执行顺序在节点之间将有很大差异,因此使得DAG对于某些需要某些执行顺序保证的应用程序无用,如投票结束前需要到达的投票中的投票。

(4)这也将阻止DAG的修剪,因为没有一个稳定的状态,节点可以快照(在没有单个协调节点的情况下),以便删除所有以前的交易历史。

总而言之,我怀疑DAG在交易到达时确认交易的能力会导致它对交易传播延迟和交易到达节点的顺序变得更加敏感,在负载下可能导致未确认交易的积累和DAG变成了一种类似云的形状,在这种情况下,接受引用旧tips的交易不是一种例外,而是一种规范。而且越来越多的tips仍未得到批准。

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.