作者:Shunsai Takahashi - 高橋順齋 Read in English
批准證明(Proof-of-Approval)“一個更好的區塊鏈共識協議”
2018年3月15日,12分鐘閱讀
本文於2018年5月27日針對協議更新進行了更新。
區塊鏈是賬本。它們像政府機構或金融機構一樣,在一個賬本中記錄信息(交易、資產等)。它們的不同之處在於,沒有一個實體或組織擁有或控制這個賬本。這個帳本是公開的,任何人都可以查看。此外,任何人都可以要求在其中記錄一項交易,並且在某些限制下,該交易會被記錄下來。一旦一項交易被記錄在帳本中,它應該永遠留在帳本中。這一屬性通常被稱爲 “最終性”(finality) ,簡單地說,如果帳本顯示某人今天擁有某樣東西,而他或她沒有進行交易或消費,那麼他或她在下一年、下十年或下一個世紀仍將擁有它。
區塊鏈如何在沒有人信任的情況下實現所有這些功能,以確保這個賬本的安全?這隻有通過以下方式才能實現。
- 有多方爲了自己的利益而工作,以及
- 一個協議,或一個循序漸進的程序,供各方確定什麼進入帳本,什麼在帳本中。
可以想象,上述協議被稱爲共識協議,對區塊鏈相當關鍵。事實上,一個區塊鏈的安全性由其共識協議決定(A Survey on Security and Privacy Issues of Bitcoin)。如果共識協議選擇不當,將使區塊鏈容易受到攻擊,損害其數據並使其失去作用。 這篇文章介紹了一個新的,也許是更好的協議,以實現區塊鏈的理想功能。該協議的完整描述可以在論文Proof-of-Approval區塊鏈的分佈式共識協議中找到。
審批證明 #
使用該協議的網絡以預定的時間間隔定期發佈塊,稱爲槽(slot)。每個槽位最多可以創建一個區塊,而有些槽位可能不創建任何區塊。該協議定義了另一個更大的間隔,包含預定的槽數,稱爲epoch。
該協議是無許可的,即各方(節點)可以自由地加入和離開網絡。對於每個檔期,網絡中的幾個節點有最低的股份,被允許競爭創建區塊。獲勝區塊的創造者將獲得區塊中包含的新幣和交易費用的獎勵。
一個區塊必須由持有法定股權的利益相關者批准,纔能有效並被放入區塊鏈中。區塊創建者在網絡上廣播他們的區塊,接收節點驗證並選擇批准這些區塊。節點通過向區塊創建者發出明確的消息來表明他們的批准。只要被批准的區塊共享同一個父體,批准者可以選擇批准多少個區塊。如果不是,這些批准被認爲是衝突的,不能使用。批准者(擁有有效的批准)按其在網絡中的利益比例得到獎勵。
當批准的數量超過所需的法定數量時,區塊創建者將收集到的批准信息廣播給網絡。下一個區塊的創建者將把這些批准放在他們創建的區塊內。存儲在區塊內的批准股權也決定了哪些幣卷的所有者被允許創建下一個區塊。對於每一個檔期,區塊創建者都會在含有最高存儲批准權的區塊上進行創建。
一個紀元的最後一個塊是特殊的,因爲它包含紀元批准。紀元批准類似於塊批准,但被設計用來接收來自慢速或間歇性連接的節點的批准。紀元審批的獎勵與區塊審批的獎勵差不多,但與區塊審批不同的是,需要很少的計算或網絡連接。紀元批准鼓勵所有節點,甚至那些計算或網絡能力有限的節點,簽署和批准鏈。紀元批准阻止了歷史攻擊。
如果網絡遇到通信困難,只要能達到利益相關者的法定人數,它將繼續正常運作。如果不是,許多槽位將不會創建任何區塊,直到連接性改善。一個使用Proof-of-Approval的區塊鏈可能看起來像圖1。
圖1:批准證明區塊鏈
分叉優先權的確定 #
當一方首次加入網絡,或在中斷後重新加入網絡時,它可能會收到來自其他參與者的多個分叉,必須選擇首選分叉來構建區塊。它使用以下程序。
- 如果分叉不相等,選擇最長的分叉。請注意,分叉的長度是分叉所跨越的槽的數量,而不是其中包含的塊的數量。
- 如果分叉有任何不共享的歷時,首先選擇有不共享歷時的首選分叉(如下),拒絕其他分叉。
- 如果仍有多個分叉,則選擇在其頭塊存儲有最高批准者權益的分叉。
用不共享的歷時確定首選分叉。
- 對於每一對分叉,確定未共享的紀元和區塊,然後確定創建任何區塊、或批准任何區塊、或批准任何紀元、或簽署任何交易(轉移或花費他們的股權)的各方。我們稱這些爲 “簽署 “方。
- 確定所有 “簽署 “方在每個分叉的第一個獨立區塊中的總股權分數(佔網絡總股權)。
- 在第一個分離區塊中選擇簽字樁分數較大的分叉。
如何處理區塊鏈和賭注的相互依賴性? #
任何基於賭注的決策過程都必須考慮到區塊鏈每個區塊的賭注變化,而這些賭注在每次分叉中都可能是不同的。如果不能考慮到這種賭注的變化,可能會導致多個不同的分叉同時成爲首選分叉,導致區塊鏈的失敗。批准證明(Proof-of-Approval)通過以下兩個屬性解決了這個問題。
- 每個區塊都限制了可以轉讓的最大賭注金額(佔網絡總賭注的百分比)。這可以防止不同分叉中的各方的股權過快增長。一個典型的實施方案可能會把這個數額設定爲網絡總股份的0.5%-1%。
- 批准被存儲在區塊鏈中,以防止長距離攻擊,並非常迅速地解決分叉之間的偏好。事實上,只需要一個額外的區塊來確定首選分叉。
區塊鏈的理想屬性 #
爲了實現其目標,區塊鏈必須具備以下屬性。
安全屬性 #
由於區塊鏈是分佈式系統,它們必須容忍系統故障和參與者的惡意行爲。一個擁有許多奇妙屬性但無法承受這種對抗性條件的區塊鏈最終將被對手控制,導致其失敗。以下屬性被用來衡量區塊鏈的安全性。
對抗性容忍 Adversarial Tolerance #
它是對手在沒有獲得區塊鏈控制權的情況下可以控制的區塊鏈最關鍵資源的最大部分。預計區塊鏈的性能會隨着對手力量的增加而日益惡化,最終導致其災難性的失敗。
持久性 #
持久性是衡量區塊鏈中的記錄(區塊)的持久性。與集中式賬本不同的是,交易一旦記錄下來就是永久的,而區塊鏈上記錄的交易可能不那麼持久,至少在記錄後的一段時間內不那麼持久。對於區塊鏈來說,持久性可能是目標交易後存儲的區塊數量的一個概率函數。什麼會導致一條記錄從區塊鏈上消失?區塊鏈網絡決策過程有時可以選擇一個備用分叉,將所有其他分叉中的區塊從區塊鏈中移除。一個區塊被移除的幾率會隨着在一個區塊之上添加額外的區塊而下降。
Weak-finality和finality是持久性量表上的點,可能對實際目的有用。弱最終性可以被認爲是電子商務交易的 “足夠好 “的持久性,例如運送貨物。最終性,也被稱爲 “強一致性”,是可與主流金融系統相比的持久性。
其他理想的屬性 #
Liveness 活性
活性屬性意味着,與目標時間表相比,區塊被添加到區塊鏈的頻率。如果區塊沒有被添加,那麼區塊鏈就沒有完成其記錄交易的工作。一個理想的區塊鏈會完全按照計劃添加區塊,沒有任何空隙。大多數區塊鏈,在典型的操作條件下,能夠實現接近其目標的有效性。
公平性
公平性意味着一個區塊鏈的獎勵過程有多容易被利用。區塊鏈打算按照對其最關鍵的資源的比例提供獎勵,這可以是採礦能力、網絡股權或任何其他指定標準。各方會試圖獲得不公平的獎勵份額,但應該被阻止。一個理想的區塊鏈將完全阻止任何試圖贏得不公平比例的獎勵的人。
可擴展性、交易率和分片
區塊鏈的可擴展性是其交易率和分片特性的組合。交易率只是其兩個設計屬性的結果–區塊大小和區塊時間週期。雖然一個新的區塊鏈可以很容易地選擇這些值,但一個公共區塊鏈可能需要代碼升級和網絡共識來對這些屬性進行更改。
分片是一種通過將每個節點的工作負荷分給許多並行運行的節點來進一步增加區塊鏈中存儲的交易數量的方法。爲了採用分片,區塊鏈可能需要代碼升級和網絡共識。
一般來說,交易率和分片都與區塊鏈的設計選擇有很大關係,而不是一些非凡的技術。安全,而不是高交易率,是當今大多數公共區塊鏈的主要設計關注點。
與流行區塊鏈的比較 #
這裏的比較將集中在安全性上,這是區塊鏈最關鍵的方面。這裏使用每個區塊鏈和協議自己的文件和分析來進行比較。爲了使比較容易理解,在相同的情況下使用數字,而不是複雜的表達方式。
該比較着眼於區塊鏈的對抗性容忍度,以及它們在這些對抗性條件下的表現。兩種對抗力量被用於比較–25%和略低於50%(今天沒有區塊鏈能容忍50%或更高的對抗力量)。持久性的比較是通過任意定義弱最終性爲 “五個九”(99.999%)的確定性,最終性爲 “十二個九 “的確定性。
下面幾段討論單個區塊鏈,而圖3顯示了整體的比較結果。
圖3:與流行區塊鏈的比較
理想協議 #
一個理想的協議,如果它存在的話,在這裏被用來作爲其他區塊鏈的衡量標準。正如預期的那樣,它能完全阻止對手(容忍度爲100%),並提供即時的弱最終性和最終性(0個區塊)。
比特幣 #
比特幣的PoW協議可以容忍25%的對抗性採礦能力。在25%的對抗性採礦能力下,它在11個區塊後實現了弱最終性,在26個區塊被存入目標交易後實現了最終性(On Settlement Finality)。由於該協議在超過25%的對抗性挖礦能力時失敗,所以在≈50%的對抗性挖礦能力時,弱最終性和最終性永遠無法實現。
以太坊和以太坊與Casper FFG #
就像比特幣一樣,以太坊和帶有Casper FFG的以太坊使用PoW,可以容忍25%的對抗力量,並導致相同的弱最終性和最終性結果。Casper FFG並沒有提高以太坊的對抗性容忍度,也似乎沒有對本次比較所定義的弱最終性和最終性產生影響。
瑞波(XRP) #
Ripple的對手容忍度只有20%(The Ripple Protocol Consensus Algorithm),因此在我們的比較中,它從未實現過任何一個最終性措施。
瑞波公司稱自己是企業區塊鏈。雖然Ripple確實使用了類似區塊鏈的數據結構,而且它確實讓節點在自己的計算機系統上存儲數據,而且它可能是一個 “企業 “應用,但它不是一個真正的區塊鏈,因爲有以下原因。
- 它並沒有解決拜占庭將軍問題(BGP)。BGP設置指出:“然而,他們中的一個或多個可能是叛徒,會試圖迷惑其他人。問題是要找到一種算法來確保忠誠的將軍們達成一致”。Ripple解決了這個問題的非常簡單的版本(很容易找到一羣誠實的將軍來努力達成共識)。
- 它並沒有消除對可信第三方的需求。正如中本聰在《比特幣:一個點對點的電子現金系統》中所說,”……如果仍然需要一個受信任的第三方來防止雙重消費,那麼主要的好處就失去了。“另一方面,瑞波幣允許,甚至可能需要人工干預。
Steem, Tezos Alpha和EOS(DPoS)。 #
Steem、Tezos Alpha和EOS使用的DPoS都依賴於DPOS共識算法–《失蹤的白皮書》中描述的共識協議,其重點是在 “區塊生產者 “被選中後的共識過程。該文件假設不超過1/3的區塊生產者是對抗性的,這意味着該協議的對抗性容忍度是總股份的1/3。但這是完全錯誤的。
來自論文 有多少Steem人沒有投票給證人?我找到了答案!和Steem的祕密#6:見證者的投票是最多的!我們知道,只有大約7.5%的用戶實際投票(或有代理)選擇區塊生產者。很容易看出,擁有15-20%股份的對手可以主導區塊生產者的選擇過程,導致>1/3的區塊生產者是對手的。因此,在25%或更高的對抗性股權中,交易不太可能實現弱最終性或最終性。 DPoS的對抗性容忍實際上可能更糟糕。由於每一方都被期望投票選舉區塊鏈生產者,一個誠實的一方只會想投票給另一個誠實的一方。一個人唯一能確定的誠實的一方就是他們自己。這很可能會使誠實的投票變得支離破碎,在這種情況下,大多數政黨都會爲自己投票。另一方面,對抗性政黨串通一氣。這將導致對抗性候選人獲得未被分割的選票並贏得區塊生產者的位置。因此,在對抗性攻擊下,大多數區塊生產者可能是對抗性的,損害了區塊鏈。
NEO #
使用實用拜占庭容錯的變體,該協議實現了即時終結性,最大的對手容忍度爲33%的節點。雖然這可能聽起來相當強的容忍度,但應該注意的是,這是33%的節點,而不是33%的網絡股權。破壞這個區塊鏈只需要33%或更多數量的節點的對抗性。 創建對抗性節點會產生計算成本。使用DigitalOcean的小液滴,人們可以創建10,000個節點,成本僅爲70美元/小時。一個擁有30,000個節點的NEO區塊鏈,只需70美元的計算費用就可以被打敗了
卡達諾 Cardano #
Cardano使用Ouroboros。一個可證明的安全取證區塊鏈協議用於其共識。這是一個經過深思熟慮的協議,確實超過了Steem和EOS.IO的DPoS能力。在25%的對抗性權益下,它表現得相當好,但在50%的對抗性權益下,實現弱最終性和最終性需要成千上萬的區塊。
Ton #
TON區塊鏈提出了很多主張,但並沒有披露任何有關這些主張如何實際實現的信息。簡單地說,他們的主張更可能是幻想而不是現實。
Dfinity #
Dfinity協議在DFINITY技術概述系列共識系統中描述。雖然該協議的分析根據其假設堅持其主張,但其最基本的假設(來自第4.2節線程模型的假設1),打破的成本相當低,可能導致對手控制區塊鏈。這裏的分析將使用Dfinity論文的10,000個節點的例子,並將嘗試估計創建10,000個違反假設1的對抗性節點的成本。
創建每個對抗性節點將產生兩個障礙–計算資源成本和註冊。使用DigitalOcean的小液滴,人們可以創建10,000個節點,成本僅爲70美元/小時。這個數額是如此微不足道,以至於它甚至不會進入隨後的計算中。Dfinity文件的第8.2.2節規定,使用未指定的抗塞比爾方法註冊節點,其中可能包括背書、鎖定存款、PoW拼圖或權威機構的認證。這些抗塞比爾方法中的每一種都可以轉化爲成本–創建虛假身份的成本、PoW的資源成本、存款成本或賄賂其他誠實節點的成本。如果Dfinity網絡打算吸引新成員,這個成本就不能設置得太高。假設每個節點的成本爲100美元的中級Sybil屏障,對手只需要花費100萬美元就可以破壞網絡。這個成本比攻破PoW或PoS系統所需的1000-5000萬美元小得多。事實上,在10,000個節點時,Sybil的障礙必須提高到1,000-5,000美元,才能使對手同樣困難。情況實際上更糟糕。沒有一個網絡,包括Dfinity,可以從一開始就有10,000個節點。在開始的時候,它的節點數會小得多,很可能低於1000個。要想在只有1000個節點的情況下保證網絡的安全,需要將每個節點的Sybil障礙提高到10,000-50,000美元。一個網絡不可能以這樣的進入成本吸引許多節點。
審批證明 #
論文Proof-of-Approval。區塊鏈的分佈式共識協議的第3.2節定義了分析的參數。選擇(νc + νa + νe)=0.00001,δ=0.005,ρ=0.5001的結果是對手的股權ε<0.49509,非常接近50%。
第3.3.1節顯示,一旦一個或多個區塊被存放在目標交易之上,弱最終性和最終性就得到了滿足。
對 “Proof of approval” “的分析顯示了一些非常有希望的結果。即將發表的一篇文章將關注與區塊鏈的擴展有關的理論和實踐問題,以及解決這些問題的架構模式。
參考文獻 #
- 拜占庭將軍問題
- 比特幣:一個點對點的電子現金系統
- 批准證明。區塊鏈的分佈式共識協議
- 關於比特幣安全和隱私問題的調查
- 關於和解的最終結果
- 瑞波協議的共識算法
- DPOS共識算法 - 失蹤的白皮書
- Steem祕訣#6: 見證者的投票是最多的!
- 有多少Steemians不投票給證人?我找到了答案!
- 實用拜占庭式容錯
- Ouroboros:一個可證明的安全取證的區塊鏈協議
- DFINITY技術概述系列共識系統