當前位置:
首頁 > 最新 > 扒開區塊鏈美麗外表,三十種共識演算法,直抵背後的靈魂

扒開區塊鏈美麗外表,三十種共識演算法,直抵背後的靈魂

作者:Vaibhav Saini

編譯:蓋磊

共識演算法是所有區塊鏈 /DAG 的基礎,它們構成了區塊鏈 /DAG 平台中的最重要部分。本文中列出了 30 種主要的共識演算法,對演算法做了概要介紹,並評估了各自的優劣之處。

共識演算法是所有區塊鏈 /DAG 的基礎,它們構成了區塊鏈 /DAG 平台中的最重要部分。

如果沒有共識演算法,我們得到只是一個不可寫的啞(dummy)資料庫。

我將在本文中儘可能列出所有主要的共識演算法,評估各自的優劣之處。如果讀者發現有所遺漏,或是存在錯誤,希望能通過評論指出。此外,我個人也在逐步深入研究共識演算法及其對經濟的影響,為此本文也將做定期的更新。

另:本文假定讀者理解共識演算法及其在區塊鏈中的重要性。

下面列出 30 種共識演算法。

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

優點:

自 2009 年以來得到了廣泛測試,目前依然得到廣泛的使用。

不足:

速度慢。

耗能巨大,對環境不好。

易受「規模經濟」(economies of scale)的影響。

使用者:Bitcoin、Ethereum、Litecoin、Dogecoin 等。

類型:有競爭共識(Competitive consensus)。

解釋:PoW 是是首個共識演算法。它是由中本聰在他的論文中提出的,用於建立分散式無信任共識並識別「雙重支付」(double spend)問題。PoW 並非一個新理念,但是中本聰將 Pow 與加密簽名、Merkle 鏈和 P2P 網路等已有理念結合,形成一種可用的分散式共識系統。加密貨幣是這樣系統的首個基礎和應用,因而獨具創新性。

在 PoW 的工作方式中,區塊鏈參與者(稱為「礦工」)要在區塊鏈中添加一塊交易,必須解決某種「複雜但是無用」的計算問題。

本質上,這種做法可確保礦工花費了一些金錢或資源(礦機)完成工作,這表示了它們將不會損害區塊鏈系統,因為對系統的損害也將會導致投資的損失,進而損害他們自身。

為保證運行區塊時間不變,問題的複雜性會發生變化。有時,會存在多名礦工同時解決了問題。在這種情況下,每位礦工從中選取一個區塊鏈,並以選取最長鏈者為獲勝者。因此,如果假定大多數礦工工作在同一個鏈上,那麼成長最快的鏈將成為最長和最值得信任的鏈。這樣,只要由礦工提交的工作有超過一半是值得信任的,那麼 Bitcoin 就是安全的。

2. 權益證明(PoS,Proof of Stake)

優點:

節能。

攻擊者代價更大。

不易受「規模經濟」的影響。

不足:

「無利害關係「(Nothing at stake)」攻擊問題。

使用者:Ethereum(即將推出)、Peercoin、Nxt。

類型:有競爭共識。

解釋:PoS 是作為 Pow 的替代技術提出的,意在解決 PoW 的一些內在問題。PoS 沒有使用挖礦方法,而是用戶必須具有系統中的一些權益(幣)。因此,如果用戶擁有 10% 的權益(代幣),那麼該用戶挖掘下一個區塊的可能性就是 10%。

挖礦為解決計算上的挑戰,需要運行各種加密計算,這需要耗費大量的算力。算力將轉變為 PoW 所需的大量電能。據估計在 2015 年時,一個 Bitcoin 交易所需的電力,可達 1.57 個美國家庭一日所需的電力。PoS 的提出是為了節約電力耗費。

在 PoS 中,一個美元就是一個美元。例如,假定有一萬名每位每分鐘花費 1 美元(一年 8760 萬美元)的礦工,要比一位具有每分鐘花費一萬美元挖掘礦池能力的礦工擁有更少的哈希能力(Hashing Power)。但是在 PoS 中不支持一次用光所有算力,一美元就是一美元。因此 PoS 不易受「規模經濟」的影響。

此外,攻擊 PoS 系統也要比攻擊 PoW 系統的代價更大。引用 Vlad Zamfir 的說法:

在 PoS 中,重複 51% 攻擊的代價,可類比為每額外運行一輪,都會「燒毀你的 ASIC 農場」。

這意味著,每次攻擊 PoS 系統,攻擊者都會失去自己的權益。而在 PoW 中,攻擊者不會丟失挖礦設備,或是代幣。對 PoW 系統的攻擊只會使攻擊本身難以執行。

但是 PoS 會在「無厲害關係」上出問題。這種對多個區塊歷史(forks)投票的方式不會讓區塊生成器有任何損失,進而阻礙了達成共識。

在 PoS 中,你可以在區塊鏈的雙方押注資產(「無厲害關係」問題)。而在 PoW 中,你不能從鏈的兩個方向同時挖礦,因為這難以實現。

不同於 PoW 系統(用戶為擴展鏈必須做大量的計算),PoS 在多個鏈上工作的代價很小。有一些項目試圖通過多種方式解決這個問題(參見「擴展閱讀」)。例如,一個解決方案就是上文所介紹的,對不好的驗證者做懲罰。

3. 延遲工作量證明(dPoW,Delayed Proof-of-Work)

優點:

節能。

安全性增加。

可以通過非直接提供 Bitcoin(或是其它任何安全鏈),添加價值到其它區塊鏈,無需付出 Bitcoin(或是其它任何安全鏈)交易的代價。

不足:

只有使用 PoW 或 PoS 的區塊鏈,才能採用這種共識演算法。

在「公證員激活」(Notaries Active)模式下,必須校準不同節點(公證員或正常節點)的哈希率,否則哈希率間的差異會爆炸(下文將給出詳細解釋)。

採用者:Komodo

類型:協同型共識(Collaborative consensus)

解釋:dPoW 是一種混合共識方法,允許一個區塊鏈利用第二個區塊鏈的哈希算力(Hashing Power)所提供的安全。該機制是通過一組公證員節點(Notary Node)實現的。公證員節點實現將第一個區塊鏈的數據添加到第二個區塊鏈中。進而,第二個區塊鏈請求在兩個區塊鏈間達成妥協,弱化第一個區塊鏈的安全。Komodo 是首個使用該共識方法的區塊鏈,它就是附加於 Bitcoin 區塊鏈之上的。

使用 dPoW 的區塊鏈也可以使用 PoW 或 PoS 共識方法工作,並可以附加在任何採用 PoW 的區塊鏈上。但對於由 dPoW 提供安全的區塊鏈,當前 Bitcoin 給出了最高安全層級的哈希率。下圖展示了主區塊鏈的單個記錄以及其所附著的 PoW 區塊鏈。

dPoW 系統中有兩種類型的節點:公證人節點和正常節點。64 個公證人節點是由 dPoW 區塊鏈的權益持有者(stakeholder)選舉產生的,它們可從 dPoW 區塊鏈向所附加的 PoW 區塊鏈添加經公證確認的塊。一旦添加了一個塊,該塊的哈希值將被添加到由 33 個公證人節點簽署的 Bitcoin 交易中,並創建一個哈希到 Bitcoin 區塊鏈的 dPow 塊記錄。該記錄已被網路中的大多數公證人節點公證。

為避免公證人節點間在挖礦上產生戰爭,進而降低網路的效率,Komodo 設計了一種採用輪詢機制的挖礦方法。該方法具有兩種運行模式。在「無公證人」(No Notary)模式下,支持所有網路節點參與挖礦,這類似於傳統 PoW 共識機制。而在「公證人激活」(Notaries Active)模式下,網路公證人使用一種顯著降低的網路難度率挖礦。「公證人激活」模式下,允許每位公證人使用其當前的難度挖掘一個區塊,而其它公證人節點必須採用 10 倍難度挖礦,所有正常節點使用公證人節點難度的 100 倍挖礦。

但這會導致一些問題。我在與 Komodo 創始人的一次談話中提及,這將導致公證人礦工和正常礦工間的哈希率存在很高的差異:

圖 本文作者與 Komodo 創始人間就不一致性問題進行交流的截圖

dPoW 系統在設計上支持區塊鏈在沒有公證人節點的情況下繼續運行。在這種情況下,dPoW 區塊鏈可以基於初始的共識方法繼續運行,但將不再具有所附著區塊鏈增添的安全。

所有使用 dPoW 的區塊鏈可增加安全,同時降低能耗。例如,Komodo 使用 Equihash 哈希演算法防止使用 ASIC 挖礦。其公證人節點依賴於一種輪詢挖礦方法,獎勵機制考慮了降低節點間競爭的可能性。這些節點將會引發過度耗能或算力。

此外通過非直接提供 Bitcoin 安全,Komodo 這類 dPoW 區塊鏈可以向其它區塊鏈添加價值,無需付出任何 Bitcoin 交易的代價。Komodo 此後附著到 Bitcoin,而第三個使用 dPoW 的區塊鏈可以將自身附著到 Komodo。使用這種方式,dPoW 區塊鏈不必直接附著到 Bitcoin 區塊鏈,就從 Bitcoin 的高哈希率中受益。

最後一點,公證人節點和正常節點分離的功能,確保了初始共識機制在公證人節點失敗時繼續運行。這種相互獨立性建立了一種獎勵機制,使得其它網路無需依賴於 Bitcoin 網路的直接功能,即可支持 Bitcoin 網路的繼續維護。

4. 授權 PoS(DPoS,Delegated Proof-of-Stake)

優點:

節能。

快速。高流量博客網站 Steemit 就使用了它。EOS 的塊時間是 0.5 秒。

不足:

略為中心化。

擁有高權益的參與者可投票使自己成為一名驗證者。這是近期已在 EOS 中出現的問題。

採用者:BitShares、Steemit、EOS、Lisk、Ark。

類型:協同型共識

解釋:在 DPoS 系統中,權益持有者可以選舉領導者(或稱為見證人,Witness)。經權益持有者授權,這些領導者可進行投票。該機制使得 DPoS 要快於正常的 PoS。

例如,EOS 中選舉出 21 位見證人,並且有一堆節點(潛在的見證人)作為候選者。一旦見證人節點死亡或是做出了惡意行為,新節點就會立刻替代見證人節點。見證人會因為生成區塊而獲得一筆支付費用。該費用是由權益持有者設立的 。

通常,所有節點採用輪詢方式,一次生成一個區塊。該機制防止一個節點發布連續的塊,進而執行「雙重支付」攻擊。如果一個見證人在分配給他的時間槽中未生成區塊,那麼該時間槽就被跳過,並由下一位見證人生成下一個區塊。如果見證人持續丟失他的區塊,或是發布了錯誤的交易,那麼權益持有者將投票決定其退出,用更好的見證人替換他。

在 DPoS 中,礦工可以合作生成塊,而不是像在 PoW 和 PoS 中那樣競爭生成。通過區塊生成的部分中心化,DPoS 的運行可以比其它共識演算法呈數量級快。EOS(使用了 DPoS)是首個實現 0.5 秒生成塊的區塊鏈!

這非常快!

5. 權威證明(PoA,Proof-of-Authority)

優點:

節能。

快速。

不足:

略為中心化。雖然可用於公有區塊鏈,但是通常用於私有區塊鏈和許可區塊鏈。

使用者:POA.Network、Ethereum Kovan testnet、VeChain。

類型:協同型共識。

解釋:基於 PoA 的網路、事務和區塊,是由一些經認可的賬戶認證的,這些被認可的賬戶稱為「驗證者」(Validator)。驗證者運行的軟體,支持驗證者將交易(transaction)置於區塊中。該過程是自動的,無需驗證者持續監控計算機,但需要維護計算機(權威節點)不妥協(uncompromised)。

驗證者必須滿足以下三個條件:

其身份必須在鏈上得到正式驗證,信息可在公有可用域中交叉驗證。

其資格必須難以獲得,這樣所得到的驗證塊的權利才彌足珍貴(例如,潛在的驗證者需要獲得公證書)。

建立權威的檢查和程序必須完全統一。

使用 PoA,每個個體都具有變成驗證者的權利,因此存在一旦獲取就保持驗證者位置的動機。通過對身份附加一個聲譽,可以鼓勵驗證者去維護交易的過程。因為驗證者並不希望讓自己獲得負面聲譽,這會使其失去來之不易的驗證者地位。

6. 權重證明(PoWeight,Proof-of-Weight)

優點:

節能。

高度可定製和可擴展

不足:

可能難以實現激勵。

採用者:Algorand。

類型:有競爭共識。

解釋:權重證明(PoWeight)是一類很寬泛的共識演算法,它基於 Algorand 共識模型。其基本理念是在 PoS 中,用戶所擁有的網路中令牌的百分比,表示了該用戶「發現」下一個區塊的概率。PoWeight 系統中還使用了其它一些相對加權值,實現包括聲望證明(PoR,Proof of Reputation)和空間證明(Proof of Space)。

7. 聲譽證明(PoR,Proof of Reputation)

GIF

優點:

非常適用於私有區塊鏈和許可區塊鏈。

不足:

只能用於私有區塊鏈和許可區塊鏈。

採用者:GoChain。

類型:協同型共識。

解釋:PoR 類似於 PoA。GoChain 文檔中給出了如下描述:

PoR 共識模型依賴參與者在保持網路安全中的聲譽。參與者(區塊簽名者)必須具有足夠重要的聲譽。一旦他們嘗試欺騙系統,那麼他們將要面對嚴重的財政上的和自己名聲上的後果。這是一個相對的概念,如果他們被抓到試圖欺騙,那麼幾乎所有的業務將會受到嚴重的影響。規模越大的企業,通常將會失去更多。這樣,相比使用更少的企業(即更小規模的商業),規模更大的企業更易於被選定。

一旦一個企業證明了自己的聲譽,並通過了驗證,那麼他們必須經投票參與到權威節點網路中。這時,PoR 的操作與 PoA 網路一樣,即只有權威節點可以簽名並驗證區塊。

在「擴展閱讀」中提供了更多詳細信息。

8. 所用時間證明(PoET,Proof of Elapsed Time)

優點:

參與代價低。更多人可輕易加入,進而達到去中心化。

對於所有參與者而言,更易於驗證領導者是通過合法選舉產生的。

控制領導者選舉過程的代價,是與從中獲得的價值成正比的。

不足:

儘管 PoET 的代價低,但是必須要使用特定的硬體。因此不會被大規模採納。

不適用於公有區塊鏈。

採用者:HyperLedger Sawtooth

類型:有競爭共識

解釋:PoET 共識機制演算法通常用於許可區塊鏈網路,它可決定網路中獲得區塊者的挖礦權利。許可區塊鏈網路需要任何預期參與者在加入前驗證身份。根據公平彩票系統的原則,每個節點具有同等的可能成為勝出者。PoET 機制賦予大量可能的網路參與者以平等勝出的機會。

PoET 的工作機制如下:網路中的每位參與節點都必須等待一個隨機選取的時期,首個完成設定等待時間的節點將獲得一個新區塊。區塊鏈網路中的每個節點會生成一個隨機的等待時間,並休眠一個設定的時間。最先醒來的節點,即具有最短等待時間的節點,喚醒並向區塊鏈提交一個新區塊,然後廣播必要的信息到整個對等網路中。同一過程將會重複,以發現下一個區塊。

在 PoET 網路共識機制中,需要確保兩個重要因素。第一,參與節點在本質上會自然地選取一個隨機的時間,而非某一個參與者為勝出而刻意選取了較短的時間。第二,勝出者的確完成了等待時間。

PoET 理念是由著名的晶元製造巨頭 Intel 於 2016 年早期提出的。Intel 為解決「隨機領導者選舉」的計算問題,實現了一個可用的高科技工具。

這種內在機制允許應用在受保護的環境中執行受信任的代碼,它確保了上面提出的兩個要求得到滿足,即隨機選擇所有參與節點的等待時間,以及勝出參與者真正完成了等待時間。

這種在安全環境中運行可信代碼的機制也同時考慮到了其它一些網路的需求。它確保了受信代碼的確運行在安全環境中,並不可被其它外部參與者更改。它也確保了結果可被外部參與者和實體驗證,進而提高了網路共識的透明度。

PoET 通過控制代價實現了共識過程,該代價依然是與從過程中獲得的價值成正比。這是保證加密貨幣經濟持續繁榮的一個關鍵需求。

##9. 容量證明(PoC,Proof of Capacity)

也稱為空間證明(PoSpace,Proof of Space)

優點:

它類似於 PoW,只是使用空間替代了計算。因此更加環境友好。

可用於惡意軟體檢測。通過確定處理器的 L1 緩存是否為空(例如,具有足夠空間在沒有緩存未命中的情況下計算 PoSpace 過程),或是包含一個拒絕被逐出(evicted)的常式。

可用於反垃圾郵件措施,以及防範拒絕服務(DoS)攻擊。

不足:

激勵機制可能存在問題。

使用者: Burstcoin、Chia、SpaceMint。

類型:協同型共識。

解釋:PoSpace,也稱為 PoC,通過分配一定數量的內存或磁碟空間用於解決服務提供者所提供挑戰的方式,顯示了某個人對某個服務(例如發送郵件)具有合法的興趣。該理念是由 Dziembowski 等在 2015 年形式化定義的。雖然 Ateniese 等人的論文名稱也是「Proof-of-space」,但它事實上一種採用 MHF(Memory Hard Function,一種計算代價取決內存的哈希演算法)的 PoW 協議。

PoSpace 非常類似於 PoW,只是使用存儲替代了 Pow 中的計算。PoSpace 與 MHF 和可回收性證明(PoR,Proof of Retrievability)有關,但也在很大程度上存在著差異。

PoSpace 是由證明者 (Prover) 發送給驗證者 (Verifier) 的一小塊數據,該數據確認了證明者已經保留了一定量的空間。出於實用性上的考慮,驗證過程需要盡量高效,即消耗儘可能少的空間和時間。出於公平性上的考慮,如果驗證者沒有保留所聲明數量的空間,那麼它應該難以通過驗證。PoSpace 的一種實現方式是通過使用一個難以實現 Pebbling 的圖。驗證者請求證明者構建對一個「非 Pebbling 圖」標記。證明者提交標記,進而驗證者請求證明者在提交中開放多個隨機位置。

由於存儲的通用本質,以及存儲所需的更低耗能,PoSpace 被認為是一種更公平、更綠色的替換方法。

10. 歷史證明(PoHistory,Proof of History)

採用者:Solana

解釋:其基本理念是不相信交易中的時間戳,而是證明交易在某個事件之前或之後的某個時刻發生。

如果我們對某期《紐約時報》的封面拍了張照片,那麼我們就創建了一個證明,即我們的拍照時間是在該報紙發行之後,或許也可能是我們有某種途徑影響了紐約時報的正常發行。我們可以使用 PoHistory 創建一個歷史記錄,證明一個事件是發生在特定時間之後的。

PoHistory 是一種高頻可驗證延遲函數(VDF,Verifiable Delay Function)。VDF 求值需要完成特定數量的順序步驟,然後生成一個唯一的輸出。該輸出可被高效地和公開地驗證。

VDF 的一個特定實現使用了持續運行於其上的順序抗預映射哈希(Pre-image Resistant Hash),其中前一次循環生成的輸出將用於下一次循環的輸入。計數和當前輸出形成周期性記錄。

如果使用了 SHA256 哈希函數,那麼不使用 2128 核的暴力攻擊,該過程是不可能並行化的。

因此我們可以確認,每個計數器在生成過程中都的確經歷了一定的時間。進而,每個計數器記錄的順序與實時情況是一致的。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 區塊鏈前哨 的精彩文章:

量子計算:它是區塊鏈的終結嗎?
幹掉區塊鏈的量子計算要來了,密碼學應該如何升級?

TAG:區塊鏈前哨 |