原標(biāo)題:如何理解區(qū)塊鏈的共識(shí)算法?
隨著業(yè)務(wù)量的增加嵌巷,比特幣等公有鏈網(wǎng)絡(luò)已經(jīng)擁堵不堪萄凤,交易費(fèi)節(jié)節(jié)攀升,對(duì)比傳統(tǒng)金融結(jié)算系統(tǒng)已經(jīng)沒有速度上的優(yōu)勢(shì)搪哪。對(duì)于去中心化的系統(tǒng)靡努,由于社區(qū)成員基于自己的利益考慮,無法達(dá)成一致晓折,也就難以采用更高效的共識(shí)算法或更先進(jìn)的系統(tǒng)架構(gòu)惑朦。
因此,社區(qū)出現(xiàn)了閃電網(wǎng)絡(luò)漓概、雷電網(wǎng)絡(luò)等鏈下或側(cè)鏈的方案漾月,試圖解決交易性能低下的問題——這些技術(shù)并不提升區(qū)塊鏈本身的共識(shí)性能,而是將交易放到區(qū)塊鏈的外部進(jìn)行胃珍。
閃電網(wǎng)絡(luò)(Lightning Network)
閃電網(wǎng)絡(luò)(Lighting Network)指的是栅屏,A和B兩人可以把比特幣放到一個(gè)多重簽名錢包中鎖定(鏈下),然后進(jìn)行交易簽名更改雙方各自能取回的比特幣數(shù)量堂鲜。交易參與方可以隨時(shí)關(guān)閉交易通道栈雳,最后一筆經(jīng)過簽名且包含最新余額動(dòng)態(tài)的交易最終將會(huì)被廣播并寫入比特幣區(qū)塊鏈(回歸鏈上)。這個(gè)交易過程也可以在更多人之間進(jìn)行缔莲,整個(gè)過程實(shí)際上不需要在主鏈確認(rèn)哥纫,因?yàn)槎际菐追街g倒來倒去的”數(shù)字游戲“,因此交易速度會(huì)非常迅速痴奏。只有當(dāng)關(guān)閉交易通道時(shí)蛀骇,才會(huì)最終確定各自的余額并寫進(jìn)主鏈區(qū)塊。
在閃電網(wǎng)絡(luò)出現(xiàn)前读拆,雖然比特幣社區(qū)也試圖通過區(qū)塊擴(kuò)容擅憔、隔離見證等技術(shù)在一定程度上增加交易處理能力,但這些方式并不能導(dǎo)致交易處理能力出現(xiàn)數(shù)量級(jí)的改善檐晕。以比特幣區(qū)塊鏈為后盾暑诸,在鏈下實(shí)現(xiàn)真正的點(diǎn)對(duì)點(diǎn)微支付交易蚌讼,區(qū)塊鏈處理能力的瓶頸被徹底打破,時(shí)延个榕、最終性篡石、容量甚至隱私問題也迎刃而解,這就是比特幣“閃電網(wǎng)絡(luò)”(Lightning Network)的思路西采。
閃電網(wǎng)絡(luò)的關(guān)鍵技術(shù)有兩個(gè):RSMC和HTLC凰萨。前者解決了鏈下交易的確認(rèn)問題,后者解決了支付通道的問題械馆。
閃電網(wǎng)絡(luò)的基礎(chǔ)是交易雙方之間的雙向微支付通道胖眷,RSMC(Recoverable Sequence Maturity Contract)定義了該雙向微支付通道的最基本工作方式。HTLC(Hashed Timelock Contract)進(jìn)一步實(shí)現(xiàn)了有條件的資金支付霹崎,通道余額的分配方式也因此變得更為復(fù)雜珊搀。基于HTLC可以實(shí)現(xiàn)“閃電網(wǎng)絡(luò)”仿畸。
盡管閃電網(wǎng)絡(luò)本身可以基于任何合適的傳統(tǒng)技術(shù)構(gòu)建(例如中心化的服務(wù)器和傳統(tǒng)數(shù)據(jù)庫(kù)),閃電網(wǎng)絡(luò)的支付通道也可能逐漸向少數(shù)大型中介集中朗和,變成若干大型中介彼此互聯(lián)错沽、普通用戶直連大型中介的形式,但這種方案仍然具有傳統(tǒng)中心化方案不可比擬的優(yōu)勢(shì)眶拉,因?yàn)橛脩衄F(xiàn)在并不需要信任中介千埃,不需要在中介處存錢才能轉(zhuǎn)移支付,資金安全受到比特幣區(qū)塊鏈的充分保護(hù)忆植。
閃電網(wǎng)絡(luò)存在的問題:
閃電網(wǎng)絡(luò)的支付通道會(huì)導(dǎo)致一定程度的中心化放可。如果閃電網(wǎng)絡(luò)存在,人們不會(huì)立即就信任它朝刊,短時(shí)間內(nèi)不會(huì)有錢包或支付供應(yīng)商支持它耀里。
使用閃電網(wǎng)絡(luò)需要提前充值。閃電網(wǎng)絡(luò)的運(yùn)行需要用戶和企業(yè)鎖定在交易期間他們所需數(shù)目的比特幣拾氓。對(duì)于小額交易不是問題冯挎,然而,如果按照閃電網(wǎng)絡(luò)所建議的‘合理使用案例’中每個(gè)人在每6個(gè)月中只開啟1個(gè)通道的話咙鞍,這意味著該通道需要鎖定這個(gè)用戶在該時(shí)間段內(nèi)所持有的最大數(shù)目的價(jià)值額度房官,這需要對(duì)鏈下網(wǎng)絡(luò)的充分信任,還需要人們能預(yù)見將花費(fèi)多少額度续滋,以及何時(shí)花費(fèi)翰守。
無法進(jìn)行離線支付,A和B交易疲酌,如果B掉線了蜡峰,就無法簽名確認(rèn)分配方案,交易失敗。
雷電網(wǎng)絡(luò)(Raiden Network)
雷電網(wǎng)絡(luò)(Raiden Network)是以太坊社區(qū)提出的自己的鏈下微支付通道解決方案事示,跟比特幣的閃電網(wǎng)絡(luò)的思路類似早像,但也有所發(fā)展,例如引入了較HTLC更為通用的“Smart Condition”等肖爵。
因?yàn)橐蕴恢悄芎霞s對(duì)報(bào)文格式?jīng)]有特別的字段限制卢鹦,使得Raiden得以為通道余額快照引入一個(gè)單增序號(hào),極為輕松自然地解決了舊版本快照的識(shí)別和作廢問題劝堪。
和閃電網(wǎng)絡(luò)一樣冀自,雙方需要在以太坊區(qū)塊鏈上開設(shè)通道并各自鎖定以太。這步動(dòng)作可通過向Raiden智能合約發(fā)送一條雙方簽名認(rèn)可的報(bào)文來實(shí)現(xiàn)秒啦。報(bào)文中的關(guān)鍵信息包括:雙方公鑰熬粗、雙方鎖定資產(chǎn)數(shù)量、雙方簽名余境。
此后的任何支付動(dòng)作都可以發(fā)生在以太坊區(qū)塊鏈外驻呐,參與雙方只需要私下傳遞一系列報(bào)文。
該如何提升性能芳来?
以迅雷鏈為例含末,下面來解讀下如何提升性能。首先從架構(gòu)上優(yōu)化即舌,提出同構(gòu)多鏈的框架佣盒。即系統(tǒng)由一條條相對(duì)獨(dú)立(獨(dú)立進(jìn)行共識(shí))的鏈組成,每條鏈有多個(gè)節(jié)點(diǎn)顽聂,每個(gè)節(jié)點(diǎn)被分配到其中一條鏈上肥惭,不同的賬戶數(shù)據(jù)被錨定在不同的同構(gòu)鏈上,然后接入層將交易路由到發(fā)送方所在的鏈上進(jìn)行區(qū)塊打包與共識(shí)紊搪。系統(tǒng)中鏈的數(shù)量能夠按業(yè)務(wù)需求動(dòng)態(tài)增加蜜葱。因此同構(gòu)多鏈的架構(gòu)首先保證了系統(tǒng)的可擴(kuò)展性。
除了架構(gòu)上優(yōu)化使得并發(fā)處理性能提升耀石,還應(yīng)該保證分布式系統(tǒng)中的強(qiáng)一致性笼沥,并具備一定的容錯(cuò)和防拜占庭節(jié)點(diǎn)作惡的能力,因此每條鏈內(nèi)的共識(shí)算法可以選擇類 BFT 算法娶牌。在每一條單獨(dú)的鏈上奔浅,使用實(shí)用拜占庭容錯(cuò)算法(PBFT)保證強(qiáng)一致性,而且一方面通過容錯(cuò)性诗良,降低節(jié)點(diǎn)失效對(duì)整個(gè)分布式系統(tǒng)的影響汹桦,另一方面采用多次重試和更換失效節(jié)點(diǎn)機(jī)制,降低節(jié)點(diǎn)間長(zhǎng)時(shí)間失效的概率鉴裹,保證系統(tǒng)的可用性舞骆。為了解決PBFT算法網(wǎng)絡(luò)消耗高的問題钥弯,對(duì)算法作出了一些優(yōu)化,降低網(wǎng)絡(luò)消耗督禽,提高了算法的可用性脆霎。
與傳統(tǒng)的PBFT算法類似,對(duì)于每一輪共識(shí)操作狈惫,又包括三個(gè)階段:Propose睛蛛,Prevote 和 Precommit。
當(dāng)在某一輪達(dá)成共識(shí)(收到+2/3 的 Precommit 投票)后胧谈,就會(huì)進(jìn)入對(duì)下一個(gè)高度的共識(shí)忆肾,從第 0 輪開始。下面簡(jiǎn)單介紹下詳細(xì)的步驟:
首先介紹一個(gè)鎖定區(qū)塊的概念菱肖,表示在某個(gè)特定的高度和輪數(shù)客冈,節(jié)點(diǎn)對(duì)某個(gè)塊收到超過節(jié)點(diǎn)總數(shù) 2/3 的 Prevote 投票集合后,則此節(jié)點(diǎn)對(duì)于此高度此輪的區(qū)塊進(jìn)行鎖定稳强。也就是說场仲,節(jié)點(diǎn)以鎖定區(qū)塊來表示對(duì)某一個(gè)區(qū)塊的認(rèn)可。
1)Propose 階段:系統(tǒng)中所有驗(yàn)證人節(jié)點(diǎn)輪流作為提議者提出提議退疫,而系統(tǒng)中非提議者的節(jié)點(diǎn)在收到提議后渠缕,就會(huì)進(jìn)入 Prevote 階段。如果當(dāng)前節(jié)點(diǎn)此前存在已鎖定區(qū)塊蹄咖,則還需要收集所有針對(duì)已鎖定區(qū)塊的 Prevote 投票褐健。
2)Prevote 階段:當(dāng)節(jié)點(diǎn)進(jìn)入到 Prevote 階段后付鹿,每個(gè)節(jié)點(diǎn)廣播自己的Prevote 投票澜汤。
具體的,如果當(dāng)前區(qū)塊高度或投票輪數(shù)高于此前已鎖定的區(qū)塊高度或輪數(shù)舵匾,則將原鎖定的區(qū)塊進(jìn)行解鎖俊抵。如果此時(shí)節(jié)點(diǎn)仍含有未解鎖的區(qū)塊,則對(duì)此鎖定的區(qū)塊投 Prevote 投票坐梯』栈澹或者如果節(jié)點(diǎn)收到合法的 Propose 區(qū)塊,則對(duì)此區(qū)塊投 Prevote 投票吵血。
當(dāng)階段超時(shí)或者接收到大于 2/3 的針對(duì)某個(gè)塊的投票后谎替,則節(jié)點(diǎn)鎖定此區(qū)塊并進(jìn)入。
3)Precommit 階段:當(dāng)節(jié)點(diǎn)存在已鎖定區(qū)塊蹋辅,則對(duì)此區(qū)塊投 Precommit 投票钱贯。當(dāng)節(jié)點(diǎn)收到針對(duì)已鎖定區(qū)塊大于 2/3 的 Precommit 投票時(shí),就可以將這個(gè)塊 commit侦另,并且進(jìn)入針對(duì)下一個(gè)高度塊的共識(shí)秩命。
若 Precommit 階段定時(shí)器超時(shí)尉共,則節(jié)點(diǎn)保存已鎖定區(qū)塊,然后重新返回到 Propose 階段弃锐。
各節(jié)點(diǎn)通過在以上階段上循環(huán)袄友,對(duì)區(qū)塊進(jìn)行一致性共識(shí)。與 PBFT 算法類似霹菊,迅雷鏈共識(shí)也經(jīng)過了三階段提交剧蚣,但通過引入?yún)^(qū)塊鎖定操作,通過緩存待確認(rèn)區(qū)塊浇辜,降低了未達(dá)成共識(shí)情況下重復(fù)通信區(qū)塊帶來的網(wǎng)絡(luò)壓力券敌,從而提升了共識(shí)效率。
此外柳洋,還可以使用玩客云設(shè)備作為驗(yàn)證人節(jié)點(diǎn)待诅。由于玩客云節(jié)點(diǎn)數(shù)量非常龐大(已超過150萬個(gè)節(jié)點(diǎn)數(shù)),而且因?yàn)槭怯脩艏彝サ墓蚕砉?jié)點(diǎn)而存在一定不穩(wěn)定性熊镣,所以在PBFT的基礎(chǔ)上融合DPoS的思想卑雁,在每條鏈上周期性地(例如每隔5000個(gè)區(qū)塊)選舉出驗(yàn)證人節(jié)點(diǎn)參與共識(shí)。
綜上所述绪囱,新型區(qū)塊鏈技術(shù)采用多鏈架構(gòu)實(shí)現(xiàn)了可擴(kuò)展性 + 使用PBFT實(shí)現(xiàn)了強(qiáng)一致性 + 使用更公平的DPoS進(jìn)一步提升了共識(shí)效率测蹲、也得到了更高的可用性。從去中心化(Decentralization)鬼吵,安全性(Security)和可擴(kuò)展性(Scalability)三要素的角度看扣甲,由海量的廣泛分布的玩客云設(shè)備支撐了去中心化和安全性,采用多鏈架構(gòu)以實(shí)現(xiàn)可擴(kuò)展性齿椅。
總結(jié)
共識(shí)機(jī)制目前已經(jīng)成為了區(qū)塊鏈系統(tǒng)性能的關(guān)鍵瓶頸琉挖。單一的共識(shí)算法均存在各種問題,例如PoW算法存在消耗大量計(jì)算資源及性能低下的問題涣脚;PoS或DPoS存在“富豪統(tǒng)治”問題示辈。融合多種共識(shí)算法優(yōu)勢(shì)的想法正受到越來越廣泛的關(guān)注。此外遣蚀,包括在少部分可信節(jié)點(diǎn)中選取主節(jié)點(diǎn)的共識(shí)算法矾麻、保證高概率正確性的的異步共識(shí)算法、基于特定安全性前提并減少網(wǎng)絡(luò)廣播的共識(shí)算法芭梯、基于可信硬件的共識(shí)算法等险耀,也是未來區(qū)塊鏈共識(shí)算法的研究熱點(diǎn)。
隨著區(qū)塊鏈中賬本數(shù)據(jù)的增加和業(yè)務(wù)量的提升玖喘,可擴(kuò)展性也是區(qū)塊鏈系統(tǒng)迫切需要解決的問題甩牺,同時(shí)對(duì)共識(shí)算法也提出了新的挑戰(zhàn)。以太坊項(xiàng)目正在研發(fā)中的分片(shard)方案也是實(shí)現(xiàn)可擴(kuò)展性的另一種方案芒涡,受到廣泛關(guān)注柴灯。
本文以迅雷鏈為例的實(shí)踐卖漫,相信能給業(yè)界提供一個(gè)區(qū)塊鏈應(yīng)用落地的優(yōu)秀案例:在設(shè)計(jì)和實(shí)現(xiàn)同構(gòu)多鏈的架構(gòu)的同時(shí),盡可能地保證系統(tǒng)的可擴(kuò)展性赠群;采用有完善理論證明的PBFT算法保證強(qiáng)一致性和共識(shí)性能羊始,滿足了強(qiáng)一致性和高可擴(kuò)展性的業(yè)務(wù)需求;在海量的玩客云節(jié)點(diǎn)上查描,改進(jìn)了DPoS的公平性突委,進(jìn)一步提升了共識(shí)效率和可用性。
一直以來冬三,交易云工廠|EX.WORK(域名)專注于區(qū)塊鏈技術(shù)的研發(fā)匀油,以提供BTC交易平臺(tái)技術(shù)開發(fā)、公鏈/私鏈勾笆、企業(yè)級(jí)錢包敌蚜、私募系統(tǒng)等,都可以得到很強(qiáng)的技術(shù)支撐窝爪。
來源:區(qū)塊網(wǎng)