鏈化未來共識協(xié)議詳解(上)

本系列分上下兩篇任柜,對鏈化未來共識協(xié)議進行詳細介紹枫笛。文章首先介紹了常見共識協(xié)議的PoW吨灭,PoS,DPoS刑巧,從而引出了鏈化未來基于BFT的隨機PoS共識算法(RPoS)喧兄,隨后詳細介紹了鏈化未來共識協(xié)議的架構、消息類型啊楚、詳細流程以及節(jié)點狀態(tài)圖等內容吠冤。文章最后對鏈化未來共識協(xié)議用到的關鍵技術進行了總結說明。

1.共識協(xié)議簡介

Byzantine fault tolerance(BFT)問題[1]描述了在分布式計算機系統(tǒng)中恭理,當部分節(jié)點發(fā)生網絡延時拯辙,數據包丟失,宕機颜价,作惡等情況發(fā)生時涯保,誠實的節(jié)點如何能夠保持狀態(tài)的一致性,達成共識周伦。L. Lamport[1]給出了兩種解決方案夕春,時間復雜度為O(n^m)口頭消息和時間復雜度O(n*m)的書面消息方案。Miguel Castro和Barbara Liskov提出了Practical Byzantine fault tolerance(PBFT)[2]横辆,解決了原始BFT算法效率不高的問題撇他,將算法復雜度由指數級降低到多項式級茄猫,使拜占庭容錯在實際應用中變得可行。

2008年困肩,比特幣[3]的問世划纽,它用一種全新的思路解決了比BFT問題更復雜的問題[4]。任何節(jié)點不需要批準就可以加入比特幣網絡锌畸,也就是permissionless或公有鏈勇劣,與PBFT需要permission或聯盟鏈有本質的區(qū)別,它是完全去中心化的潭枣。在公有鏈中比默,不知道有多少節(jié)點,節(jié)點是誰盆犁,不能用BFT中少數服從多數的原則命咐,而是用一種叫Proof of work(PoW)的算法。PoW通過一次次修改nonce值做哈希碰撞谐岁,使得哈希值前導0的個數滿足某個值(難度系數)醋奠,然后節(jié)點通過最長鏈原則達到共識。比特幣網絡的容錯率是50%伊佃,只有超過半數節(jié)點是誠實的窜司,比特幣網絡就是安全的。比特幣網絡通過經濟激勵機制獎勵誠實節(jié)點航揉,對作惡進行隱式的懲罰(消耗了算力和電力塞祈,但是沒有得到獎勵)來保證至少有51%的誠實節(jié)點。以太坊1.0[5]加入了圖靈完備的智能合約帅涂,讓區(qū)塊鏈成為世界的計算機议薪;共識方面,吸取比特幣存在Application Specific Integrated Circuit(ASIC)挖礦導致算力集中[6]媳友,以太坊1.0基于memory-hardness笙蒙,讓內存IO成為挖礦瓶頸,達到抗ASIC挖礦庆锦。共識周期也從比特幣網絡的10分鐘降到了15秒出塊,由于出塊時間變短轧葛,分叉的概率變大搂抒,為了抵抗Selfish Mining,以太坊不再使用比特幣的最長鏈原則尿扯,而是貪婪最重可觀察子樹規(guī)則(GHOST)求晶。

比特幣的吞吐量7筆/秒,而以太坊也只有15筆/秒衷笋。PoW共識除了性能低外芳杏,對資源的浪費[7],算力集中化[8]。為了提高區(qū)塊鏈性能爵赵,減少挖礦導致資源消耗吝秕,解決由于網絡效應導致算力集中問題,研究人員提出Proof of Stake(PoS), Delegate Proof of Stake(DPoS)等[9-15]共識算法空幻。

Proof of Stake(PoS)烁峭,節(jié)點通過抵押代幣加入共識,抵押代幣的方式使節(jié)點更分散[16]秕铛,它是一種無需許可的共識算法约郁。其中,一些PoS算法[9-12]是基于BFT的但两,通過持有代幣或抵押成為驗證節(jié)點鬓梅,然后在驗證節(jié)點中選出leader,leader提塊再做2輪或3輪投票確定塊谨湘。Tendermint[9]首次把BFT引入到PoS共識绽快,節(jié)點通過抵押代幣成為Validator,Validator具有提塊和投票權悲关。系統(tǒng)每個塊高開始基于Round-Robin算法谎僻,從Validator集合中選擇一個成為Proposer,Proposer節(jié)點提塊并廣播寓辱,Validator對塊進行投票艘绍,pre-vote階段結束時,如果節(jié)點收齊2/3 Validator節(jié)點的投票秫筏,則在pre-commit開始時繼續(xù)投該塊诱鞠,否則在pre-commit階段開始時投nil塊;在pre-commit結束時这敬,收齊2/3 Validator的投票則commit該塊航夺,否則更換proposer,重新開始崔涂。Tendermint的Proposer是可以預知的阳掐,在開放的網絡中容易遭受DDoS攻擊,導致系統(tǒng)不能提供服務冷蚂。Algorand[10]通過可驗證隨機函數(VRF)得到hash和證明pi,然后根據持有代幣分布計算節(jié)點是否是提塊者缭保。其他節(jié)點可以通過VRF驗證提塊者的角色。Algorand通過VRF有效的解決了leader提前暴露問題蝙茶,但是艺骂,每輪提塊者的個數不確定會導致網絡風暴。以太坊2.0共識算法Casper[11]為了提高性能也采用BFT的思路隆夯,但是引入一些約束和處罰措施[18]:同一塊高投票者只能投一個塊钳恕;節(jié)點離線一定時間將受到不同程度的押金罰沒别伏;驗證節(jié)點是動態(tài)變化等。Casper通過博弈論的設計忧额,約束節(jié)點按設想的方式運行厘肮,已達到網絡的穩(wěn)定運行。目前以太坊2.0已經按計劃開發(fā)中宙址,Phase 0階段將在2020年初上線轴脐。HoneyBadgerBFT[12]認為網絡延時是共識最主要的瓶頸之一,帶上交易的塊會造成轉發(fā)節(jié)點網絡擁堵抡砂,延時大咱。HoneyBadgerBFT提出了一種新的思路,讓網絡中節(jié)點緩存中的交易一致注益,只要對確定選取哪些交易的值進行BFT共識就可以碴巾。節(jié)點隨機轉發(fā)一批交易,交易就能達到所有的節(jié)點;value的傳播用到的門限加密丑搔,只有超過1/3的節(jié)點合作才能得到value值厦瓢。另外一些基于chain的PoS算法,如Dfinity[13]啤月,通過閾值中繼和聚合簽名(BLS)產生隨機數煮仇,引入見證人角色,提塊者提塊之后谎仲,被見證人確認浙垫。

DPoS是2014年由Bitshares[14]首席開發(fā)者,現為EOS[15] CTO Dan Larimer提出郑诺。與PoS抵押代幣就可以參與共識這種“民主制度”相比夹姥,DPoS更像“人民代表大會”或“代議制”,持幣人投票選舉共識節(jié)點辙诞,每個周期節(jié)點輪流出塊辙售,每過一個周期節(jié)點洗牌一次,打亂原有的順序飞涂。節(jié)點由專業(yè)的團隊運營旦部,通過配置更強的CPU,更快的帶寬较店,更大的內存志鹃,整個網絡的性能有極大的提升。但是泽西,DPoS算法比較中心化[17],與去中心化的區(qū)塊鏈原教旨主義背道而馳缰趋。

鑒于以上共識算法的特點捧杉,我們提出了一種隨機PoS共識算法(RPoS)陕见。主要有幾個特點:

(1). 基于BFT,正常情況下味抖,我們需要BA0评甜,BA1兩個階段完成共識,與Tendermint的pre-vote和pre-commit兩階段類似仔涩。但是忍坷,與Tendermint在pre-commit階段無法達成2/3 Validator共識重新選Proposer不一樣的是,我們引入了BAX階段熔脂,加快網絡異常的時候網絡恢復佩研。

(2). 基于密碼學創(chuàng)新的隨機數產生算法。礦工通過抵押代幣成為main角色霞揉,普通用戶通過抵押代幣成為waiter角色旬薯;在一個投票周期中,main和waiter通過計算vrf值分別投到隨機數合約中main和waiter pool适秩;合約根據權重用main和waiter pool中vrf隨機數生成最終的隨機數绊序,投票者可以獲得獎勵,而不投票這將被扣除一定數量的抵押代幣秽荞。創(chuàng)新的隨機數產生算法有效地解決了“成員拒絕提交”骤公,“setup過程復雜”,“成員串謀操縱”等多種困擾隨機數生成的問題扬跋。

(3). 固定的交易確認時間阶捆,2階段投票敲定最終塊。在我們的真實環(huán)境中胁住,99.99%的情況下趁猴,經過2階段投票后就可以確定塊。

(4). 硬件兼容性強彪见,通過同步算法機制對高速節(jié)點和慢速節(jié)點進行時序協(xié)調儡司,保持整個網絡節(jié)點同步,適應不同計算性能的硬件節(jié)點余指。

(5). 提供多種靈活接入方案(靜態(tài)捕犬、P2P、TCP酵镜、KCP等)碉碉,適應復雜多變的網絡環(huán)境。節(jié)點在身份認證的基礎上自動發(fā)現淮韭,自動建鏈垢粮,動態(tài)維護網絡的聯通性。

(6). 采用BLS(聚合簽名)技術快速確認塊靠粪,提高安全性的同時節(jié)省存儲空間蜡吧。


2.鏈化未來共識協(xié)議

2.1.兩層架構

?網絡層(layer0):

???? Gossip網絡毫蚓,節(jié)點自動發(fā)現、自動建鏈昔善、身份驗證元潘、動態(tài)拓撲維護等。

?共識層(layer1):

?????鏈化未來共識算法君仆。


圖1鏈化未來共識模塊圖


2.1.1.網絡層(layer0)

去中心化的網絡系統(tǒng)中翩概,節(jié)點與節(jié)點的聯通性非常重要,它決定了共識協(xié)議的傳播返咱、數據的同步等是否能及時并準確地到達系統(tǒng)的各個角落钥庇。由于節(jié)點的加入和離開的不可控性,系統(tǒng)還需要考慮網絡拓撲的動態(tài)變更洛姑,即在鄰居節(jié)點斷開后及時的鏈接到其他節(jié)點上沐,從而維護系統(tǒng)的健壯性。

鏈化未來網絡基于輔助節(jié)點(seed)楞艾,通過一系列點對點報文的交互發(fā)現網絡中的其他對等節(jié)點参咙。并隨機的與對等節(jié)點建立網絡連接。鏈接之間的绷蛎校活報文能夠在鏈接斷開或網絡狀態(tài)不穩(wěn)定時蕴侧,及時的鄰居節(jié)點,實現拓撲的動態(tài)變更两入。

鏈化未來網絡層有以下幾方面的優(yōu)勢:

非常方便的節(jié)點發(fā)現净宵,節(jié)點間隨機互聯,即保障安全性裹纳,又足夠去中心化择葡。

提供UPNP配置開關,在支持upnp映射的網絡中自動映射upnp地址剃氧,方便其他節(jié)點連接到本節(jié)點敏储。

反向鏈接技術,當前節(jié)點不能鏈接到其他節(jié)點時朋鞍,請求對方的反向鏈接已添,這在公網IP請求私網的鏈接場景中有極大的意義。

NAT穿透技術滥酥,可以穿透NAT網關后的局域網節(jié)點更舞,構建更隨機的、去中心化更高的網絡坎吻。

支持多種接入方式:如TCP缆蝉、KCP、靜態(tài)鏈接、動態(tài)p2p鏈接等返奉。

2.1.2.共識層(layer1)

節(jié)點角色定義:

節(jié)點在抵押后贝搁,自動成為committee成員。committee包括proposer節(jié)點和voter節(jié)點芽偏。未抵押節(jié)點為listen節(jié)點。


proposer節(jié)點:

通過隨機數在committee成員中隨機選出的提塊者弦讽,負責本輪提塊和發(fā)送propose消息污尉。

voter節(jié)點:

committee成員,需要抵押往产。本輪未被選為proposer的committee成員被碗,自動成為voter,負責對proposer提的塊(propose消息)執(zhí)行驗證仿村,驗證通過后簽名并發(fā)送echo消息(投票)锐朴,驗證不通過丟棄propose消息并可能對作惡節(jié)點發(fā)起懲罰。

listen節(jié)點:

未抵押節(jié)點蔼囊,無權提塊和驗證塊焚志,可以隨整個系統(tǒng)正常出塊。

2.2.主要消息類型

propose消息:

由proposer節(jié)點發(fā)出的提塊消息畏鼓,需要voter節(jié)點接收并驗證確認酱酬。消息內容主要包括:塊數據(包含交易)、proposer自己的簽名用于確認身份云矫。

echo消息:

voter對propose消息驗證并通過后膳沽,發(fā)送echo消息通知其它節(jié)點。消息內容主要包括:塊id让禀、voter自己的簽名挑社、bls簽名、輪次信息等巡揍。

sync消息:

塊同步消息痛阻,用于兩個節(jié)點間傳遞塊數據。消息內容主要包括:塊id吼肥、起始塊录平、結束塊、消息序列號等缀皱。


2.3.投票選舉流程

鏈化未來采用基于BFT的RPOS算法斗这,正常情況通過2輪投票達成共識。

第一輪(ba0階段):

由proposer節(jié)點提塊啤斗,voter節(jié)點驗證塊表箭,并對本輪出塊進行第一次投票。

第二輪(ba1階段):

所有節(jié)點基于第一輪的投票結果钮莲,再次投票確認免钻,只有當2/3 voter對本輪出塊達成一致彼水,才能出塊并進入下一個塊的共識。每個輪次持續(xù)5秒极舔,正常情況2輪10秒出塊凤覆。

bax輪:

當遇到網絡風暴等異常情況,2輪投票后仍然無法達成共識拆魏,則進入bax輪次盯桦,出塊時間不定,出塊條件仍然需要超過2/3節(jié)點對本輪出塊達成共識渤刃。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末拥峦,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子卖子,更是在濱河造成了極大的恐慌略号,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洋闽,死亡現場離奇詭異玄柠,居然都是意外死亡,警方通過查閱死者的電腦和手機喊递,發(fā)現死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門随闪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骚勘,你說我怎么就攤上這事铐伴。” “怎么了俏讹?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵当宴,是天一觀的道長。 經常有香客問我泽疆,道長户矢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任殉疼,我火速辦了婚禮梯浪,結果婚禮上,老公的妹妹穿的比我還像新娘瓢娜。我一直安慰自己挂洛,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布眠砾。 她就那樣靜靜地躺著虏劲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柒巫,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天励堡,我揣著相機與錄音,去河邊找鬼堡掏。 笑死应结,一個胖子當著我的面吹牛,可吹牛的內容都是我干的泉唁。 我是一名探鬼主播摊趾,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼游两!你這毒婦竟也來了?” 一聲冷哼從身側響起漩绵,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤贱案,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后止吐,有當地人在樹林里發(fā)現了一具尸體宝踪,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年碍扔,在試婚紗的時候發(fā)現自己被綠了瘩燥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡不同,死狀恐怖厉膀,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情二拐,我是刑警寧澤服鹅,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站百新,受9級特大地震影響企软,放射性物質發(fā)生泄漏。R本人自食惡果不足惜饭望,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一仗哨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铅辞,春花似錦厌漂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春雏节,著一層夾襖步出監(jiān)牢的瞬間胜嗓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工钩乍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辞州,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓寥粹,卻偏偏與公主長得像变过,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涝涤,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容

  • 鏈化未來公眾號將分三篇文章來闡述鏈化未來的共識協(xié)議的理論設計媚狰,后續(xù)還會推出一系列文章來詳細說明鏈化未來共識協(xié)議的工...
    區(qū)塊奇點閱讀 226評論 0 0
  • 鏈化未來公眾號將分三篇文章來闡述鏈化未來的共識協(xié)議的理論設計,后續(xù)還會推出一系列文章來詳細說明鏈化未來共識協(xié)議的工...
    區(qū)塊奇點閱讀 341評論 0 0
  • “十年生死兩茫茫阔拳,不思量崭孤、自難忘、千里孤墳糊肠,無處話凄涼辨宠。”沉淪了幾百年的蘇軾货裹,拖著疲乏的身軀嗤形,從書中緩緩地向...
    九五李凱閱讀 186評論 0 0
  • 筆記。
    wahkim閱讀 204評論 4 0
  • 我爸能文能武,文:并不只是因為他是老師墓阀,武:并不只是他會耍些花拳毡惜。 說到文,雖然他罵人特別溜斯撮,什么古諺经伙,什么歇后語...
    香菇_271a閱讀 433評論 1 2