感謝 Joseph Schweitzer 和 Danny Ryan 的審校。又見面了!在上期開篇文章中我們討論了 eth2 的設計理念,本文將透過設計理念主要談談 eth2 的激勵機制。更確切地說,我們將探析在 eth2 中舉足輕重的激勵機制,以及如何通過獎勵、懲罰和罰沒(slashing) 的形式得以實現。本文源自於 Ethereum 的 Carl Beekhuizen 之文章 《Validated, staking on eth2: #1 – Incentives》,由專欄作者 以太坊愛好者編譯、撰寫及整理。
(上一章:以太坊 2.0 最新 Staking 指南〈零〉:Eth2 的各個階段)
之後我們會再談到如何以及為何激勵驗證者保持在線,為何驗證者離線不會被罰沒等等話題。我們開始吧!
延伸閱讀:解讀|Reddit 的「社群代幣發行」進入 Beta 測試,對以太坊意味著什麼?
如果不是因為離線,那什麼情況下會被罰沒(slashings)?
罰沒主要出於兩個目的:(1) 讓攻擊eth2的代價貴到令人望而卻步;(2) 查核驗證者是否真正履行了職責,防止驗證者消極怠惰。
對驗證者進行罰沒,是指如果驗證者被證實存在破壞行為,其(部分)質押金將被銷毀。在 eth2 階段 0 時期,驗證者主要會因為兩種惡意行為被罰沒:雙重投票(double voting)和環繞投票(surround voting),有關細節參見 Casper FFG 運行機制的論文。
雙重投票,即驗證者在同一個 epoch 中對兩個不同區塊進行投票,這也就意味著驗證者對兩種對立的現實版本都表示了支持。需要禁止該行為最直觀的原因就是,惡意驗證者可以在區塊 A 中發送了一筆交易 a,在區塊 B 中發送了一筆交易 b,且交易 a 和交易 b 花費了等值的 ETH 。因此雙重投票可以被看做是 PoS 版本的雙花攻擊(double-spend attack)。
環繞投票也是通過罰沒來懲罰惡意投票的驗證者,以防止其同時創造多個不同的現實版本,避免了兩個不同的鏈被最終確認(finalize)。
延伸閱讀:區塊鏈共識與最終性簡史:從比特幣的 POW 到 Polkadot 的混合共識機制
延伸閱讀:科普|企業以太坊聯盟(EEA)在做什麼?企業以太坊區塊鏈有哪些規格?
投票
具體地說,當驗證者對某個現實版本進行投票,然後又對另一個版本進行投票,但並沒有表明他們不再信任第一個版本,那麼該驗證者的這些證明(attestations)就是環繞投票。(譯者註:這裡說得太繞了。簡單來說,Casper FFG 在敲定(finalize)區塊的時候,同時也需要指定一個該區塊的後代區塊作為辯護區塊;之後,驗證者只能選擇敲定這個辯護區塊(及以後的區塊),而不能敲定上一個已敲定區塊與辯護區塊之間的其它區塊,如果這麼做了,就是所謂的「環繞投票」。可以畫個圖來看看)
在階段 0 中,雙重投票和環繞投票行為是唯二會導致驗證者被罰沒的情況,但之後的階段中會增加其他規則,以確保驗證者真正履行其職責,存儲其簽署的分片數據且使數據可用,防止驗證者消極怠惰或隱瞞訊息。
正確遵循協議且操作正常的驗證者不會創建可能導致罰沒的投票。但無心作惡時,驗證者也可能因為軟件 bug 或偶然原因而發出會導致罰沒的消息。那麼出現這種情況怎麼辦?
為了將這種意外損失降低到最小,被銷毀的質押金會與同時段被罰沒的驗證者數量成一定比例。因為如果只有數量很少的驗證者進行了被罰沒的行為,那麼就不太可能是試圖對 eth2 鏈發起攻擊(因為攻擊成功需要大量的驗證者)。
因此,如果只有少數驗證者被罰沒,那麼其行為會被認定為無心之過,懲罰力度也不會很大(最低罰沒金額為 1 ETH)。反之,如果大量驗證者幾乎同時產生不當行為,那麼他們的質押金很大一部分則會被銷毀(最高罰沒金額為全部餘額),因為這種情況會被視作針對網路的攻擊行為。
被罰沒的驗證者不能繼續參與協議,並且會被強制退出。如果驗證者是無心之過,那麼這種措施可以防止犯錯的驗證者一錯再錯,被重複罰沒;如果是網路攻擊的情況,則可以將惡意的驗證者從協議中踢出。
驗證者下線了又會怎樣?
如果在本應該參與協議執行驗證工作的時候離線,離線的驗證者會被懲罰,而在正常情況下,離線只會使得驗證者失去他們本可以通過驗證工作所獲取的獎勵。也就是說,如果驗證者 50% 以上的時間在線,他們的質押餘額會隨時間推移增加。
這種機制帶來的結果是,對於需要離線進行維護等工作的驗證者客戶端,最好是選擇短時間離線,而不是採取退出協議再重新加入的方式(因為退出和進入都存在相關延遲)。
這也就意味著,減輕了驗證者在客戶端備份和網路延遲上的負擔,因為離線的懲罰並不那麼嚴重。實際上,如果一個驗證者係統中有兩個實體可以對消息進行簽名,可能會帶來負面影響,因為主客戶端和備份客戶端有可能同時在線,進而導致創建可能導致罰沒的投票(即上文提及的雙重投票),Cosmos 的首個罰沒案例就是這樣發生的。
這種離線懲罰機制能夠成立的前提是區塊正在被最終確認,即有 2/3 的驗證者(按權益加權)在線並且保證及時投票。這是 eth2 在正常情況下應該達到的預期狀態。如果少於 2/3 的驗證者在線,就說明 eth2 中發生了災難性的錯誤。在這種情形下,(以太坊 Casper)所屬的共識協議族是無法實現共識的。
如果超過 1/3 的驗證者離線, eth2 會作何反應?
如果發生這種情況,那麼這些離線的驗證者就會面臨 inactivity leak(消極)懲罰。隨著離線時間推移,受到 inactivity leak 懲罰的離線節點會被扣減餘額,如此一來,在線驗證者佔驗證者總數(權益加權)的比例就能夠再次超過 2/3,使得 eth2得以繼續運行協議。
諸如 Inactivity leak 此類的設計,使得 eth2 具備從災難性事件中倖存下來的能力。如果這種災難性狀況導致超過 1/3 的驗證者離線,那麼這些離線驗證者會發現他們的餘額不斷被扣減,直至他們的餘額對eth2 的繼續運行無足輕重。
反相關性 & 去中心化
罰沒機制和 inactivity leak(消極懲罰)機制促使驗證者在作出可能導致自己被懲罰的懲罰時與其他驗證者保持差異化。也就是說,為了確保自己受到的罰沒盡可能輕微、不受到 inactivity leak 懲罰,驗證者應該會努力保證不要在同一時間跟其他客戶端陷入同一種錯誤。
這給所有驗證者施加了壓力,他們需要將作為驗證者的方方面面都去中心化,例如,如果驗證者都依賴於相同的現實來源(如Infura)或是都藉助 AWS 來託管客戶端,一旦這些方面發生什麼錯誤,驗證者們會面臨更為嚴厲的懲罰。
延伸閱讀:ETHFANS 專欄|什麼是以太坊 2.0 測試網?如何參與獲得測試幣?
有這麼多懲罰機制,那驗證者是否吃力不討好?
正如在上期文章中所說,「如果缺乏必要的激勵措施,驗證者就有可能偷懶、收受賄賂甚至嘗試攻擊網路」。上文所提到的懲罰機制是為了防止作惡行為,但同時也需要通過獎勵來激勵驗證者為 eth2 進行有益工作。驗證者獎勵主要分為三類:
檢舉者獎勵
通過提供證明,向網路發起某驗證者正在作惡的警告,這些驗證者能夠因其為eth2 掃除不利而獲得獎勵。
區塊提議獎勵,驗證者會被隨機地分配產生區塊的任務,被選中的驗證者就是「區塊提議者」(proposer)。區塊提議者能夠通過以下方式獲得獎勵:
-
打包來自檢舉者的「某驗證者應被罰沒」 證明; -
打包來自其他驗證者的見證消息(attestations)
當驗證者被選中提議區塊時,獎勵能夠鼓勵其向區塊鏈提供有用訊息。
見證人獎勵
見證消息(attestations)是表明驗證者同意 eth2 中某個決定的投票。這類訊息構成了eth2 的共識基礎,見證人則會因下面 5 個因素而獲得獎勵:
-
見證消息上鏈 -
與其他驗證者就區塊鏈歷史記錄達成共識 -
與其他驗證者就區塊鏈最前部分達成共識 -
因見證消息上鏈的速度快 -
在指定分片中指向正確區塊
開拓驗證者收益
在 PoS系統中,有兩種常見的驗證者獎勵模式:固定獎勵(fixed rewards)和固定通脹(fixed inflation)。
在固定獎勵模式中,驗證者通過履行職責獲得固定數額的獎勵,而通脹率取決於驗證者數量。這種模式需要解決的問題在於如何設置回報率(reward rate)。如果回報率過低。驗證者數量會過少;如果回報率太高,則會衍生出安全性需求之外的驗證行為,並且浪費資金。
因此,使用固定通脹率的模式更受歡迎。在這種模式中,既定數額的獎勵由所有的活躍驗證者瓜分。這種模式的好處在於利用市場的力量來尋求合適的獎勵數額,因為驗證者可以根據當下的收益自行選擇是否參與驗證。
但這種模式也存在一定缺陷。驗證者獎勵有可能是不穩定的,這使得對於個人驗證者來說,很難做出盈利性決策;這種模式還使得協議容易暴露在「洩氣攻擊」 之下,受到這種攻擊時,驗證者會試圖阻止其他驗證者參與進來,以此提高自己的獎勵(即便自己會受到暫時的損失)。
eth2 旨在結合兩種模式的優點:驗證者的獎勵與 ETH 質押總量的平方根成正比。這種混合獎勵模式的好處是在抑制通脹變化和驗證者回報率的同時,依然能夠借助市場力量來決定驗證者的獎勵金額。
抱最大希望,做最壞打算
eth2 激勵機制的方方面面都遵循了上期文章中所闡述的協議設計理念。例如,反相關性機制有助於去中心化,inactivity leaks(消極)懲罰有助於 eth2 具備從災難性事件中倖存下來的能力……但支撐起 eth2 激勵機制的主要理念還是:「如果缺乏必要的激勵措施,驗證者就有可能偷懶、收受賄賂甚至嘗試攻擊網路」。
如果有人試圖用本文中提到的任何一種方式來攻擊 eth2 ,那最好做足損失大量 ETH的準備,因為無論如何,攻擊者都會輸得一無所有。
📍相關報導📍
文組也該知道的區塊鏈技術知識《2》:一次搞懂「以太坊智能合約」如何運作
【新手科普】快速認識以太坊網路的治理全景
以太坊 1.0 和 2.0 有什麼區別?關於 Ethereum 2.0 的 「17 個常見問題」
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務