前言:本文簡單明了地闡述了達(dá)成共識的兩個(gè)主要流程:區(qū)塊的提議和區(qū)塊的共識達(dá)成。區(qū)塊的提議主要涉及到PoW和PoS機(jī)制,也就是工作量證明和權(quán)益證明的機(jī)制,用以抵抗女巫攻擊,安全地選出可靠的區(qū)塊提議者。區(qū)塊的共識達(dá)成則涉及到共識算法,主要包括中本聰共識和經(jīng)典共識。中本聰共識采用最長鏈規(guī)則,經(jīng)典共識則可實(shí)現(xiàn)最終性。每種共識算法都有自己的權(quán)衡取舍。
區(qū)塊鏈共識是2017年和2018年最廣為討論的區(qū)塊鏈子領(lǐng)域之一。可以看到,很多公司試圖從零開始構(gòu)建新的智能合約平臺,并與以太坊競爭,而其中的一個(gè)差異化或創(chuàng)新點(diǎn)就在區(qū)塊鏈的共識算法方面。試圖理解這些算法,并能對它們進(jìn)行批判性比較,這對很多加密投資者來說,都是一項(xiàng)全職工作,毫無疑問,要掌握它們并不簡單。
為揭開這些“共識算法”的神秘面紗,不少人做了很多工作。但是,對于普通人來說,它們太過于技術(shù)化。一些概念,例如同步、安全/活性證明、不可能結(jié)果,這些有助于人們通局了解。不過,在我看來,對于大多數(shù)人來說,完全理解并不特別重要。
本文重點(diǎn)是區(qū)塊鏈的共識算法,而沒有提及更大的也是超級復(fù)雜的分布式系統(tǒng)領(lǐng)域。為了簡單易懂,還會(huì)放棄一些技術(shù)概念。
本文結(jié)束時(shí),你應(yīng)該理解PoW和PoS的區(qū)別,了解BFT的意思,最重要的是,當(dāng)考慮在哪個(gè)區(qū)塊鏈上構(gòu)建你的應(yīng)用時(shí),你應(yīng)該知道它們的權(quán)衡是什么。
什么是共識?為什么很重要?
簡單來說,區(qū)塊鏈?zhǔn)且环N公共數(shù)據(jù)庫,其中用戶就什么是正確的達(dá)成一致。比特幣是記錄所有交易的公共數(shù)據(jù)庫,保留了貨幣系統(tǒng)的完整性。有兩個(gè)主要問題需要理解:
1.就什么達(dá)成共識?
2.如何達(dá)成共識?
我們需要有人提議,然后讓其他人選擇,直到達(dá)成某種形式的共識。就區(qū)塊鏈的情況,我們需要有人提議區(qū)塊,然后需要剩余節(jié)點(diǎn)接受區(qū)塊。
一個(gè)簡單的例子如下:
4個(gè)人嘗試并安排共同的時(shí)間來做事。每個(gè)人提出其可用時(shí)間(空白格)。可以看到,有兩個(gè)共同可用的時(shí)間段,下午2點(diǎn)和6點(diǎn)。他們?nèi)绾芜_(dá)成共識?在他們提出可用時(shí)間前,他們同意一個(gè)特定規(guī)則:每個(gè)人必須選擇最早的共同可用時(shí)間。在這種規(guī)則下,這意味著,他們將會(huì)在下午2點(diǎn)而不是下午6點(diǎn)見面。由此,他們達(dá)成了共識。
按照這種框架,我們將它類比擴(kuò)展到比特幣區(qū)塊鏈:
人們就什么達(dá)成共識?
人們就區(qū)塊數(shù)據(jù)達(dá)成共識。區(qū)塊中包含有效的比特幣交易。在比特幣中,任何人都可以提議區(qū)塊,只要他們率先解決一個(gè)計(jì)算謎題(PoW)。
人們?nèi)绾芜_(dá)成共識?
人們同意接受最長鏈上的區(qū)塊。例如,如果鏈A的高度為100,而鏈B的高度為200,如果你收到鏈A上的區(qū)塊101和鏈B上的區(qū)塊201,你必須接受區(qū)塊201。有人在更短的鏈上添加區(qū)塊,可能是因?yàn)樗麄儧]有意識到更長的鏈,但“最長鏈規(guī)則”確保一旦區(qū)塊在整個(gè)網(wǎng)絡(luò)中傳播,每個(gè)人最終就相同的事情達(dá)成共識。
該框架支持所有共識算法。不同算法可以采用不同的方法來提議區(qū)塊,也可以使用不同的方式來對區(qū)塊達(dá)成共識。
提議區(qū)塊
考慮區(qū)塊提議時(shí),最大的問題是誰來提議區(qū)塊。如果任何人隨時(shí)都可以提議區(qū)塊,會(huì)很難達(dá)成共識,因?yàn)檫@類似于人們不停地相互交談。必須以某種方式選出代表,這樣剩余的人可以一次看到一個(gè)提議。
最幼稚的方式是讓協(xié)議隨機(jī)選擇一個(gè)人來提議新區(qū)塊。然而,在互聯(lián)網(wǎng)上,一個(gè)人可以通過運(yùn)行相同程序的一百個(gè)實(shí)例來偽裝成一百個(gè)人。因此,我們需要?jiǎng)?chuàng)造某種形式的稀缺性,以抵抗女巫攻擊。(藍(lán)狐筆記注:女巫攻擊主要是指網(wǎng)絡(luò)中的少數(shù)節(jié)點(diǎn)控制多個(gè)虛假身份,并利用這些身份控制網(wǎng)絡(luò)中大量正常節(jié)點(diǎn)的攻擊方式。)。
因此,這個(gè)游戲必須能夠抵擋單一黑客操縱很多人的攻擊。這正是PoW和PoS給你帶來的:一種讓計(jì)算機(jī)受到某些資源限制的方式。(藍(lán)狐筆記注:也就是說,通過設(shè)立門檻,比如PoW的算力投入和PoS的代幣投入,通過競爭性的方式,解決了誰有資格提議區(qū)塊并由此獲得獎(jiǎng)勵(lì)的問題。)
PoW如下:為獲得提議區(qū)塊的權(quán)利,你必須率先完成計(jì)算密集型的任務(wù)。模擬一個(gè)虛擬的計(jì)算機(jī)拋硬幣任務(wù),直到它得到連續(xù)100次的虛擬硬幣的正面。這是計(jì)算密集型的,沒有人能偽裝成一百人,因?yàn)檫@受制于其算力。
然而,通過采用這種“抗女巫攻擊”機(jī)制,人們已經(jīng)建立了數(shù)千臺計(jì)算機(jī)組成的礦場,以便在算力競爭中勝出,從而獲得提議區(qū)塊的權(quán)利。這些服務(wù)器礦場消耗巨量電力,因此它們集中于可獲得最便宜電力的國家或地區(qū)。
那么,當(dāng)大多數(shù)比特幣礦工位于中國時(shí),這對于去中心化意味著什么?這種地理上的中心化給系統(tǒng)的長久性構(gòu)成了真正的威脅,因?yàn)檫@些挖礦公司很容易被監(jiān)管。
PoS采用了跟PoW完成不同的“抗女巫攻擊”機(jī)制。既然要花錢購買比特幣挖礦計(jì)算機(jī)和購買電力,那么,為什么不只是用錢來選擇區(qū)塊生產(chǎn)者并將計(jì)算密集型過程跳過呢?PoS是這樣的想法:基于人們在系統(tǒng)中質(zhì)押的錢多少來選擇區(qū)塊提議者,也就是人們在系統(tǒng)中擁有的代幣的比例。
在PoW中,擁有算力越多,被選為提議下個(gè)區(qū)塊的概率就越高。在PoS中,擁有的代幣越多,成為區(qū)塊生產(chǎn)者的概率就越高。
請注意,還沒有開始談?wù)撊绾尉蛥^(qū)塊達(dá)成共識。有一種常見的誤解,認(rèn)為PoW和PoS是共識算法。其實(shí)它們不是。它們只是通過約束稀缺資源的方式來選擇區(qū)塊生產(chǎn)者。
區(qū)塊共識
這是事情變得有趣的地方,也是近年來大部分創(chuàng)新發(fā)生的地方。一旦有人提議區(qū)塊,我們?nèi)绾芜_(dá)成共識?這是從上個(gè)世紀(jì)80年代以來計(jì)算機(jī)科學(xué)家們一直試圖解決的問題,以在一些計(jì)算機(jī)偶爾發(fā)生崩潰時(shí),其計(jì)算機(jī)集群也能同步。到了上世紀(jì)90年代,這些計(jì)算機(jī)科學(xué)家開始思考一個(gè)更難的問題:如果黑客可以控制其中的一些計(jì)算機(jī)呢?(藍(lán)狐筆記注:這兩個(gè)問題的區(qū)別在于,一個(gè)只是計(jì)算機(jī)部分崩潰,另一個(gè)是計(jì)算機(jī)沒有崩潰,而被惡意控制。)
他們能否構(gòu)建足夠強(qiáng)健的系統(tǒng),以確保所有非惡意的計(jì)算機(jī)依然能夠達(dá)成共識?這一特性被稱為“拜占庭容錯(cuò)”(BFT),它是基于拜占庭將軍問題而來。BFT系統(tǒng)是一個(gè)相當(dāng)小的研究課題,因?yàn)榇蠖鄶?shù)系統(tǒng)并不需要這種級別的穩(wěn)健性,因?yàn)榇蠖鄶?shù)計(jì)算機(jī)集群通常都屬于單一公司。直到區(qū)塊鏈的到來,才改變了這一局面。
在區(qū)塊鏈中,任何人都可以運(yùn)行節(jié)點(diǎn)(集群中的計(jì)算機(jī)),并且可以向其他節(jié)點(diǎn)發(fā)送信息或數(shù)據(jù)。這是一個(gè)真正對抗性的環(huán)境,因?yàn)閻阂庑袨檎呖梢约傺b為誠實(shí)節(jié)點(diǎn)。例如,如果集群中的10個(gè)惡意計(jì)算機(jī)向其他9個(gè)計(jì)算機(jī)發(fā)送沖突信息,該怎么辦?
由于誠實(shí)計(jì)算機(jī)無法區(qū)分惡意和非惡意的計(jì)算機(jī),這個(gè)問題變得非常棘手。解決這個(gè)問題有兩種主要方法:中本聰共識和經(jīng)典共識。
中本聰共識
中本聰共識用于比特幣和大多數(shù)PoW系統(tǒng)中,由中本聰開創(chuàng)。它有一條單一規(guī)則:“當(dāng)你看到提議的區(qū)塊擁有最多工作量證明,就接受它。”通常來說,具有最高編號的區(qū)塊擁有最多工作量證明。(藍(lán)狐筆記注:也就是比特幣的最長鏈規(guī)則,這是一種概率性的確認(rèn),確認(rèn)的區(qū)塊深度越長,交易越難被逆轉(zhuǎn)。)
這意味著,對于你看到的區(qū)塊是否“正確”,你永遠(yuǎn)沒有100%的確定。例如,如果你看到的最高區(qū)塊編號是99,你可以在區(qū)塊編號100接收到區(qū)塊A,因此你接受了。
突然,你在區(qū)塊編號103收到區(qū)塊B,而它在區(qū)塊編號100有不同的區(qū)塊。根據(jù)共識規(guī)則,你需要“反轉(zhuǎn)”之前接受的區(qū)塊A,轉(zhuǎn)而接受新的區(qū)塊歷史。
在這個(gè)系統(tǒng)中,超過系統(tǒng)算力50%的攻擊者將能夠持續(xù)構(gòu)建最長鏈,因此,可以創(chuàng)建他們想要的任何區(qū)塊。通過這個(gè)例子,我們可以看到這些規(guī)則有助于人們就哪一條鏈?zhǔn)强山邮艿逆溸_(dá)成一致。
經(jīng)典共識
在中本聰共識2009年發(fā)明之前,計(jì)算機(jī)科學(xué)家對此問題有不同的解決方案,這問題有不同的特性。第一個(gè)拜占庭容錯(cuò)共識算法稱為實(shí)用拜占庭容錯(cuò)算法(PBFT)。它的工作原理是:讓一組參與者進(jìn)行多輪投票,直到一定比例的投票者達(dá)成共識。
基于PoS之類的機(jī)制,選擇某人提議區(qū)塊。他將區(qū)塊發(fā)送給其他已知的參與者。由其他參與者進(jìn)行投票。
由于大多數(shù)參與者都對區(qū)塊投贊成票,系統(tǒng)中的每個(gè)人都將接受該區(qū)塊作為正確區(qū)塊。使用這種類型的共識,須有一組已知的投票者,但一旦他們投票通過,區(qū)塊就有了最終性。因此,就不存在區(qū)塊回滾的事情。如果存在爭議,那么系統(tǒng)會(huì)停止。(藍(lán)狐筆記注:經(jīng)典共識的最終確定性,與中本聰共識的概率性形成鮮明對比。)
PBFT算法已經(jīng)被用在區(qū)塊鏈上,區(qū)塊鏈中迄今為止,最突出的BFT算法是Tendermint Core。Tendermint Core是區(qū)塊鏈上第一個(gè)不使用中本聰共識的共識算法,而是基于20多年的計(jì)算機(jī)科學(xué)研究基礎(chǔ)上。
BFT算法的主要局限是它們通常僅限于一小部分投票者,因?yàn)樗型镀闭叨夹枰孪戎馈W?0萬人不斷地與其他人溝通以達(dá)成共識是極其困難的事情。到目前為止,Cosmos已經(jīng)運(yùn)行了可能是最大的公共BFT系統(tǒng)之一,他們的Game of Stakes測試網(wǎng)有超過200+的驗(yàn)證者參與。(藍(lán)狐筆記注:Harmony的驗(yàn)證者已經(jīng)超過了200+。)
中本聰共識有其他變種,例如GHOST(新評分算法,不僅僅是最長鏈),也有其他BFT共識的變種,例如Casper-BFT和Thunderella。
這些共識算法變種的主要區(qū)別實(shí)際上只是其區(qū)塊提議方式的不同或參與共識的溝通人數(shù)不同而已。大多數(shù)情況下,在一個(gè)算法系列中,它們之間有類似的權(quán)衡。還有一些新的共識形式,例如Avalanche,它們不屬于任何一個(gè)系列。
如何選擇共識算法?
根據(jù)你想構(gòu)建的應(yīng)用類型,下面是選擇哪種共識算法的指南問題,由此也會(huì)涉及到選擇何種智能合約平臺。
1.你要構(gòu)建的應(yīng)用對最終性的急需程度?
對于一些應(yīng)用來說,最終性非常重要,而另外一些應(yīng)用,則不那么重要。如果你構(gòu)建的是用于微支付的新型支付系統(tǒng),交易可以逆轉(zhuǎn)并不是世界的末日。類似地,如果你構(gòu)建的是去中心化的社交網(wǎng)絡(luò),100%保證狀態(tài)更新立即完成并非是一個(gè)特別重要的特性。相反,如果你構(gòu)建的是去中心化的交易所,最終性是用戶體驗(yàn)中至關(guān)重要的部分。讓交易逆轉(zhuǎn)比不發(fā)生交易還要糟糕。作為參考,比特幣的最終性大約是1小時(shí)左右(藍(lán)狐筆記注:比特幣6個(gè)區(qū)塊確認(rèn)完成,基本上可以確認(rèn)交易完成,但這也不是100%的最終性,不過在6個(gè)區(qū)塊確認(rèn)之后,要逆轉(zhuǎn)交易的難度非常之大。)以太坊的最終性大約6分鐘左右,而Tendermint Core有1秒的最終性。
2.你要構(gòu)建的應(yīng)用所需的快速程度?
如果你構(gòu)建的是游戲應(yīng)用,每個(gè)動(dòng)作前需要等待15秒鐘(甚至更長時(shí)間)是否合理?由于以太坊的區(qū)塊時(shí)間,基于以太坊區(qū)塊鏈構(gòu)建的游戲用戶體驗(yàn)糟糕,因?yàn)樗耐掏铝刻汀H欢粋€(gè)轉(zhuǎn)讓房屋證書所有權(quán)的應(yīng)用可能非常適合在以太坊上運(yùn)行。使用Cosmos SDK構(gòu)建應(yīng)用,允許開發(fā)者使用現(xiàn)成的Tendermint Core,它有更短的區(qū)塊時(shí)間和高吞吐量,每秒最高可以達(dá)到10,000筆交易。你可以通過為你的應(yīng)用設(shè)置更少的驗(yàn)證者數(shù)來實(shí)現(xiàn)這一目的,因?yàn)榭梢詼p少通信開銷,提高應(yīng)用處理速度。
3.你要構(gòu)建的應(yīng)用所需的“去中心化”程度?
一些應(yīng)用,比如游戲,可能并不需要顯著的抗審查特性,這只是去中心化的副產(chǎn)品。在理論上,驗(yàn)證者可以創(chuàng)建卡特爾以及在游戲中實(shí)現(xiàn)區(qū)塊/逆轉(zhuǎn)交易以獲取利潤,這些在應(yīng)用中真的重要嗎?如果它不那么重要,類似于EOS的區(qū)塊鏈可能適合你的應(yīng)用場景,因?yàn)樗懈斓慕灰姿俣惹覠o需費(fèi)用。
然而,有的應(yīng)用,比如自治銀行,它對去中心化要求很高。盡管以太坊被認(rèn)為是去中心化的,但有些支持者聲稱,以太坊礦池的集中也是其中心化趨勢一個(gè)重要體現(xiàn),事實(shí)上,它只有11個(gè)驗(yàn)證者(礦池)。
構(gòu)建自己的區(qū)塊鏈而不是基于其他智能合約平臺來構(gòu)建應(yīng)用的一大好處是,你可以為自己應(yīng)用定制驗(yàn)證方式。然而,構(gòu)建自己的區(qū)塊鏈非常困難,因此,從這方面來說,使用Cosmos SDK非常有用,可以輕松構(gòu)建自己的區(qū)塊鏈,并自定義應(yīng)用所需的去中心化程度。
4.如果系統(tǒng)停止是否可以接受?
如果你構(gòu)建的是類似于去中心化的共享騎行應(yīng)用,那么,確保服務(wù)全天候運(yùn)行可能是最高優(yōu)先級的,即使出現(xiàn)一些偶然的錯(cuò)誤,例如交易被逆轉(zhuǎn)。
Tendermint Core的一個(gè)屬性是,如果網(wǎng)絡(luò)驗(yàn)證者之間存在分歧,網(wǎng)絡(luò)將選擇停止,而不是進(jìn)行不正確的交易。一些應(yīng)用,例如去中心化的交易所應(yīng)用,需要不惜一切代價(jià)確保正確性。如果存在問題,可以暫停去中心化交易,而不是進(jìn)行可逆轉(zhuǎn)的交易。
結(jié)論
不存在單個(gè)“最好”的共識算法。每個(gè)算法都有它自己的權(quán)衡取舍。但是,通過理解共識流程(提議和達(dá)成共識),并建立一個(gè)框架來思考你的應(yīng)用可能需要何種共識算法,能有助于你在選擇區(qū)塊鏈時(shí),做出更明智的決策。當(dāng)然,還有其他因素需要考慮,例如開發(fā)者工具、社區(qū)等。
總的來說,PoW和PoS并不是共識算法。它們是“抗女巫攻擊”的機(jī)制,可以幫助挑選區(qū)塊提議者。
兩種主要的共識家庭是中本聰共識和經(jīng)典共識。這些算法用于就區(qū)塊鏈中的區(qū)塊達(dá)成共識。每種共識算法都有自己的權(quán)衡取舍。根據(jù)應(yīng)用的場景來選擇共識算法和智能合約平臺。要考慮的因素:
l 最終性
l 速度
l 去中心化程度
l 活性
評論
查看更多