Conflux共识机制介绍

最近arXiv上发现一篇论文(2018/8/2发表),作者来自清华大学,卡内基梅隆大学,以及多伦多大学,提出了Conflux共识机制。姚期智是作者之一。论文下载地址:https://arxiv.org/pdf/1805.03870。

本篇文章大致介绍Conflux共识机制的算法思想以及实验数据结果。感兴趣的小伙伴可以查看论文以及相关引用。

Conflux共识机制以及实验数据是在比特币(Bitcoin)源代码框架下实现。也就是说论文中区块生成的算法沿用比特币的POW(工作量证明)机制。当然论文中提到,Conflux的共识机制可以扩展到或者结合其他共识算法,比如PoS等等。Conflux共识机制的实验数据说明:Conflux共识机制的吞吐量能达到5.78GB/s,确认时间4.5-7.4分钟,交易速度6000TPS。论文中还提到,Conflux共识机制的交易速度是GHOST或者Bitcoin的11.62倍,Algorand的3.84倍。

1)Conflux框架

Conflux共识机制是在比特币源代码基础上实现的。Conflux的框架和比特币的矿机类似:GossipNetwork实现P2P网络交互,节点维护TxPool,生成区块(Block Generator),以及维护区块状态。Conflux框架如下图:

框架图中的虚线部分是一个节点上的细节。比特币的区块链是一条链,也就是说,每个区块只有一个父区块。和比特币不同,Conflux的区块链是由“DAG State”实现,每个区块除了一个“父区块”外,可能还有多个“引用区块”。

2)区块DAG

Conflux中的区块之间由多条边(Edge,连接)组成,这些边分成两类:父连接,以及引用连接。在确定主链(Pivot)的基础上,新生成的区块必须使用父连接连接到主链的最后一个区块上。除了主链外,还存在其他一些非主链的路径,新生成的区块必须使用“引用连接”连接这些非主链的最后一个区块。也就是说,Conflux中的区块之间的连接关系组成DAG(有向无环图)。Conflux中组成DAG的区块会确定一条主链(Pivot Chain)。在主链确定的基础上再确定所有区块的先后顺序。区块DAG的示意图如下:

Genesis是“创世纪”块,也就是第一个块。父连接用“实心”箭头表示,引用连接用“虚线”箭头表示。区块C使用“父连接”连接到A,使用“引用连接”连接到B。新生成的区块(New Block)使用“父连接”连接到H,使用“引用连接”连接到K。

3)主链(Pivot Chain)确定算法

要确定区块的顺序关系(Block Total Order),必须先确定主链。主链的选择使用“GHOST”规则。“GHOST”规则是在2015年的一篇论文中介绍,具体请参考论文中的引用26。“GHOST”的基本思想是选择子节点数多的节点。Conflux的DAG结构用如下的四元组表示:G = <B,g,P,E>,B代表DAG中的所有区块,g是创世纪块,P是映射函数(每个区块可以通过P函数获取父区块),E是所有区块的“父连接”和“引用连接”的集合。

GHOST规则的计算过程如下:

其中最核心,是第8行。确定下一个区块是根据子区块个数或者在子区块个数相等的情况下根据区块Hash。子区块个数多的,或者子区块个数相等区块Hash小的区块为主链的下一个区块。注意,子区块个数的计算不包括“引用连接”。

还用第2部分介绍的DAG举例:

主链由Genesis,A,C,E,H以及New Block组成。

4)区块顺序

每个主链上的区块组成一个时代(Epoch)。被该区块“连接”到的区块,且没有被之前区块“连接”的区块属于这个区块时代。区块排序的算法如下:

Past(G,a)获取DAG图G中的主链中一个区块a之前的所有区块(包括区块a),也就是区块a之前的区块以及区块a能连接到的区块。很显然,伪代码的第5行:Past(G,a)- Past(G,a')计算的是区块a所处时代中的所有区块,包括区块a。区块a时代的区块单独组成一个图的话,按照两个规则进行排序:

1)有没有连接关系 2)区块Hash大小。

同样以第2部分介绍的DAG为例,每个时代包含的区块用虚线分开。区块的排序为:Genesis,(A),(B,C),(D,F,E),(G,J,I,H),(K,New Block)。区块D只被区块E连接,所以属于区块E的时代。

5)交易顺序以及有效性

在区块确定顺序的前提下,前一个区块中的交易在后一个区块中的交易前面。同一区块的交易,按照区块中交易顺序排序。特别注意的是,因为不同节点打包的交易加入DAG图后,可能同一个交易被不同节点打入不同区块中,也就是交易冲突。交易冲突包括两种情况:1)交易两方的地址有一个相同 2)同一交易。发生冲突的交易,第一个交易有效,后续冲突交易都无效。

比如在第2部分介绍的DAG中,区块B中的Tx3和区块A中的Tx2冲突,地址X相同,保留区块A中的Tx2。区块G中Tx4和区块B中的Tx4重复,保留区块B中的Tx4。

6)安全性以及确认时间

简单的说,攻击者为了修改区块的顺序,不得已要伪造足够多的“子节点”。也就是需要有超过“诚实”节点的算力。GHOST规则的论文证明了只要作恶节点的算力不超过50%,要修改主链顺序,随着时间越长,概率越低,趋向0。论文提到,用户可以选择自己能够接受的确认时间。论文同时给出了Conflux的安全性(Safety)以及可持续性(Liveness)的证明。感兴趣的小伙伴可以自行参阅。

7)实验结果

Conflux在云服务器(Amazon EC2)上部署模拟节点,得出如下结论:

a)区块使用率,不论是区块大小变化,还是区块生成时间变化,都是100%。也就是只要生成的区块,都能利用上,增加了区块交易的吞吐量。比特币同一时间,只有一个区块胜出,其他区块都会被浪费。

b)确认时间,不论是区块变大,或者区块生成时间变长,只有稍微变长。比特币的话,在区块变大,或者区块生成时间变长,分叉的可能性就变大,确认时间显著增大。

c)Conflux具有很好的扩展性。带宽变大,区块生成的速度变快。节点变多,生成区块也会变多。两种方式都能带来吞吐量的提升。

总结:Conflux共识机制,借鉴了2015年论文中的GHOST规则,使用DAG数据结构组织区块。论文逻辑清晰,比较容易阅读。Conflux共识机制,在DAG区块中,先使用GHOST规则确定主链,再确定区块顺序,交易顺序。发生冲突的交易,只保留第一个交易,其他冲突交易作废。论文论证了Conflux共识机制,保证了区块的安全性和可靠性,又能极大地提升交易吞吐量。实验数据表明:Conflux共识机制的吞吐量能达到5.78GB/s,确认时间4.5-7.4分钟,交易速度6000TPS。

题外:Conflux共识机制的设计,结构上和以太坊中的叔块设计感觉有点相似。以太坊中的叔块也是考虑到减少分叉,将在一定时间内生成的合法区块,“引用”连接到主链的区块中。

喜欢技术的小伙伴,欢迎关注公众号:星想法。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容