區塊鏈共識機制及其迭代

共識,Consensus,故名思義,共同的認識,共識問題研究的就是多個成員如何達成一致,典型的好比投票選舉。算法

區塊鏈是一種去中心化的分佈式帳本系統,區塊鏈的共識問題實際上來源於分佈式系統的一致性問題。數據庫

分佈式一致性問題

區塊鏈是一種去中心化的分佈式帳本系統,因爲點對點網絡下存在較高的網絡延遲,
各個節點所觀察到的交易事務前後順序不可能徹底一致。 所以區塊鏈系統須要設計一種機制對在必定的時間內發生的事務的前後順序進行共識。這種對一個時間窗口內的事務的前後順序達成共識的算法被稱爲「共識機制」。網絡

共識機制在區塊鏈中扮演着核心的地位,共識機制決定了誰有記帳的權利,以及記帳權利的選擇過程和理由。不用的虛擬貨幣採用共識機制不一樣,常見的共識機制如POW,POS,DPOS,拜占庭容錯等。分佈式

比特幣區塊鏈採用了 Proof of Work(PoW)的機制來實現共識,該機制於 1998 年在 B-money 設計中提出。目前,Proof of 系列中比較出名的一致性協議包括 PoW 和 PoS,都是經過經濟懲罰來限制惡意參與。性能

POW 工做量證實

工做量證實,Proof of Work,經過計算來猜想一個數值(nonce),得以解決規定的 hash 問題(來源於 hashcash)。保證在一段時間內,系統中只能出現少數合法提案。區塊鏈

在比特幣的區塊結構中,nonce數值被保存在區塊頭中。設計

同時,這些少許的合法提案會在網絡中進行廣播,收到的用戶進行驗證後會基於它認爲的最長鏈上繼續難題的計算。所以,系統中可能出現鏈的分叉(Fork),但最終會有一條鏈成爲最長的鏈。代理

hash 問題具備不可逆的特色,所以,目前除了暴力計算外,尚未有效的算法進行解決。反之,若是得到符合要求的 nonce,則說明在機率上是付出了對應的算力。誰的算力多,誰最早解決問題的機率就越大。當掌握超過全網一半算力時,從機率上就能控制網絡中鏈的走向。這也是所謂 51% 攻擊 的由來。orm

參與 PoW 計算比賽的人,將付出不小的經濟成本(硬件、電力、維護等)。當沒有成爲首個算出的「幸運兒」時,這些成本都將被沉沒掉。這也保障了,若是有人惡意破壞,須要付出大量的經濟成本。也有設計試圖將後算出結果者的算力按照必定比例摺合進下一輪比賽考慮。blog

有一個很直觀的例子能夠說明爲什麼這種經濟博弈模式會確保系統中最長鏈的惟一。

超市付款須要排成一隊,可能有人不守規矩要插隊。超市管理員會檢查隊伍,認爲最長的一條隊伍是合法的,並讓不合法的分叉隊伍從新排隊。只要大部分人不傻,就會自覺在最長的隊伍上排隊。

優勢:

  • 徹底去中心化
  • 節點自由進出,容易實現。
  • 破壞系統花費的成本巨大

缺點:

  • 對節點的性能網絡環境要求高
  • 沒法達成最終一致性
  • 最關鍵的,浪費能源

POS 權益證實

權益證實,Proof of Stake,2013 年被提出,最先在 Peercoin 系統中被實現,相似現實生活中的股東機制,擁有股份越多的人越容易獲取記帳權。

典型的過程是經過保證金(代幣、資產、名聲等具有價值屬性的物品便可)來對賭一個合法的塊成爲新的區塊,收益爲抵押資本的利息和交易服務費。提供證實的保證金(例如經過轉帳貨幣記錄)越多,則得到記帳權的機率就越大。合法記帳者能夠得到收益。

POS是根據錢包裏面貨幣的多少以及貨幣在錢包裏存在的天數來合成一個單位(幣天)。它根據幣天的關係對計算機進行哈希計算下降了難度,下降了計算機的門檻,可是對計算機仍是有必定要求的,它把錢包和區塊鏈系統的一致性綁定在一塊兒。誰的錢包裏的幣天數越大誰擁有記帳權的機率就越大。可是它和POW機制同樣解決問題的思想也致使了它與POW擁有同樣的缺點,也是犧牲了一部分的共識(一樣分叉),並且須要等待多個確認。

PoS 是試圖解決在 PoW 中大量資源被浪費的缺點。惡意參與者將存在保證金被罰沒的風險,即損失經濟利益。通常的,對於 PoS 來講,須要掌握超過全網30%的資源,纔有可能左右最終的結果。這個也很容易理解,三我的投票,前兩人分別支持一方,這時候,第三方的投票將決定最終結果。

優勢:

  • 對節點性能要求低,達成共識時間短(網絡環境好的話可實現毫秒級)

缺點:

  • 沒有最終一致性

以太坊前三個階段,即Frontier(前沿)、Homestead(家園)、Metropolis(大都會)。第四個階段,即Serenity(寧靜),將採用PoS機制。

Casper:以太坊前三個階段採用的是POW共識機制,第四個階段將採用本身建立的POS機制,名爲投注共識。這種機制增長了懲罰機制,並基於POS的思想在記帳節點中選取驗證人。

DPOS 委託股權證實機制

PoS 也有一些改進的算法,包括受權股權證實機制(DPOS),即股東們投票選出一個董事會,董事會中成員纔有權進行代理記帳。

表明新型智能合約的EOS採用DPOS(Delegated Proof of Stake)委託股權證實機制。DPOS經過必定程度的中心化,擁有了中心化系統的性能優點。

中本聰設想的一cpu一票的區塊鏈世界裏,每一個人都能積極參與到區塊鏈中,這樣才能實現徹底去中心化的系統。可是現實生活中每一個人都參與決策效率每每不高,這纔出現表明大會制度。

DPOS網絡中的每一個持有代幣的人(即每一個客戶端)都有權選出本身的表明,讓爲數很少的表明們來維護區塊鏈網絡的運行,每一個區塊由隨機的表明輪流負責挖出。這使得區塊的產生只須要被更少數量的節點檢驗和確認,大大提升了網絡運行速度。
最重要的是這些表明權利平等,並時刻受到監督,若是由於計算不穩定,常常不在線,就會被持幣者們自動踢出由新的表明所代替。而表現可靠的表明們也能穩定地收取區塊中的交易手續費。

PBFT:Fabric使用的經典算法(拜占庭容錯)

PBFT是Practical Byzantine Fault Tolerance的縮寫,意爲實用拜占庭容錯算法。

拜占庭容錯可以容納將近1/3的錯誤節點偏差,Hyperledger就是使用了該算法做爲可插拔的共識算法之一。

 
5-Figure1-1.png

步驟:

從全網節點選舉出一個主節點(Leader),新區塊由主節點負責生成

  • Pre-Prepare:每一個節點把客戶端發來的交易向全網廣播,主節點0將從網絡收集到需放在新區塊內的多個交易排序後存入列表,並將該列表向全網廣播,擴散至123

  • Prepare:每一個節點接收到交易列表後,根據排序模擬執行這些交易。全部交易執行完後,基於交易結果計算新區塊的哈希摘要,並向全網廣播,1->023,2->013,3由於宕機沒法廣播

  • Commit:若是一個節點收到的2f(f爲可容忍的拜占庭節點數)個其它節點發來的摘要都和本身相等,就向全網廣播一條commit消息

  • Reply:若是一個節點收到2f+1條commit消息,便可提交新區塊及其交易到本地的區塊鏈和狀態數據庫。

參考 《區塊鏈技術指南》

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息