清华大学姚期智团队:Scaling Nakamoto Consensus to Thousands of Transactions per Second

摘要

conflux的设计思想:在不抛弃所有分叉块的前提下,用DAG图来算出区块顺序。这里有一个比较关键的地方是,不像我们知道的所有必须先确定交易顺序,再确定区块顺序的设计思路,conflux是先把区块顺序算出来,再决定要保留哪些交易

conflux性能:在亚马逊ec2上模拟了20k全节点,达到5.76GB/h的吞吐量以及在4.5-7.4的交易确认时间(由于中本聪是概率性共识,这个交易确认时间是指<0.01%被颠覆的可能花的时间),对于典型的比特币交易来说,这个处理能力相当于每秒6400笔交易。并且conflux共识的瓶颈已经不再是协议本身了,而是单个节点的处理能力。(Q:所有的共识协议不都是这样的吗?硬件越好,处理能力当然越强

1. Introduction

中本聪共识的问题:

  1. 只有一个参与者赢得挖矿竞争 :就是同时挖出来的区块,只有一个是最终放到区块链里的,剩下的分叉块都会被抛弃;
  2. 确认时间长是必要的:就是确认时间这么长,是为了抵御攻击,比如一个块后面再连着十个区块,才认为交易可信;

已有共识协议差不多都是从以下两方面来改进的:

  1. 减少共识参与者的数量:例如bitcoin-NG,周期性选一个leader出来负责出块
  2. 选出一部分参与人作为committee,运行BFT算法:这种方法在参与人之间划分了阶层(就是权力不对等),与去中心化思想违背。比如algorand,stellar

2. Conflux架构

在这里插入图片描述
运行过程

  1. 交易tx9广播到所有节点上(用的bitcoin core里的gossip网络,做了修改)
  2. 节点把新收到的交易,tx9,放到自己的交易池中
  3. 节点通过block generator 打包交易,生成区块(区块产生用的POW算法
  4. 区块生成后,相关交易从缓冲池中删去,更新本地的DAG图
  5. 把区块广播给其他节点并把区块广播给其他节点

3. 共识协议

conflux中的DAG图示例
核心思想:1. 先确定区块顺序,再确定交易顺序;2. 有冲突或双花的交易,只处理第一个,剩下的抛弃
重要概念:

  1. Parent edge(实线):除了创始快,每个块都有且只有一个outgoing的parent edge,例如C到A,F到B
  2. Reference edge(虚线):每个区块有多个reference edge,代表了区块的时间产生先后顺序(happen-before关系),例如E到D
  3. Pivot Chain:在parent tree中,从创始块到叶子块选一个主链出来,主链的选取用了GHOST算法,GHOST算法不是计算最长链,而是计算子树尺寸最大的链,例如主链是Genesis,A,C,E,H,而不是最长链Genesis,B,F,J,I,K,因为A的子树包含的区块比B的子树更多?(A的子树包含D,G,C,E,H5个,B的子树包含F,J,I,K4个)
  4. Generating new block:产生新块的时候,节点先用本地DAG图算一个主链出来,新块指向主链的最后一个块,作为parent edge,同时检查其他没有指向边的块(就是除父块以外的所有叶子块),新块向这些块链接reference edge,例如新块指向H parent edge,指向K reference edge
  5. Epoch: 主链上每个块负责一个epoch,这个块可reach的区块就属于这个epoch,例如J可以被H reach,但不能被E reach,所以J属于H的epoch
  6. Block total order:对区块排序时,首先对不同的epoch进行排序,再去同一个epoch内的排序,如果同一个epoch中的块不存在偏序关系(就是happen-before关系),就根据区块的ID大小排序,例如图上的区块顺序是Genesis,A(A epoch),B,C(C epoch),D,F,E(E epoch,D的hash比F小),G,J,I,H(H epoch, G的哈希比J小),K
  7. Transaction total order:根据Block total order,剔除冲突交易,生成交易顺序,例如,交易顺序是TX0,TX1,TX2,TX3,TX4(B区块),TX4(G区块),但是TX3和TX2是冲突的双花交易,TX4(G区块)是TX4(B区块)重复的交易,所以最终顺序是TX0,TX1,TX2,TX3,TX4(B区块),TX4(G区块)

安全性分析:如果攻击者想要颠覆TX4(B区块),那就必须生成一个顺序排在B区块之前的区块,因此他生成一个包含TX4的区块,并指向genesis block,但这个区块没有child,根据epoch的定义,他只能放在最后。

4. 共识算法

DAG图:
G = &lt; B , g , P , E &gt; G =&lt;B,g,P,E&gt; G=<B,g<

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值