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