Vitalik:以太坊 Serenity 設計依據綜述區塊鏈
今天我們為大家分享Vitalik撰文闡述以太坊Serenity階段的設計依據,希望讀者們在閱讀本文之后,能夠更進一步了解以太坊Serenity背后的開發者們是如何來設計這個全新的PoS區塊鏈網絡
2. 為什么選擇“最終化 保證金 罰款”模型呢?
不具備最終化特性的共識算法無法實現這些屬性。
● 驗證者在線率超過50%
Serenity 的分片使用了一種機制,即如果隨機抽樣的驗證者委員會中有2/3的成員對來自某個分片中的區塊進行簽名,那么我們就認為該區塊已被接受。這種機制本身要求平均有大于或等于2/3的驗證者在線以接受任何分片區塊。但如果有超過50%的驗證者在線,那么我們就可以得知:除非網絡中存在顯然會違反協議規則的驗證者,否則我們將得到某種程度的保證,即區塊不會被回滾。因此,我們沒有理由不添加這么一個特性。
● 解決驗證者的困境
所有區塊鏈都存在一個共同的問題,即驗證者沒有足夠的動力去實際驗證他們正在構建的區塊。因為在這個均衡中,如果(幾乎)每個人都是誠實的,那么對于驗證者來說,這些交易根本不值得他們浪費計算資源去校驗。
而在分片鏈中,這些問題被進一步放大了。我們可以通過(利用保管證明 Proofs of Custody)對簽署無效或不可用數據的行為實施大額罰款來緩解這些問題。但是,在實際執行中,實施罰款不僅需要驗證者繳納安全保證金,還要求鎖定期限足夠長,以允許其他用戶校驗驗證者所聲明的數據,并在數據出現錯誤時對其發起質詢。
3. Casper激勵機制中的每個參數的設定標準是什么?
在不同的情況中,實際獎勵的計算方式如下:如果 ? 是最大獎勵值,并且 ? 是執行所需操作的驗證者所占的比例,那么任何執行所需操作的驗證者都將獲得獎勵 ?*?。此外,任何未執行所需操作的驗證者將遭受罰款-?。制定這種“集體獎勵(即“如果有人表現得更好,那么每個人都會表現得更好”)”方案的目的是設定破壞因子的界限(想了解破壞因子的定義及重要性,請參閱:
https://github.com/ethereum/research/raw/master/papers/discouragement/discouragement.pdf)
需要注意的是,我們還要進一步解決兩個難題:
1. 如果該證明被包含在區塊鏈內的時間延遲了,那么獎勵將減少。這是為了激勵驗證者及時發布證明。
2. 提議者將獲得他們所包含的任意證明的獎勵的1/8。這是為了鼓勵提議者充分監聽消息,并盡可能多地接受這些消息。
● 驗證者靜止漏洞
如果鏈條在 ???(time since finality,即達到最終化以后所經歷的時間。其中,??? > 4 個時期內未能保持最終化狀態,那么參與這個過程的驗證者的獎勵將降為零,并且第二個懲罰機制將被載入,該懲罰與 ??? 成比例。這確保了如果超過1/3的驗證者陷入靜止狀態,那么不在線的驗證者將會受到更嚴重的懲罰,并且懲罰隨著時間的推移呈二次方遞增。
? 如果你的離線行為將阻礙區塊的最終化進程的話,那么你將會因為離線這一行為遭受更嚴重的懲罰
? 確保一旦發生超過1/3驗證者離線的情況,由于離線驗證者的保證金在不斷減少,最終驗證者的在線率會回升到2/3。
在當前的參數化條件下,如果區塊無法被最終敲定,那么驗證者在2.6天后將損失1%的保證金,在8.4天后損失10%,在21天后損失50%,以此類推。這意味著,如果發生50%驗證者離線的情況,那么區塊將在21天后重啟最終化進程。
● 罰沒和反相關懲罰
如果某個驗證者被指證刻意違反 Casper FFG 的罰沒條件,那么該驗證者所承擔的罰款會是在與他們大致相同的時間內受到懲罰的驗證者的三倍。這么做是出于以下幾個理由:
? 單個驗證者作惡只會對網絡造成不良影響,但如果他們選擇與其他驗證者同流合污,那么這些隨波逐流的驗證者有必要接受嚴厲的教訓
?這一機制會對實際的攻擊行為實施嚴厲懲罰,但對那些可能是誠實的單個孤立故障節點只實施非常輕微的懲罰
?這一機制確保較小的驗證者所承擔的風險要比較大的驗證者的風險更少(在正常情況下,大型驗證者發生故障所造成的影響相當于一堆小型驗證者同時宕機的結果)
?這一機制能夠有效阻止驗證者“跟大隊走”
● 罰沒和反相關懲罰
如果某個驗證者被指證刻意違反 Casper FFG 的罰沒條件,那么該驗證者所承擔的罰款會是在與他們大致相同的時間內受到懲罰的驗證者的三倍。這么做是出于以下幾個理由:
? 單個驗證者作惡只會對網絡造成不良影響,但如果他們選擇與其他驗證者同流合污,那么這些隨波逐流的驗證者有必要接受嚴厲的教訓
? 這一機制會對實際的攻擊行為實施嚴厲懲罰,但對那些可能是誠實的單個孤立故障節點只實施非常輕微的懲罰
? 這一機制確保較小的驗證者所承擔的風險要比較大的驗證者的風險更少(在正常情況下,大型驗證者發生故障所造成的影響相當于一堆小型驗證者同時宕機的結果)
? 這一機制能夠有效阻止驗證者“跟大隊走”
● 保管證明
當驗證者需要對某個數據為?,根為?的分片區塊進行證明時,驗證者需要計算出?'(其中,?'[?] =???(?[?], ????))以及新數據?'的根?'。然后,驗證者將發布一部分?'作為他們所簽署的內容的一部分,并通過發布 ????(????) 的形式來提交種子。在一定時限內,網絡中的其它節點可以對這些信息進行質詢,并要求驗證者提供他們的????參數、完整的?′值以及 ? 和 ?' 的特定分支,以證明這些數據被正確構造。如果驗證者在質詢期開始之前提前發布????參數,那么他們將受到罰沒懲罰。
構建這種機制是為了緩解驗證者的雙重困境。在該困境中,驗證者可能會出于懶惰而拒絕驗證數據,并假設所有其他驗證者都是誠實的。如果大多數驗證者都這么想的話,那么很可能會導致公地悲劇,最終導致鏈條接受無效的區塊。而在這一機制中,如果驗證者試圖提交沒有經過他們親自處理的數據的話,那么他們將無法計算出?'(如果他們嘗試外包給別人處理,那么外包方可能會背叛他們,并導致他們遭受罰沒懲罰)。一旦這時有其它節點提出質詢,那么這些驗證節點將無法正確回應質詢。出于效率原因,驗證者首先只提交一部分?'。一旦驗證者發布了他們的????參數,那么任何人都可以重做并檢驗他們的計算結果。如果該?'值不正確,那么檢驗者將會發動一系列質詢來炮轟該數據為?′且計算不正確的區塊。
4. 為什么規模是32個ETH驗證者?
5. 隨機抽樣?
6. LMD GHOST 分叉選擇規則
7. 信標鏈/分片鏈結構
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。