Scaling Nakamoto Consensus to Thousands of Transactions per Second 隨心記

論文作者:Chenxing Li*, Peilun Li*, Dong Zhou* ? , Wei Xu, Fan Long ? , and Andrew Chi-Chih Yao,清華大學(xué)交叉信息研究院

????本論文從中本聰共識(shí)機(jī)制的工作原理出發(fā),指出簡(jiǎn)單的在共識(shí)機(jī)制中增大區(qū)塊容量以及提高出塊率的方式并不可取,這兩種方式均會(huì)使區(qū)塊在網(wǎng)絡(luò)上傳播的延時(shí)相對(duì)變長(zhǎng),從而在賬本中產(chǎn)生很多分叉,不僅浪費(fèi)計(jì)算和網(wǎng)絡(luò)的資源,也危害了安全性。而論文提出的Conflux利用區(qū)塊鏈中交易少?zèng)_突的特點(diǎn),樂(lè)觀的處理并發(fā)塊,且將區(qū)塊通過(guò)父邊和引用邊組織成有向無(wú)環(huán)圖(DAG),同時(shí)創(chuàng)新的將Ghost規(guī)則和Epoch的概念相結(jié)合,從而使參與協(xié)議的機(jī)器節(jié)點(diǎn)能夠在一致的賬本結(jié)構(gòu)中決定一致的交易全序。Ghost規(guī)則保證的了主鏈的選擇無(wú)法被逆轉(zhuǎn),DAG和Epoch幫助確定一致的交易全序。通過(guò)這樣的技術(shù),Conflux能夠在防治雙花攻擊的同時(shí)將分叉上的區(qū)塊變?yōu)橛行亩嵘行^(qū)塊的比例,進(jìn)而能夠?qū)⒐溝到y(tǒng)的吞吐率提升到每秒上千次交易,且能夠在分鐘級(jí)別的延時(shí)內(nèi)確認(rèn)交易。在Conflux中,系統(tǒng)的吞吐率瓶頸已不再是共識(shí)機(jī)制本身,而在于網(wǎng)絡(luò)帶寬以及每個(gè)節(jié)點(diǎn)局部的計(jì)算處理能力。

介紹

? ??現(xiàn)如今,區(qū)塊鏈和數(shù)字貨幣在業(yè)界已經(jīng)產(chǎn)生了相當(dāng)大的影響力。以比特幣為代表的區(qū)塊鏈技術(shù)已經(jīng)發(fā)展成為一可以個(gè)在互聯(lián)網(wǎng)級(jí)別上支持安全的,一致的,分布式的交易賬本的平臺(tái)。這個(gè)平臺(tái)進(jìn)而帶動(dòng)了金融科技,供應(yīng)鏈,和醫(yī)療健康等應(yīng)用領(lǐng)域的技術(shù)創(chuàng)新。全球的數(shù)字貨幣市場(chǎng)也支撐著千億美元的市值。

? ? 然后講述了像比特幣這樣采用POW協(xié)議的區(qū)塊鏈的底層原理,這種系統(tǒng)性能和效率方面存在很大的問(wèn)題。由于只能有一個(gè)礦工可以贏得競(jìng)爭(zhēng),寫入?yún)^(qū)塊,導(dǎo)致并發(fā)區(qū)塊作為分叉被遺棄,而且緩慢的性能是防止攻擊的必要條件,所以性能問(wèn)題是中本聰區(qū)塊鏈中一個(gè)比較重要的瓶頸。我們都知道,比特幣每秒可以處理大概7個(gè)交易,以太坊是每秒30個(gè)交易。為了獲得比較高的安全性,一個(gè)交易往往需要等待將近10個(gè)區(qū)塊后才能確認(rèn)交易。這些吞吐量不足,以及高延遲的特征限制了區(qū)塊鏈技術(shù)的應(yīng)用,這就導(dǎo)致了糟糕的用戶體驗(yàn)

? ? 過(guò)去的一些研究主要集中在減少共識(shí)算法的參與者以提高性能而不損害區(qū)塊鏈的安全性。但是這些做法可能會(huì)在協(xié)議參與者之間產(chǎn)生不期望的層次結(jié)構(gòu)并且損害區(qū)塊鏈的去中心化的特點(diǎn)。

Conflux

? ? 本論文所介紹的Conflux方法是一個(gè)快速,可拓展的,分散的區(qū)塊鏈系統(tǒng),它可以每秒處理上千個(gè)交易,并且可以在數(shù)分鐘內(nèi)確認(rèn)每一筆交易。Conflux關(guān)鍵特點(diǎn)是它可以讓多個(gè)參與者同時(shí)貢獻(xiàn)區(qū)塊的時(shí)候還保證了安全性,不會(huì)造成分叉丟失的現(xiàn)象出現(xiàn)。

????我們注意到,在比特幣中的這種基于鏈的共識(shí)機(jī)制里,它本質(zhì)上對(duì)交易的執(zhí)行順序有一個(gè)嚴(yán)格的限制,也就是交易的執(zhí)行順序要和他們所在的區(qū)塊的產(chǎn)生順序是一致的。鑒于交易很少在區(qū)塊鏈中發(fā)生沖突(特別是在加密貨幣中),Conflux首先樂(lè)觀地假設(shè)并發(fā)塊中的事務(wù)默認(rèn)情況下不會(huì)相互沖突,因此只考慮區(qū)塊生成器指定的happens-before關(guān)系。實(shí)際上區(qū)塊鏈的系統(tǒng)里面,很多的交易是沒(méi)有沖突的,所以它們可以按任意的順序執(zhí)行,只要所有的參與節(jié)點(diǎn)都同意一個(gè)順序就可以了。

? ? 為了安全的合并并發(fā)的區(qū)塊,Conflux維護(hù)了兩種類型的塊間關(guān)系。在Conflux中,當(dāng)一個(gè)礦工節(jié)點(diǎn)生成一個(gè)區(qū)塊的時(shí)候,這個(gè)節(jié)點(diǎn)要在新區(qū)塊中定義它的父塊(前置塊),并且在兩個(gè)塊之間建立一個(gè)parent邊。這些parent邊使Conflux能夠在其總鏈上實(shí)現(xiàn)一致的不可逆轉(zhuǎn)的共識(shí)。 該節(jié)點(diǎn)還標(biāo)識(shí)所有沒(méi)有進(jìn)入邊的塊,并從新塊到這些塊創(chuàng)建一條reference邊。這個(gè)reference邊表示的是這些塊在新塊生成之前就已經(jīng)存在了,它們使Conflux能夠系統(tǒng)地?cái)U(kuò)展已達(dá)成的共識(shí)以合并并發(fā)塊。這就導(dǎo)致Conflux區(qū)塊看起來(lái)像一個(gè)復(fù)雜的DAG圖,而不是一個(gè)有可能分叉的鏈。

? ? 下面我截取了Conflux項(xiàng)目的CTO 伍鳴在 2018 POD New BlockTrend新區(qū)勢(shì)區(qū)塊鏈峰會(huì)上的演講來(lái)理解這個(gè)共識(shí)機(jī)制,有圖比較好理解點(diǎn)。

? ??有了這些邊的定義,這個(gè)賬本結(jié)構(gòu)就定下來(lái)了,這個(gè)結(jié)構(gòu)會(huì)在全網(wǎng)節(jié)點(diǎn)進(jìn)行廣播,所以,所有的節(jié)點(diǎn)最終都會(huì)得到一個(gè)一致的賬本。那么有了一致的賬本以后,所有的節(jié)點(diǎn)如何去決定一個(gè)一致的區(qū)塊全序呢?論文核心想法是,首先,這些節(jié)點(diǎn)先在DAG中決定一個(gè)一致的主鏈,然后,再根據(jù)這個(gè)主鏈來(lái)決定一個(gè)一致的區(qū)塊的全序。

????為了決定主鏈,Conflux使用了Ghost規(guī)則。具體來(lái)說(shuō)就是,從創(chuàng)世塊開(kāi)始,迭代的去從孩子區(qū)塊中選擇下一個(gè)在主鏈上的區(qū)塊。選擇的規(guī)則是挑選擁有最大子樹的孩子區(qū)塊。比如,區(qū)塊A和區(qū)塊B是創(chuàng)世區(qū)塊的兩個(gè)孩子區(qū)塊。A的子樹有6個(gè)區(qū)塊,B的子樹有5個(gè)區(qū)塊。所以我們選擇區(qū)塊A作為緊接著創(chuàng)世區(qū)塊的主鏈區(qū)塊。

????為了產(chǎn)生一個(gè)新的區(qū)塊,一個(gè)機(jī)器節(jié)點(diǎn)首先選擇主鏈上的最后一個(gè)區(qū)塊作為新區(qū)塊的父親,然后這個(gè)新區(qū)塊再把所有已經(jīng)收到但還沒(méi)有被其他區(qū)塊所引用的區(qū)塊引用起來(lái)。這里之所以使用Ghost規(guī)則而不是最長(zhǎng)鏈規(guī)則來(lái)選主鏈,是因?yàn)镚host規(guī)則中所有的區(qū)塊,包括那些在分叉上的區(qū)塊,都會(huì)對(duì)主鏈的選擇做出貢獻(xiàn)。這樣的話,就保證了只要攻擊者的算力沒(méi)有超過(guò)50%, 就無(wú)法改變由誠(chéng)實(shí)節(jié)點(diǎn)確定的主鏈。


圖片來(lái)自演講PPT

? ??現(xiàn)在有了讓所有機(jī)器節(jié)點(diǎn)對(duì)主鏈產(chǎn)生共識(shí)的機(jī)制。那接下來(lái),這些節(jié)點(diǎn)如何對(duì)區(qū)塊的全序達(dá)成共識(shí)呢?為了做到這一點(diǎn),引入一個(gè)Epoch的概念。在主鏈上的每一個(gè)區(qū)塊就確定了一個(gè)Epoch。在分叉上的區(qū)塊屬于哪個(gè)Epoch,是由第一個(gè)產(chǎn)生在它之后的主鏈區(qū)塊所在的Epoch決定的。比如,區(qū)塊D屬于Epoch E,因?yàn)镈最先被E引用,所以產(chǎn)生在E之前,但是D并不產(chǎn)生在C之前。

? ??所以,在Conflux中,首先按照Epoch的順序來(lái)給區(qū)塊排個(gè)序。然后在每一個(gè)Epoch內(nèi)部,按照拓?fù)渑判騺?lái)確定區(qū)塊的順序。如果出現(xiàn)平局的情況,再根據(jù)區(qū)塊的哈希值來(lái)打破平局。接下來(lái)我們要為交易排序,Conflux首先按照區(qū)塊的順序去給交易排序。然后在每個(gè)區(qū)塊內(nèi)部,就按照交易在區(qū)塊里所在的位置來(lái)排就可以了。

圖片來(lái)自演講PPT

? ? 后面演講還涉及到如何防止交易沖突,如何防止雙花攻擊以及51%算力攻擊的防范方法。然后一個(gè)交易的確認(rèn)包含以下幾步。用戶首先對(duì)攻擊者的算力比例以及他所能承受的風(fēng)險(xiǎn)有一個(gè)假設(shè)。給定這個(gè)假設(shè),Conflux首先找到這個(gè)交易所屬的Epoch,然后找到和這個(gè)Epoch相應(yīng)的主鏈區(qū)塊。最后再檢查這個(gè)主鏈區(qū)塊被逆轉(zhuǎn)的概率是否小于用戶所能承受的風(fēng)險(xiǎn)。如果小于,則該交易可以確認(rèn)。

Conflux系統(tǒng)架構(gòu)

????這個(gè)圖概括的展示了Conflux系統(tǒng)架構(gòu)。 所有參加Conflux協(xié)議的機(jī)器節(jié)點(diǎn)由一個(gè)p2p的網(wǎng)絡(luò)連接起來(lái),他們通過(guò)Gossip的方式在網(wǎng)絡(luò)中傳播交易和區(qū)塊。每個(gè)機(jī)器節(jié)點(diǎn),維護(hù)一個(gè)交易池,交易池里面緩存著將要打包的交易。另外每個(gè)機(jī)器節(jié)點(diǎn)同時(shí)也在不停的運(yùn)行Conflux的共識(shí)協(xié)議。

? ? 值得注意的是,這篇論文只關(guān)注于設(shè)計(jì)和實(shí)現(xiàn)共識(shí)協(xié)議,而獎(jiǎng)勵(lì)機(jī)制沒(méi)有在論文的范圍內(nèi)。然后在論文中提到的“誠(chéng)實(shí)節(jié)點(diǎn)”是那些在Conflux上忠實(shí)執(zhí)行沒(méi)有錯(cuò)誤的程序的節(jié)點(diǎn)。對(duì)于獎(jiǎng)勵(lì)機(jī)制可作為Conflux未來(lái)的工作。

Contribution

? ? 這篇論文的主要貢獻(xiàn):

? ? 1.共識(shí)協(xié)議:論文主要介紹了一個(gè)快速可拓展,基于DAG圖的中本聰共識(shí)協(xié)議以及它的原型實(shí)現(xiàn)Conflux來(lái)樂(lè)觀地處理并發(fā)區(qū)塊,然后再?zèng)Q定一個(gè)一致的區(qū)塊順序,并在這個(gè)區(qū)塊順序下進(jìn)一步?jīng)Q定所有交易的執(zhí)行順序,最后再依照這個(gè)交易的順序去解決交易的沖突問(wèn)題。Conflux創(chuàng)新的維護(hù)兩個(gè)塊間關(guān)系來(lái)安全的合并并發(fā)區(qū)塊。

? ? 2.Conflux實(shí)現(xiàn):論文基于比特幣的代碼庫(kù)來(lái)實(shí)現(xiàn)Conflux。Conflux是第一個(gè)基于DAG圖的中本聰區(qū)塊鏈系統(tǒng),并且可以在每秒執(zhí)行上千的交易。

? ? 3.實(shí)驗(yàn)結(jié)果:論文系統(tǒng)的大規(guī)模評(píng)估了Conflux。根據(jù)實(shí)驗(yàn)可以發(fā)現(xiàn),當(dāng)執(zhí)行20k個(gè)完整節(jié)點(diǎn)的時(shí)候,Conflux可以達(dá)到2.88GB/h ~5.76GB/h的交易吞吐量,并且可以讓交易在4.5~13.8分鐘內(nèi)確認(rèn)高度信任的交易,即不可逆轉(zhuǎn)的交易。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,196評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 175,688評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 62,654評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,456評(píng)論 6 406
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 54,955評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 42,195評(píng)論 0 287
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,725評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,608評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,802評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,048評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 34,422評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 35,673評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,424評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,762評(píng)論 2 372