首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

15 区块链共识协议Conflux分析(2)Paper研读

上篇的文章

中,我重点讲解了中本聪共识的设计结构。本篇将开始分析Conflux协议的改进和问题。首先,以中本聪共识协议承载的比特币网络,处理确认后交易的性能是一个落地商业用途的最大瓶颈。Conflux协议就是期望改进共识本身的设计,突破共识的性能瓶颈。

Conflux的Paper中讲到比特币性能指标全部基于比特币的白皮书,和实际比特币公链网络指标是有区别的。因为比特币核心开发团队也引入了SegWit(隔离见证版本)来增加区块的大小和处理交易的数量。对于交易费升高的问题并不是重点,可以不必考虑。从我的体验中得出的结论是比特币的大额转账交易费反而是最低的。所以,我们目前不要便宜,重点还是要看Conflux是如何提高确认交易处理量。这个也是最关键的问题。

Conflux协议改进的第一个点是:原生中本聪协议在生成区块时会抢占式的定义限制性的交易顺序,这个机制会引入很多错误的依赖,势必产生不必要的分叉区块链。基于这个问题,Conflux设计目标之一就是延时定义交易顺序,优化处理并行交易和区块。Conflux认为区块中交易很少有冲突的(特别是加密货币领域),这样只需要在块生成的先后顺序上做选择就好。这样可以用更少的约束来处理交易,并且可以有效的提高在一个区块中定义交易顺序的能力。然后参与Conflux的节点可以快速拿到确定后的区块交易顺序,丢弃有冲突或者冲突的交易。这里延迟协调为用户提供了扩展接口。

为了安全的合并并发区块的交易,Conflux共识协议维护两种区块关系。一个参与节点生成新区块后,某个节点会确认前任区块并创建一个叫做parent edge的关系。这个关系可以帮助Conflux实现一致性不可变共识在Conflux的超级账本中。还有节点可以确认所有没有入边的区块,创建reference edges在新区块和这些区块之间。这些参考边表示这些区块都是在新区块生产之前产出的。这个能帮助Conflux有组织的实现共识并合并区块。这个设计导致的结果是构建了一个有向无环图而不是一条链多个分叉。

还有一个挑战是Conflux需要面对解决的,在包含了并发区块的有向五环图中如何达成达成一条不可变的区块顺序链。Conflux引入了一个排序算法解决了它。首先给一个pivot chain,从创始区块开始并包含只有父边的区块。Conflux排序算法把pivot chain上的区块按照epoch分区。epoch是有时间前后顺序的,每个epoch区间里的区块按照拓扑排序实现区块排序。这个排序算法保证当pivot chain稳定后,产生的区块顺序也会稳定。

有了以上的分析之后,我们在看看Conflux的设计图例就会对此协议更加认识深刻:

pivot chain的生成:从创世块开始,迭代的去从孩子区块中选择下一个在主链上的区块。选择的规则是挑选拥有最大子树的孩子区块。比如,区块 A 和区块 B 是创世区块的两个孩子区块。A 的子树有 6 个区块,B 的子树有 5 个区块。所以我们选择区块 A 作为紧接着创世区块的主链区块。相应的根据相同的规则,将区块 C,E,H, 都选进了主链。

我总结一下:网上有黑Conflux协议的文章,个人觉得都是一些猜测,不可信。从整篇Paper中可以看到设计细节并不复杂,借用成熟的DAG解决区块分叉和区块排序问题。主要是实现代码目前没有开源,导致很多莫须有的罪名都扣在这个项目上了。

我在阅读Paper并写下这些笔记后,发现网上有官方Conflux社区整理的文字,很大程度就是Paper的中文版本,和我理解的对比后,并无大的区别。只是加入了更多细节,在英文Paper里面是没有详细介绍的,可以作为理解Conflux的补充。可以点击「原文阅读」

因为Conflux去掉了PoW,对于激励机制的设计就是另外一个难题了。这个难题的解决直接会决定Conflux存在的意义。我们拭目以待。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190212G0E1PR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券