區塊鏈共識算法Proof-of-Stake (PoS權益證明) 常見問題解答 (1)

區塊鏈共識算法Proof-of-Stake (PoS/權益證明) 常見問題解答 (1)

Original post: https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ

什麼是Proof-of-Stake

權益證明(PoS)是一種公共區塊鏈的共識算法類別,它依賴於驗證者在網絡中的經濟利益 。 在基於工作證明(PoW)的公共區塊鏈(比如比特幣和當前實施的以太坊)中,算法獎勵解決密碼難題的參與者,以驗證交易並創建新的區塊(即採礦)。 在基於PoS的公共區塊鏈(例如以太坊即將推出的Casper實現)中,一組驗證者輪流在下一個區塊提出投票並投票,每個驗證人投票的權重取決於其存款的大小(即股權)。 PoS的顯着優勢包括安全性,集中化風險降低和能源效率 。

一般來說,賭注算法的證明如下所示。 區塊鏈跟蹤一組驗證器,任何持有區塊鏈基礎加密貨幣(在以太坊的情況下爲ether)的人都可以通過發送一種特殊類型的事務來鎖定他們的以太幣進入存款 ,從而成爲驗證器。 然後通過所有當前驗證者都可以參與的共識算法完成創建和同意新塊的過程。

共識算法有很多種,並且有許多方法可以將獎勵分配給參與共識算法的驗證者,所以存在許多證明利益的“風味”。 從算法的角度來看,有兩種主要類型:基於連鎖的股權證明和BFT風格的股權證明。

在基於鏈的利益證明中 ,算法在每個時隙期間僞隨機地選擇驗證器(例如,每10秒的週期可能是一個時隙),並且賦予該驗證器創建單個塊的權利,並且該塊必須指向先前的某個區塊(通常是前一個最長鏈末端的區塊),並且隨着時間的推移,大多數區塊都會匯聚成一個不斷增長的鏈條。

在BFT風格的證據中 ,驗證者被隨機賦予建議塊的權利,但是同意哪個塊是規範的是通過多輪處理來完成的,其中每個驗證者在每一輪期間發送對某個特定塊的“投票”,以及在這個過程結束時,所有(誠實的和在線的)驗證者都會永久地同意是否給定的塊是鏈的一部分。 請注意,塊可能仍然鏈接在一起 ; 關鍵的區別在於,一個區塊的共識可以在一個區塊內,並且不依賴於它之後的鏈的長度或大小。

與工作量證明相比,證明利益的好處是什麼?

請參閱證明設計理念,以獲得更長期的論證。

簡而言之:

  • 爲了確保區塊鏈, 不需要消耗大量電力 (例如,估計比特幣和以太坊每天都會耗費超過100萬美元的電力和硬件成本,作爲其共識機制的一部分)。
  • 由於缺乏高耗電量,爲了激勵參與者繼續參與網絡,發行儘可能多的新硬幣並不是那麼需要 。理論上甚至有可能出現淨髮行,其中一部分交易費用被“燒掉”,因此供應隨着時間的推移而下降。
  • 股權證明爲更廣泛的使用博弈論機制設計的技術打開了大門,以便更好地阻止集中卡特爾的形成,並且如果它們確實形成了以對網絡有害的方式行事(例如像自私採礦證明工作)。
  • 由於規模經濟問題少得多,所以降低了集中化風險 。 1000萬美元的硬幣將使您獲得比100萬美元硬幣高10倍的回報,而沒有任何額外的不成比例的收益,因爲在更高的水平上,您可以購買更好的大規模生產設備。
  • 能夠使用經濟處罰來使各種形式的51%攻擊比開展工作證明的開銷大得多 - 將Vlad Zamfir解釋爲:“就好像你的ASIC農場被燒燬了,如果你參與了51%的攻擊”。

利益證明如何適應傳統的拜占庭容錯研究?

拜占庭容錯研究的一些基本結果適用於所有一致性算法,包括PBFT等傳統一致性算法,但也包括任何證據權利算法,以及適當的數學建模和工作證明。

主要成果包括:

  • CAP定理 - “在網絡分區發生的情況下,您必須選擇一致性或可用性,您不能同時擁有兩者”。直觀的論點很簡單:如果網絡分成兩半,並且一半發送交易“將我的10個硬幣發送給A”,另一個發送交易“將我的10個硬幣發送給B”,則系統因爲一個或兩個交易將不會被處理,或者會變得不一致,因爲網絡的一半將看到第一個交易完成,另一半將看到第二個交易完成。 請注意,CAP定理與可伸縮性無關; 它同樣適用於分片和非分片系統。
  • FLP不可能 - 在異步設置中(即,即使在正確運行的節點之間,網絡延遲也沒有保證的界限),但不可能創建一種算法,如果甚至一個單一的存在有故障/不誠實的節點。 請注意,這並不排除“拉斯維加斯”算法在每一輪達成共識時都有一定的概率,因此會在T秒內達到一致,隨着T增長,概率呈指數級逼近1; 這實際上是許多成功的共識算法使用的“逃生孵化器”。
  • 容錯的界限 - 從DLS文件中我們可以得出 :(i)運行在部分同步網絡模型中的協議(即網絡延遲有約束但我們不知道它是什麼)可以容忍多達1 / 3任意(即“拜占庭式”)故障,(ii)異步模型中的確定性協議(即沒有網絡延遲的限制)不能容忍故障(儘管他們的論文沒有提及隨機算法可以達到1/3 (iii)同步模型中的協議(即,網絡延遲保證小於已知的d )可以令人驚訝地容忍高達100%的容錯性,儘管在多於或等於1/2節點有故障。 請注意,“認證的拜占庭式”模型是值得考慮的模型,而不是“拜占庭式”模型; “認證”部分基本上意味着我們可以在我們的算法中使用公鑰密碼術,這在現代已經非常好地研究並且非常便宜。

Andrew Miller等人嚴格分析了工作證明,並將其作爲一種依賴於同步網絡模型的算法。 我們可以將網絡建模爲由幾乎無限的節點組成,其中每個節點代表非常小的計算能力單位,並且在給定時間段內能夠創建塊的可能性非常小。 在該模型中,協議具有50%的容錯能力,假設網絡延遲爲零,在實際觀察條件下約爲46%(Ethereum)和〜49.5%(比特幣)容錯,但如果網絡延遲等於塊,則容量降至33%時間,並隨着網絡延遲接近無窮大而減少到零。

由於所有驗證人都已知身份(穩定的以太坊地址),並且網絡跟蹤驗證程序集的總大小,因此證明利益共識更符合拜占庭容錯共識的模式。 有兩個一般的證據研究證據,一個是同步網絡模型,另一個是部分異步網絡模型。 利益相關算法的“鏈式”證明幾乎總是依賴於同步網絡模型,其安全性可以在這些模型中得到正式驗證,類似於證明工作算法證明的安全性。 在部分同步網絡中連接傳統的拜占庭式容錯共識的研究與利益證明也存在,但更復雜的是要解釋; 它將在後面的章節中詳細介紹。

工作算法證明和基於鏈的證據算法選擇可用性而不是一致性,但是BFT風格的一致性算法更傾向於一致性; Tendermint明確選擇一致性,Casper使用一種混合模型,該模型優先考慮可用性,但儘可能提供一致性,並使得鏈上應用程序和客戶端都意識到一致性保證在任何給定時間有多強。

請注意,Ittay Eyal和Emin Gun Sirer的自私挖掘發現,根據網絡模型,比特幣挖掘的激勵相容性設置了25%和33%的限制(例如,如果大於25%或33%不可能)與傳統共識算法研究的結果沒有關係,這不會影響激勵相容性。

什麼是“沒有危險”的問題,如何解決?

在許多早期(包括所有連鎖店)的賭金算法證明中,包括Peercoin在內,只會產生獎勵獎勵,並且不會受到懲罰。 這具有不幸的後果,即在有多個競爭鏈的情況下,驗證者試圖一次嘗試在每條鏈上創建塊,只是爲了確保:

img

在工作證明中,這樣做需要將自己的計算能力分解成一半,因此不會有利可圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-tzodRdcv-1587458087713)(https://github.com/vbuterin/diagrams/raw/master/powsec.png?raw=true)]

結果是,如果所有參與者都是經濟上狹義的理性的話,即使沒有攻擊者,區塊鏈也可能永遠不會達成共識。 如果存在攻擊者,那麼攻擊者只需要壓制無私的節點(誰將獨佔原始鏈),而不是理性的節點(誰可以同時關注原始鏈和攻擊者的鏈),而不是工作證明,攻擊者必須壓制利他主義者和理性結點(或者至少可以威脅到:看到P +ε攻擊 )。

有人認爲,利益相關者有正確行動的動機,只爲了“保持投資價值”而維持最長的鏈條,然而這忽視了這種激勵遭受公共問題的悲劇 :每個利益相關者可能只有一個1%的可能性是“關鍵”(即,如果他們參與攻擊則成功,如果他們不參與則失敗),因此賄賂需要說服他們親自參加攻擊只佔其存款規模的1%; 因此,所需的合併賄賂僅爲所有存款總額的0.5-1%。 另外,這個論點意味着任何零失敗的情況都不是一個穩定的均衡,就好像失敗的機會是零,那麼每個人都有0%的關鍵機會。

這可以通過兩種策略解決。 第一種是在這裏以“Slasher”這個名稱廣義描述的,Iddo Bentov 在這裏進一步發展,如果它們同時在多個鏈上創建塊,則通過包括錯誤行爲的證明(即兩個衝突的簽名塊標題)作爲以後的時間點,區塊鏈中的犯罪確認者的存款被適當地扣除。 這樣就改變了激勵結構:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mfI6odXc-1587458087714)(https://github.com/vbuterin/diagrams/raw/master/slasher1sec.png?raw=true)]

請注意,爲了使該算法起作用,驗證程序集需要提前確定。 否則,如果驗證者擁有1%的股份,那麼如果有兩個分支A和B,則驗證者只有0.99%的時間有資格只在A上而不在B上,則0.99%的驗證者將會有資格投資B而不是A,並且只有0.01%的時間將會使驗證人有資格同時參與投標。 因此,如果可能的話,驗證人可以以99%的效率概率性地雙重利益:如果可能的話對A的利益,如果可能的話對B的利益,並且只有當兩者之間的選擇是對較長鏈的開放利益時。 只有在兩個分支上的每個塊的驗證器選擇都相同時才能避免這種情況,這需要在fork發生前一次選擇驗證器。

這有其自身的缺陷,包括要求節點經常在線以獲得區塊鏈的安全視圖,並打開中等範圍的驗證器合謀風險(即,例如,30個連續驗證器中的25個會聚並同意提前對前19個街區實施51%的攻擊),但如果這些風險被認爲是可以接受的,那麼它效果很好。

第二個策略是簡單地懲罰在錯誤鏈上創建塊的驗證器。 也就是說,如果有兩個競爭鏈A和B,那麼如果一個驗證者在B上創建一個塊,他們在B上得到+ R的獎勵,但塊頭可以包含到A中(在Casper中稱爲a “dunkle”),並且在A上驗證者受到-F(可能是F = R)的懲罰。 這就改變了經濟計算:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-W45zs4iF-1587458087716)(https://github.com/vbuterin/diagrams/raw/master/slasher2sec.png?raw=true)]

這裏的直覺是我們可以在證明利益的情況下複製工作證明的經濟學。 在工作證明中,在錯誤的鏈上創建一個區塊也是一種懲罰,但這種懲罰在外部環境中是隱含的:礦工不得不花費額外的電力並獲得或租用額外的硬件。 在這裏,我們只是明確規定處罰。 這種機制的缺點是它對驗證者施加了更多的風險(儘管效果應該隨着時間的推移而被平滑掉),但是它的好處是不需要提前知道驗證者。

這顯示了鏈式算法如何解決風險。 現在BFT風格的證據算法如何工作?

BFT風格(部分同步)證據算法允許驗證者通過發送一種或多種類型的簽名消息對塊進行“投票”,並指定兩種規則:

  • 最終條件 - 確定給定哈希何時可以被認定爲最終的規則。
  • 削減條件 - 決定何時可以認爲某個驗證者無可置疑的行爲不當(例如同時投票多個衝突塊)的規則。 如果驗證者觸發這些規則之一,則其整個存款將被刪除。

爲了說明削減條件可以採取的不同形式,我們將給出兩個削減條件的例子(下文中,“2/3的所有確認者”是“存入硬幣加權的所有確認者的2/3”的簡寫),並且對於其他分數和百分比)。 在這些例子中,“PREPARE”和“COMMIT”應該被理解爲簡單地指代驗證者可以發送的兩種類型的消息。

  1. 如果MESSAGES包含相同view的形式爲["COMMIT", HASH1, view]["COMMIT", HASH2, view]形式的消息,但由同一個驗證器簽名的HASH1HASH2不同,則驗證器被削減。
  2. 如果MESSAGES包含形式爲["COMMIT", HASH, view1] ,則除非view1 = -1,或者對於某些特定view2還存在形式爲["PREPARE", HASH, view1, view2]的消息,其中view2 < view1 ,由所有驗證器的2/3簽名,然後使提交的驗證器被削減。

對於一組合適的削減條件,有兩個重要的要求:

  • 負責任的安全 - 如果相沖突的HASH1HASH2 (即HASH1HASH2不同,並且兩者都不是另一方的後代)最終確定,那麼至少有1/3的驗證者必須違反了一些削減條件。
  • 似是而非的生活 - 除非所有驗證人中至少有1/3違反了一些削減條件,否則存在一組驗證人可以產生的一組消息,最終確定一些價值。

如果我們有一套滿足這兩個屬性的削減條件,那麼我們可以激勵參與者發送消息,並開始從經濟終結中受益。

一般來說,“經濟終極”是什麼?

經濟最終性是這樣的想法,即一旦一個區塊被完成,或者更一般地說,一旦已經簽署了足夠的特定類型的消息,那麼在將來任何時候經典歷史將包含衝突區塊的唯一方式是如果大量人們願意焚燒大量的金錢。 如果一個節點看到這個條件已經滿足給定的塊,那麼他們在經濟上有強有力的保證,該塊將永遠是每個人都同意的規範歷史的一部分。

有兩種經濟最終的“味道”:

  1. 如果足夠數量的驗證人簽署了“我同意在不包含塊B的所有歷史記錄中丟失X的形式”的隱性經濟索賠,則可以經濟地確定塊。 這給客戶保證,(i)B是規範鏈條的一部分,或者(ii)驗證者爲了誘騙他們認爲情況如此,損失了大量金錢。
  2. 如果足夠數量的驗證程序簽署了表示支持塊B的消息,並且有一個數學證明, *如果某個B’!= B也在相同定義下完成,*則驗證程序會損失大量金錢。 如果客戶看到了這一點,並且驗證了該鏈條,並且有效性加上最終性是規範分岔選擇規則中優先級的充分條件,那麼他們得到(i)B是規範鏈的一部分,或者(ii)驗證人在製作一個相互衝突的鏈中也損失了大量的資金,這個鏈也是最終確定的。

這兩種終極方法從兩種解決方案中繼承了無關緊要的問題:通過懲罰不正確來實現終結性,並通過懲罰含糊不清來實現終結性。 第一種方法的主要好處是,它更輕量級的客戶端,更容易推理,第二種方法的主要好處是(i)更容易看出誠實的驗證者不會受到懲罰,並且( ii)悲傷因素更有利於誠實的驗證者。

卡斯帕遵循第二種風格,雖然可能會增加鏈上機制,驗證者可以自願選擇簽署第一種風味的最終消息,從而實現更高效的輕客戶端。

那麼這與拜占庭容錯理論有何關係?

傳統的拜占庭容錯理論除了有一些不同之處外,其他安全性和活性也具有相似的安全性和活性。 首先,傳統的拜占庭容錯理論只要求2/3的驗證者是誠實的就可以實現安全。 這是一個非常容易工作的模型; 傳統容錯試圖證明“如果機制M有安全故障,那麼至少1/3節點有故障”,而我們的模型試圖證明“如果機制M有安全故障,則至少有1/3節點是錯誤的,即使你在失敗發生時離線,你也知道哪些是錯誤的。“ 從活力的角度來看,我們的模型更容易,因爲我們不要求證明網絡達成共識,我們只是要求證明它不會被卡住

幸運的是,我們可以證明額外的責任要求不是特別困難的要求; 實際上,通過使用正確的“協議裝甲”,我們可以將任何傳統的部分同步或異步拜占庭式容錯算法轉換爲可交付算法。 這種證據基本上歸結爲這樣一個事實,即錯誤可以被徹底地分爲幾類,並且這些類中的每一類都要負責任(即,如果你犯了這種錯誤,你可能會被抓到,所以我們可以或者與延遲無法區分(請注意,即使發送郵件過早的錯誤與延遲也沒有區別,因爲可以通過加快每個人的時鐘速度並分配發送得太早的郵件以更高的延遲進行建模) 。

什麼是“弱主觀性”?

值得注意的是,使用存款來確保“存在風險”的機制確實會導致安全模型發生一次變化。 假設存款被鎖定了四個月,以後可以撤回。 假設發生了一次企圖發生的51%的攻擊,恢復了10天的交易。 攻擊者創建的數據塊可以簡單地導入主鏈中,作爲瀆職證據(或“dunkles”),驗證者可以受到懲罰。但是,假設這種攻擊發生在六個月後。 然後,儘管這些街區肯定可以重新進口,但到那時瀆職犯罪確認者將能夠在主鏈上收回他們的存款,因此他們不會受到懲罰。

爲了解決這個問題,我們引入了一個“回覆限制” - 一個規則,即節點必須拒絕進一步恢復到比存款長度更遠的時間(即在我們的示例中爲四個月),並且我們還需要節點登錄至少每個存款長度有一個安全的鏈條視圖。 請注意,該規則與協議中的每個其他共識規則都不同,因爲這意味着節點可能根據他們何時看到某些消息而得出不同的結論。 節點看到給定消息的時間在不同節點之間可能不同;因此我們認爲這個規則是“主觀的”(或者,精通拜占庭容錯理論的人可能認爲它是一種同步假設)。

然而,這裏的“主觀性”非常弱:爲了讓節點進入“錯誤”鏈,他們必須在四個月後收到原始消息。 這只有在兩種情況下才有可能:

  1. 當一個節點第一次連接到區塊鏈時。
  2. 如果某個節點已脫機超過四個月。

我們可以通過使用戶負責驗證帶外最新狀態來解決(1)。 他們可以通過詢問他們的朋友,區塊探索者,他們與之互動的企業等等,來獲得他們認爲是規範鏈的最近街區散列。 在實踐中,這種塊散列很可能只是作爲他們用來驗證區塊鏈的軟件的一部分; 一個能夠破壞軟件檢查點的攻擊者可以說很容易破壞軟件本身,並且沒有任何純粹的經濟學驗證可以解決這個問題。 (2)確實爲節點增加了額外的安全要求,但是再次注意到存在硬性分支和安全漏洞的可能性以及需要了解它們並安裝任何所需的軟件更新的要求,也工作。

請注意,所有這些都只是在一個非常有限的情況下出現的問題,在這種情況下,大多數以前的利益相關者會在某個時間點混合攻擊網絡並創建替代鏈; 大多數時候我們預計只有一個規範鏈可供選擇。

我們是否可以嘗試使社交認證自動化以減輕用戶的負擔?

一種方法是將其烘焙成自然的用戶工作流程: BIP 70式支付請求可能包括最近的塊散列,並且用戶的客戶端軟件將在批准付款之前確保它們與供應商處於同一鏈中(或用於這一點,任何鏈上的互動)。 另一種是使用Jeff Coleman的通用散列時間 。 如果使用UHT,那麼在建立合法鏈的同時,需要祕密生成一個成功的攻擊鏈,這需要大多數驗證者祕密地串通那麼長時間。

爲了證明利益,能否在經濟上懲罰審查?

與回覆不同,審查更難以證明。 區塊鏈本身並不能直接說出“用戶A試圖發送交易X但遭到不公正審查”,“用戶A試圖發送交易X但由於交易費用不足而無法進入”和“用戶A從未嘗試過完全發送交易X“。但是,有許多技術可以用來緩解審查問題。

首先是阻止問題的審查阻力。 在該方案的較弱版本中,該協議被設計成圖靈完成的方式,使得驗證器甚至不能分辨給定的交易是否會導致不希望的行爲而不花費執行交易的大量處理能力,從而使自己面臨拒絕服務攻擊。 這是阻止DAO軟分叉的原因

在該計劃的更強版本中,交易可以在近期或中期的某個未來的某個時間觸發保證效果。 因此,用戶可以發送多個交易,這些交易彼此交互並且與預測的第三方信息相互作用以導致未來的事件,但是驗證者不可能知道在交易已經包括(並且經濟地確定)之前這將發生,阻止他們爲時已晚; 即使所有未來的交易都被排除在外,驗證人希望停止的事件仍會發生。 請注意,在這個方案中,驗證者仍然可以嘗試阻止所有的交易,或者也許所有的交易都沒有包含一些正式的證據,證明他們不會導致任何不希望的事情,但是這會導致禁止一系列非常廣泛的交易從根本上破壞了整個系統,這會導致驗證人失去價值,因爲他們的存款被稱爲加密貨幣的價格將會下降。

第二種, 在這裏由Adam Back描述 ,要求交易是時間加密的 。 因此,驗證人將在不知道內容的情況下包括交易,並且以後纔可以自動顯示內容,此時再次解除交易是太遲了。 但是,如果驗證者具有足夠的惡意,他們可能只會同意包含帶有加密證明(例如ZK-SNARK)的解密版本的交易; 這將迫使用戶下載新的客戶端軟件,但對手可以方便地提供這樣的客戶端軟件以便於下載,並且在遊戲理論模型中,用戶將有動力去玩。

也許最好的證據就是用戶可以安裝一個軟件更新,其中包含一個硬分叉,可以刪除惡意的驗證器,這比安裝軟件更新來完成他們的交易要困難得多“審查友好”。 因此,所有這些方案都是適度有效的,儘管它的確是以減少與區塊鏈相互作用的代價爲代價的(注意該方案必須是強制性的纔能有效;否則惡意驗證者可以更容易地簡單地過濾沒有加密的交易過濾更快的未加密的交易)。

第三種選擇是在分岔選擇規則中包含審查檢測。 這個想法很簡單。 節點觀察網絡的交易情況,如果他們看到交易費用足夠高並且交易時間足夠長,那麼他們會爲不包含此交易的區塊鏈分配較低的“分數”。 如果所有節點都遵循這一策略,那麼最終少數連鎖企業會自動合併,包括交易,並且所有誠實的在線節點都會遵循它。 這種方案的主要缺點是離線節點仍然會跟隨大多數分支,如果審查是暫時的,並且在審查結束後又重新登錄,那麼它們最終會落在與在線節點不同的分支上。 因此,該計劃應該被視爲一種工具,以促進硬叉上的自動應急協調,而不是在日常分岔選擇中發揮積極作用的工具。

驗證程序選擇如何工作,以及什麼是賭注打磨?

在任何基於鏈的證明算法中,都需要一些機制來隨機選擇當前有效的驗證器集中的哪個驗證器可以構成下一個塊。 例如,如果當前活動的驗證器集合由40以太的愛麗絲,30以太的鮑勃,20以太的查理和10以太的大衛組成,那麼你希望愛麗絲有40%的機會成爲下一個創作者, Bob有可能會有30%的機會,等等(實際上,你想隨機選擇一個驗證器,而不是一個驗證器,所以如果Alice沒有出現,有人可以在一段時間後替換她,但這並沒有改變基本問題)。 在基於非鏈的算法中,由於不同的原因也常常需要隨機性。

“磨削”是一類攻擊,驗證者執行一些計算或採取其他步驟嘗試按照自己的偏好來偏向隨機性。 例如:

  1. Peercoin中 ,驗證者可以通過許多參數組合“ 磨礪 ”並找到有利參數,這些參數可以提高他們的硬幣產生有效區塊的可能性。
  2. 在一個現在已經不存在的實現中,塊N + 1的隨機性取決於塊N的簽名。這允許驗證器重複產生新的簽名,直到他們找到允許他們獲得下一個塊的簽名爲止,從而奪取了對系統永遠。
  3. 在NXT中,塊N + 1的隨機性取決於創建塊N的驗證程序。這允許驗證程序通過跳過創建塊的機會來操縱隨機性。 這帶有與塊獎勵相等的機會成本,但是有時候新的隨機種子會給驗證者在接下來的幾十個塊上提供高於平均數量的塊。 在這裏看到更詳細的分析。

(1)和(2)易於解決; 一般的做法是要求驗證人事先妥善存放他們的硬幣,而不要使用易於操作的信息作爲隨機性的源數據。 (3)解決問題有幾種主要策略。 首先是使用基於祕密共享確定性閾值簽名的方案,並使驗證器協同生成隨機值。 這些方案對所有操作都是強大的,除非大多數驗證者勾結(在某些情況下,根據實施情況,33-50%的驗證人可能干擾操作,導致協議擁有67%的活性假設)。

其次是使用密碼經濟方案,其中驗證者事先提交信息(即發佈sha3(x) ),然後必須在塊中發佈x; 然後x被添加到隨機池中。 有兩個理論上的攻擊媒介:

  1. 在承諾時間處理x 。這是不切實際的,因爲隨機性結果會考慮許多參與者的價值觀,如果他們中的一個是誠實的,那麼產出將是一個統一的分配。均勻分佈與任意多個任意偏差分佈異或,仍然可以得到均勻分佈。
  2. 有選擇地避免發佈塊。然而,這種攻擊會花費一個區塊獎勵機會成本,並且由於該方案阻止任何人看到除未來驗證者之外的任何未來驗證者,所以它幾乎從不提供超過一個區塊獎勵值得的收入。唯一的例外情況是,如果驗證程序跳過,則下一個驗證程序在行,並且驗證程序的第一個孩子將是同一個驗證程序; 如果這些情況是一個嚴重的問題,那麼我們可以通過明確的跳過懲罰懲罰進一步跳過。

第三個是使用Iddo Bentov的“多數信標”,它通過獲取通過其他信標產生的先前的N個隨機數的位大部分來產生隨機數(即,如果大多數信標的結果的第一位是1源數字中的第一個比特爲1,否則爲0,如果源數字中的大部分第二個比特爲1,則結果的第二個比特爲1,否則爲0等)。這給出了一個低成本的開採的~C * sqrt(N)地方C是底層信標開採成本。因此,總而言之,存在許多已知的放樣磨削解決方案;問題更像差分密碼分析而不是停止問題 - 一個讓利益相關者設計師最終理解並現在知道如何克服的證據的煩惱,而不是一個根本性和不可避免的缺陷。

相當於對卡斯帕51%的攻擊是什麼樣子?

“51%攻擊”的最基本形式是簡單的終結性回覆:驗證人已經完成了A塊,然後完成了一些競爭性塊A’,從而打破了區塊鏈的最終保證。在這種情況下,現在存在兩個不兼容的最終歷史記錄,創建區塊鏈的分割,完整節點願意接受,因此社區需要協調帶外以專注於其中一個分支並忽略其他)。

這種協調可以通過社交媒體,通過區塊資源管理提供商之間的私人渠道,企業和交易所,各種在線討論形式等進行。根據該決定將進行的原則是“哪一個是完成第一次是真正的一個”。另一種選擇是依靠“市場共識”:兩家分支機構將在短時間內在交易所進行短暫交易,直到網絡效應迅速使其中一個分支機構更有價值。在這種情況下,“首先確定的連鎖贏利”原則將成爲市場選擇的Schelling點。這兩種方法的組合很可能會在實踐中得到應用。

一旦對哪個鏈是真實的一致達成共識,用戶(即驗證者和輕量級和完整節點操作員)將能夠通過接口中的特殊選項手動將獲勝塊散列插入到其客戶端軟件中,並且他們的節點將忽略所有其他連鎖店。無論哪條鏈獲勝,都有證據表明可以立即用來摧毀至少1/3的驗證人存款。

另一種攻擊是活性否定:不是試圖恢復塊,而是驗證者> 34%的卡特爾可能會拒絕最終確定更多塊。在這種情況下,塊永遠不會最終確定。 Casper使用混合鏈/ BFT風格的共識,所以區塊鏈仍然會增長,但它的安全性要低得多。如果一段時間內(例如1天)沒有任何塊被完成,那麼有幾種選擇:

  1. The protocol can include an automatic feature to rotate the validator set. Blocks under the new validator set would finalize, but clients would get an indication that the new finalized blocks are in some sense suspect, as it’s very possible that the old validator set will resume operating and finalize some other blocks. Clients could then manually override this warning once it’s clear that the old validator set is not coming back online. There would be a protocol rule that under such an event all old validators that did not try to participate in the consensus process take a large penalty to their deposits.
  2. A hard fork is used to add in new validators and delete the attackers’ balances.

在情況(2)中,通過社會共識和可能通過市場共識(即新老驗證者設置的分支在短時間內在交易所進行交易),再次協調分支。在後一種情況下,有一個強有力的論點是,市場會選擇“好人取勝”的分支,因爲這樣的一個連鎖店有證實他們的善意(或者至少與他們的利益一致用戶),對於應用程序開發人員來說,這是一個更有用的鏈。

請注意,這裏介紹了社會協調和協議內自動化之間的一系列響應策略,通常認爲最好儘可能推動自動化解決方案,以儘量減少51%的攻擊和社會攻擊同時發生的風險層(以及市場共識工具,如交易所)。我們可以設想一個實現(1)如果節點在一段足夠長的時間內沒有看到一個新塊被提交,那麼節點自動接受切換到新的驗證器集合,這將減少社會協調的需要,但代價是需要那些不希望依賴社交協調的節點不斷在線。在任何一種情況下,攻擊者都可以設計一個解決方案,讓攻擊者對他們的存款造成大的打擊

更加陰險的攻擊是審查攻擊,其中> 34%的驗證人拒絕最終確定包含某些他們不喜歡的交易的區塊,但否則區塊鏈會繼續運行,並且區塊會繼續最終確定。這可能包括溫和的審查攻擊,只有審查人員干涉某些特定的應用(例如,選擇性地審查諸如雷電之類的交易或閃電網絡是卡特爾竊取資金的相當簡單的方法)交易。

有兩個子情況。第一個是攻擊者擁有34-67%股份的地方。在這裏,我們可以對驗證者進行編程,拒絕完成或構建他們主觀認爲會清楚檢查交易的塊,從而將這種攻擊轉變爲更加標準的活躍攻擊。更危險的情況是攻擊者擁有超過67%的股份。在這裏,攻擊者可以自由阻止任何他們希望阻止的交易,並拒絕在任何包含此類交易的塊上構建。

有兩條防線。首先,因爲以太坊是圖靈完成的,它自然有點抵制審查制度,因爲審查交易具有一定的效果,在某種程度上類似於解決停止問題。由於存在天然氣限制,儘管“簡單”的方法可以打開拒絕服務攻擊漏洞,但這不是不可能的。

這種阻力並不完美,並且有辦法改進它。最有趣的方法是添加協議內功能,交易可以自動調度未來事件,因爲要預測執行預定事件的結果以及由這些預定事件產生的事件是否提前會非常困難。然後驗證程序可以使用模糊事件的混淆序列來存儲它們的以太網,並將攻擊者稀釋到33%以下。

其次,可以引入“積極的分支選擇規則”的概念,其中確定給定鏈是否有效的過程的一部分是試圖與其交互並驗證它不試圖對你進行審查。要做到這一點,最有效的方法是節點重複發送一個事務來安排存儲他們的以太網,然後在最後時刻取消存款。如果節點檢測到審查情況,他們就可以跟蹤存款,因此暫時加入驗證池,將攻擊者稀釋到33%以下。如果驗證卡特爾審查他們的存款嘗試,那麼運行此“活動分支選擇規則”的節點將不會識別該鏈條有效;這會使審查攻擊陷入生存否認攻擊,此時可以通過與其他生存拒絕攻擊相同的方式解決該問題。

這聽起來像是很大程度上依賴於帶外社會協調; 這不危險嗎?

對卡斯帕的襲擊非常昂貴; 正如我們將在下面看到的那樣,對卡斯帕的攻擊花費的成本甚至比購買足夠的採礦權的成本要高得多,甚至不會超過工作鏈證明中永久51%的攻擊力一次又一次地攻擊無用點。因此,上述恢復技術只能用於非常極端的情況; 實際上,工作證明的支持者也普遍表示願意在類似的情況下使用社會協調,例如通過改變工作證明算法。因此,甚至不清楚在證明利益方面進行社會協調的需求大於在工作證明方面的需要。

事實上,我們預計所需的社會協調數量接近於零,因爲攻擊者會意識到,焚燒如此大量的資金以使區塊鏈脫機一兩天是不利的。

MC => MR是否意味着所有具有給定安全級別的共識算法都具有相同的效率(換言之,同樣浪費)?

這是許多人提出的論點,也許在本文中Paul Sztorc最好地解釋。從本質上講,如果你爲人們賺取100美元創造一種方式,那麼人們將願意花費高達99.9美元(包括他們自己的勞動力成本),以獲得它; 邊際成本接近邊際收入。因此,該理論認爲,任何具有給定塊獎勵的算法在試圖獲得獎勵的社會非生產性活動的數量方面同樣是“浪費的”。

這有三個缺陷:

  1. 僅僅說邊際成本接近邊際收入是不夠的;我們也必須設定一個合理的機制,讓某人真正花費這筆費用。例如,如果明天我宣佈從那時起每天我會給100美元給一個給定的十人名單中的一個(使用我的筆記本電腦的/ dev / urandom作爲隨機),那麼任何人都無法發送99美元試圖獲得這種隨機性。要麼他們不在十人名單中,在這種情況下,不管他們做什麼,他們都沒有機會,或者他們在十人名單中,在這種情況下,他們沒有任何合理的方式來操縱我的隨機性,再堅持每天獲得10美元的預期價值。
  2. MC => MR並不意味着總成本接近總收入。例如,假設有一個算法從一些非常大的集合中僞隨機地選擇了1000個驗證器(每個驗證器獲得1美元的獎勵),那麼你有10%的股份,所以平均你得到100,並且花費1美元你可以強制隨機重置(你可以重複這個無限次)。由於中心極限定理,你的獎勵的標準差爲$ 10,並根據數學其他已知結果 N個隨機樣本的預期最大小幅正在M + S * sqrt(2 * log(N))這裏M是平均值,S是標準偏差。因此,進行額外試驗的獎勵(即增加N)急劇下降,例如。 0重新審判你的預期獎勵是100美元,一個重審105.5美元,兩個108.5美元,其中三個110.3美元,其中四個111.6美元,五個112.6美元,六個113.5美元。因此,在五次再審之後,它不值得這樣做。因此,擁有10%股權的經濟動機的攻擊者將無效率地花5美元獲得13美元的額外收入,儘管總收入爲113美元。如果可利用的機制只暴露小機會,經濟損失就會很小;顯然不是這樣的,只有一滴利用率就會帶來整個經濟浪費的洪水氾濫。這一點也將在我們下面關於資本鎖定成本的討論中非常相關。
  3. 股權證明可以以比工作證明低得多的總獎勵得到保證。

那麼資本鎖定成本呢?

將X乙醚鎖定在存款中並不是免費的;它爲乙醚持有者帶來了選擇性的犧牲。現在,如果我有1000乙醚,我可以隨心所欲地做任何事情;如果我將它鎖定在存款中,那麼它就會在那裏呆上幾個月,例如,我沒有這筆錢的保險實用程序來支付突如其來的意外支出。在那段時間內,我也失去了一些自由地將我的令牌分配從以太改變爲以太網;我可以模擬通過賣空相當於交易所存款的數額來賣出以太幣,但這本身帶有成本,包括交換費和支付利息。有人可能會說:不是這種資本鎖定效率低下真的只是一種高度間接的方式來達到與工作證明中存在的經濟效率完全相同的低效率水平嗎?答案是否定的,由於上述兩個原因(2)和(3)。

我們先從(3)開始。考慮一個模型,其中股權存款證明是無限期的,ASIC持續存在,ASIC技術是固定的(即沒有摩爾定律),電費爲零。假設均衡利率爲每年5%。在工作區塊鏈的證明中,我可以花1000美元將它轉換爲礦工,礦工每年會爲我支付每年50美元的獎勵。在股權區塊鏈證明中,我會購買1000美元的硬幣,存入它們(即永久丟失它們),並且每年獲得50美元的獎勵。到目前爲止,情況看起來完全對稱(技術上,即使在這裏,在證明利害關係的情況下,我的硬幣銷燬並不具有破壞性,因爲它使其他人的硬幣更值錢,但我們可以暫時擱置)。 “馬奇諾線”51%攻擊的成本(即。購買比其他網絡硬件更多的硬件)在這兩種情況下增加1000美元。

現在,讓我們依次對我們的模型進行以下更改:

  1. 摩爾定律存在,ASIC每2.772年貶值50%(這是每年連續複合的25%;選擇使數字更簡單)。如果我想保留同樣的“支付一次,永遠賺錢”的行爲,我可以這樣做:我將1000美元投入基金,其中167美元將投入ASIC,其餘833美元將投資於5%的投資;每年41.67美元的股息將足以不斷更新ASIC硬件(假設技術發展完全持續,再次使數學更簡單)。獎勵將降至每年8.33美元;因此,83.3%的礦工會退出,直到系統恢復到平衡狀態,我每年掙到50美元,因此給予相同獎勵的PoW攻擊的馬奇諾線費用下降6倍。
  2. 電力加上維護佔採礦成本的1/3。我們估計最近的採礦統計數據爲1/3:Bitfury的新數據中心之一消耗0.06焦耳/千兆赫,或者60 焦耳/兆赫或0.000017千瓦時/ 焦耳,如果我們假設整個比特幣網絡的效率相似,則我們可以得到27.9千瓦時第二個給出了總計比特幣總量達到167萬TH /秒。中國的電費爲每千瓦時0.11美元,所以這是每秒約3美元,或每天260,000美元。比特幣區塊獎勵加費用是每個BTC 600美元*每塊13 BTC *每天144塊=每天112萬美元。因此,電力本身將佔成本的23%,我們可以將信封估算維護成本降低10%,以獲得1/3的持續成本,2/3的固定成本分攤。這意味着在1000美元的基金中,只有111美元進入ASIC,55美元用於支付持續成本,833美元用於硬件投資;因此馬奇諾線的攻擊成本比我們原來的設置低9倍。
  3. 存款是暫時性的,而不是永久性的。當然,如果我自願永遠堅持下去,那麼這不會改變。但是,我恢復了以前的一些選擇性;我可以隨時在中等時間範圍內(比如4個月)退出。這意味着我願意爲每年50美元的收益投入超過1000美元的乙醚;也許處於平衡狀態,它會像3000美元一樣。因此,Maginot對PoS線路攻擊的成本增加了三倍,所以淨PoS比同樣成本的PoW多出27倍的安全性。

以上內容包含了大量的簡化建模,但是它表明了多種因素對PoS的重視程度,使得PoS在安全性方面獲得更大的優勢。爲什麼這種可疑的多因素爭論傾向於支持PoS 這個論點很簡單:在PoW中,我們直接使用物理定律。在PoS中,我們能夠設計協議,使其具有我們想要的精確屬性 - 總之,我們可以優化對我們有利的物理定律。給我們(3)的“隱藏陷門”是安全模型的變化,特別是弱主觀性的引入。

現在,我們可以談論邊際/全面的區別。在資金鎖定成本的情況下,這非常重要。例如,考慮一個你有100,000美元乙醚的情況。你可能打算長期保存它的很大一部分;因此,鎖定甚至5萬美元的乙醚應該幾乎免費。鎖定80,000美元會稍微不方便,但20,000美元的呼吸室仍然給你一個大的迴旋空間。鎖定9萬美元更成問題,99,000美元是非常棘手的問題,鎖定所有10萬美元是荒謬的,因爲這意味着您甚至沒有足夠的餘額支付基本交易費用。因此,您的邊際成本迅速增加。我們可以將這種狀況與工作證明的狀況區分開來,如下所示:

img

因此,證明利害關係的成本可能遠低於將1個以上ETH存入系統的邊際成本乘以當前存儲的乙醚數量。

請注意,不幸的是,這一論點的這一部分並不完全轉化爲“安全發行水平”的降低。它確實幫助我們,因爲它表明我們可以獲得股權參與的實質證明,即使我們的發行量很低,然而,這也意味着收益的很大一部分將由驗證者作爲經濟剩餘來承擔。

證明利益的交換是否會對工作證明中的集合構成類似的集中化風險?

從集中化的角度來看,比特幣以太坊都需要大約三個池來協調51%的攻擊(比特幣中的4個,撰寫本文時爲Ethereum中的3個)。在PoS中,如果我們假設所有交易所的參與率爲30%,那麼三次交易就足以構成51%的攻擊;如果參與率達到40%,那麼所需的數量將增加到8個。然而,交流將無法參與其中的所有事情。原因是他們需要適應提款。

此外,PoS中的合併不鼓勵,因爲它具有更高的信任要求 - 利益集合證明可以假裝被黑客入侵,破壞參與者的存款並要求其獎勵。另一方面,即使信任是必需的,在沒有自己經營節點的情況下也能夠通過個人的硬幣獲得利息的能力是很多人可能會覺得有吸引力的;總之,中央集權平衡是一個經驗問題,在系統實際運行一段相當長的時間之前,答案是不清楚的。隨着分拆,我們預計集中激勵會進一步減少,因爲(i)對於方差的關注更少,以及(ii)在分片模型中,交易驗證的負擔與投入資本的數量成正比,因此在那裏沒有直接的基礎設施節約。

最後一點是,中央集權對證明利益的危害比工作證明中的小,因爲從成功的51%攻擊中恢復的成本要低得多,一個不需要切換到一個新的挖掘算法。

有沒有經濟的方法來阻止集權?

Vlad Zamfir提出的一個策略是僅部分地破壞被削減的驗證者存款,並將其銷燬的百分比與最近被削減的其他驗證者的百分比成正比。這確保驗證人在發生實際攻擊時會丟失所有存款,但在發生一次性錯誤時只能扣除一小部分存款。這使得安全性較低的放樣策略成爲可能,並且特別激勵驗證者使其錯誤與其他驗證器儘可能不相關(或者理想的是,反相關);這不涉及最大的池,將節點放在最大的虛擬專用服務器提供商上,甚至使用二級軟件實施,所有這些都增加了分散性。

可以在私人/聯合體鏈中使用證據嗎?

一般來說,是的; 任何賭注算法的證明都可以用作私人/聯盟鏈設置中的一致性算法。唯一的變化是驗證者集合的選擇方式會有所不同:它將以每個人都同意的一組可信用戶開始,然後由驗證者集合對添加新驗證器進行投票。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章