陳會云 陳建
[收稿日期]2023-11-09
[摘 要]區(qū)塊鏈是計算機金融領域的一項重要技術創(chuàng)新。它通過去中心化和去信任的方式集體維護一個可靠數據庫的技術方案。共識算法解決了節(jié)點間相互信任的問題,是保障區(qū)塊鏈系統(tǒng)不斷運行的關鍵。文章主要基于共識過程提出共識算法的分類模型,并對各類型中具有代表性的共識算法進行詳細分析,為共識算法的可能優(yōu)化方向提出建議。
[關鍵詞]區(qū)塊鏈;共識算法;去中心化;一致性
doi:10.3969/j.issn.1673 - 0194.2024.10.057
[中圖分類號]TP311.1[文獻標識碼]A[文章編號]1673-0194(2024)10-0-03
1? ? ?區(qū)塊鏈簡介
區(qū)塊鏈最早作為比特幣的底層技術而廣為人知。比特幣是中本聰發(fā)表的論文《比特幣:一種點對點式的電子現金系統(tǒng)》中提出的一種點對點(Peer to Peer,P2P)形式的數字貨幣。它通過點對點分布式時間戳服務器生成依照時間排列并加以記錄的電子交易證明,解決了雙重支付問題。誠實的節(jié)點所控制的計算能力總和大于非誠實節(jié)點所控制的計算能力總和時,系統(tǒng)能安全正常運行[1]。比特幣能滿足去中心化、嚴格控制貨幣供給速度、預估貨幣流通總量以及有效遏制通貨膨脹的需求。
區(qū)塊鏈是由節(jié)點參與的分布式數據庫系統(tǒng),主要是指分布式共識架構。區(qū)塊鏈有著去中心化、去信任設計,通過機密算法、時間戳、樹形結構、共識算法機制和獎勵機制,在節(jié)點無須信任的分布式網絡中實現去中心化信用的點到點交易,解決了目前中心化模式存在的可靠性低、安全性低、成本高、效率低等問題[2]。分布式賬本不同于傳統(tǒng)數據庫技術下的數字化所有權記錄。這種賬本能在點對點網絡的不同節(jié)點之間相互復制,且各項交易均由私鑰簽署。區(qū)塊鏈由一串使用密碼學方法產生的數據塊組成,每一個區(qū)塊都包含了上一個區(qū)塊的哈希值,從創(chuàng)始區(qū)塊開始連接到當前區(qū)塊,形成塊鏈。每一個區(qū)塊都確保按照時間順序在上一個區(qū)塊之后產生。區(qū)塊鏈是比特幣的核心創(chuàng)新,是比特幣的基礎支撐技術。它解決了在不可信信道上傳輸可信信息和價值轉移問題,顛覆了傳統(tǒng)的中心化模式,在不需要中心化信任中介的情況下,解決陌生人間的信任問題,大幅降低信任成本。
2? ? ?共識算法
共識(Consensus)算法是區(qū)塊鏈技術的核心,是一種去中心化鑒定和驗證交易的算法機制。它解決了區(qū)塊鏈在分布式場景下的一致性問題,實現了節(jié)點間互相信任,降低了信任成本。共識算法理論是在拜占庭容錯的分布式一致性算法基礎上,根據具體業(yè)務場景傳輸和同步數據的通信模型。這種容錯能力是區(qū)塊鏈和分布式賬本的一個主要優(yōu)勢。它允許網絡機器節(jié)點連接起來運行,并在某些成員節(jié)點失效的情況下仍能繼續(xù)工作。
共識機制的基本決定參數有去中心化治理、節(jié)點結構、身份驗證、完整性、不可否認性、隱私性、容錯性等性能。上述參數的一部分通過加密算法實現,使用數學方法來嘗試確保安全性和隱私性,方法包括公鑰、私鑰、散列法以及分層確定性密鑰?,F階段區(qū)塊鏈中存在的共識算法主要分為8種:基于工作量證明的共識算法、基于股權證明的共識算法、基于股權授權證明的共識算法、基于領導者的共識算法、基于聯合的共識算法、基于硬件的共識算法、基于拜占庭容錯機制的共識算法和其他非主流共識算法。本文著重介紹當前的主流共識算法及其應用場景和優(yōu)缺點。
2.1? ?基于工作量證明的共識算法
工作量證明(Proof of Work,PoW)指的是通過工作獲得指定成果來證明曾經付出的努力的一種共識算法。區(qū)塊鏈由各個區(qū)塊按時間排序,用每個區(qū)塊設立的評判標準驗證區(qū)塊的有效性,每個區(qū)塊加入隨機元素來調節(jié)記賬難度。增加的成本就是工作量,求解哈希(Hash)難題是工作量證明[3]。比特幣挖礦是通過計算出一個滿足規(guī)則的隨機數,獲得本次記賬權,同時發(fā)出本輪需要記錄的數據,全網其他節(jié)點驗證后一起存儲。系統(tǒng)用工作量證明機制來分發(fā)資產,以鼓勵用戶挖礦,保障網絡的穩(wěn)定性。如果要生成新的區(qū)塊并加入區(qū)塊鏈,需要解答工作量證明函數、區(qū)塊以及難度值。
工作量證明過程:生成比特幣交易平臺(Coinbase),并與其他所有準備打包進區(qū)塊的交易組成交易列表,通過Merkle Tree(梅克爾樹)算法生成Merkle Root Hash(梅克爾哈希根);把Merkle Root Hash及其他相關字段組裝成區(qū)塊頭,不停地變更區(qū)塊頭中的隨機數,對每次變更后的區(qū)塊頭做雙重安全散列算法(Secure Hash Algorithm,SHA)256運算,對比結果值與當前網絡目標值,如果小于目標值,則解題成功,工作量證明完成。其優(yōu)勢在于算法易實現,全網參與且節(jié)點自由進出,系統(tǒng)不易被破壞;劣勢是安全性缺乏算力保障[4],資源浪費多,可監(jiān)管性弱。
使用工作量證明共識算法的項目有比特幣、萊特幣、狗狗幣、達世幣、域名幣、大零幣(Zero Cash)、公正通和以太坊的前3個階段。
2.2? ?基于股權證明的共識算法
股權證明主要包括權益證明(Proof of Stake,PoS)和基于保證金的經濟激勵共識協議(如Casper Protocol)兩個具有代表性的共識機制,基本思想是產生區(qū)塊的難度與節(jié)點所占的股權成比例。
PoS的主要思想類似財產儲存在銀行,根據用戶數字貨幣的量和存儲時間,給予一定的利息[4-5]。PoS算法在這些驗證者中隨機選取一個,給他們權利來產生下一個區(qū)塊,如果一定時間內該驗證者沒有產生一個區(qū)塊,則選出第二個驗證者來代替產生新區(qū)塊,以最長的鏈為準,用戶就有機會產生新塊而得到獎勵。資源消耗減少、性能高、集權化風險減少、縮短了共識時間的優(yōu)勢和可監(jiān)管性弱及受攻擊影響的劣勢共存。使用PoS的項目有以太坊的第4階段。
Casper的基本思想是為驗證人提供哪個區(qū)塊會被最終確定的機會。Casper協議下的驗證人需要完成出塊和投注兩個活動。出塊過程:驗證人收集交易,在其出塊時間內制造一個區(qū)塊并簽名,發(fā)送到網絡上。投注過程:下載所有的區(qū)塊和投注,用算法形成但不公布意見,按順序在每個高度進行觀察,當一個塊的概率高于0.5時就處理它,否則就跳過它,處理所有區(qū)塊之后得到的狀態(tài)可顯示為區(qū)塊鏈的“當前狀態(tài)”。
2.3? ?基于股權授權證明的共識算法
授權股份證明機制(Delegated Proof-of-Stake,DPoS)是在PoS基礎上提出的。在DPoS中成為一名代表,需要在網絡上注冊公鑰,然后被分配一個32位的特有標識符,最終該標識符會被每筆交易數據的“頭部”引用。在授權選票時,每個錢包有一個參數設置窗口,在該窗口用戶可以選擇一個或更多的代表,并將其分級。在抵抗攻擊上,每名代表都有相同的投票權,無法通過獲得超過1%的選票而將權力集中到一個單一代表上。這將使確定DPoS攻擊目標更為困難。而代表之間的潛在直接連接將使他們生產區(qū)塊變得更為困難。其優(yōu)勢在于大幅減少參與驗證與記賬節(jié)點數量和秒級共識驗證。整個共識機制依賴于代幣是其明顯缺點。使用DPoS的項目有未來幣、斯蒂姆幣(Steem)和石墨烯協議(Graphene)。
2.4? ?基于領導者的共識機制
領導者共識是基于領導者的分布式一致性算法,主要包含基于信息傳遞的PaXoS(Probe-and-XOR of strings)算法、基于分布式的共識算法和驗證池(Pool)算法。
PaXoS是基于消息傳遞的一致性算法,目前基于領導者的共識機制都是PaXoS的變種。該算法機制中有3種角色:申請者、接受者和學習者。申請者提交提案,接受者處理提案,學習者獲取并執(zhí)行已經通過審批的提案中的決議。一個節(jié)點可兼多重類型。申請者成為領導后向學習者發(fā)送決議,學習者接收廣播、學習決議并執(zhí)行任務。
分布共識算法中一個節(jié)點有3種狀態(tài):追隨、候選和領導。追隨者沒有聽取領導的意見時可成為候選人,從其他節(jié)點請求投票。節(jié)點以投票方式回復。如果從大多數節(jié)點獲得投票權,則候選人成為領導者。如果兩個節(jié)點同時成為候選者,可進行分組投票。
驗證池是融入了數據驗證機制傳統(tǒng)主流的分布式一致性技術,適合多方參與的多中心模式。不需要代幣和極大縮短共識時間是其優(yōu)點,選舉領導者過程中不允許出現錯誤節(jié)點和領導者的絕對權限使得安全性存在問題。驗證池通常應用在布比區(qū)塊鏈中。
2.5? ?基于聯合的共識算法
聯合共識是通過一個小團體共識達成全部共識,主要包括瑞波共識機制(Robust Principal Component Analysis,RPCA)和恒星鏈(Stellar)共識機制。
RPCA每隔幾秒就能應用到所有節(jié)點,以保持網絡的正確性和一致性。達成共識后,目前的分類賬被視為“關閉”,成為最后一個分類賬本。RPCA以回合方式進行。每個服務器將共識之前所有有效交易,包括由服務器的終端用戶發(fā)起的新交易或以前共識過程中獲取的交易等,以被稱為“候選集”列表的形式公開,每個服務器合并唯一節(jié)點列表上所有服務器的候選集,并對所有交易的真實性進行表決,收到超過最低百分之百為“yes”票的交易將轉交給下一回合。滿足要求的所有交易均適用于分類賬本,然后該分類賬本關閉,成為新的最終分類賬本。該算法消耗低且高效,可以人工手動去除網絡中不安全的節(jié)點,維護網絡的有效性和一致性。易于被攻擊和可以偽造節(jié)點來攻擊網絡是其缺點。RPCA通常應用在瑞波幣中。
聯邦拜占庭共識算法(Federated Byzantine Agreement,FBA)是恒星協議中提出的共識機制。共識流程分為未知階段、接受階段和確認階段。循環(huán)結構的出現與節(jié)點自身選取有關,可導致整個系統(tǒng)嵌入依賴循環(huán)。網絡規(guī)模較大的時候,分布式數據一致性的收斂速度慢的問題就會越來越明顯。
2.6? ?基于硬件的共識算法
基于硬件的共識算法中比較有代表性的是英特爾公司在Sawtooth Lake(鋸齒湖)項目中提出的消逝時間量證明(Proof of Elapsed Time,PoET)。PoET是一種建立在可信環(huán)境基礎上的彩票協議,通過英特爾公司的軟件保護擴展來滿足大量參與者的需求,是基于專門硬件的證明算法。每個驗證器從可信任函數中請求一個等待時間,驗證器利用短暫的時間為每個特別的交易區(qū)塊選擇一個領導。低參與成本增加了共識算法的健壯性。該算法節(jié)省算力和能耗,具有較強的有效性。但其運行環(huán)境不真正可信,不適用于生產環(huán)境。
2.7? ?基于PBFT及其派生方案的共識算法
實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)是為解決在分布式計算上達成共識時,因計算機出錯等導致交換錯誤信息問題而產生的共識機制。PBFT是一種狀態(tài)機副本復制算法。額外的副本除能降低性能之外,不能提高可靠性。PBFT解決了拜占庭問題,但比較耗費時間和資源。授權拜占庭容錯算法(Delegated Byzantine Fault Tolerance,DBFT)是一種經過改進的拜占庭容錯算法,能夠適用于區(qū)塊鏈系統(tǒng),解決了投票中對記賬節(jié)點真實身份的認證問題。
2.8? ?非主流的共識算法
非主流共識算法中的地理位置路由協議(Geographical and Energy Aware Routing,GEAR)將集體評估與輪轉記賬相結合,由輪轉記賬、群體評估和齒輪共識路由3個子協議組成,結合區(qū)塊鏈數據構造和網絡通信的特色,實現保險、高效、去中心化、應用場景靈巧的數據同步共識。
協議的參加者包括輪轉見證人、一級集體評估人、二級集體評估人。一級集體評估人作為接入共識網絡的用戶,同時是使用者,按照其所持代幣加權評估選舉出輪轉見證人,見證人依照等概率輪流記賬。二級集體評估人是在評估事件產生時由輪轉見證人轉化而來,通過加權平均的親近率掠奪一次記賬機遇。
3? ? ?共識算法的可能優(yōu)化方向
區(qū)塊鏈技術在擁有廣闊應用前景的同時存在很多問題,在共識算法上有很大的優(yōu)化空間。現階段沒有一種共識算法是完美無缺的,共識算法的優(yōu)化沒有標準答案[6]。本文通過對現有共識算法優(yōu)缺點的總結與分析,提出如下優(yōu)化方向,以期為未來研究學習提供有益的參考。
(1)提高共識效率。區(qū)塊鏈技術的應用及項目落地的關鍵因素之一就是應用系統(tǒng)的共識效率?,F有共識算法可以滿足商用實時處理的基本需求,但是對于高頻交易量的應用場景還無法滿足,因此提高共識效率是當前共識算法的首要優(yōu)化任務,也是解決區(qū)塊鏈項目落地問題的關鍵。
(2)共識機制模塊化,接口標準化。Hyperledger Fabric項目提出了可插拔共識算法的模塊化架構。共識機制與應用場景高度相關,整合不同的共識算法構建一個共識算法池,按照可插拔機制建立統(tǒng)一的接口標準,為共識機制的按需選用提供技術支持。
(3)具有智能性的共識算法。人工智能技術的發(fā)展使得機器有越來越多的自主行為,而區(qū)塊鏈是一個無須信任的網絡,是為機器經濟服務的規(guī)?;沧R機制。二者的結合將會帶來前所未有的改變,可實現友好型的共識機制。
主要參考文獻
[1]NAKAMOTO S.Bitcoin:A peer-to-peer electronic cash system[EB/OL].(2008-10-31)[2023-10-26].https://assets.pubpub.org/d8wct41f/31611263538139.pdf.
[2]沈鑫,裴慶祺,劉雪峰.區(qū)塊鏈技術綜述[J].網絡與信息安全學報,2016(11):11-20.
[3]周鄴飛.區(qū)塊鏈核心技術演進之路:共識機制演進(1)
[J].計算機教育,2017(4):155-158.
[4]梁斌.從“比特幣挖礦”看區(qū)塊鏈技術的共識機制[J].中國金融電腦,2016(9):45-46.
[5]枯葉子.掰一掰區(qū)塊鏈共識機制與分布式一致性算法[EB/OL].(2016-09-10)[2023-10-26].https://yq.aliyun.com/articles/60400.
[6]袁勇,王飛躍.區(qū)塊鏈技術發(fā)展現狀與展望[J].自動化學報,2016(4):481-494.