天天看點

8.1 主流共識介紹

背景

共識算法是區塊鍊項目中最核心的部分,有分布式,就需要達成共識。共識算法對于加密貨币而言至關重要的,因為它可以防止雙花問題。

從曆史上看,雙花問題是限制數字貨币發展的一個重要挑戰,直到采用了分布式賬本之後才得以改觀。正因為加密貨币是由公開的和不可篡改的分布式賬本實作的,是以必須采用共識算法來驗證賬本是否具有唯一性,以保證整個加密貨币網絡不被惡意節點所破壞。是以,共識算法必須具備容錯的能力。例如,通常假設隻需要一部分節點作出反應,但最少需要百分五十一的節點反應。

主流共識介紹

在目前的多個項目中,有四種主要的實作方式:工作量證明(pow),權益證明(pos),委托權益證明(dpos)和EOS中使用的BFT-DPOS共識,每個都有其獨特的優點和缺點。

8.1 主流共識介紹

工作量證明(pow)

工作量證明是第一個成功的去中心化區塊鍊共識算法,工作量證明被比特币和其他的一些加密貨币使用,工作量證明要求節點參與者執行複雜的計算,計算出符合要求的結果,而對于其他網絡參與者來說要易于驗證。

Pow的過程,即為不斷調整Nonce值,對區塊頭做雙重SHA256哈希運算,使得結果滿足給定數量前導0的哈希值的過程。其中前導0的個數,取決于挖礦難度,前導0的個數越多,挖礦難度越大。

8.1 主流共識介紹

pow挖礦過程:

  1. 生成一筆交易,并與其它所有準備打包進區塊的交易組成交易清單,生成Merkle根哈希值。
  2. 将Merkle根哈希值,與其它字段組成區塊頭,80位元組長度的區塊頭作為Pow算法的輸入。
  3. 不斷變更區塊頭中的随機數Nonce,對變更後的區塊頭做雙重SHA256哈希運算,與目前難度的目标值做比對,如果小于目标難度,即Pow完成。

Pow完成的區塊向全網廣播,其他節點将驗證其是否符合規則,如果驗證有效,其他節點将接收此區塊,并附加在已有區塊鍊之後,之後将進入下一輪挖礦。

POW的優點:

完全去中心化和分布式賬本。

POW的缺點:

計算複雜,浪費資源,交易吞吐量較低。

權益證明(pos)

權益證明也是需要節點進行計算,最後計算的結果小于難度值,則搶到區塊的機率越高。要求所有的參與者抵押一部分他們所擁有的token來驗證交易。不同于通過完成複雜計算問題來驗證交易,驗證者需要通過鎖定token來完成交易驗證。選取交易驗證者的方式通常是根據他們所抵押的token占整個網絡代币的比例,以及token抵押時長,因為抵押的token越多,持有的時間越長,計算的難度就越小。權益證明通過長期綁定驗證者的利益和整個網絡的利益來阻止不良行為。通過鎖定代币,如果驗證者存在欺詐性交易,那麼他們所抵押的token也會被削減。

PoS一個重要的概念是币齡,币齡 = 持有的币數 * 持有币的天數,例如錢包裡有90個點點币,都持有了10天,則币齡=900。與PoW一樣,為了搶到将區塊寫入區塊鍊的權利,節點同樣要進行hash計算,隻不過最終的解和币齡有關,計算公式: proofHash < coinAge * target; coinAge是币齡,target是一個目标值,用于調整難度。coinAge * target的值越大,難度就越小,搶到區塊的機率就越高。

8.1 主流共識介紹

pos挖礦過程:

  1. 團隊運作節點;
  2. 注冊成為驗證人;
  3. Staking過程(持币人委托給節點,或是團隊自由代币進行Staking委托);
  4. 選舉驗證人(系統通過算法選出每一輪的出塊節點或是驗證節點);
  5. 打包交易、廣播交易、驗證人确認一連串過程;
  6. 獲得獎勵(獎勵是由節點與持币人按照Staking比例配置設定);

PoS的優點:

(1) 不需要PoW那麼大的算力,可以減少資源浪費;

(2) 不容易遭受51%攻擊,相比起掌握系統一半以上的算力,擁有整個系統51%的财力會更加困難。

PoS缺點:

(1) 容易被壟斷:因為持币越多,持有的越久,币齡就越高,越容易挖到區塊并得到激勵,持币少的人基本上沒有機會,這樣整個系統的安全性實際上會被持币數量較大的一部分人(大股東們)掌握;而比特币則不存在這個問題,因為理論上任何人都可以購買礦機獲得提高自己的算力(甚至可以聯合起來),提升自己挖礦成功的機率;

(2) 很難應對分叉的情況:當出現分叉時,PoS可以在兩條鍊上同時挖礦并獲得收益。而PoW則不存在這個問題,因為當出現分叉以後,PoW總是選擇工作量大的鍊做為主鍊。

委托權益證明(dpos)

雖然委托權益證明和權益證明名字差不多,但實施細節卻有顯著的不同。在委托權益證明中,不同于權益證明的抵押token來驗證交易,而是通過token的持有者投票産生一組交易驗證者(超級節點)。 委托權益證明是去中心化的,因為網絡中的所有參與者都能參與投票選取節點來驗證交易,但也是中心化的,因為隻有一組交易驗證者,這樣的好處就是提高交易和驗證的速度。由于區塊生産者數量有限,DPoS能夠處理的事務吞吐量比PoW高出多個數量級。委托權益證明的實施中需要維持良好的信譽,通過持續投票流程以及驗證節點的更換,來得以保證選取産生的驗證者有良好的責任心和信任感。

8.1 主流共識介紹

委托權益證明的優勢在于良好的可擴充性以及快速的交易驗證,但是缺點在于部分中心化。委托權益證明目前被用于Steemit,EOS和BitShares等項目中。

DPoS,以限制網絡上驗證者的數量為代價,提供進階别的可擴充性。其中固定數量的標明實體(稱之為區塊生産者或見證人)被挑選來以循環順序建立區塊。區塊生産者由網絡使用者投票決定,他們每個人都得到與他們在網絡上擁有的代币數量(他們的股份)成正比的選票。或者,選民可以選擇将他們的股權委托給另一名選民,被委托的選民将代表他們投票選舉區塊生産者。DPOS與POW最大的差別是不用計算,生産者由投票決定,并已确定好生産順序來依次生産區塊。

DPoS的優點:

提高了交易和驗證的速度,處理事務吞吐量比今天的PoW高出多個數量級。

DPoS的缺點:

1.投票的積極性并不高:絕大多數持股人從未參與投票。這是因為投票需要時間、精力以及技能,而這恰恰是大多數投資者所缺乏的。

2.壟斷性高:PoW下幾乎沒有門檻,任何人都可以投入算力,通過競争獲得區塊獎勵。而DPoS延續了PoS的弊端,隻有持币者才可以獲得區塊鍊獎勵,其實這就帶來了一種制度性門檻,最終導緻DPoS币的流動性大大減少,窮者越窮,富者越富。

BFT-DPOS共識機制

拜占庭容錯機制(BFT)

BFT( Byzantine Fault Tolerance)稱為拜占庭容錯,拜占庭容錯技術是一類分布式計算領域的容錯技術。 拜占庭将軍的問題,當 n > 3m 時,即叛徒的個數 m 小于将軍總數的 n 的 1/3 時,通過口頭同步通信(假設通信是可靠的),可以構造同時滿足“一緻性”和“正确性”的解決方法,即将軍們可以達成一緻的指令。 N個區塊生産者由區塊生産者候選人被選舉出來,當一個區塊被(2/3 + 1)個區塊生産者确認時,它會得到最終确定(即不可逆轉)。 選民如果發現區塊生産者是惡意的(即試圖審查事務或雙重支出),則可以通過在下一輪投票時不給他投票“炒掉”他。

8.1 主流共識介紹

EOS的共識機制采用(BFT-DPOS)共識機制,EOS通過投票的方式選舉出21個超級節點作為記賬節點,21個區塊生産者通過token持有者的投票被選出,選中的生産者依據商定好的順序生産區塊,這個順序由21個生産者商定,每生産10輪,21個節點會從新投票被選出。如果輪到某節點出塊而沒有出塊,則該節點可能被投票出局,由其他備選節點頂替,每個節點有6秒的時間片,輪流出塊,每0.5秒出一個塊,每個生産者節點每次出12個塊(6/0.5)。

DPoS共識加上BFT算法後,生産節點出塊時,會确認收到的塊,同時向剩下20個節點進行廣播,如果有超過(2/3+1)的節點驗證通過,則将該區塊加入備選不可逆塊清單中(單節點驗證成功),當全網有超過(2/3+1)的節點把該區塊驗證通過後,最後的不可逆塊是從排好序的備選不可逆塊清單中取1/3處擷取,因為可能存在網絡問題,會導緻最後的不可逆塊沖突(後面章節詳細介紹),為了解決沖突,需要對備選不可逆塊再做(2/3+1)次确認。

優點:

BFT-DPOS可以使得EOS的出塊和确認塊速度顯著增加,并且可以解決網絡延遲造成的塊丢失問題。

缺點:

1.投票參與度較低,要成為生産節點,配置要求較高,普通人很難參與,導緻投票積極性不高。

2.token壟斷性高,普通人很難成為生産者,擷取獎勵。

總結

各種共識的優缺點:

共識方式 優點 缺點
pow 完全去中心化,破壞系統需要極大成本 挖礦算法複雜,消耗資源較大,交易吞吐量較低
pos 完全去中心化,挖礦算法較簡單,不用浪費太多資源 很難應對分叉的情況,投票參與度較低,token壟斷性高
dpos 出塊,交易和驗證的速度較快 投票參與度較低,token壟斷性高,部分中心化,可能出現不可逆塊沖突
bft-dpos 出塊和确認塊,交易速度快 投票參與度較低,token壟斷性高,部分中心化

連結

http://www.3heu.com/

https://www.jianshu.com/p/4de66ee2b2c6

https://blog.51cto.com/14267585/2391383

繼續閱讀