Conflux技术问答 第一期

287 阅读3分钟

来自微信群 @胡靖宇:

Conflux面对大规模的交易生成,在弱网络条件下,DAG(有向无环图)可能会越来越发散,对共识和主链的确认,有没有大的影响?有没有测试过这种情况?


Conflux-李辰星:

这是个好问题,我们可以从以下几点来讨论一下您提到的这个问题。


1.大规模交易会对网络产生影响 

这是对共识/分叉影响最大的因素之一,也就是区块广播所需要的时间。而每个区块有大小限制,无论等待的交易有多少,都不会影响实际的区块大小。

但是,网络分叉和交易数量就完全没有关系吗?也不全是。我们需要注意的是,区块广播和交易广播在 P2P 网络层是共用的。所以我们还需要设计合理的队列优先级机制。


2. 网络条件的假设 

在各种公链系统中,对网络条件有各种各样的假设,比如同步网络、半同步网络和不同步网络。而 Conflux 的网络假设是,一个区块传遍全网主要算力的时间是有一个上界的,在我们Conflux的测试中是一两分钟。如果网络分裂时间太长,绝大多数公链:包括比特币、以太坊,都是不能保证最起码的安全性的。这个假设,也是对当前网络环境一个比较保守的假设。理论上讲,如果这个时间变成了五分钟或十分钟,确实会增加分叉,但也只是延长确认时间,不会无休止地发散下去。


3. 关于 DAG 发散问题,取决于 DAG 协议细节怎么设计

在一个有向无环图中,我们一般管没有“入边”的节点称为叶子节点,具体到 DAG 区块链中,就是那些还没有被其他区块引用的区块。所谓 DAG 发散就是叶子节点越来越多。

有些算法确实会有这样的问题,例如雪崩共识算法,对于怎么选父块有一个很复杂的规则,这个规则稍有问题就会导致有向无环图的发散。

但是在 Conflux 的协议中不存在这一问题,当一个矿工挖出一个新区块时,对于那些既没有父边 (parent edge) 也没有引用边 (reference edge) 指向的所有区块,新区块都会用父边或引用边连接这一区块。这种设计可以保证,叶子节点是非常有限的。这也可以避免 DAG 的发散。


4. 关于实验

Conflux 实验模拟的是 10000 到 20000 个节点,遍布在全球不同国家中的20 个城市,节点之间互相有 2.5 MB/s 的带宽,以及10ms-300ms 不等的单程延迟。一定程度上可以模拟实际部署的效果。我不知道您说的弱网络条件具体是什么样的设定。但是在我们实验设定下,完全没有出现越来越发散的问题。