区块链中的共识机制以及共识算法
什么是共識
共識,從字面上來看,是在某方面達成一致。打個比方,一個部門最近來了幾位新同事,部門主管為了歡迎新同事的加入,以能讓新同事融入到新環境,提議下班后聚個餐,對于聚餐了,大伙對此舉雙手贊成,畢竟能蹭個免費餐的事并不是每月都有的,這時便可以說,大家對下班后聚餐迎新達成了一致認同。
什么是共識機制
共識機制是一整套由協議、激勵和想法構成的體系,使得整個網絡的節點能夠就區塊鏈狀態達成一致。
共識機制類型
我們知道,區塊鏈是一個分布式的去中心化網絡,它提供了不可更改性、隱私性、安全性和透明度。沒有中央機構存在來驗證和核實交易,但區塊鏈中的每一筆交易都被認為是完全安全和核實的。這是可能的,因為共識協議的存在,這是任何區塊鏈網絡的核心部分。共識算法是一個程序,通過這個程序,區塊鏈網絡的所有對等人就分布式賬本的當前狀態達成共同協議。通過這種方式,共識算法實現了區塊鏈網絡的可靠性,并在分布式計算環境中的未知對等體之間建立了信任。從本質上講,共識協議確保每一個添加到區塊鏈的新區塊都是區塊鏈中所有節點同意的唯一版本的真相。區塊鏈共識協議包括一些具體的目標,如達成協議、協作、合作、每個節點的平等權利,以及每個節點在共識過程中的強制性參與。因此,共識算法的目的是找到一個共同的協議,對整個網絡來說是一個勝利?,F在,我們將討論各種共識算法以及它們是如何工作的。
1、基于工作證明(Proof of Work PoW)
工作證明是用來選擇下一個區塊生成的礦工。比特幣使用這種PoW共識算法。這種算法的中心思想是解決一個復雜的數學難題,并輕松地給出一個解決方案。這個數學謎題需要大量的計算能力,因此,盡快解決這個謎題的節點就可以開采下一個區塊。
工作證明共識是目前流通的大多數加密貨幣的首選機制。該算法用于驗證交易并在區塊鏈中創建一個新的區塊。工作證明(PoW)的想法最早由Cynthia Dwork和Moni Naor于1993年發表,后來由中本聰在2008年的比特幣論文中應用。工作證明 "一詞是由Markus Jakobsson和Ari Juels在1999年的出版物中首次使用。
以太坊(初期)、萊特幣和比特幣等加密貨幣目前都在使用PoW。
共識機制的目的是使所有的節點達成一致,也就是在一個節點不信任對方的環境中,相互信任。
新區塊中的所有交易被驗證,然后新區塊被添加到區塊鏈上。
該區塊將被添加到具有最長區塊高度的鏈上(。
礦工(網絡上的特殊計算機)進行計算工作,解決一個復雜的數學問題,將區塊添加到網絡上,因此被稱為工作證明。
隨著時間的推移,這個數學問題變得更加復雜。
PoW的特點
主要有兩個特點促成了這個共識協議的廣泛流行,它們是。
很難找到一個數學問題的解決方案。
驗證該解決方案的正確性是很容易的。
PoW是如何工作的?
PoW共識算法涉及通過采礦過程驗證交易。
挖礦
工作證明(Proof of Work)共識算法涉及解決一個具有計算挑戰性的難題,以便在比特幣區塊鏈中創建新的區塊。這個過程被稱為 “挖礦”,而網絡中從事挖礦的節點被稱為 “礦工”。
挖礦交易的激勵在于經濟回報,競爭的礦工會得到6.25個比特幣和小額交易費的獎勵。
這個獎勵會隨著時間的推移而減少其當前價值的一半。
挖礦中的能源和時間消耗
驗證要添加的區塊中的交易,將這些交易按時間順序組織到區塊中,并向整個網絡宣布新開采的區塊,這個過程不需要花費太多的能量和時間。
消耗能量的部分是解決 “硬數學問題”,將新區塊與有效區塊鏈中的最后一個區塊聯系起來。
當礦工最終找到正確的解決方案時,節點會同時向整個網絡廣播,獲得PoW協議提供的加密貨幣獎(獎勵)。
挖礦獎勵
目前,在比特幣網絡中開采一個區塊會給獲勝的礦工6.25個比特幣。
贏得的比特幣的數量每四年減半。所以,下一次比特幣數量的減少是在2024年左右(以目前的速度和增長)。
隨著更多礦工的出現,挖掘新區塊的時間也不可避免地變短。
這意味著新區塊的發現速度會更快。為了持續地每10分鐘找到一個區塊(這是比特幣開發者認為在達到2100萬的最大數量(以目前的速度預計在2140年左右)之前,新幣的穩定和遞減所需的時間),比特幣網絡會定期改變開采新區塊的難度水平。
比特幣的PoW系統
比特幣使用Hashcash工作證明系統作為采礦基礎。這個 "硬數學問題 "可以用一種抽象的方式寫出來,就像下面這樣。
給定數據A,找到一個數字x,使x的哈希值附加到A的結果是一個小于B的數字。
礦工們將一組交易捆綁成一個區塊,并試圖進行開采。為了挖礦,必須解決一個艱難的數學問題。
這個問題被稱為工作證明問題,必須解決這個問題,以表明礦工在找出問題的解決方案方面做了一些工作,因此,開采的區塊必須是有效的。
該問題的答案需要比區塊的哈希值低,才能被接受,這被稱為 “目標哈希值”。
目標哈希值是一個數字,哈希值區塊的頭必須等于或小于一個新的區塊,連同獎勵,將被授予礦工。
目標值越低,生成一個區塊就越困難。
礦工繼續測試不同的唯一值(稱為nonce(s)),直到產生一個合適的值。
成功解決該問題的礦工將獲得比特幣獎勵,并通過廣播將該區塊添加到區塊鏈中。
注意:目標哈希值每2016個區塊調整一次,或者大約每2周調整一次。所有礦工立即停止在上述區塊上的工作,開始挖掘下一個區塊。
PoW中使用的常見加密協議:最廣泛使用的工作證明共識是基于SHA-256,作為比特幣的一部分被引入。其他包括Scrypt、SHA-3、scrypt-jane、scrypt-n等。
工作證明的挑戰
工作證明的共識機制有以下一些問題。
51%的風險。如果一個控制實體在網絡中擁有51%或超過51%的節點,該實體可以通過獲得網絡的大多數來破壞區塊鏈。
耗費時間。礦工必須檢查許多nonce值,以找到必須解決的謎題的正確解決方案來挖掘區塊,這是一個耗時的過程。
資源消耗。礦工為了找到難解的數學謎題,要消耗大量的計算能力。這導致了寶貴資源(金錢、能源、空間、硬件)的浪費。預計到2018年底,全球0.3%的電力將用于驗證交易。
不是瞬時交易。交易確認大約需要10-60分鐘。因此,它不是瞬時交易;因為需要一些時間來挖掘交易并將其添加到區塊鏈上,從而承諾交易。
2、基于權益證明(Proof of Stake PoS )
這是最常見的PoW的替代品。以太坊已經從PoW轉為PoS共識。在這種共識算法中,驗證者不是投資于昂貴的硬件來解決一個復雜的難題,而是通過鎖定他們的一些硬幣作為賭注來投資于系統的硬幣。之后,所有驗證者將開始驗證區塊。驗證者如果發現他們認為可以添加到鏈上的區塊,就會通過下注來驗證區塊。根據區塊鏈中實際添加的區塊,所有驗證者都會得到與他們的賭注成比例的獎勵,他們的賭注也會相應增加。最后,根據他們在網絡中的經濟利益,選擇一個驗證者來生成新的區塊。因此,PoS通過激勵機制來鼓勵驗證者達成協議。
旨在實現區塊鏈的分布式共識。這種實現共識的方式最早是由量子力學在此提出的,后來Sunny King和他的同行寫了一篇關于它的論文。這導致了基于Proof-of-Stake(PoS)的Peercoin。
賭注是我們押在某個結果上的價值/金錢。這個過程被稱為賭注。
為什么是股權證明。
在股權證明之前,最流行的實現分布式共識的方式是通過工作證明(在比特幣中實施)。但是,工作證明是相當耗能的(開采比特幣時的電能)。所以,基于工作證明的共識機制,如果一個實體擁有更多的計算資源,就會增加其挖掘新區塊的機會。除了上面兩點,基于PoW的共識機制還有其他弱點,我們將在后面討論。在這種情況下,基于權益證明的機制有其優點。
什么是權益證明(Proof-of-Stake)。
從名稱上可以理解,網絡上的節點押上一定數量的加密貨幣,成為驗證新區塊的候選人,并從中獲得費用。然后,一個算法從候選人池中選擇將驗證新區塊的節點。這種選擇算法將賭注的數量(加密貨幣的數量)與其他因素(如基于硬幣年齡的選擇,隨機化過程)相結合,使選擇對網絡上的每個人都是公平的。
- 基于硬幣年齡的選擇。
該算法跟蹤每個驗證者候選節點保持驗證者的時間。節點的年齡越大,它成為新驗證者的機會就越大。 - 隨機區塊選擇。
以 "最低哈希值 "和 "最高賭注 "的組合來選擇驗證者。具有最佳加權組合的節點成為新的驗證者。
一個典型的基于PoS機制的工作流程。
- 1、節點進行交易。PoS算法將所有這些交易放在一個池中。
- 2、所有競爭成為下一個區塊的驗證者的節點都提出一個賭注。這個賭注與其他因素如 "幣齡 "或 "隨機區塊選擇 "相結合來選擇驗證者。
- 3、驗證者驗證所有的交易并發布區塊。他的股權仍然被鎖定,偽造的獎勵也還沒有被授予。這是為了讓網絡上的節點能夠 "確定 "新區塊。
- 4、如果區塊被 "確定 "了,驗證者就可以拿回股權和獎勵。如果算法是使用基于幣齡的機制來選擇驗證者,那么當前區塊的驗證者的幣齡將被重置為0,這使得他在下一次驗證者選舉中處于低優先級。
- 5、如果該區塊沒有被網絡上的其他節點驗證,該驗證者就會失去其股權,并被算法標記為 “壞”。這個過程又從第1步開始,偽造新的區塊。
特點
- 固定存在的幣。
始終在網絡中流通的硬幣數量是有限的。不存在帶來新幣的情況(如在比特幣和其他基于PoW的系統中通過挖礦)。請注意,網絡以有限數量的硬幣開始,或者在某些情況下 “最初以PoW開始,然后轉移到PoS”。這種以PoW啟動的方式是為了將硬幣/加密貨幣引入網絡。 - 交易費作為對挖礦者/鍛工的獎勵。
每筆交易都要收取一定的費用。這筆費用被積累起來,并給了偽造新區塊的實體。請注意,如果偽造的區塊被發現是欺詐性的,那么交易費就不會得到獎勵。此外,驗證者的股份也會丟失(這也被稱為削價)。 - 51%攻擊的不實用性。
要進行51%的攻擊,攻擊者必須擁有網絡中總加密貨幣的51%,這是相當昂貴的。這說明進行攻擊過于繁瑣、昂貴,而且利潤不高。在積累總的加密貨幣份額時,會出現一些問題,因為可能沒有那么多貨幣可以購買,而且購買越來越多的硬幣/價值會變得越來越貴。此外,驗證錯誤的交易將導致驗證者失去其股份,從而成為負面的獎勵。
PoS的優勢
- 能源效率高
由于所有的節點都沒有相互競爭將一個新的區塊附加到區塊鏈上,因此可以節省能源。此外,沒有問題需要解決(如工作證明系統),從而節省了能源。 - 去中心化
在像比特幣這樣的區塊鏈中(工作證明系統實現分布式共識),加入礦池的額外獎勵是指數級的,導致區塊鏈的中心化程度更高。在基于權益證明的系統(如Peercoin)的情況下,獎勵與權益金額成比例(線性)。因此,加入礦池絕對沒有額外的優勢;從而促進了去中心化。 - 安全性
試圖攻擊一個網絡的人必須擁有51%的賭注(相當昂貴)。這導致了一個安全的網絡。
PoS機制的弱點
- 大額賭注的驗證者
如果一組驗證者候選人結合在一起,并擁有總加密貨幣的巨大份額,他們將有更多機會成為驗證者。機會的增加導致選擇的增加,從而導致越來越多的偽造獎勵的賺取,導致擁有巨大的貨幣份額。這可能導致網絡隨著時間的推移變得集中化。 - 新技術
PoS仍然是比較新的。研究正在進行,以找到缺陷,修復它們,并使其在實際的貨幣交易網絡中可行。 - 無利害關系 "的問題
這個問題描述了在區塊鏈分裂(區塊鏈分叉)的情況下,支持多個區塊鏈的節點幾乎沒有任何不利因素。在最壞的情況下,每一次分叉都會導致多個區塊鏈和驗證器的工作,網絡中的節點永遠不會達成共識。
使用Proof-of-Stake的區塊鏈。
以太坊(Casper更新)
Peercoin
Nxt
3、實用拜占庭容錯(practical Byzantine Fault Tolerance pBFT)
Barbara Liskov和Miguel Castro在90年代末推出的一種共識算法。pBFT被設計為在異步(對何時收到請求的響應沒有上限)系統中有效工作。它針對低開銷時間進行了優化。它的目標是解決許多與已有的拜占庭容錯解決方案相關的問題。應用范圍包括分布式計算和區塊鏈。
什么是拜占庭容錯?
拜占庭容錯(BFT)是分布式網絡的特點,即使網絡中的一些節點沒有回應或回應的信息不正確,也能達成共識(對同一數值的協議)。BFT機制的目標是通過采用集體決策(正確的和有問題的節點)來防止系統故障,旨在減少有問題節點的影響。BFT源于拜占庭將軍問題。
拜占庭將軍問題
LESLIE LAMPORT、ROBERT SHOSTAK和MARSHALL PEASE于1982年在微軟研究院的一篇論文中對這個問題進行了恰當的解釋。
“想象一下,拜占庭軍隊的幾個師在敵人的城市外扎營,每個師由自己的將軍指揮。將軍們只能通過信使相互溝通。在觀察了敵人之后,他們必須決定一個共同的行動計劃。然而,有些將軍可能是叛徒,試圖阻止忠誠的將軍們達成協議。將軍們必須決定何時攻城,但他們需要有強大的大多數軍隊在同一時間進攻。將軍們必須有一個算法來保證:(a)所有忠誠的將軍都決定采用相同的行動計劃,(b)少數叛徒不能使忠誠的將軍們采用一個糟糕的計劃。忠誠的將軍們都會按照算法所說的去做,但叛徒們可以做任何他們想做的事情。無論叛徒做什么,算法必須保證條件(a)。忠誠的將軍們不僅應該達成協議,而且應該就一個合理的計劃達成協議?!?/p>
如果網絡中正確工作的節點就其數值達成一致,拜占庭容錯就可以實現??梢越o缺失的信息一個默認的投票值,也就是說,如果在一定的時間限制內沒有收到信息,我們可以認為來自某個節點的信息是 “有問題的”。此外,如果大多數節點的響應是正確的,我們也可以分配一個默認的響應。
Leslie Lamport證明,如果我們有3m+1個正確工作的處理器,如果最多只有m個處理器是有問題的,就可以達成共識(對同一狀態的協議),這意味著嚴格來說,超過三分之二的處理器總數應該是誠實的。
拜占庭式故障的類型。
有兩類故障被考慮。一種是故障停止(節點故障并停止運行),另一種是任意節點故障。下面給出了一些任意節點的故障。
- 未能返回一個結果
- 回復一個不正確的結果
- 回應一個故意誤導的結果
- 對系統的不同部分作出不同的結果反應
pbft的優點。
-
能源效率:
pBFT可以實現分布式共識,而無需進行復雜的數學計算(如PoW)。Zilliqa采用pBFT與PoW的復雜計算相結合,每100個區塊進行一輪計算。
-
交易的最終性:交易在最終完成并達成一致后,不需要多次確認(就像比特幣的PoW機制一樣,每個節點在將新區塊添加到區塊鏈之前都會單獨驗證所有的交易;確認可能需要10-60分鐘,取決于有多少實體確認新區塊)。
-
低獎勵差異:
網絡中的每個節點都參與響應客戶的請求,因此每個節點都可以得到激勵,導致幫助決策的節點獲得的獎勵差異較低。
pBFT如何工作?
pBFT試圖提供一種實用的拜占庭狀態機復制,即使在系統中存在惡意節點時也能正常工作。
在一個支持pBFT的分布式系統中的節點是按順序排列的,其中一個節點是主節點(或領導節點),其他節點被稱為次節點(或備份節點)。請注意,系統中任何有資格的節點都可以通過從次要節點過渡到主要節點而成為主要節點(通常在主要節點失敗的情況下)。我們的目標是讓所有誠實的節點利用多數規則幫助達成關于系統狀態的共識。
一個實用的拜占庭容錯系統可以在以下條件下運行:惡意節點的最大數量不能大于或等于系統中所有節點的1/3。隨著節點數量的增加,系統變得更加安全。
pBFT共識輪分為4個階段(參考下面的圖片)。
-
客戶端向主(領導)節點發送一個請求。
-
主節點(領導者)將請求廣播給所有的次節點(備份)。
-
節點(主節點和副節點)執行請求的服務,然后向客戶發送回復。
-
當客戶端收到來自網絡中不同節點的’m+1’個相同結果的回復時,該請求就被成功服務,其中m是允許的最大故障節點數。
主節點(領導者)在每個視圖(pBFT共識輪)中都會被改變,如果領先節點沒有向后備節點(次要節點)廣播請求,則可以通過視圖改變協議進行替換。如果需要,大多數誠實的節點可以對當前領先節點的合法性進行投票,并將其替換為下一個領先節點。
pBFT的局限性。
pBFT共識模型只有在分布式網絡中的節點數量較少時才能有效工作,因為通信開銷很大,網絡中每增加一個節點,通信開銷就會呈指數級增長。
-
Sybil攻擊:
pBFT機制很容易受到Sybil攻擊,即一個實體(一方)控制許多身份。隨著網絡中節點數量的增加,Sybil攻擊變得越來越難以實施。但由于pBFT機制也有可擴展性問題,pBFT機制與其他機制結合使用。
-
擴展性:
pBFT不能很好地擴展,因為它的通信(與所有其他節點在每一步)開銷很大。隨著網絡中節點數量的增加(增加為O(n^k),其中n是消息,k是節點的數量),響應請求的時間也會增加。
使用pBFT變體的平臺。
Zilliqa - 與PoW共識相結合的pBFT
Hyperledger Fabric - pBFT的許可版本
Tendermint - pBFT + DPoS(Delegated Proof-of-Stake)
4、燒毀證明(Proof of Burn PoB)
通過PoB,驗證者不需要投資昂貴的硬件設備,而是通過將硬幣發送到一個無法恢復的地址來 "燃燒 "硬幣。通過將硬幣投入到一個無法到達的地址,驗證者獲得了基于隨機選擇過程在系統上挖礦的特權。因此,在這里燒幣意味著驗證者有一個長期的承諾,以換取他們的短期損失。根據PoB的實現方式,礦工可以燃燒區塊鏈應用程序的原生貨幣或替代鏈的貨幣,如比特幣。他們燒的幣越多,他們被選中開采下一個區塊的機會就越大。雖然PoB是PoW的一個有趣的替代方案,但該協議仍然無謂地浪費了資源。而且還有人質疑,挖礦權只是流向那些愿意燒更多錢的人。
為什么需要燃燒證明?
在PoW共識算法中存在一些缺點,這使得研究人員致力于開發一種新的共識算法,即PoB。
第一個缺點是,PoW的功耗非常高。礦工通過升級POW模式下的賬本獲得獎勵。計算能力被用來解決一個數學問題以換取報酬。礦工為解決這個問題所花的錢越多,他們被允許開采區塊的機會就越大。
PoW需要非常高的資本投資。
PoB如何工作?
1、正如名字本身所暗示的,有一些東西應該被燒掉。在這里,我們談論的是虛擬貨幣,所以很明顯,在PoB中,虛擬貨幣被燒毀。礦工燒掉的貨幣越多,他們就越有能力創造區塊。
2、我們所說的燃燒并不完全是指燃燒。它意味著不使用該幣。如果把它送到不能使用的地方,就可以這樣做。因此,礦工將這些硬幣發送到這樣的地址,從那里它們不能被使用。它被發送到一個公共可驗證的地址,在那里它不能被訪問,因此不能被使用。
3、當硬幣被燒毀時,它的可用性就會下降,導致硬幣的潛在價值增加。
4、現在的問題是,為什么我們需要燒毀硬幣?對此的基本解釋是,通過銷毀貨幣,消費者通過放棄狹隘的利潤來換取長期的利潤,顯示出對貨幣的巨大承諾。
5、為了避免早期采用者獲得任何不當的好處,PoB設計了一種方法,允許定期燃燒加密貨幣,以保持采礦能力。任何時候開采一個新的區塊,燃燒幣的能量都會略有下降。
7、這是一個通貨緊縮的想法,即貨幣的數量隨著時間的推移而減少,增加不足,因此,貨幣持有者的價值。另一方面,隨著時間的推移,數量增長的硬幣,往往會失去價值。
PoB比PoS的優勢。在Pos區塊鏈中,市場的稀缺性不是永久性的。稀缺性只是在一定的時間內,即直到偽造者將他們的硬幣鎖定,這通常是通過鎖定它們來完成的。但是,如果離開的偽造者拿著這些幣在市場上出售,這些幣就會重新進入流通。而在PoB的情況下,錢幣被銷毀,因此稀缺性是永久性的。
PoB的優點。
與PoW相比,它所需要的能量非常少。
它通過燃燒硬幣時浪費無關緊要的資源來減少能源消耗。
它鼓勵長期參與一個項目,因為消費者通過放棄狹隘的利潤來換取長期的利潤,顯示了對貨幣的巨大承諾。
與所有其他共識相比,硬幣的分配更加公平。
抵押貸款的弊端。
它是有風險的,因為人們不知道他們是否會在未來獲得他們所燃燒的財富。
由于錢幣被燒毀,所以從技術上講,如果我們看到資源被浪費了。
它可能會受到富者愈富現象的影響。在這種情況下,那些富有的人通過擁有更多的硬幣而變得更加富有。
5、容量證明(Proof of Capacity PoC)
在容量證明共識中,驗證者應該投資他們的硬盤空間,而不是投資于昂貴的硬件或燃燒硬幣。驗證者擁有的硬盤空間越多,他們被選中開采下一個區塊并獲得區塊獎勵的機會就越大。
容量證明挖礦是一種非常新的挖礦方法,目前被一種加密貨幣Burstcoin采用。盡管如此,許多人認為容量證明是目前使用的挖礦技術的一個可行替代方案。它能夠通過使用硬盤空間進行挖礦。像這樣的策略提供了很多好處,這也是很多項目現在正在關注的事情。
容量證明的目的
PoW是現今最知名的挖礦方法之一。這需要礦工利用計算機資源來解決困難的數學哈希函數。在比特幣的案例中,利用了一種叫做SHA-256算法的著名散列方法。這些散列函數是單向函數,只有一個可能的解決方案。他們需要這種原始的計算能力來定位準確的函數輸入,以實現預期的函數輸出。散列函數將 "nonce "作為其輸入變量之一。礦工將循環計算nonce,直到找到合適的哈希值。這是粗暴的計算,需要大量的時間和精力來完成。
雖然PoW算法在比特幣還是一個相對較新的技術時運行良好,但網絡已經以指數級的速度增長。為了保持區塊時間的一致性,比特幣系統旨在增加采礦難度。因此,挖礦已經變得非常艱難,只有最強大的計算機,即ASIC,才能做到這一點。
為了解決哈希函數,他們也需要大量的計算能力。所有無法及時解決哈希函數的礦工所投入的能量將被浪費掉。
因此,較小的采礦作業對較大的節點所做的關鍵選擇的影響將大大降低。因此,迫切需要一種新的挖礦方法,它比PoW的能源密集度低,并允許充分的網絡分散。這就是容量證明的概念發揮作用的地方。
特點
容量證明共識是對著名的工作證明(Proof-of-Work)區塊鏈共識技術的改進。
即使在開始挖礦之前,也需要專門的處理能力和硬盤存儲。正因為如此,該系統比PoW要快。
容量證明只需要4分鐘就能產生一個區塊,但工作證明需要10分鐘。
它試圖解決PoW系統的散列問題。如果計算機上有更多的解決方案或情節可用,那么贏得挖礦沖突的機會就更大。
容量證明如何運作?
容量證明有兩個組成部分。首先,是硬盤上的繪圖,然后是實際的區塊挖掘
繪圖
創建繪圖文件可能需要幾天甚至幾周的時間,這取決于硬盤的大小。繪圖是用Shabal哈希值完成的。Burstcoin中使用的加密/哈希函數被稱為Shabal。Shabal是一種遲緩而厚重的加密貨幣。因此,它是像Burstcoin這樣的能力證明加密貨幣的優秀加密貨幣。這是由于預先計算的哈希值被儲存起來,同時仍能進行較小的實時驗證。Burst使用Shabal256,這是Shabal的一個256位變體。Shabal哈希值是預先計算的,并保存在硬盤上,因為它們很難計算。
首先,硬盤被繪制出來。通過哈希數據,包括礦工的賬戶,一遍又一遍地構建一個所有潛在的nonce值的列表。每個nonce是由8192個哈希值組成,編號從0到8191。所有的哈希值被耦合成 “勺子”,即兩個相鄰的哈希值的組。
挖礦
第二階段是實際開采,這需要由礦工計算出一個勺子的數量。例如,如果一個礦工開始挖礦并創建了40號鏟子,那么礦工就會去找nonce 1的40號鏟子,并利用該鏟子的數據來計算一個最后期限值。對于存儲在礦工硬盤上的每一個nonce,都會重復這個程序來計算最后期限。礦工在計算完所有的最后期限后,選擇最后期限最短的那個。在礦工被授權生產一個新的區塊之前,最后期限表示自上一個區塊產生以來已經過去的時間(秒)。如果沒有人在這個時間范圍內這樣做,礦工就可以制造一個區塊并索取區塊獎勵。例如,如果礦工A設定了40秒的最低期限,并且沒有其他礦工能在這個時間內偽造區塊,那么A將被保證有機會偽造下一個區塊并獲得報酬。
應用
Burstcoin是一種根據能力證明原則運作的加密貨幣。Burstcoin團隊計劃研究各種用例,包括從支付解決方案到智能合約、眾包和隨機消息等一切。Burstcoin是一個值得測試PoC可能性的舉措,因為它為消費者、公司、開發者和礦工提供了一個引人注目的想法。盡管現在使用能力證明的加密貨幣不多,但有幾個項目正在這個領域獲得牽引力。
能力證明,根據BXTB(這是一個雙區塊鏈,一個由BXTB公司支持的雙代幣平臺)在允許用戶挖掘BXTB治理代幣方面具有吸引力。
Permacoin將比特幣的PoW重新用于一個更普遍的目的,建立一個可靠的分布式存儲系統。PermaCoin的參與者必須另外保存一個巨大的文件塊,以便有資格參加領袖選舉。一個簽署文件塊的權威 "經銷商 "負責分發文件。
參與者在SpaceMint的共識機制中構建并承諾一個獨特的難得的卵石圖,該機制是基于一種非交互式的容量證明(稱為空間證明)的形式。
優勢
任何標準的硬盤都可以使用,所以與其他投資于專業設備的礦工相比,有一定的優勢,如用ASIC挖比特幣。
用硬盤挖礦比用ASIC挖礦節省了30倍的能源。
因為每個人都有一個硬盤,所以能力證明更加分散。我們甚至可以從安卓手機的硬盤上挖礦。
礦工不需要定期升級他們的設備。舊的硬盤和新的硬盤一樣能夠存儲數據。
挖礦完成后,人們可以擦拭硬盤,將其放回原來的用途。
也許這就是為什么比特幣世界的許多人把挖礦算法看作是去中心化、環保的新補救辦法。
劣勢
另一方面,容量證明挖礦也有一些缺點。
技術已經被少數開發者所接受。 除了挖幣之外,在硬盤上繪制的數據是無用的。這表明,有很多空間沒有被使用。 雖然產能證明挖礦減少了入門障礙,但消費者也可能購買更大的硬盤。沒有什么能阻止一個人獲得大得多的硬盤,并利用它們來挖掘大部分的錢。 如果挖礦變得流行,黑客有可能會試圖利用它。目前,挖礦的惡意軟件正在感染世界各地的許多電腦。PoW挖礦偶爾也會被檢測出是導致電腦速度變慢的原因之一。另一方面,能力證明使得確定你的多余硬件空間是否被用于非法原因的難度大大增加。最吸引人的挖礦方法之一是能力證明。它不僅重新思考了近年來的挖礦方式,而且也是許多人認為對環境有利的解決方案。它也適合最流行的加密貨幣靈丹妙藥:一個完全去中心化的環境。這仍然是一個新鮮的概念,還沒有看到廣泛的采用,像其他算法?,F在,像BXTB這樣的倡議正著眼于通過概念驗證創建的原生幣的現實世界應用,該行業正在進入一個新時代。將加密貨幣推向公眾是一項艱巨的任務,但如果每個人都能參與,而不必在額外的技術上花錢,情況可能會有所改善。能力證明是否能克服比特幣和以太坊等更成熟的區塊鏈正在經歷的一些擴展問題,還有待觀察。
6、逝去的時間證明(Proof of Elapsed Time PoET)
PoET是最公平的共識算法之一,它只使用公平的手段選擇下一個區塊。它被廣泛用于許可的區塊鏈網絡。在這種算法中,網絡上的每個驗證者都有公平的機會來創建他們自己的區塊。所有的節點都是通過等待隨機的時間,在區塊中加入他們等待的證明。創建的區塊被廣播到網絡上供其他人考慮。贏家是在證明部分擁有最少計時器值的驗證者。來自獲勝驗證者節點的區塊被添加到區塊鏈中。算法中還有一些額外的檢查,以阻止節點總是在選舉中獲勝,阻止節點產生最低的計時器值。
時間證明(PoET)是英特爾公司開發的一種共識算法,它使許可的區塊鏈網絡能夠決定誰創建下一個區塊。
PoET遵循一個抽簽系統,將獲勝的機會平均分配給網絡參與者,讓每個節點都有相同的機會。
PoET算法為區塊鏈網絡中的每個節點生成一個隨機的等待時間;每個節點必須在該時間段內睡眠。
等待時間最短的節點將首先醒來并贏得區塊,從而被允許向區塊鏈提交一個新區塊。
PoET工作流程類似于比特幣的工作證明(PoW),但由于它允許一個節點在指定的時間內睡眠并切換到其他任務,從而提高了網絡能源效率,所以消耗的電力更少。
PoET是如何工作的?
基于每個節點被選中的可能性相同的公平抽簽系統的原則,PoET機制將獲勝的機會分散到盡可能多的網絡參與者身上。
在PoET下,網絡中的每個參與節點都必須等待一個隨機選擇的時期;第一個完成指定等待時間的人贏得新區塊。區塊鏈網絡中的每個節點都會產生一個隨機的等待時間,并在這個指定的時間內睡覺。
最先醒來的那個–也就是等待時間最短的那個–會醒來并向區塊鏈提交一個新區塊,向整個對等網絡廣播必要的信息。然后重復同樣的過程來發現下一個區塊。
PoET與PoW有何不同?
從本質上講,該工作流程類似于比特幣的工作證明(PoW)算法所遵循的共識機制,但沒有其高耗能。它允許一個節點在指定時間內睡眠并切換到其他任務,從而提高網絡的效率。
時間證明并不像工作證明那樣促進去中心化和開放性,因為它需要向任何想加入網絡的人發放一個證書。
在安全環境中運行可信代碼的機制也照顧到了許多其他的網絡需求。它確保受信任的代碼在安全環境中運行,并且不能被任何參與者改變。它還確保結果可由參與者或其他經許可的實體驗證,從而提高網絡共識的透明度。
PoET控制了共識過程的成本,并使其保持靈活,從而保持與該過程產生的價值成正比,這是加密貨幣經濟繼續蓬勃發展的一個基本要求。
什么是Hyperledger Sawtooth?
Hyperledger Sawtooth是一個分布式賬本–類似于區塊鏈–設計用于供應鏈和物流等企業用途。它甚至可以用于庫存管理、會計或其他消耗時間和容易出錯的商業任務。
是否有時間證明幣?
PoET主要用于Hyperledger Sawtooth。截至2022年1月,還沒有一種加密貨幣使用PoET。
工作證明和過期時間證明的區別是什么?
PoW是一種競爭性工作機制,而PoET是一種隨機選擇機制。
投資加密貨幣和其他首次代幣發行(“ICO”)具有高度風險和投機性,本文不是Investopedia或作者對投資加密貨幣或其他ICO的建議。由于每個人的情況都是獨特的,在做出任何財務決定之前,應始終咨詢合格的專業人士。Investopedia對本文所含信息的準確性或及時性不作任何陳述或保證。
用100,000美元的虛擬現金進行無風險競爭
用我們免費的股票模擬器來測試您的交易技巧。與數以千計的Investopedia交易員競爭,并以交易方式達到頂峰 在你開始用自己的錢冒險之前,在虛擬環境中提交交易。練習交易策略,這樣當你準備進入真正的市場時,你已經有了你需要的練習。今天就試試我們的股票模擬器吧 >>
7、委托持股證明(Delegated Proof Of Stake DPoS)
是一種共識算法,它是持股證明基本概念的一個進步。委托持股證明(DPoS)共識算法是由BitShares、Steemit和EOS的創始人Daniel Larimer在2014年開發的。
在權益證明共識系統中,每個人都可以參與 "造幣 "過程,這意味著他們有機會選擇進一步驗證區塊的第二層節點,并因向區塊鏈添加區塊而獲得獎勵。DPos系統由一個選舉系統維護,用于選擇驗證區塊的節點。這些節點被稱為 "證人 "或 “區塊生產者”。
DPoS共識的運作方式
投票:
在DPoS共識中,用戶可以直接投票,也可以將自己的投票權交給其他實體代表他們投票。被選中的證人負責通過驗證交易來創建區塊。如果他們驗證并簽署了一個區塊中的所有交易,他們將獲得獎勵,這通常與那些投票給證人的人分享。如果一個證人未能在給定的時間內驗證所有的交易,區塊就會被錯過,所有的交易都沒有被驗證,也不會向該證人分配獎勵。獎勵被加到驗證該區塊的下一個證人的獎勵上。這樣的交易被下一個證人收集,這樣的區塊被稱為被盜。
投票與每個投票者的股權大小成正比。一個用戶不需要有很大的利益來進入最高層的證人。相反,擁有大額賭注的用戶的投票可以導致賭注相對較小的用戶被提升到最高層的證人。
證人:
最高層的證人數量有一定的上限,通常在21-101之間。這些證人負責驗證交易和創建區塊,并獲得相關費用。見證人可以阻止特定的交易被納入區塊,但他們不能改變任何交易的信息,這使他們類似于工作證明區塊鏈的礦工。投票是一個持續的過程,每一個處于最高層的見證者總是有可能被一個獲得更多票數的用戶取代,因此被認為是更值得信任的。隨著申請證人的人數增加,競爭也在增加,聲譽對每個證人保持競爭力變得至關重要。
證人通過威脅其收入損失、鎖定股權和聲譽分數來控制自己。見證人必須鎖定其股權的某些部分,如果他們有惡意行為或試圖攻擊區塊鏈,則會被扣押。
在有N個區塊生產者/見證者的DPoS區塊鏈中,一個回合遵循以下的循環順序。
N個區塊生產者從證人候選人庫中選出。 第k個區塊生產者簽署第k個區塊,直到k=N。 當一個區塊被(2/3+1)的區塊生產者投票通過時,該區塊就被最終確定。在有兩條鏈的情況下,遵循最長的鏈規則。添加的區塊不能被逆轉。代表:
DPoS系統中的用戶也會投票給監督區塊鏈治理的一組代表。他們不參與交易控制。代表們可以提議改變區塊的大小,或驗證區塊的證人應得到的回報金額。一旦代表們提出這些變化,區塊鏈的用戶就會投票決定是否采用這些變化。
區塊驗證器。
DPoS中的區塊驗證器指的是驗證由證人創建的區塊是否符合共識規則的完整節點。任何用戶都可以運行一個區塊驗證器并驗證網絡。成為區塊驗證者沒有任何激勵措施。
優勢:
DPoS區塊鏈有很好的保護作用,可以防止重復消費。
由于用戶/節點所需的賭注較少,因此DPoS更加民主和具有財務包容性。
DPoS提供了更多的去中心化,因為進入門檻低,更多的人參與到共識中。
DPoS不需要大量的電力來運行網絡,這使得它更具可持續性。
DPoS中的交易不依賴于運行網絡所需的計算能力,因此它更具有可擴展性。
DPoS將區塊生產者的選舉與區塊生產本身分開,這為更多的創造性模式打開了大門,以單獨解決這兩個問題。
DPoS方法為在區塊鏈應用中實施有趣的治理模式提供了基礎。在某種意義上,它形成了一種民主。
劣勢 :
網絡的有效運作和決策需要委托人充分了解情況并指定誠實的證人。
證人的數量有限會導致網絡的集中化。
DPoS區塊鏈很容易受到加權投票問題的影響。擁有較小利益的用戶可以在認為他們的投票無關緊要的情況下拒絕參與投票。
以下是一些DPoS區塊鏈的例子。
| EOS | 21 | |
| BitShares | 101 | |
| Steemit | 21 | |
| Lisk | 101 | |
| Ark | 51 |
8、權威證明(Proof of Authority PoA)
在區塊鏈平臺中,共識機制可分為無權限(如以太坊、比特幣)和有權限(如Hyperledger、Ethereum Private)。與任何人都可以成為節點的無權限區塊鏈不同,在有權限的區塊鏈中,所有節點都是預先選定的。這允許使用具有高可擴展性和帶寬的共識類型。這些共識類型之一是權威證明(PoA)共識,它提供了高性能和容錯。這個術語是由以太坊和Parity Technologies的聯合創始人Gavin Wood在2017年提出的。
PoA的工作
在PoA中,產生新區塊的權利被授予那些已經證明他們有權力這樣做的節點。這些節點被稱為 “驗證者”,他們運行的軟件允許他們將交易放入區塊。這個過程是自動化的,不需要驗證者不斷監控他們的計算機,但需要維護計算機不受影響。PoA適用于私人網絡和公共網絡,如POA網絡,其中信任是分散的。
PoA共識算法利用了身份的價值,這意味著區塊驗證者不是在賭幣,而是在賭自己的聲譽。PoA通過對所選身份的信任來保證。
PoA共識和常見攻擊。
1、分布式拒絕服務攻擊(DDos)
分布式拒絕服務(DDoS)攻擊是一種試圖通過用來自多個來源的流量使在線服務不可用。攻擊者向目標網絡節點發送大量的交易和區塊,試圖破壞其運行并使其不可用。
PoA機制使得防御這種攻擊成為可能,因為網絡節點是預先認證的,區塊生成的權利只能授予那些能夠承受DoS攻擊的節點。
2、51%的攻擊:
在PoA共識中,51%的攻擊要求攻擊者獲得對51%的網絡節點的控制。這與工作證明共識類型的51%攻擊不同,攻擊者需要獲得51%的網絡計算能力。在許可的區塊鏈網絡中,獲得節點的控制權比獲得計算能力要難得多。
在PoA中,個人獲得了成為驗證者的權利,所以有動力保留他們所獲得的地位。驗證者受到聲譽的激勵,這使他們能夠保持他們作為節點的權威。PoA只允許來自任何一個驗證者的非連續區塊批準,這意味著嚴重損害的風險集中在權威節點上。
達成PoA共識的條件。
1、PoA共識可能根據不同的實施方式而有所不同,但一般來說,它們是通過以下條件應用的。
2、驗證者需要確認他們的真實身份。
3、候選人必須愿意投入資金,并將其聲譽置于危險之中。嚴格的程序可以減少選擇有問題的驗證人的風險,并激勵對區塊鏈的長期承諾。
4、挑選驗證人的方法必須對所有候選人平等。
5、驗證者的身份必須得到驗證,以保持區塊鏈的完整性。應該有某種程序來選擇誠實的驗證者。
PoA共識的優勢:
只要51%的節點沒有惡意行為,就有很高的風險容忍度。
產生新區塊的時間間隔是可預測的。對于PoW和PoS共識,這個時間是不一樣的。
高交易率。
遠比工作證明等需要計算能力的算法更具可持續性。
局限性:
PoA不是去中心化的,只是為了讓中心化的系統更有效率。
PoA的驗證者對任何人都是可見的。知道驗證者的身份有可能導致第三方的操縱。
PoA共識的應用 :
PoA共識算法可以應用于各種場景,被認為是物流應用的最佳選擇,如供應鏈。
權限證明模型使公司能夠在利用區塊鏈技術的好處的同時保持他們的隱私。微軟Azure是正在實施PoA的另一個例子。Azure平臺為私人網絡提供解決方案,其系統不需要像以太坊上的以太’氣’那樣的原生貨幣,因為不需要挖礦。Azure的節點是預先選擇的。
9、零知識證明(Zero Knowledge Proof ZKP)
是一種加密方案,最初由麻省理工學院的研究人員Shafi Goldwasser、Silvio Micali和Charles Rackoff在1980年代提出。
零知識協議是概率評估,這意味著它們不能像簡單地揭示全部信息那樣肯定地證明某些東西。他們提供不可聯系的信息,這些信息可以共同表明斷言的有效性是可能的。
目前,一個網站將用戶密碼作為輸入,然后將其散列值與存儲的散列值進行比較。同樣,銀行需要你的信用評分來為你提供貸款,使你的隱私和信息泄露風險受到主機服務器的擺布。如果可以利用ZKP,客戶的密碼對驗證者來說是未知的,而登錄仍然可以被驗證。在ZKP之前,我們總是質疑驗證者的合法性或證明系統的合理性,但ZKP質疑驗證者的道德。如果驗證者試圖泄露信息怎么辦?
例一:一個色盲的朋友和兩個球。
有兩個朋友Sachin和Sanchita,其中Sanchita是色盲。薩欽有兩個球,他需要證明這兩個球是不同顏色的。桑奇塔在背后將球隨機調換,然后給薩欽看,薩欽要判斷球是否被調換了。如果球的顏色相同,而薩欽提供了錯誤的信息,那么他回答正確的概率是50%。當這個活動重復進行幾次后,薩欽在虛假信息下給出正確答案的概率就會大大降低。這里薩欽是 “驗證者”,桑奇塔是 “核實者”。顏色是絕對的信息或要執行的算法,在不向驗證者透露顏色信息的情況下證明其合理性。
例子-2:尋找瓦爾多。
尋找瓦爾多是一個游戲,你必須從上面拍攝的大量人群的快照中找到一個叫瓦爾多的人。Sachin有一個尋找Waldo的算法,但他不想把它透露給Sanchita。桑奇塔想買下這個算法,但需要檢查這個算法是否有效。薩欽在紙板上剪了一個小洞,放在瓦爾多身上。Sachin是 “證明者”,Sanchita是 “驗證者”。在對算法一無所知的情況下,該算法被證明。
零知識證明的屬性:
零知識 -
如果聲明是真的,驗證者將不知道該聲明或曾經是。這里的聲明可以是一個絕對值或一個算法。
完備性–如果聲明是真的,那么一個誠實的人就會知道這個聲明是真的。
如果聲明是真的,那么一個誠實的驗證者最終可以被說服。
健全性 -
如果證明者是不誠實的,他們無法說服驗證者證明的健全性。
零知識證明的類型 :
交互式零知識證明 -
它要求驗證者不斷提出一系列關于驗證者所擁有的 "知識 "的問題。上述尋找Waldo的例子是交互式的,因為 "驗證者 "做了一系列的動作來向驗證者證明知識的正確性。
為了使 "交互式 "解決方案發揮作用,驗證者和校驗者都需要同時在線,這使得它很難在現實世界的應用中擴大規模。非交互式零知識證明不需要交互過程,避免了串通的可能性。它需要挑選一個哈希函數,由驗證者隨機挑選挑戰。1986年,菲亞特和沙米爾發明了菲亞特-沙米爾啟發法,成功地將交互式零知識證明改為非交互式零知識證明。
10、非交互式零知識證明(Non-Interactive Zero Knowledge Proof NIZKP)
早期的零知識證明驗證系統曾經是互動的。被稱為 "證人 "和 "驗證人 "的信息 "證明人 "必須同時在線,以便成功執行操作。
這使得整個過程含糊不清,無法擴展。1986年,菲亞特和沙米爾發明了菲亞特-沙米爾啟發式,將交互式零知識證明改為非交互式零知識證明。
菲亞特-沙米爾啟發式是一種技術,用于獲取交互式知識證明并在此基礎上創建數字簽名。這樣,"證人 "或事實可以被公開驗證,而不需要證明者一直在線。
非交互式零知識證明與離散算法:
Sanchita想向Sachin證明,她知道y=g^a為基數g的值。
桑奇塔從數值集合Z中隨機抽取一個數值v,并計算t=g^v。
Sanchita計算c = H(g, y, t),其中H()是哈希函數。
Sanchita計算出d = v - c*a。
然后,Sachin或任何人都可以檢查t是否=g^d * y^c。
Fiat-Shamir啟發式允許我們用非交互式的隨機神諭訪問代替交互式步驟3,但在實踐中,使用的是Hash函數。
在交互式ZKP中,Sachin會從集合Z中挑選隨機值c,并將其發送給Sanchita。
如果下面使用的哈希值不依賴于y的(公共)值,那么方案的安全性就會被削弱,因為惡意驗證者可以選擇某些值x,從而使乘積c*a被知道。
優勢:
它不要求驗證者或核查者一直在線。
可轉移性 -
如果驗證人證明了一次證人,它可以被公開,而同樣的過程不需要對不同的驗證人再次重復。
應用
區塊鏈 -
它可以用來驗證公共區塊鏈中的交易,即使發送者、接收者和交易的信息是匿名的。
對其他協議的基礎 -
在2017年發布了Bulletproofs。Zk-SNARK也是非交互式ZKP的后續產品。
總結
以上是生活随笔為你收集整理的区块链中的共识机制以及共识算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 心怀天下?独善其身?彷徨?迷惘?恭喜你发
- 下一篇: ecall函数调用系统函数参数设置教程