区块链研习社区块链大学区块链

Conflux共识简要介绍

2019-01-15  本文已影响0人  亚当说

        之前有关注姚班团队Conflux相关的消息,大概翻了下论文,看了下基本原理,便由于其他事情搁置下了。直到前段时间传出Conflux融资成功的消息,才发觉需要做下深入学习,下面简单介绍下Conflux共识机制的关键点。想深入研究的同学,可参见文献链接:https://arxiv.org/pdf/1805.03870.pdf。

要解决的问题

    1、比特币的性能和效率问题。

    2、现有对比特币的改进方式简单分为 增加区块容量 和 提高出块率,但会带来更多分叉,引发安全性和资源浪费的问题。

核心思想

    1、采用DAG组织区块,并发地处理交易和区块,延迟确定事务的全局顺序。

    2、主链不一定是最长链,有效防止双花,增强安全性。

    3、通过DAG的组织,和交易的全局排序,将分叉的无效区块变成有效区块,提升有效区块的比例,提升系统的吞吐率,减少浪费。

总体架构

图1 Conflux共识机制的整体结构

    1、和比特币一样,采用Gossip实现P2P网络交互,实现交易或者区块的广播。

    2、虚线部分表达了1个全节点的工作流程:node接收到1个Tx后,将Tx放入TxPool,Block generator模块将交易池中的交易进行打包。

    3、打包后,将新的Block更新至本地DAG状态,将新的Block广播至全网,并根据DAG状态规定的区块顺序对该Block中的交易进行删除(删除规则后面会详细介绍)。

    4、对于其他的全节点,如果接收到其他节点广播的block,会直接更新至本地DAG状态,并将该Block中包含的Tx从本地TxPool中删除,以避免重复交易打包。

区块的DAG

图2 区块DAG组织的示意图

    1、Conflux的区块之间靠 父链接 和 引用链接 连接在一起,上图中实线表示 父链接,虚线表示 引用链接。链接在一起的区块关系,会形成DAG。

   2、Conflux中组成DAG的区块会先确定一条主链(Pivot Chian),在这个基础上再确定所有区块的先后顺序。

确定主链

    1、G = <B,g,P,E>,其中,B是DAG中的所有区块,g是Genesis block,P是映射函数(每个区块可以通过该函数获取父区块),E是所有区块的“父链接”和“引用链接”的集合。

    2、主链上下一个区块的选取规则为 子区块个数多的、或者在子区块个数相等时区块Hsah小的区块。(子区块的计算只包括父链接,不包括引用链接)

图3 确定Pivot Chain的步骤

划分Epoch

    1、主链Pivot Chain中的每一个block对应一个epoch,其他非Pivot Chain上的block也会被分配到相应的chain中。

    2、分配的原则为,被主链上的区块“链接“,且没有被之前的区块”链接“的区块,即属于该区块Epoch。

确定区块顺序

    按照Epoch进行定序,在同一个epoch中,不同的blocks按照parental tree的拓扑关系来排序。

图4 确定区块顺序的步骤

确定交易顺序

    1、在区块顺序确定的前提下,前一个区块中的交易在后一个区块中的交易前面。

    2、同一区块的交易,按照区块中交易顺序进行排序。

    3、当交易产生冲突时,第一个交易有效,后续冲突交易都无效。

实验结果

    Conflux共识机制的吞吐量能达到5.78GB/s,确认时间4.5-7.4分钟,交易速度6000TPS

上一篇下一篇

猜你喜欢

热点阅读