共識機制:區塊鏈技術的根基

鏈客,專爲開發者而生,有問必答!算法

此文章來自區塊鏈技術社區,未經容許拒絕轉載。數據庫

圖片描述

Chapter-1:什麼是共識機制?安全

技術定義是:共識機制是一個羣體決策的流程,羣體中的個體會執行和支持對羣體其餘我的最好的決定。這是一個個體須要支持大多數人決定的解決方式,無論他們意願如何。服務器

簡單地說,這僅僅是一個羣體決策的方式,舉例說明,10我的的小團體,要決策出對他們全部人最有利的決定,每個人都提出一個方案,可是大多數人只會支持那個對他們最有利的方案,而其餘人只能服從這個決定,無論我的意願如何。網絡

共識機制不只僅是贊成大多數贊成的決定,同時須要贊成那個對全部人都最有利的方案,所以,它是一個網絡雙贏的決定。區塊鏈共識模型是在網絡世界中創造平等和公平,用於達成共識的共識系統叫作共識理論。數據結構

區塊鏈共識模型包括如下內容:架構

達成一致:機制將收集羣體中全部一致意見app

合做:羣體中每一個人都是爲了更好地達成一致,從而羣體利益一致異步

合做:個體都考慮羣體,而不考慮他們我的利益分佈式

平等的權利:每個個體參與者都有相同投票的權利,這意味着每個人的投票都很是重要

參與:每一個在網絡中的個體都須要參與投票,沒有人可以逃避或者僅僅在集體中而不投票

積極性:羣體中每一個成員都是相同的活躍度,沒有人須要承擔羣體中的更多的責任

不一樣的共識機制:

Chapter-2: 拜占庭容錯問題

拜占庭容錯是一個特殊錯誤事項的系統,它叫拜占庭將軍問題。你能夠在一臺分佈式計算機系統中經歷這種情形,一般是共識系統失靈。

系統組件處理更加相互衝突的信息,共識系統只有在全部因素都正常工做的狀態下才能正常工做。所以,當其中一個系統組件失靈的時候,會致使整個系統奔潰。

失靈的組件一般是由拜占庭容錯系統的不一致致使,這也是爲何這些去中心化網絡的共識系統使用感並不理想。

專家稱之爲「拜占庭將軍問題」,是否仍然使人困惑?讓我用一個共識的例子來講明。

想象有一羣將軍,每一個將軍都有一支他們本身的拜占庭戰士隊伍。他們將要攻佔一座城市,所以他們須要計劃攻佔的戰術。

你可能會認爲這是徒勞的,由於這個只是一個小問題。將軍們能夠經過一個信使來溝通,可是當中一些背信棄義的將軍可能試圖破壞整個攻佔計劃。

他們能夠經過信使傳達一些不真實的信息,甚至信使多是敵人派來潛伏的臥底。

信使也有可能傳達錯誤的信息蓄意破壞整個攻佔計劃。

這就是爲何須要當心謹慎。第一,全部將軍們必須達成了一致的攻佔決定;第二,保證不會出現任何的叛徒,不然整個任務都會失敗。

這看起來很簡單,但實際上,並非。根據研究,平均3n+1個將軍中就會有n個叛徒出現,4個將軍對付一個叛徒,這也是至關棘手了。

Chapter-3:爲何咱們須要共識機制?

拜占庭問題主要就是爲了達成一致。即便出現一個錯誤,節點們也不能達成一致,或者將達成一致的難度係數提升。

另外,共識機制並非真的解決這類型問題,它們的初衷是在任何狀況下都可以達成一個特殊目標。區塊鏈共識模型將比拜占庭更加可靠,以及容錯性更高。

Chapter-4: 區塊鏈:去中心化網絡組織數據的架構

從新看一下區塊鏈技術,得到一個總體網絡的全貌 ——組織數據庫的新方式 ——能夠存儲網絡中任何變化的內容 ——全部數據都將像物質同樣被放進區塊中

所以,在區塊鏈中你將不會看到任何去中心化,這是由於區塊鏈自己不提供去中心化的環境。這也是爲何咱們須要共識機制來保證咱們的系統是徹底去中心化的。

所以,區塊鏈技術僅僅是創造了一個結構化的數據庫,並不會執行去中心化的流程。這就是爲何區塊鏈技術被稱爲去中心化網絡的架構而已。

Chapter-5:共識機制:網絡的靈魂

這個方式至關簡潔。區塊鏈共識模型僅僅是達成一致的方式,然而任何去中心化系統都離不開共識機制。

節點是否相互信任也不重要,網絡會遵循必定的原則去達成集體的一致。所以,你須要瞭解全部類型的共識機制。

目前爲止咱們沒有發現有某一種共識機制存在全部區塊鏈技術項目中的。咱們來看一下不一樣的共識機制。

Chapter-6:不一樣類型的共識機制

全部共識機制列表

Proof-of-Work 工做量證實

Proof-of-Stake 權益證實

Delegated Proof-of-Stake 委託權益證實

Leased Proof-Of-Stake 租用權益證實

Proof of Elapsed Time 過去時間證實

Practical Byzantine Fault Tolerance 實用拜占庭容錯

Simplified Byzantine Fault Tolerance 簡單拜占庭容錯

Delegated Byzantine Fault Tolerance 委託拜占庭容錯

Directed Acyclic Graphs 有向非循環圖

Proof-of-Activity 活動量證實

Proof-of-Importance 重要性證實

Proof-of-Capacity 容量證實

Proof-of-Burn 燃燒證實

Proof-of-Weight 重量證實

Proof of Work工做量證實

工做量證實是第一個區塊鏈共識機制。許多區塊鏈項目都是用共識機制來驗證交易以及產生相關區塊的。

去中心化帳本系統收集全部關於區塊的信息,然而須要一個對全部交易區塊做特殊貢獻的角色。

承擔這些任務的全部個體節點叫礦工,它們完成這些任務的過程叫「挖礦」。

這項技術背後最核心的原則是解決複雜的數學問題以及很容易獲得答案。

這個數學問題是什麼?這些數學問題就是,消耗大量計算機計算能力,去解決哈希函數(Hash Function),或者在不知道輸入值的狀況下找到輸出值,另一個就是整數分解(integer factorization),這也包含大量猜謎過程。

當服務器遭受DDoS攻擊或者去解決共識系統難題須要消耗大量算力,這時礦工就派上用場。用數學等式解決整個問題的答案就叫哈希。

然而工做量證實有不少缺陷。因爲網絡增加得過於龐大,須要消耗大量算力,這個過程也增長了系統總體的敏感性。

爲何系統變得如此敏感?

區塊鏈共識順序依靠準確的數據和信息。然而系統速度極慢。若是一個問題很是複雜,將耗費大量時間去產生一個區塊。

交易被延遲,而後整個工做流程將停滯。若是區塊產生問題不能在必定時間內解決,那麼區塊產生將成爲一個幻想。然而若是問題被系統很容易解決了,這又可能致使DDoS攻擊。同時,解決方案須要被進一步仔細檢查,由於不是全部節點都可以發現潛在的錯誤。

若是他們可以作到,網絡將失去最重要的特性——透明。

工做量證實如何應用在一個區塊鏈網絡中?

首先,礦工解決全部猜謎問題,而後產生新區塊,而後驗證交易。沒法說明一個猜謎難題有多複雜,這取決於用戶數量最大值,當時算力的最小值,以及網絡總體容量。

新區塊在哈希函數被解決以後產生,以及每個新產生區塊都包含前一個區塊的哈希函數值。經過這種方式,網絡增長了保護性以及能夠組織任何暴力攻擊。一旦一個礦工解決了謎題,一個新區塊將產生,而後交易信息被驗證。

工做量證實共識機制實際被用於何處?

被應用最普遍的就是比特幣,比特幣是第一個採用這種共識機制的加密數字貨幣。區塊鏈共識模式容許根據網絡總體算力,動態改變算力謎題的難度。

產生一個新區塊須要10分鐘。其餘加密貨幣例如萊特幣,也是採用一樣的共識機制。

另一個工做量證實的區塊鏈,以太坊,平臺上3-4個大項目都是採用工做量證實。然而,以太坊在逐漸過渡至權益證實。

爲何區塊鏈技術優先採用工做量證實?

爲何其餘區塊鏈項目會優先採用工做量證實?這是由於工做量證實提供DDoS攻擊保護,以及下降總體權益挖礦。

工做量證實給黑客攻擊形成不小的難度,由於整個系統有大量算力以及其餘要求。這就是爲何雖然黑客能攻擊區塊鏈共識模型,但須要耗費大量時間,以及攻擊難度會使總體成本太高。

另外,沒有礦工可以左右整個網絡,由於決策不是根據金錢數量,而是根據你擁有可以創造新區塊的算力決定的。

工做量證實共識機制主要受到的批評?

沒有一個共識機制是完美的,工做量證實也不例外。它有許多優勢,同時也帶來不少缺陷。主要被詬病如下方面:

消耗大量能源

區塊鏈網絡包含數百萬計的用於解決哈希問題的定製芯片,這個過程要求大量的能源支撐。

目前,比特幣擁有每秒200億哈希算力。網絡中礦工使用一些特殊設計的芯片,這爲網絡增長了一層防止僵屍網絡攻擊(botnet attack)的保護。工做量證實的區塊鏈網絡的保護層消耗大量密集型能源。算力的增長逐漸成爲全球能耗的一個問題——礦工也面臨增長大量電力成本。

解決這個問題的最好方式是尋找便宜的能源。

礦工的中心化

因爲能耗問題,工做量證實也轉向便宜電力能源做爲解決方案。然而,主要的問題是比特幣大礦工數量的增長。在必定時間內,大礦工會由於擁有大量算力,而嘗試對挖礦系統制定新規則。這樣會形成一個去中心化網絡中逐漸中心化。這也是工做量證實共識機制面臨的另一個重大問題。

什麼是51%攻擊?

這是一個由能夠控制大多數用戶,或者佔領多數挖礦能力的人(或節點、或羣體)發動的攻擊。在這種情形下, 攻擊者有足夠的算力去控制網絡中的一切。

舉例,想象一個情形,當Alice向Bob經過區塊鏈網絡發送一些加密貨幣,然而Alice被捲入這場攻擊中,而Bob沒有。這個轉帳交易雖然發生了,可是攻擊者經過區塊鏈的分叉,阻止了任何加密貨幣的轉帳。

另一個情形,礦工若是加入了其中一個陣營,他們絕對算力會繼續在這些區塊後產生驗證區塊,這也是爲何更加短的區塊鏈會被拒絕驗證。一樣,Bob也沒法接收轉帳。

Proof of Stake權益證實

什麼是權益證實?

權益證實的產生就是爲了解決工做量證實的缺陷。在網絡中加入其它區塊以前,每個區塊將被驗證。鏈若是有任何一點的扭曲,礦工能夠用持有的加密貨幣對挖礦過程進行投票。

權益證實是一種容許每一個個體,根據他們持有的加密貨幣數量,參與挖礦或者驗證區塊的共識機制。所以,在這種情形下,你擁有的加密貨幣數量越多,意味着你的權益越大。

這是如何工做的?

這種共識機制中,少數派被優先選擇。儘管整個流程是徹底隨機的,但也不是每個少數派都能參與投票。網絡中的礦工是隨機被選擇的。

若是你有必定數量的加密貨幣存儲在錢包中,你將有資格成爲網絡中的一個節點。當成爲一個節點後,若是你想要成爲一個礦工,你須要抵押必定數量的加密數字貨幣,而後投票系統選出驗證者,這是礦工必須將按照最少要求數量的加密貨幣抵押到一個特殊的錢包中。

整個過程很簡單。新區塊將根據特殊錢包中的加密貨幣的數量比例產生。例如,若是你擁有10%的加密貨幣,那麼你擁有10%機會挖出新區塊。許多區塊鏈項目採用不一樣的權益共識機制。

然而全部的權益共識機制對於新區塊產生都是同樣的,每個礦工都將得到區塊獎勵以及必定數量的交易手續費。

權益證實池裏將會發生什麼?

還有其餘方式參與投票,若是權益數量太多,你能夠加入一個池而後從中獲取收益。有如下兩種方式:

你能夠將你持有的加密貨幣借給池子裏要參與的用戶,而後分享收益。然而,你須要找到一個可靠的人去將你手中的幣給他。

你能夠本身加入一個池子,參與這個池子的每一個人將根據他們權益的數量分享收益。

權益證實:優點?

這種共識機制不須要任何硬件支持。你只須要一個運行正常的計算機系統,以及一個穩定的網絡便可。網絡中擁有足夠加密貨幣的任何人均可以驗證交易。

若是一我的在網絡中進行投資,他的投資不會貶值或者折舊。能影響收益的惟一因素就是加密貨幣的價格波動。權益證實共識機制的區塊鏈比工做量證實更加節能,它不會消耗大量資源。

可以減小51%攻擊的威脅。

儘管權益證實看起來比工做量證實更加合算,但仍然有一個很大的缺點,就是否是徹底去中心化。這是因爲只有一部分節點可以參與網絡投票。而擁有最多數量加密貨幣的人將最終控制大部分系統。

採用權益證實的主要加密貨幣

PIVX

這是一個幾乎0交易費的匿名幣。PIVX是從DASH分叉出來的,然而不一樣於DASH採用工做量證實,PIVX採用權益證實。他們用分佈式區塊的主節點來保證更好的投票效果。若是你想要擁有PIVX,你必須下載官方錢包,而後同步於區塊鏈網絡中,接着,你必須往錢包中轉入一些加密貨幣,而後保持鏈接。

NavCoin

許多加密貨幣是比特幣的分叉幣,NavCoin也是其中之一,這個項目是徹底開源的,他們也轉向了權益證實。爲了最大化收益,你的計算機須要更長時間鏈接網絡。因爲權益證實異常輕量級,你能夠絕不擔憂地任其運行更長時間。

Stratis

他們主要提供企業級服務,企業可使用Stratis去創建本身的dApps,而不用搭建本身底層的區塊鏈網絡。Stratis這個平臺提供側鏈進行搭建app,從而阻止網絡滯後。雖然他們以工做量證實開始,可是最終將轉向權益證實。 Delegated Proof-of-Stake Consensus委託權益證實共識

委託權益證實是權益證實的變體。系統具備至關的魯棒性,而後往總體增長了一個不一樣形式的彈性機制。

若是你想要快速、有效率、去中心化共識機制,那麼委託權益證實將會是最好的選擇。權益擁有者的事項將經過一種民主的方式獲得徹底解決。網絡中的每個組件將成爲一個代理。

不一樣於礦工或者驗證者,這裏的節點被成爲代理者。經過決定區塊產生,系統能夠以秒級處理交易。並且,系統被設計成能夠對全部監管問題進行保護和對抗。

見證者驗證全部簽名

一般,見證者免於全部監管以及其餘中性詞。傳統合約中的標準見證者都會對一個特殊的點進行見證驗證。他們僅僅是保證個體在一個特色時間參與了合約。

在DPOS中,見證者能夠產生區塊信息。頂級見證者要投票選出。一般只有徹底去中心化系統中才會發生這種投票。

全部的見證者都會在產生區塊後收到報酬。這個報酬的比例由投票系統事先制定。

投票選擇代理者中的特殊參數改變

跟見證者同樣,代理者也由投票產生。代理者能夠改變整個網絡的參數。你能夠經過代理者,去改變手續費、出塊時間、區塊大小和見證者報酬。若是要改變網絡參數,須要大多數代理者都參與投票支持。然而,代理者不會像見證者得到報酬。

改變原有的規則

爲了使系統平穩運行,不時須要加入一些不一樣的功能。然而,沒法在缺乏潛在相關者的狀況下添加功能。見證者能夠彙集起來,改變政策,可是他們被系統限定不能如此。 見證者須要保持中立,以及他們僅僅是做爲利益相關者的僱員。因此,全部事項都由利益相關者決定。

雙花攻擊風險

在DPOS中,雙花攻擊風險被最大程度下降。雙花攻擊是指區塊鏈網絡沒法包含數據庫中以前的交易記錄。網絡能夠在無人幫助的狀況下進行自我檢查,而後發現相似的損失。經過這種方式,來保證數據庫的100%透明。

權益證實下的交易完成

儘管這是權益證實的一個變體,但核心交易系統仍然是整個運行在權益證實機制上的。權益證實的交易流程增長一個保護層對抗錯誤的共識系統。

誰採用委託權益證實?

LISK,爲開發者能夠在這個區塊鏈平臺上,便利地開發基於JavaScript的去中心化應用。

Lisk跟以太坊有不少類似的地方,然而,它採用委託權益證實而非權益證實。這裏的投票運行機制不同。 Leased Proof-Of-Stake (LPoS) 租用權益證實

權益證實的另一個變體是租用權益證實。採用這個新型共識機制的區塊鏈項目是Waves平臺。就像其餘區塊鏈平臺同樣,Waves也是屬於能耗少的。權益證實對於投票機制存在一些限制。擁有少許加密貨幣的個體可能永遠也沒法實際參與投票環節。爲了維持網絡運行,只有少數擁有更多加密貨幣的個體能夠參與。這個流程會致使在一個去中心化平臺中存在中心化團體,這顯然不是你們願意看到的。

在租用權益證實中,即便擁有少許加密貨幣的持幣者也能有機會參與投票。他們能夠把手中的幣借給網絡,而後從中獲取收益。引入新型的租用權益證實後,狀況徹底變化了。系統以前的缺陷能夠毫無難度地獲得解決。Waves平臺最主要的目的就是顧及少數的投資者。那些只擁有少許加密貨幣在錢包中的人可能永遠都沒法像大戶同樣有機會獲取收益。這也致使了共識機制一個主要命題——透明性。 Proof of Elapsed Time (PoET) 過去時間證實

過去時間證實是最好的共識機制之一。這個特殊的機制被主要用於聯盟鏈網絡——即你須要獲得許可才能加入這個網絡中。這些可容許網絡須要對挖礦權利或投票原則等事項進行決策。爲了一切順利運行,過去時間證實採用一個特殊的手段來覆蓋整個網絡的透明性。這個共識機制同時可以保證系統的安全登陸,在成爲礦工前網絡須要進行驗證。毋庸置疑,在這個共識機制下,挑選出勝者只能依靠公平手段。

這個牛逼的共識序列的主要戰略是什麼?

網絡中每個個體必須等待必定量的時間,然而時間的限制是徹底隨機的。

參與者必須完成TA的等待時間後,才能在帳本中創造新的區塊。

爲了證明這些場景共識機制必須考慮如下兩點

勝者是否首先就選擇了隨機數?TA可否選擇一個短期的隨機數而後就獲勝

個體是否真的完成TA被分配的等待時間?

過去時間證實依靠一個特殊的CPU設備——Intel軟件保護擴展。這個設備可以在網絡中運行特殊的代碼,過去時間證實就是採用這個系統來保證勝局徹底公平。

Intel SGX系統

因爲過去時間共識機制採用SGX系統來驗證公平性。咱們來詳細說一下這個系統。

首先,一個特殊的硬件系統創造一個認證來使用特殊可信任的代碼。代碼是在一個安全的環境中產生的。任何外界均可以用這個認證來驗證是否被篡改。

第二,這些代碼是在網絡中的隔絕區域中運行的,沒有人能夠鏈接到。

第一個步驟可以證實你是在網絡中真實地使用可信代碼,而不是隨機的把戲。若是步驟一不可以正常運行,主網絡甚至沒法發現。 第二個步驟阻止任何用戶經過認爲TA在運行代碼從而操縱系統。步驟二保證了共識機制的安全性。

可信任代碼

簡單地羅列出代碼的要點

加入區塊鏈網絡

一個新用戶首先須要下載區塊鏈中可信任的代碼

開啓後,他們會得到一個特殊的鑰匙對

運行這個鑰匙對,用戶就能夠發送SGX認證到網絡中,請求經過

參與樂透系統

個體將會從可信代碼源中獲得一個已經簽名的計時器。以後,個體將須要等待,直到時間徹底消耗掉。最後,這個個體將會獲得一個完成任務的資格。

協議同時保證了基於SGX不一樣層級的保護。系統將計算一個用戶須要多少次才能贏得一次樂透。經過這樣,他們將得知我的用戶的SGX是否被損害了。 Practical Byzantine Fault Tolerance (PBFT) 實用拜占庭容錯

PBFT主要用於狀態機,它複製系統,可是又能夠免於拜占庭將軍問題。如何作到的?

PBFT一開始就假設網絡中存在潛在的錯誤,以及一些獨立的節點將在某些特定時間失靈。

PBFT就是爲異步共識系統所設計的,並且進一步優化,經過一種高效的方式去解決全部問題。系統中的全部節點都按照特殊的順序進行設置。其中一個節點被選爲最初的一個,其餘做爲備選方案。然而系統中全部的節點都有序地運行,之間也可以彼此溝通。

溝通層設置得至關高級,由於節點間想要驗證系統中的每個信息。而這個設置能夠避免不可靠信息問題。

然而,經過這種方式,甚至一個節點被損害了,他們也可以發現。全部的節點將經過大多數投票來達成一致。

共識機制的優勢

這個模型最初是爲了實際應用所設計的,很是容易應用。所以PBFT在全部共識機制中都佔據優點。

不須要驗證

網絡中的交易運行跟別的系統有點區別。它可使一筆交易最後落實,而不須要像POW系統那樣進行驗證。若是節點在某個區塊上達成一致,則這筆交易就算最終完成。這是基於全部可信的節點在同一時間進行了相互溝通後,而後對某一區塊都有認知這一事實。

減小能源消耗

PBFT能夠比POW減小大量能源消耗。在POW中,每個區塊產生都須要一個POW解題循環。然而,PBFT中,不是每個礦工都在解決哈希算法。這就是爲何PBFT系統不用耗用如此多的算力。

系統的缺點

溝通的缺口

PBFT中最重要的因素就是節點間的溝通,系統中的每個節點都必須保證他們收集的信息是可靠的。然而,共識機制僅在一小部分節點中獲得有效運行。

若是節點數量增長到必定程度,系統將難以追蹤全部的節點,也沒法與每個節點都有單獨聯繫。

有論文提出用MACs以及其餘數字簽名來證實信息的真實性。但有說法認爲,MACs沒法處理區塊鏈網絡系統,使用它最終會形成重大的損失。

數字簽名是個好主意,可是維持全部溝通節點的安全性,將會隨着節點數量增長,變得愈來愈難。

女巫攻擊

PBFT至關容易遭受女巫攻擊。在女巫攻擊中,經過操縱必定數量的節點,來損害整個網絡。更龐大的網絡情形將更加糟糕,同時系統的擴展性也會下降。

若是能夠將PBFT跟其餘共識機制一塊兒使用,它們可能可會獲得很是穩固安全的連擊措施。 Simplified Byzantine Fault Tolerance (SBFT) 簡易拜占庭容錯

SBFT的系統運行有點不同。

第一,區塊生成器將一次性收集全部的交易,把他們放進一個新區塊後,再進行驗證。簡單地說,一個區塊將收集全部的交易,按照順序將他們放進另一個區塊後,再對他們進行驗證。區塊生成器採用必定的規則,可以使全部節點都驗證全部交易。

接着,一個區塊受權節點(singer)將再驗證全部交易後,而後爲他們添加屬於他們本身的簽名。這就是爲何若是任何區塊缺乏一個簽名都將被拒絕。

簡易拜占庭容錯的不一樣階段

整個流程從創造階段開始,資產的用戶將生成必定數量獨特的資產ID。

接着,在提交階段,用戶向平臺提交全部ID。

而後,驗證階段,ID將得到實際用例的特定條件。

一旦他們得到簽名,ID將被存儲和發送至不一樣帳戶中。交易將由智能合約開啓。

最後,交易被激活。

這個優秀系統另一個很是有趣的功能是帳戶經理,這個帳戶經理將涉及許多階段。最初的目標是將全部的資產進行安全地存儲。帳戶經理也存儲着全部的交易數據,這個經理可爲不一樣用戶覆蓋全部類型的組合式數據。

你能夠把這個當作數字錢包。經過使用數字錢包,你能夠從錢包中轉移你的資產,而後從新得到他們以及收益。你能夠經過智能合約來使用帳戶經理,當須要知足某些要求的時候,他能夠釋放資金。

資產的全部權將流向何方?他們使用了一個推進模型,你能夠將賺取的資產發送至這個模型包含地址和資產ID。

安全和隱私

SBFT是一個私人網絡,將保密性做爲網絡最高級別的任務。平臺被設計成面向敏感信息,但同時擁有一些限制。這也是爲何系統有三個技術特徵:

一次性使用地址

當一個用戶每次想要用TA的錢包接收一些資產時,他們將被授予一次性使用地址。每個地址都不一樣,這樣能夠防止任何用戶去攔截交易。

零知識證實

零知識證實被用於隱藏交易的全部內容。然而,整個網絡依舊可以被驗證其真實性。這個經過零知識證實——只有接收者和發送者能夠看到交易內容——能夠完成。

元數據加密

交易的元數據被加密,以進一步保證其安全性。網絡容許經過密鑰來驗證其真實性。然而,爲了達到更好地保護效果,密鑰將2-3天內進行改變。

同時,全部元數據被分隔存放在數據網絡中的不一樣地方。所以,若是其中一個數據被黑客攻擊,其餘可使用其餘密鑰來生成更多的密鑰。管理和每隔幾天進行流轉這些密鑰對於保證共識機制的真實性來講,很是有必要。

鏈,一個用SBFT去驗證網絡中的交易的區塊鏈平臺。除此以外,還使用HSM來提供工業級別的安全性,而不須要對單點失效進行處理,就能提供額外的安全保障。 Delegated Byzantine Fault Tolerance (dBFT) 委託拜占庭容錯

工做量證實和權益證實是運用最普遍的共識機制。許多區塊鏈生態系統都採用者兩種共識機制,但有些項目嘗試使用更新型更先進的共識機制系統,NEO就是這樣的表明。

過去的12個月裏,經歷了瘋狂的增加,NEO如今已經成爲業務煊赫一時的項目。中國品牌顯現出其潛力。爲何這麼說?由於他們是這個先進的共識機制的發明者——委託拜占庭容錯。

一個熱門的區塊鏈項目:NEO

這是目前行業中熱門的項目之一,被稱爲「中國版以太坊」。NEO主要目標是創造一個智能經濟體系,在那裏你能夠低成本地進行數字資產交易。

NEO採用委託拜占庭容錯來驗證交易。若是你擁有NEO代幣,你將生產GAS——平臺主要的流通貨幣。你將爲你的每一筆交易付出必定量的手續費,即GAS。也就是說,你擁有的NEO越多,你得到的GAS越多。

然而,這個份額與POS有點不同。許多交易所提供一個撮合系統,然而,最好是使用NEO的官方錢包,而不是其餘的存儲錢包。

在咱們開始分析dBFT前,你要知道dBFT的元機制——拜占庭容錯共識機制——的主要缺陷。

拜占庭將軍問題的缺陷

當咱們見證任何投票以及結果的時候,系統的一個主要缺陷將出現。如下的例子將幫助你更好地理解。

你已經知道遵循dBFT共識機制的節點都像軍隊的展現同樣。軍隊中的節點都有隻有一個將軍,一般他們遵從將軍的命令。如今想象一下,拜占庭軍隊計劃攻佔羅馬,假設拜占庭軍隊有9位將軍,他們包圍了羅馬城,準備攻打。將軍們只有執行統一的一個戰術——進攻或撤退——才能成功拿下羅馬。

這就是問題所在。將軍們都各懷心事——只有超過半數贊成的策略他們纔會遵循。這裏有另一個假設,將軍們是不會坐在一張桌子上進行商討決策的,他們分佈在不一樣的地點,使用信使來傳遞信息。

4大威脅

4種狀況可能幫助羅馬人維持他們的統治:

羅馬人能夠賄賂將軍來得到他們的支持,接受賄賂的將軍被稱爲「叛變的將軍」。

其中一位將軍可能採起了錯誤的決策,被稱爲「行動錯誤的將軍」。

羅馬人能夠賄賂信使,讓信使傳達錯誤信息,來誤導其餘將軍的決策。

羅馬人能夠殺掉信使,直接破壞將軍們的通訊網絡。

因此拜占庭容錯有4個突出的缺陷,致使不完美的共識機制。

委託拜占庭容錯如何改變這種局面?

NEO爲咱們展現了拜占庭容錯問題的一個更好的解決方式。咱們來看看令NEO自豪的dBFT。dBFT主要用如下兩種方式解決現有問題——更好的擴展性,以及更強的性能。

代言人和代理者

咱們用另一個例子說明dBFT。假設拜占庭軍隊中有一個競選出的領導者,而不是官僚作派的將軍。這個被選出的領導者將扮演軍隊品牌的代理者。

你可能認爲將軍們可能被這些民選出的代理者所替代。甚至軍隊的其餘成員能夠反對這些代理者,而後再從新選舉。官僚作派的將軍有劣勢,以及沒有將軍可以賄賂整個隊伍,所以羅馬人沒法直接賄賂將軍來實現他們的目的。

在dBFT中,被選出來的代理者能夠追蹤每個節點的決策。一個去中心化帳本能夠標記全部節點的全部決策。

節點同時能夠選出代言人來向代理者表達他們的共識和統一的想法。爲了經過一項新政策,代言人能夠向代理者傳達節點的訴求,而且得到至少2/3的代理者贊成。不然,這項提案將不被經過。

若是一項提案沒有得到2/3代理者的支持, 將被拒絕,同時一項新提案將被提出,直到達成共識。這個過程保證了整個軍隊不受到叛變將軍以及被賄賂將軍的破壞。

不誠實的代言人

還有兩種狀況會損害dBFT共識機制的正直——不誠實的代言人,和不誠實的代理者。

dBFT共識機制也給出瞭解決方案。

正如前文所述,帳本將節點全部的決策都記錄保存在一個地方。代理者能夠驗證代言人的說法是否表明全部節點。若是帳本不接受代言人的提案,66%的代理者將拒絕代言人的提案,而且將代言人拉黑。

不誠實的代理者

第二種狀況是不誠實的代理者,被賄賂的代理者。在這裏,誠實的代理者和誠實的代言人將會努力得到2/3大多數,來消除不誠實代理者的影響。

因此,你可以看到dBFT是如何克服拜占庭將軍問題和BFT共識機制的缺陷的。固然,NEO值得得到全世界的讚譽,由於它們努力地創造出一個更加優秀的共識機制。

Directed Acyclic Graphs (DAG) 有向非循環圖

你們都認爲比特幣是區塊鏈1.0的表明,以太坊是區塊鏈2.0的表明。但咱們看到市場中有更加先進技術的出現。

有些人認爲DAG是區塊鏈3.0的表明,同時不少項目也爭作成爲區塊鏈3.0。例如,NXT將是這場DAG應用競爭中領先的項目,除了NXT,IOTA和 IoT鏈也是採用DAG的。

DAG是如何工做的?

你可能認爲DAG是一種共識機制,但實際上DAG是一種數據結構。當大多數區塊鏈被認爲是由包含數據的區塊組成的一條鏈,DAG是數據拓撲排序的無縫隙圖,能夠便利地處理數據如數據傳輸、數據路由、數據壓縮。

工做量證實機制須要10分鐘生成新區塊。是的,POW就是行動極其緩慢的人。DAG採用側鏈而不是僅僅在單鏈上工做。側鏈容許不一樣的交易獨立在多條鏈上發生。這減小了創造和驗證區塊的時間。實際上,它減小了對區塊的須要。挖礦須要消耗大量的時間和能源。

這裏,全部的交易都是被安排羅列到必定序列中,系統是非循環的,意味着找到父節點的概率爲0,由於這是呈樹狀的節點,而不是呈迴路的節點。DAG給世界展現了沒有區塊的區塊鏈的可能。

DAG的基本概念

沒有雙花

傳統的區塊鏈一次性挖礦一個區塊。存在這種可能性:多於一個礦工去驗證節點。這個將會帶來雙花的可能性。甚至這種情形會致使軟或者硬分叉。DAG基於以前轉帳的數量,驗證一個特殊的交易。這將會使區塊鏈系統更加安全和更具魯棒性。

更小的寬度

在其餘共識機制下,交易節點是被加入整個網絡中的,這致使系統變得很是龐大。而DAG將新交易與以往的交易圖鏈接起來,這使得整個網絡能夠更加直接間接地驗證某項交易。

更快以及更智能

因爲DAG具備無區塊的特性,它能夠更快地處理交易。實際上,它讓POW和POS的處理速度看起來像祖輩同樣緩慢。

更加支持小額交易

不是每筆交易都會進行數百萬美圓的轉帳的,實際上,小額支付更爲常見。可是比特幣和以太坊的轉帳手續費看起來對小額支付轉帳並不友好。另外,由於很是低的交易費,讓DAG完美地適應小額交易。Chapter-7:其餘共識機制

Proof-of-Activity 活動量證實

當人們爭論是POW仍是POS更好的時候,萊特幣的發明人和另外三位從業者則在嘗試更爲聰明的想法。他們提出一個簡單的問題:爲何不將POW和POS放在一起,讓他們相互競爭呢?

所以,這個吸引人的混合體誕生了——活動量證實。它結合了兩大最好的特性,可以更安全地面對攻擊,同時也不是一個消耗大量資源的系統。

活動量證實是如何工做的?

在POA區塊鏈共識協議中,挖礦部分就是像POW同樣開始,礦工解決一個難題就可以得到獎勵。POA跟POW最大的不一樣?在POW中,礦工會在一項完整交易後進行挖礦。

而在POA中,礦工只是對區塊模板進行挖礦。區塊模板包括兩項內容:頂端的信息,以及礦工的獎勵地址。

一旦礦工開始對區塊模板進行挖礦,系統就轉向POS。區塊中的頂端信息將隨機發送給一個利益相關者,而後他們將驗證這些預挖的區塊。越多堆棧(stack)被驗證者獲取,他們成爲區塊的可能性就會增長。通過驗證,這個區塊進入區塊鏈。

這就是POA如何運用最優秀的兩個共識機制來驗證區塊以及往鏈上添加區塊。同時,系統將用必定量的手續費對礦工和驗證者進行獎勵。所以系統可以對抗「公有地悲劇」,以及爲區塊鏈驗證創造一個更好的解決方法。

POA的影響

區塊鏈面臨最大的威脅之一是51%攻擊。POA將51%攻擊的可能性降到幾乎爲0。它使得不管礦工仍是驗證者都沒法成爲大多數,從而往網絡中增長區塊須要雙方平等的努力。

儘管有批評說POA存在一些缺陷,第一是挖礦致使的大量能源消耗,第二是POA沒有辦法解決驗證者雙重簽名問題。這兩大問題嚴重地限制POA的使用。

有兩個採用POA的熱門區塊鏈項目——Decred和Espers。可是他們二者有不少不一樣,實際上,Decred被認爲要比Espers運行得更加成功。

Proof-of-Importance 重要性證實

POI最有表明性的項目是NEM,POI是POS的延伸。同時,NEM還採用一個新機制——捕獲(harvesting)或等待行權(vesting)。

捕獲機制決定一個節點是否被加入區塊鏈中,你在一個節點中捕獲越多,它被加入鏈的概率越大。捕獲機制的回報是,節點能夠在驗證者驗證後,得到交易手續費。你的帳戶須要有至少10,000XEM,纔有資格進行捕獲。

這解決了POS的主要問題,POS中,相比驗證只能得到不多回報,越富有的人得到的回報越多。例如,若是你擁有20%的加密貨幣,你能夠對網絡中20%的區塊進行挖礦。這將致使共識機制對富人更加有利。

POI重要的特徵

等待行權

這個共識機制最使人關注的特色是「等待行權」或「捕獲」。如前所述,首先你必須擁有至少10,000加密貨幣,纔有資格參與捕獲。你POI的得分將取決於你捕獲的數量,同時,共識機制會把你擁有加密貨幣的時間點加以考慮。

交易合做夥伴關係

在POI中,若是你與其餘NEM持幣者進行交易,將會得到回報。系統將認爲大家是合做夥伴關係,可是若是大家計劃僞造合做夥伴關係,系統將識別出。

得分系統

交易將影響你的POI得分,得分將基於30天內你進行的交易。交易越頻繁、交易累計金額越多,你在NEM網絡中的得分越多。

Proof-of-Capacity 容量證實

POC是POW的升級版,最重要的特色是「標記(plotting)」。在你開始挖礦前,你能夠貢獻你的算力或者硬盤存儲資源。

這使得整個系統比POW更加快速,POC僅需在數分鐘內生成新區塊,而POW須要10分鐘。並且POC嘗試解決POW的哈希問題。你的計算機擁有越多解決方案或標記,你贏得挖礦競爭的概率越高。

POC是如何工做的?

爲了理解POC的本質,你須要抓住兩個概念——標記(plotting)和挖礦(mining)。

經過標記你計算機中的硬盤,你就創造了一個隨機數(nonce)。POC的隨機數與比特幣的隨機數有點不同,你須要將你的ID和數據作「哈希」(散列,或預映射),直到你接出這些隨機數。每個隨機數都附帶有8,192個哈希值,這些附帶數被稱爲「小鏟」,每個ID最多會有 4,095個「小鏟」。

另一個概念是硬盤「挖礦」,如前所述,你會一次性收到0到4,095個「小鏟」,而後將其存儲在你的硬盤當中。你將被設定解出隨機數的最短時限,這個時限就是創造區塊的時間。

若是你可以比其餘礦工更早地解出隨機數,你將得到一個區塊做爲獎勵。POC的一個典型項目就是Burst。

POC的優勢和缺點

硬盤挖礦比通常的POW挖礦要節省能源,你不須要像昂貴的比特幣挖礦同樣投入大量金錢。你家庭電腦中的硬盤就足以開啓POC挖礦。

但事實上,POC有一些致命的缺點。首先,這種機制會形成大量多餘的硬盤空間,系統會傾向那些擁有更大存儲量的礦工,這對去中心化是個威脅。黑客將開發系統,以及令系統感染上惡意挖礦軟件。

Proof-of-Burn 燃燒證實

這個共識序列是使人印象深入的。爲了保護POW加密貨幣,一部分的加密貨幣將被燒燬!當礦工將一部分加密貨幣發送到「食客地址(Eater Address)」的時候,這個過程就會發生。

「食客地址」不能以任何理由花費上面的加密貨幣,有一個帳本會持續追蹤被燒燬的加密貨幣,來保證它們確實沒有被花費。燒燬加密貨幣的用戶將會獲得必定報酬。

雖然燃燒是一種損失,可是損失是暫時的,由於這個機制將長期保護加密貨幣不受到黑客攻擊。並且,燃燒機制將增長其他加密貨幣的價值權益。

這種機制增長了礦工開挖下一個區塊的機會,同時增長他們將來的收益,因此,燃燒被認爲是挖礦特權。對手就是一個加密貨幣的共識案例——運用這個區塊鏈共識協議。

食客地址

爲了而後加密貨幣,用戶將其加密貨幣發送到食客地址。食客地址沒有任何私鑰,所以沒有人可以進入這個地址,去花費上面的加密貨幣。同時,這些食客地址是隨機生成的。

雖然這麼加密貨幣沒法追蹤或者「永遠消失」,但他們仍然被視爲是合適的供給,以及被標記成被燒燬。

POB算法的利與弊

燃燒這些加密貨幣的初衷是爲了增長穩定性。咱們知道長期玩家是傾向長期持有加密貨幣以得到收益的。

系統經過爲他們提供更加穩定的加密貨幣以及長期保障來支持這些長期投資者。同時,這也會加強去中心化以及創造一個更好的分佈式網絡。

可是不管從哪一個角度看,燃燒意味着浪費。即便某些食客地址有超過價值100,000美圓的比特幣,可是也沒法恢復,由於它們被燒燬了。

Proof-of-Weight 重量證實

重量證實是咱們最後介紹的共識機制,它是POS共識機制的一次重大升級。在POS中,你擁有的代幣越多,你將有機會發現更多,這致使了整個系統有失偏頗。

重量證實試圖解決POS的偏頗問題。Algorand, Filecoin, Chia都採用了重量證實。重量證實考慮其餘因素,而不是POS中擁有更多代幣。

這些因素被成爲「權重因素」,例如,Filecoin認爲擁有的IPFS數據的數量爲權重因素,其餘因素包括但不限於時空證實和複製證實。

這種系統核心的優點包括定製化和擴展性,雖然激勵性可能成爲這種共識機制的一大挑戰。 共識機制的比較


Chapter-8: 結論

是共識機制讓區塊鏈網絡變得全面,固然,沒有任何一種共識機制堪稱完美,可是技術的美妙之處就是不斷地改變以及完善。

若是沒有這些其餘的共識機制,咱們可能仍然依賴POW,無論你喜歡與否,POW必定程度上威脅了去中心化以及區塊鏈分佈式的特性。

區塊鏈技術的基礎就是去中心化,是對抗君主政治的反抗,是普羅大衆對腐化錯誤系統的終結。咱們強烈期待,更好的共識機制的出現,改變咱們的生活,創造更好的將來。

相關文章
相關標籤/搜索