區(qū)塊鏈共識(shí)的錯(cuò)誤陳述
區(qū)塊鏈和分布式算法是由許多層組成的復(fù)雜技術(shù)。很少有人詳細(xì)了解底層區(qū)塊鏈技術(shù)和分布式算法。老實(shí)說,這很好。專門化的本質(zhì)意味著不同的專家專注于不同的層,最終就會(huì)將好的結(jié)果契合在一起。
然而,當(dāng)涉及到協(xié)商共識(shí)的協(xié)議時(shí),有一些半真半假的說法需要解決。理解共識(shí)是為應(yīng)用程序選擇正確的區(qū)塊鏈平臺(tái)和配置的先決條件。做出錯(cuò)誤的選擇可能導(dǎo)致效率低下和不安全的設(shè)置。
“工作量證明是一項(xiàng)共識(shí)協(xié)議?!?/p>
“只要沒有人能控制超過50%的網(wǎng)絡(luò),區(qū)塊鏈協(xié)議就是安全的?!?/p>
“區(qū)塊鏈共識(shí)是低效和耗能的?!?/p>
“比特幣首先在拜占庭式的環(huán)境中解決了共識(shí)問題?!?/p>
因此,讓我們仔細(xì)研究一下共識(shí)并消除一些誤解。
區(qū)塊鏈共識(shí)的兩個(gè)步驟
共識(shí)協(xié)議解決了計(jì)算機(jī)科學(xué)中的一個(gè)經(jīng)典問題:許多平等的參與者如何才能就事件的全局觀點(diǎn)達(dá)成一致?在區(qū)塊鏈術(shù)語中,這意味著同意處理交易的特定順序。區(qū)塊鏈共識(shí)的目標(biāo)是在所有節(jié)點(diǎn)上維護(hù)完全相同的歷史副本。
在集中的系統(tǒng)中,解決這個(gè)問題很容易:中央?yún)f(xié)調(diào)器可以簡單地強(qiáng)制執(zhí)行交易順序。在分布式系統(tǒng)中,這是不可能的,需要更復(fù)雜的機(jī)制。
在區(qū)塊鏈中添加分類賬的過程包括向分布式數(shù)據(jù)結(jié)構(gòu)添加一個(gè)新塊。這包括兩個(gè)主要步驟,每個(gè)步驟都有自己的算法選擇:選擇塊提議者和就包含所提議的塊達(dá)成共識(shí)。前者涉及決定哪個(gè)節(jié)點(diǎn)生成下一個(gè)塊,后者關(guān)注的是一個(gè)新塊是否被接受到區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)中。這兩個(gè)步驟同樣重要,但完全不同。
塊提議者選擇算法
選擇下一個(gè)塊生成器最簡單的方法就是輪流或隨機(jī)選擇下一個(gè)塊生成器。事實(shí)上,在授權(quán)人數(shù)固定的情況下,輪流是一個(gè)非常好的選擇。這通常是企業(yè)設(shè)置中使用的公共區(qū)塊鏈的情況。
然而,這樣的方案在公共區(qū)塊鏈(任何人都可以自由參與)中不起作用,比如比特幣或公共以太坊網(wǎng)絡(luò)。就像彩票一樣,參與者可以通過買取大量的彩票來提高他們的獲獎(jiǎng)機(jī)會(huì)。如果彩票是免費(fèi)的或非常便宜,這可能導(dǎo)致系統(tǒng)被欺騙。這種情況稱為西比爾攻擊。因此,需要有一種機(jī)制來對(duì)買票行為附加經(jīng)濟(jì)困難。
工作量證明(PoW)就是這樣一種機(jī)制。所謂的“挖掘”給參與塊生成器選擇算法帶來了成本。參與者可以獲得很多票,但是他們必須為提高計(jì)算能力而付費(fèi)。因此,PoW根本不是一個(gè)共識(shí)的算法,它只是一個(gè)用于選擇下一個(gè)塊生成器的抗sybill工具。理解這一點(diǎn)很重要,因?yàn)镻oW可以與許多協(xié)商共識(shí)算法結(jié)合使用。事實(shí)上,我們將在下一節(jié)中發(fā)現(xiàn),比特幣的共識(shí)算法非常簡單,提供的是非常弱的保證。
權(quán)益證明(PoS)是選擇下一個(gè)塊生成器的類似工具。在這種情況下,計(jì)算能力被簡單地消除,并根據(jù)計(jì)算能力依賴于經(jīng)濟(jì)實(shí)力的觀察結(jié)果,用經(jīng)濟(jì)財(cái)富來衡量中彩票概率。明顯的優(yōu)勢(shì)是減少了與PoW相關(guān)的能源消耗。
共識(shí)算法
在區(qū)塊鏈系統(tǒng)中,實(shí)際的共識(shí)性算法是在被選擇的塊生成器提出一個(gè)塊之后執(zhí)行的。參與者必須就是否包括區(qū)塊達(dá)成協(xié)議。比特幣和類似的區(qū)塊鏈,包括以太坊,并不真正執(zhí)行任何特定的算法來達(dá)成這樣的協(xié)議。相反,他們選擇了一種不干涉的方法,只允許暫時(shí)的分歧,并建立一個(gè)規(guī)則,即最強(qiáng)的鏈獲勝,即由網(wǎng)絡(luò)的大多數(shù)計(jì)算能力支持的鏈獲勝。臨時(shí)分叉是可以接受的,而且確實(shí)很常見。這種形式的協(xié)商共識(shí)意見有時(shí)是Nakamoto協(xié)商共識(shí)意見,對(duì)該網(wǎng)絡(luò)所能提供的保障具有深遠(yuǎn)的影響。
甚至在比特幣和區(qū)塊鏈系統(tǒng)發(fā)明之前,分布式系統(tǒng)的研究人員就已經(jīng)開發(fā)出了許多工作方式截然不同的共識(shí)協(xié)議。BFT協(xié)商共識(shí)協(xié)議執(zhí)行網(wǎng)絡(luò)參與者之間的若干輪通信,以投票決定是否包含一個(gè)塊,并達(dá)成堅(jiān)定的協(xié)議。
BFT共識(shí)投票
數(shù)學(xué)上已經(jīng)證明,只要不到三分之一的參與者沒有表現(xiàn)出惡意,這種協(xié)議就能保持正常運(yùn)行。BFT共識(shí)的缺點(diǎn)是,由于涉及的通信開銷,它的伸縮性很差。因此,這種協(xié)議主要用于驗(yàn)證器數(shù)量有限且預(yù)先已知的情況,例如在混合區(qū)塊鏈或授權(quán)區(qū)塊生產(chǎn)者數(shù)量較少的區(qū)塊鏈中。
BFT共識(shí)協(xié)議的區(qū)塊鏈實(shí)現(xiàn)包括BFT和Tendermint。事實(shí)上,最近流行的適應(yīng)于區(qū)塊鏈系統(tǒng)的BFT共識(shí)已導(dǎo)致對(duì)這一經(jīng)典領(lǐng)域的研究興趣重新燃起。例如,Sikoba Research最近就在BFT共識(shí)性優(yōu)化方面進(jìn)行了大量工作。
最后的話
Nakamoto 共識(shí)與BFT共識(shí)的差異影響著終結(jié)性。終結(jié)性涉及可以在一個(gè)塊上提供的保證,因此,一個(gè)塊內(nèi)的交易無限期地包含在鏈中。本質(zhì)上,強(qiáng)終結(jié)性意味著將來不會(huì)拒絕該塊,從而導(dǎo)致交易被撤消。
Nakamoto 只提供了概率確定性。這意味著,一個(gè)塊最終成為一個(gè)塊的概率隨著鏈中添加的每個(gè)額外塊的增加而增加,但從來沒有達(dá)到理論上的確定性。例如,在比特幣中,我們通常被建議等待6個(gè)額外的區(qū)塊,等待一個(gè)區(qū)塊中包含的交易被確認(rèn)。這意味著,平均而言,比特幣交易在大約一小時(shí)后被認(rèn)為是安全的,這是因?yàn)榛趯?shí)踐的啟發(fā),而不是強(qiáng)大的協(xié)議保證。
相比之下, BFT共識(shí)協(xié)議提供了強(qiáng)有力的保障。一旦一個(gè)區(qū)塊以三分之二的多數(shù)票被納入,交易就可以被認(rèn)為是安全的。這意味著使用這種協(xié)議的區(qū)塊鏈可以更加敏捷,并且可以在非常短的時(shí)間內(nèi)提供交易終結(jié)性。然而,如上所述,BFT共識(shí)只有在相對(duì)較少的驗(yàn)證器(考慮數(shù)百而不是數(shù)千)的情況下才能實(shí)際實(shí)現(xiàn)。
在區(qū)塊鏈互操作性和分片解決方案中,終結(jié)性也變得非常重要。前者側(cè)重于不同區(qū)塊鏈之間的交互,后者指的是出于可伸縮性的原因?qū)^(qū)塊鏈分割成更小的塊。無論哪種情況,通信都必須跨不同的鏈進(jìn)行。在一個(gè)鏈上的交易已經(jīng)被轉(zhuǎn)移到其他鏈上之后,在這個(gè)鏈上撤消交易將非常不方便。解決這個(gè)問題的部分方法可以在所謂的終結(jié)小工具中找到,它在較弱的協(xié)商共識(shí)協(xié)議之上構(gòu)建一個(gè)較強(qiáng)的終結(jié)層。
委托權(quán)益證明
對(duì)區(qū)塊鏈共識(shí)的一個(gè)非常有趣且常常被誤解的折衷解決方案是委托權(quán)益證明 (dPoS)。dPoS方法使用一個(gè)代幣作為投票機(jī)制,以選擇數(shù)量較少且固定的驗(yàn)證器來執(zhí)行協(xié)商共識(shí)協(xié)議。
這意味著可以簡化委托之間的塊生成器選擇,并且較小的驗(yàn)證器集可以執(zhí)行非常有效的協(xié)商共識(shí)協(xié)議。這意味著,dPoS可以結(jié)合公共區(qū)塊鏈和BFT共識(shí)的優(yōu)勢(shì),為開放網(wǎng)絡(luò)帶來幾乎即時(shí)的終結(jié)性,所有參與者都可以在一定程度上參與其中。
dPoS區(qū)塊鏈中的安全性是當(dāng)前研究的主題,并且與治理密切相關(guān)。從本質(zhì)上講,挑戰(zhàn)在于確保代表的投票是公平的,并建立防止cartel機(jī)制的形成。值得注意的是,dPoS應(yīng)該被看作是分散化和性能之間的可配置平衡。在極端情況下,EOS將驗(yàn)證器的數(shù)量減少到21個(gè)節(jié)點(diǎn),從而提供一個(gè)非??斓钠脚_(tái)。其他系統(tǒng),例如最近推出的Cosmos hub,非常強(qiáng)調(diào)安全性,并試圖實(shí)現(xiàn)真正的分散化。
當(dāng)然,對(duì)于dpoS來說,cartel的形成和集中是真正的風(fēng)險(xiǎn)。另一方面,由少數(shù)幾個(gè)礦池(位于電力便宜的地方)主導(dǎo)的PoW能被認(rèn)為是分散的嗎?
結(jié)論
共識(shí)并不像表面上那么簡單。與計(jì)算機(jī)科學(xué)中的任何東西一樣,必須進(jìn)行權(quán)衡,且目前還沒有一個(gè)理想的解決方案。雖然不可能讓每個(gè)人都理解不同共識(shí)協(xié)議的所有技術(shù)細(xì)節(jié),但是在為給定的應(yīng)用程序選擇區(qū)塊鏈平臺(tái)之前,理解共識(shí)協(xié)議的基礎(chǔ)知識(shí)是很重要的。因?yàn)殛P(guān)于這個(gè)問題已經(jīng)發(fā)表了大量的錯(cuò)誤信息。