當前位置:首頁 > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導讀] 共識算法的分類 共識算法解決的是對某個提案(Proposal),大家達成一致意見的過程。 根據(jù)共識算法采取的策略,可以被分為兩大類,即概率一致性算法和絕對一致性算法。 回

共識算法的分類

共識算法解決的是對某個提案(Proposal),大家達成一致意見的過程。

根據(jù)共識算法采取的策略,可以被分為兩大類,即概率一致性算法和絕對一致性算法。

回顧CAP 原理,兩類算法的區(qū)別在于對可用性和一致性之間的平衡:

概率一致性算法保證了系統(tǒng)的可用性而犧牲了系統(tǒng)的一致性,絕對一致性算法則與之相反,保證了系統(tǒng)的一致性而犧牲了系統(tǒng)的可用性。

1.概率一致性算法

概率一致性算法指在不同分布式節(jié)點之間,有較大概率保證節(jié)點間數(shù)據(jù)達到一致,但仍存在一定概率使得某些節(jié)點間數(shù)據(jù)不一致。

對于某一個數(shù)據(jù)點而言,數(shù)據(jù)在節(jié)點間不一致的概率會隨時間的推移逐漸降低至趨近于零,從而最終達到一致性。

例如工作量證明算法(Proof of Work, PoW)、權(quán)益證明算法(Proof of Stake, PoS)和委托權(quán)益證明算法(Delegated Proof of Stake, DPoS)都屬于概率一致性算法。

2.絕對一致性算法

而絕對一致性算法則指在任意時間點,不同分布式節(jié)點之間的數(shù)據(jù)都會保持絕對一致,不存在不同節(jié)點間數(shù)據(jù)不一致的情況。

例如分布式系統(tǒng)中常用的 Paxos 算法及其衍生出的 Raft 算法等,以及拜占庭容錯類算法(類 BFT 算法),例如PBFT算法。

區(qū)塊鏈項目中常用的共識算法

傳統(tǒng)分布式數(shù)據(jù)庫主要使用Paxos和Raft算法解決分布式一致性問題,它們假定系統(tǒng)中每個節(jié)點都是忠誠、不作惡的,但報文可能發(fā)生丟失和延時等問題。

當分布式數(shù)據(jù)庫的所有節(jié)點由單一機構(gòu)統(tǒng)一維護時,此假定成立。在去中心化的區(qū)塊鏈網(wǎng)絡中,節(jié)點由互不了解、互不信任的多方參與者共同提供和維護,受各種利益驅(qū)動,網(wǎng)絡中的參與者存在欺騙、作惡的可能,因此Paxos和Raft算法不能直接用于區(qū)塊鏈的共識。

目前被區(qū)塊鏈項目廣泛采用的算法有工作量證明(PoW)、權(quán)益證明(PoS)、股份授權(quán)證明(DPoS)、實用拜占庭容錯(PBFT)等, 另外一些項目則采用2種算法的混合算法,如PoW+PoS、DPoS+PBFT等, 此外還有燃燒證明(PoB,Proof of Burn)、沉淀證明(PoD,Proof of Deposit)、能力證明(PoC,Proof of Capacity)、消逝時間證明(PoET,Proof of Elapsed Time)等尚不成熟的算法。

工作量證明(Proof-of-Work, PoW)

工作量證明(Proof-of-Work, PoW),要求工作端進行一些耗時適當?shù)膹碗s運算,并且答案能被服務方快速驗算,以此耗用的時間、設(shè)備與能源做為擔保成本,以確保服務與資源是被真正的需求所使用。

工作量證明最常用的技術(shù)原理是哈希散列函數(shù)。由于輸入哈希函數(shù)h()的任意值n,會對應到一個h(n)結(jié)果,而n只要變動一個比特,得到的結(jié)果就完全不同,所以幾乎無法從h(n)反推回n,因此借由指定查找h(n)的特征(例如要求小于某個數(shù)值,即哈希值前綴要求一定數(shù)量的0,增加難度即增加前綴0的數(shù)量),讓用戶進行大量的窮舉運算,就可以達成工作量證明。

PoW項目案例

PoW共識算法最初在比特幣系統(tǒng)中提出和應用。

比特幣系統(tǒng)在挖礦的過程中每10分鐘生成一個區(qū)塊。為了保證比特幣系統(tǒng)能穩(wěn)定地發(fā)展并不斷產(chǎn)生區(qū)塊,比特幣的協(xié)議中人為地設(shè)置了這個10分鐘規(guī)律,這使得系統(tǒng)中的所有節(jié)點可以利用這10分鐘的時間,來完成接收,打包,見證的工作,同時將產(chǎn)生的交易在整個網(wǎng)絡里進行廣播。

比特幣將區(qū)塊間隔設(shè)計為10分鐘,其實是在更快速的交易確認和更低的分叉概率間作出的妥協(xié)。盡管如此,分叉也不可避免,例如當有兩名礦工A和B在幾乎在相同的時間內(nèi),各自都算得了工作量證明解,便立即傳播自己的區(qū)塊到網(wǎng)絡中,這樣導致網(wǎng)絡中一部分節(jié)點跟隨A的區(qū)塊,另一部分節(jié)點會跟隨B的區(qū)塊,兩部分網(wǎng)絡數(shù)據(jù)產(chǎn)生了不一致,即分叉。

比特幣的策略是,在產(chǎn)生分叉后,兩個分叉的網(wǎng)絡各自繼續(xù)挖礦,由于算力不一樣,一段時間后,兩個分叉的鏈的長度就會不一致,當網(wǎng)絡上的節(jié)點收到兩個分叉廣播過來的區(qū)塊后,就選擇包含最多區(qū)塊的那個鏈(最長鏈)為主鏈,這樣,較短的分叉上的工作就會停止,這樣每個人就會都在同一個順序的這樣上工作了。盡管在一段時間內(nèi)會出現(xiàn)不一致,但保證最終能達成一致。

同時比特幣由于分叉問題的存在,為防止出現(xiàn)雙重支付問題,規(guī)定每個交易需要至少有5個驗證過的區(qū)塊在其后面得到驗證才能算作確認,也就是說比特幣的共識機制認為等待6個確認的情況下,分叉切換的概率就足夠低了(例如按一個節(jié)點1%的算力來計算,6個區(qū)塊后被長度被趕超的概率是100的6次方分之1)。

以太坊是另一個這類協(xié)議的典型,其同步假設(shè)的出塊時間僅為15秒。以太坊的出塊速度較比特幣的10分鐘大幅縮短,這使得以太坊系統(tǒng)在產(chǎn)出速度上有更高的效率,交易在全網(wǎng)廣播所費的時間更短,但也正因為如此,結(jié)果形成了許多孤立區(qū)塊。

總結(jié)PoW共識算法思路,其實是放寬對最終一致性確認的需求,約定好大家都選擇已知最長的鏈進行確認,PoW系統(tǒng)的最終確認是概率意義上的,是被強制推遲的。這樣的好處是,即便有人試圖惡意破壞,也會付出很大的經(jīng)濟代價(付出超過系統(tǒng)一半的算力)。

PoW共識算法存在的問題

1)算力競爭的設(shè)計導致了集中化的礦池:盡管PoW的目的是為了保證系統(tǒng)可以去中心化的運行,然而系統(tǒng)運行到現(xiàn)在,卻事實上形成中心化程度很高的五大礦池。五大礦池壟斷了世界上90%以上的算力,這可能導致大礦池破壞整個網(wǎng)絡的行為。

2)算力競爭的設(shè)計導致了大量的能源消耗: 另外,PoW系統(tǒng)需要產(chǎn)生大量的能源消耗:比特幣挖礦比159個國家消耗的能源還多;目前77.7%的全球比特幣網(wǎng)絡算力仍在中國境內(nèi);受益于內(nèi)蒙古和四川兩地充沛的電力資源,中國擁有世界上最多的比特幣礦場;到2019年7月,比特幣網(wǎng)絡將需要比美國目前的用電量更多的電力;到2020年2月,它將使用和今天全世界一樣多的電力。

3)業(yè)務處理性能低下:盡管投入了大量的能源支持系統(tǒng)的運行,但這些能源消耗絕大部份是用于工作量證明中的hash運算,處理交易業(yè)務的性能則非常低,例如比特幣每秒只能進行大約7筆交易;以太坊每秒10-20筆。

權(quán)益證明(Proof of Stake - PoS)

權(quán)益證明(Proof of Stake - POS), 所有持有該區(qū)塊鏈電子貨幣的使用者都可通過一個特殊交易將他們的電子貨幣鎖定存入一個資金庫,之后他們就可以成為驗證者。

算法通過固定時間協(xié)調(diào)所有節(jié)點參與投票,根據(jù)某種規(guī)則(例如持代幣數(shù)量、或提供存儲空間大小等)判斷每個節(jié)點的權(quán)重,最后選取權(quán)重最高的節(jié)點作為檢查。

POS相對于PoW的好處包括:

1)PoW需要花費大量的電力資源,POS的好處首先當然是去除了大量的算力競爭;

2)不需要通過不停地發(fā)行新幣來激勵礦工參與算力競賽。避免了不可知的通脹風險;

3)提出了利用博弈論來避免區(qū)塊鏈網(wǎng)絡產(chǎn)生中心化的大型參與者的新的方法。PoW的算力競爭設(shè)計模式導致了算力越來越向大礦池集中,這可能導致大礦池破壞整個網(wǎng)絡的行為;

4)PoS還可以使51%攻擊變的異常昂貴。惡意參與者將存在保證金被罰沒的風險。

PoS項目案例

最初的一版PoS由Peercoin設(shè)計實現(xiàn)。用戶要產(chǎn)出block必須滿足以下條件:

hash(stake_modifier, current_TIme, UTXO) 《 coin(UTXO) * age(UTXO) * difficulty.

具體解釋如下:

1)用戶在每一秒時間(current_TIme),遍歷自己所有的UTXO,代入上述公式中,看是否能滿足不等式條件;如果滿足,就把相應的UTXO記錄在block中,并發(fā)布block;

2)stake_modifier是對前一個block中部分字段hash后的值,加入這一項是為了防止用戶提前預知自己何時有權(quán)挖礦;

3)difficulty會根據(jù)近期的block產(chǎn)出時間動態(tài)調(diào)整,保證block產(chǎn)出時間間隔穩(wěn)定;

4)由于每秒只需要完成和自己UTXO數(shù)量相等的hash計算,所以需要的算力較低;

5)從不等式可以看出,持有的UTXO越多、UTXO中token數(shù)額越大(coin(UTXO))、UTXO持有時間越長(age(UTXO),或稱之為幣齡),不等式越容易成立,越容易進行挖礦。

該版本的PoS面臨著如下的問題

1)因為構(gòu)造新的block沒有算力成本,所以當區(qū)塊鏈出現(xiàn)fork的時候,用戶有可能會傾向于同時在多個branch一起挖礦來獲得潛在更高的收益,這樣制造了大量的分支,破壞了一致性;

2)出現(xiàn)了攢幣齡的現(xiàn)象,即關(guān)閉節(jié)點,直到age(UTXO)足夠大的時候再啟動節(jié)點挖礦,從而節(jié)省電力,這樣引起了在線節(jié)點數(shù)太少系統(tǒng)脆弱的問題;

3)可以攢夠足夠的幣齡后,保證自己有足夠的UTXO能夠連續(xù)生產(chǎn)block,從而發(fā)動double-spend攻擊。

Blackcoin在Peercoin的基礎(chǔ)上進行了修改,從而緩解了上述問題,主要改動有:

1)去掉了不等式公式右邊的age(UTXO),從而解決了問題3中攢幣齡然后進行double-spend的現(xiàn)象;但是block獎勵還是使用了幣齡,因此并不能完全解決問題2中節(jié)點關(guān)閉的現(xiàn)象;

2)優(yōu)化了stake_modifier的計算邏輯,讓用戶提前預知自己有權(quán)挖礦時間的難度更大了。

PoS機制雖然考慮了PoW的不足,但也有缺點:

1)依據(jù)權(quán)益結(jié)余來選擇,會導致首富賬戶的權(quán)力更大,有可能支配記賬權(quán);

2)PoS的一致問題:PoS的挖礦過程,與PoW的問題類似,是全網(wǎng)所有節(jié)點共同參與的,每一時刻都有成千上萬個節(jié)點同時去爭取產(chǎn)出下一個block,因此會時有發(fā)生區(qū)塊鏈分叉的問題。由于分叉的存在,block的產(chǎn)出時間間隔不能太短。各區(qū)塊鏈通過動態(tài)調(diào)整的挖礦難度,將block時間間隔穩(wěn)定在自己期望的水平。出塊時間長,伴隨而來的則是交易確認時間長和交易處理性能低。

權(quán)益授權(quán)證明(DPoS)

股份授權(quán)證明機制(Delegated Proof of Stake,DPoS),是針對PoW、PoS的不足提出的。

DPoS 算法將成千上萬個 PoS 節(jié)點,通過某種機制(例如持有代幣的數(shù)量)選舉出若干節(jié)點, 在它們之間進行投票選舉(一些實現(xiàn)中甚至會以令牌環(huán)的方式進行輪詢,進一步減少投票開銷)出每次的檢查點(出塊)節(jié)點,而不用在網(wǎng)絡中全部節(jié)點之間進行選擇。

DPoS項目案例

EOS前身石墨烯框架及bitshares(比特股)項目提出的DPOS方案,其步驟簡述如下:

1)持有token的用戶可以對候選的block producer進行投票;

2)得票最高的n個用戶被選為代表,在下一個周期中負責產(chǎn)出block,目前n=21;

3)打亂代表的順序后,各代表開始依次生產(chǎn)block。每個代表都有自己固定的時間區(qū)間,需要在自己的區(qū)間中完成block的生產(chǎn)發(fā)布。目前這個區(qū)間是3秒,即在正常情況下每3秒產(chǎn)出一個block;

4)每個代表在生產(chǎn)block的時候,需要找當時唯一的最長鏈進行生產(chǎn),不能在其他分支上進行生產(chǎn)。

通過上述方法,保證了較短的block生產(chǎn)時間,且因為給每個生產(chǎn)者設(shè)置了固定的時間區(qū)間,則block的產(chǎn)出不會因為某個候選節(jié)點的延遲而延遲。

EOS最初使用的是DPoS算法,后來為了縮短出塊時間,改成BPT-DPoS算法。

DPoS共識算法存在的問題

1)以EOS為代表的DPoS算法設(shè)計成由少數(shù)節(jié)點代替多數(shù)節(jié)點進行共識,其實是犧牲了區(qū)塊鏈去中心化的特性,以此來換取共識效率的提升;

2)EOS的21個超級節(jié)點并不是21個不同實體,節(jié)點之間可能存在內(nèi)在聯(lián)系的共謀;

3)超級節(jié)點競選爭議。由于網(wǎng)絡無法解決女巫攻擊問題,1人1票的民主投票制會被1代幣1票制度所取代,導致“富豪統(tǒng)治”的結(jié)果;而相對不富裕的、擁有投票權(quán)較少的投資者則會對投票這件事漠不關(guān)心;超級節(jié)點可以花錢買選民們的投票;超級節(jié)點之間被鼓勵互相串通,這樣他們就可以改變他們與選民分享獎勵的比例;

4)DPoS允許不超過節(jié)點總數(shù)三分之一的惡意或故障節(jié)點可能創(chuàng)建少數(shù)分叉。在這種情況下,少數(shù)分叉每9秒只能產(chǎn)生一個塊,而多數(shù)分叉每9秒可以產(chǎn)生兩個塊。這樣,誠實的2/3多數(shù)將永遠比少數(shù)(的鏈)更長。

實用拜占庭容錯(PBFT)

PBFT算法的結(jié)論是n》=3f+1, n是系統(tǒng)中的總節(jié)點數(shù),f是允許出現(xiàn)故障的節(jié)點數(shù)。換句話說,如果這個系統(tǒng)允許出現(xiàn)f個故障,那么這個系統(tǒng)必須包括n個節(jié)點,才能解決故障。這和上文口頭協(xié)議的結(jié)論一樣,或者這么說,PBFT是優(yōu)化了口頭協(xié)議機制的效率,但是結(jié)論并未改變。

PBFT算法的步驟:

1)取一個副本作為主節(jié)點(圖中0),其他的副本作為備份;

2)用戶(圖中C)向主節(jié)點發(fā)送消息請求;

3)主節(jié)點通過廣播將請求發(fā)送給其他節(jié)點(圖中1、2、3);

4)所有節(jié)點執(zhí)行請求并將結(jié)果發(fā)回用戶端;

5)用戶端需要等待f+1個不同副本節(jié)點發(fā)回相同的結(jié)果,即可作為整個操作的最終結(jié)果。

PBFT項目案例

Hyperledger Fabric推薦并實現(xiàn)的就是PBFT共識算法。

PBFT不僅具備強一致性的特性,而且提供了較高的共識效率,比較適合對一致性和性能要求較高的區(qū)塊鏈項目,但由于PBFT需要兩兩節(jié)點需要進行通信,通信量是O(n^2)(通過優(yōu)化可以減少通信量),在公有鏈這種全球性的大環(huán)境下,節(jié)點數(shù)量和網(wǎng)絡環(huán)境不可控,無法達成這種巨大的通信量。

不過對于聯(lián)盟鏈和私有鏈,節(jié)點數(shù)量并不是很多,采用PBFT效率更高結(jié)果也更好,因此PBFT在聯(lián)盟鏈和私有鏈的區(qū)塊鏈項目中使用較為廣泛。這也是Fabric項目采用PBFT算法的原因。

PBFT共識算法存在的問題

1)通信量是O(n^2),不適用于節(jié)點數(shù)量和網(wǎng)絡環(huán)境不可控的公有鏈項目;

2)PBFT是強一致性算法,在可用性上作了讓步,當有1/3或以上記賬人停止工作后,系統(tǒng)將無法提供服務。

PoW + PoS

共識機制目前已經(jīng)成為了區(qū)塊鏈系統(tǒng)性能的關(guān)鍵瓶頸。單一的共識算法均存在各種問題,例如PoW算法存在消耗大量計算資源及性能低下的問題;PoS或DPoS存在“富豪統(tǒng)治”問題;而有著完善理論證明的PBFT算法面臨著廣播帶來的網(wǎng)絡開銷過大的問題。融合多種共識算法優(yōu)勢的想法正受到越來越廣泛的關(guān)注。

例如以太坊社區(qū)提出的正在研發(fā)中的共識協(xié)議名為Casper,是一個覆蓋在已存在的以太坊PoW提議機制上的PoS,Casper融合了PoW和PoS兩種算法。

Casper的基本思路是,任何人抵押足夠多的以太幣到系統(tǒng)中就可以成為礦工參與到挖礦過程。共識算法要求所有的礦工誠實工作,如果一個礦工有意破壞,不遵守協(xié)議,系統(tǒng)就會對礦工做出懲罰:沒收之前抵押的以太幣。有人把Casper這樣的挖礦機制稱為“虛擬挖礦”,比特幣的礦工要參與挖礦需要先購買礦機,Casper則要先抵押以太幣到系統(tǒng)中;比特幣的礦工如果不按規(guī)則挖礦,則會損失電費以及可能的挖礦收益,而Casper中,不守規(guī)則的懲罰更為嚴重,除了失去挖礦收益,還要銷毀“礦機”:抵押的以太幣會被系統(tǒng)沒收!

Casper的應用邏輯存在于智能合約的內(nèi)部。要想在Casper中成為驗證者,必須要有ETH并且要將ETH存儲到Casper智能合約中作為杠桿的權(quán)益。在Casper第一次迭代中區(qū)塊提議的機制會被保留:它依然使用Nakamoto PoW共識,礦工可以創(chuàng)建區(qū)塊。不過為了最終化區(qū)塊,Casper的PoS覆蓋掌握控制權(quán),并且擁有自己的驗證者在PoW礦工之后進行投票。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉