Eth2.0 Staking 的激勵機制的需要知道哪些?從設計原理上去探討獎勵 (rewards)、懲罰 (penalties) 和罰沒 (slashings) 的實現形式。或者可以先從 一文讀懂 ETH2.0 的 Staking 機制 開始學習。

原文標題:《一文詳解 Eth2.0 Staking 的激勵機制》(Validated, staking on eth2: #1 - Incentives)
撰文:Carl Beekhuizen
翻譯:Jhonny

歡迎歸來!在上一篇《以太坊基金會:參與 Eth2 Staking (第 0 篇)》文章中我們討論了 Eth2 的設計原理,今天我們將重點從該設計原理的角度來看待 Eth2 的激勵機制。更具體地來說,我們將探討影響 Eth2 的激勵機制以及它們是如何以獎勵 (rewards)、懲罰 (penalties) 和罰沒 (slashings) 的形式得以實現的。

然後我們再探討一下驗證者如何以及爲什麼被激勵保持在線,爲何你不會因爲離線而被罰沒,等等。我們開始深入探討吧。

如果不會因爲離線而被罰沒,那什麼情況下會被罰沒?

罰沒 (slashing) 有兩個目的:

(1) 爲了使得攻擊 Eth2 的成本非常高昂;

(2) 通過檢查驗證者是否真正執行了他們的職責,從而阻止他們疏忽職守。

對驗證者進行罰沒,是指如果驗證者的行爲具有可證實的破壞性時,將會銷燬 (一部分) 驗證者的質押金 (stake)。在 Eth2 階段 0 期間,驗證者會因爲兩種惡意行爲被罰沒:雙重投票 (double voting) 和 環繞投票 (surround voting),詳情可參閱有關 Casper FFG 如何運作的具體細節的初始論文。

雙重投票就是驗證者在同一個 epoch 期間對兩個不同的區塊進行投票,這意味着該驗證者表現出對兩個不同版本的現實的支持。爲何這種行爲會被禁止的一個最簡單的例子就是,驗證者在區塊 $A$ 種發送了一筆交易 $a$,在區塊 $B$ 種發送了一筆交易 $b$,其中交易 $a$ 和交易 $b$ 花費了等值的 ETH。這就是典型的 PoS (權益證明) 版雙花攻擊。

環繞投票導致的的罰沒也通過懲罰那些創建了呈現多個不同版本的現實的投票的驗證者 (他們聲稱這些不同版本都是真實的),以便阻止兩個不同版本的鏈被敲定。更具體地說,當驗證者對某個版本的現實進行投票,之後又對另一個版本進行投票,且是以一種並不表明該驗證者不再相信前一個版本的現實的方式進行投票,那麼該驗證者的這些證明 (attestations,也即投票) 就是環繞投票。(備註:關於雙重投票和環繞投票的更多信息,請參閱:《以太坊 2.0:如何實現最終性?》)

在階段 0 期間,雙重投票和環繞投票是唯一會導致驗證者被罰沒的情況,但 Eth2 之後的階段增加了其他的規則,目的是確保驗證者實際上會存儲並使其簽署的分片數據可用 (這可以阻止驗證者疏忽職守或者隱瞞信息)

在正常的操作中,以正確的方式遵循協議規則的驗證者不會創建能導致罰沒的投票。除非是蓄意的惡意行爲,不然創建一條會被罰沒的消息只會是因爲存在 bug 或者意外情況而發生。

爲了將這些非蓄意性的錯誤導致的懲罰最小化,被銷燬的質押金的數量會與在同一時間被罰沒的其他驗證者的數量成比例 (備註:即同一時間被罰沒的驗證者數量越多,被銷燬的質押金就越多)。如果只有很少的驗證者做出了某個會被罰沒的行爲,這不太可能是他們正在試圖攻擊 Eth2 鏈,因爲成功的攻擊將需要很多的驗證者。

因此,發生在少數驗證者身上的罰沒會被認爲是無心之過 (honest mistakes),相應的懲罰也是很輕微的 (最低限度是罰沒 1 ETH)。

另一方面,如果很多的驗證者幾乎同時做出惡意行爲,那很大一筆數量的質押金將會被銷燬 (上限是銷燬驗證者的所有餘額),因爲這種情況會被視爲對網絡的攻擊。

被罰沒的驗證者將被阻止繼續參與到協議中,並會被強制退出。在「無心之過」的情況下,強制退出的方式可以防止那些犯錯的驗證者繼續因再次被罰沒而蒙受損失;而在惡意攻擊的情況下,這種強制退出的方式可以將這部分驗證者從協議中移除出去。(備註:不管是「無心之過」的驗證者還是惡意驗證者,一旦被罰沒就都會被驅逐出去)

離線的驗證者會發生什麼?

當驗證者應該參與協議的驗證工作但卻離線時,會被懲罰,在正常情況下,這隻會讓驗證者失去他們本可以通過正確的方式參與協議驗證時所獲得的獎勵。

這意味着,如果驗證者 50% 以上的時間都是在線的,他們的質押金依舊會隨着時間的推移而增加。

這種機制帶來的結果是,對於需要離線的驗證者客戶端 (比如因爲需要進行維護) 來說,最好是離線一小段時間,而不應採取從協議中退出,之後再重新加入的方式 (因爲退出和重新加入都會存在延遲性)。

這意味着,驗證者無需在備份客戶端或者多餘的互聯網連接方面花費過多的時間,因爲離線帶來的影響並不嚴重。事實上,系統中如果主客戶端和備份客戶端都可以對消息進行簽名,那這對於任何系統來說都是有害的,因爲主客戶端和備份客戶端可能會同時在線,進而導致創建了可被罰沒的投票 (也即上文提及的雙重投票),而這正是 Cosmos 的第一例罰沒案例出現的情況。

這種離線懲罰的機制成立的前提是區塊正在被敲定 (即有 2/3 的驗證者 (權益加權) 在線且他們的投票正在被覈計)。這是 Eth2 正常運行時期望的狀態。

如果少於 2/3 的驗證者在線,那麼這意味着 Eth2 中發生了災難性的錯誤,在這種情況下,以太坊的 Casper 共識協議將不再能夠達成共識。

如果超過 1/3 的驗證者離線,Eth2 會做什麼?

如果超過 1/3 的驗證者離線了,這些離線的驗證者就會面臨被稱爲 inactivity leak 的懲罰。隨着時間的推移,Inactivity leak 懲罰會減少離線節點的餘額 (當餘額低於 16 ETH 時,驗證者會被強制退出),如此一來,在線驗證者占驗證者總數的比率就可以再次超過 2/3,這樣 Eth2 就可以繼續以協議的形式達成共識了。

Inactivity leaks 是在 Eth2 的設計中使其能夠從諸如第三次世界大戰之類的事件中得以倖存下來的方式之一。如果諸如此類的事件發生並導致超過 1/3 的驗證者離線,那麼這些離線的驗證者會發現他們的餘額將減少至 Eth2 區塊鏈不再需要他們參與的地步。

反相關性 & 去中心化

Slashing (罰沒) 機制和 Inactivity leak 機制都會鼓勵驗證者以不同於其他驗證者的方式來做出可能帶來自身節點失效的決策。也就是說,爲了確保面臨儘可能小的 Salshing 懲罰和防止出現 Inactivity leaks 懲罰,驗證者應該嘗試讓自己的客戶端不會以與其他驗證者同樣的方式失效 (備註:也即使自己的行爲與其他驗證者的行爲沒有相關性)

這給所有的驗證者帶來了壓力,即需要將驗證者的各個方面實現去中心化,比如如果依賴於相同真相來源 (比如使用 Infura) 或者使用 AWS 來託管自己的客戶端的驗證者,一旦它們出現問題,那驗證者將面臨更糟糕的情況 (懲罰)。

既然存在很多的懲罰方式,那爲何還要成爲驗證者呢?

正如在上一篇文章中所提到的,「Eth2 的假設是,驗證者很懶,會收受賄賂,而且還會試圖攻擊系統,除非能激勵他們不這樣做。」 我們截至目前討論的懲罰是爲了抑制不良行爲,但也需要通過獎勵 (rewards) 來激勵驗證者做出有益於 Eth2 的行爲。

存在三種類別的獎勵:

01. 檢舉者的獎勵

通過提供使其他驗證者被罰沒的證明 (proof),驗證者可以獲得獎勵,因爲這種行爲有益於 Eth2 網絡。

02. 區塊提議者的獎勵

驗證者會被隨機地分配生產區塊的職責;被選中的驗證者成爲區塊提議者 (proposer)。區塊提議者將會通過以下方式獲得獎勵:

  • 打包一份來自檢舉者的證明 (proof),且該證明使得某個驗證者被罰沒;
  • 打包來自其他驗證者的證明 (attestations,也即所謂的「投票」)
  • 當驗證者被選中成爲區塊生產者 (提議者) 時,這些獎勵將會激勵他們向 Eth2 鏈提供有益的信息。

03. 證明者的獎勵

驗證者的證明 (attestations) 就是表明驗證者同意 Eth2 中的某個決定的投票 (votes)。這些類型的信息構成了 Eth2 共識的基礎,並通過以下 5 種方式獲得獎勵:

  • 獲取你的鏈上證明;
  • 與其他驗證者就區塊鏈的歷史記錄達成共識;
  • 與其他驗證者就區塊鏈的最前部分 (head of the chain) 達成共識;
  • 快速地讓你的證明上鍊 (也即被打包)
  • 在指定的分片中指向正確的區塊。

擴展驗證者的收益

在 PoS 系統中,有兩種常見的獎勵驗證者的方式:固定的獎勵 (fixed rewards) 和固定的通脹 (fixed inflation)。

在固定的獎勵模式中,每個驗證者因履行職責而獲得固定的獎勵,系統中的通脹率取決於加入系統的驗證者的數量 (備註:即驗證者數量越多,獎勵的總數就越多,通脹率就越高)。這種模式存在如何正確地設置獎勵率的問題。如果獎勵率設置得太低,那參與進來的驗證者就會較少;如果太高,則會激勵在必要的系統安全性之外的驗證活動,並導致資金的浪費 (也即通脹率過高)。

更受歡迎的是固定的通脹模式,在這種模式中,一筆總獎勵會分配給所有的活躍驗證者。這種模式的好處在於允許市場力量 (market force) 來發現支付給驗證者的正確獎勵額度,因爲驗證者都是根據當前的獎勵收入來自行決定是否參與進來。

但這種模式也有缺陷。驗證者的獎勵可能是不穩定的,這使得對於個體驗證者來說,很難做出盈利性決策;這種模式還使得協議容易受到所謂的「泄氣攻擊」(discouragement attack),這種攻擊中,驗證者會試圖阻止其他驗證者參與進來,從而提高自己的獎勵 (即便自己會受到暫時的損失)。

Eth2 旨在選擇一個兩全其美的獎勵模式,在這個獎勵模式中,驗證者的獎勵與抵押的 ETH 總量的平方根成正比。這種混合的獎勵模式試圖抑制通脹率的變化和驗證者的回報率,同時依舊允許市場力量來決定支付給驗證者 (因向系統提供安全性而獲得) 的正確獎勵金額。(備註:相關閱讀:《觀點 | 被低估的 ETH 貨幣政策》)

抱最高的希望,做最壞的打算

Eth2 的激勵機制的每個方面都是根據上一篇文章 (《以太坊基金會:參與 Eth2 Staking (第 0 篇)》) 所闡述的協議設計理念的結果。比如反相關性機制有利於去中心化,Inactivity leaks 懲罰有助於幫助 Eth2 從諸如第三次世界大戰等事件中倖存,但支撐 Eth2 的激勵機制起作用的主要理念是這一假設:「Eth2 的假設是,驗證者很懶,會收受賄賂,而且還會試圖攻擊系統,除非能激勵他們不這樣做。」如果有人以文本提及的其中一種方式來攻擊 Eth2,那該攻擊者最好準備好損失大量的 ETH,因爲不管怎樣,攻擊者都會損失所有的資金。

來源鏈接:blog.ethereum.org