權益證明獎勵與罰則
以太坊使用其原生加密貨幣以太幣 (ETH) 來確保安全。希望參與驗證區塊並識別鏈頭的節點營運者,會將以太幣存入以太坊上的存款合約。然後,他們會獲得以太幣作為報酬,以執行驗證者軟體,該軟體會檢查透過點對點網路接收到的新區塊的有效性,並套用分叉選擇演算法來識別鏈頭。
驗證者有兩個主要角色:1) 檢查新區塊,如果有效則對其進行「證明」;2) 當從所有驗證者池中隨機選中時,提出新區塊。如果驗證者在被要求時未能完成這兩項任務中的任何一項,他們就會錯失以太幣的支付。驗證者有時還負責簽章聚合和參與同步委員會。
還有一些行為很難是不小心造成的,並表示有某種惡意意圖,例如為同一個時槽提出多個區塊,或為同一個時槽證明多個區塊。這些是「可罰沒」的行為,會導致驗證者在被移出網路之前銷毀一定數量的以太幣(最多 1 ETH),這個過程需要 36 天。被罰沒的驗證者的以太幣會在退出期間慢慢流失,但在第 18 天,他們會受到「相關性懲罰」,當同一時間有更多驗證者被罰沒時,這個懲罰會更大。因此,共識機制的誘因結構會獎勵誠實行為並懲罰不良行為者。
所有的獎勵和罰則每個紀元套用一次。
繼續閱讀以了解更多詳細資訊...
獎勵與罰則
獎勵
當驗證者進行與大多數其他驗證者一致的投票、提出區塊以及參與同步委員會時,他們會獲得獎勵。每個紀元的獎勵價值是根據 base_reward 計算出來的。這是計算其他獎勵的基礎單位。base_reward 代表驗證者在最佳條件下每個紀元獲得的平均獎勵。這是根據驗證者的有效餘額和活躍驗證者的總數計算出來的,如下所示:
base_reward = effective_balance * (base_reward_factor / (base_rewards_per_epoch * sqrt(sum(active_balance))))
其中 base_reward_factor 為 64,base_rewards_per_epoch 為 4,而 sum(active balance) 是所有活躍驗證者質押的以太幣總額。
這意味著基礎獎勵與驗證者的有效餘額成正比,與網路上的驗證者數量成反比。驗證者越多,整體發行量越大(因為 sqrt(N)),但每個驗證者的 base_reward 越小(因為 1/sqrt(N))。這些因素會影響質押節點的 APR。請在 Vitalik 的筆記 (opens in a new tab)中閱讀其基本原理。
總獎勵的計算方式是五個組成部分的總和,每個組成部分都有一個權重,決定了每個組成部分對總獎勵的貢獻程度。這些組成部分是:
1. 來源投票:驗證者已及時為正確的來源檢查點投票
2. 目標投票:驗證者已及時為正確的目標檢查點投票
3. 鏈頭投票:驗證者已及時為正確的鏈頭區塊投票
4. 同步委員會獎勵:驗證者已參與同步委員會
5. 提案者獎勵:驗證者已在正確的時槽中提出區塊
每個組成部分的權重如下:
TIMELY_SOURCE_WEIGHT uint64(14)
TIMELY_TARGET_WEIGHT uint64(26)
TIMELY_HEAD_WEIGHT uint64(14)
SYNC_REWARD_WEIGHT uint64(2)
PROPOSER_WEIGHT uint64(8)
這些權重總和為 64。獎勵的計算方式是適用權重的總和除以 64。一個及時進行了來源、目標和鏈頭投票、提出區塊並參與同步委員會的驗證者可以獲得 64/64 * base_reward == base_reward。然而,驗證者通常不是區塊提案者,因此他們的最大獎勵是 64-8 /64 * base_reward == 7/8 * base_reward。既不是區塊提案者也不在同步委員會中的驗證者可以獲得 64-8-2 / 64 * base_reward == 6.75/8 * base_reward。
為了鼓勵快速證明,還增加了一項額外獎勵。這就是 inclusion_delay_reward。其值等於 base_reward 乘以 1/delay,其中 delay 是區塊提案和證明之間相隔的時槽數量。例如,如果在區塊提案的一個時槽內提交證明,證明者將獲得 base_reward * 1/1 == base_reward。如果證明在下一個時槽到達,證明者將獲得 base_reward * 1/2,依此類推。
區塊提案者會因為區塊中包含的每個有效證明而獲得 8 / 64 * base_reward,因此獎勵的實際價值會隨著證明驗證者的數量而增加。區塊提案者還可以透過在其提出的區塊中包含其他驗證者不當行為的證據來增加獎勵。這些獎勵是鼓勵驗證者誠實的「胡蘿蔔」。包含罰沒的區塊提案者將獲得 slashed_validators_effective_balance / 512 的獎勵。
罰則
到目前為止,我們考慮的都是表現完美的驗證者,但是那些沒有及時進行鏈頭、來源和目標投票,或者投票速度很慢的驗證者呢?
錯過目標和來源投票的罰則,等於證明者如果提交了這些投票本應獲得的獎勵。這意味著獎勵不會加到他們的餘額中,而是從他們的餘額中扣除同等價值。錯過鏈頭投票沒有罰則(即鏈頭投票只會獲得獎勵,從不受到懲罰)。與 inclusion_delay 相關的沒有罰則——獎勵只是不會加到驗證者的餘額中。未能提出區塊也沒有罰則。
在共識規範 (opens in a new tab)中閱讀更多關於獎勵與罰則的資訊。獎勵與罰則在 Bellatrix 升級中進行了調整——請觀看 Danny Ryan 和 Vitalik 在這部 Peep an EIP 影片 (opens in a new tab)中討論此事。
罰沒
罰沒是一項更嚴厲的行動,會導致驗證者被強制移出網路,並伴隨著其質押以太幣的損失。驗證者被罰沒的方式有三種,所有這些都等同於不誠實地提出或證明區塊:
- 為同一個時槽提出並簽署兩個不同的區塊
- 證明一個「包圍」另一個區塊的區塊(實際上改變了歷史)
- 透過為同一個區塊的兩個候選者進行證明來「雙重投票」
如果偵測到這些行為,驗證者就會被罰沒。這意味著對於一個 32 ETH 的驗證者,會立即銷毀 0.0078125 ETH(與活躍餘額呈線性比例),然後開始 36 天的移除期。在這個移除期間,驗證者的質押會逐漸流失。在中點(第 18 天)會套用額外的懲罰,其幅度與罰沒事件發生前 36 天內所有被罰沒驗證者的總質押以太幣成正比。這意味著當有更多驗證者被罰沒時,罰沒的幅度就會增加。最大罰沒是所有被罰沒驗證者的全部有效餘額(即,如果有大量驗證者被罰沒,他們可能會失去全部質押)。另一方面,單一、孤立的罰沒事件只會銷毀驗證者質押的一小部分。這種隨著被罰沒驗證者數量而增加的中點懲罰被稱為「相關性懲罰」。
不活躍漏損
如果共識層已經超過四個紀元沒有達成最終性,就會啟動一個名為「不活躍漏損」的緊急協定。不活躍漏損的最終目的是創造鏈恢復最終性所需的條件。如上所述,最終性需要總質押以太幣的 2/3 絕對多數同意來源和目標檢查點。如果代表超過總驗證者 1/3 的驗證者離線或未能提交正確的證明,那麼 2/3 的絕對多數就不可能最終確定檢查點。不活躍漏損會讓屬於不活躍驗證者的質押逐漸流失,直到他們控制的質押少於總質押的 1/3,從而允許剩餘的活躍驗證者最終確定鏈。無論不活躍驗證者池有多大,剩餘的活躍驗證者最終將控制 >2/3 的質押。質押的損失是促使不活躍驗證者盡快重新活躍的強烈誘因!在 Medalla 測試網上曾遇到過不活躍漏損的情況,當時只有 < 66% 的活躍驗證者能夠對區塊鏈的當前鏈頭達成共識。不活躍漏損被啟動,最終性最終得以恢復!
共識機制的獎勵、罰則和罰沒設計鼓勵個別驗證者表現正確。然而,從這些設計選擇中產生了一個系統,該系統強烈鼓勵驗證者在多個客戶端之間平均分佈,並應強烈抑制單一客戶端的主導地位。
進一步閱讀
- 升級以太坊:誘因層 (opens in a new tab)
- 以太坊混合 Casper 協定中的誘因 (opens in a new tab)
- Vitalik 的註解規範 (opens in a new tab)
- Eth2 預防罰沒提示 (opens in a new tab)
- EIP-7251 下的罰沒懲罰分析 (opens in a new tab)
來源