Proof-of-Stake
ETH 2.0 Staking 節點宕機會受到懲罰嗎?
對於一些權益證明區塊鏈系統,如果節點在權益質押期間出現故障,則會受到懲罰。如果 ETH 2.0 質押節點出現故障,是否會受到某種懲罰?如果沒有它如何阻止質押者打開和關閉他們的節點以擾亂網路?
是的,離線會受到處罰。在“正常”(非活動洩漏)情況下,驗證者在離線時每年損失**大約15.8% 的股份。離線一個月約為 1.4%,一周離線約為 0.3%。
具體來說,未能創建證明的驗證者將受到處罰。當網路未能最終確定時(如@lauri-peltonen 所述),這些懲罰會更加嚴厲。這些嚴厲的懲罰也被稱為“不活動洩漏”,旨在快速驅逐(通過減少餘額)離線驗證者,以便線上驗證者可以形成多數並恢復最終確定。
Eth2 中的懲罰計算並不簡單。除了不活動洩漏之外,懲罰還考慮了驗證者的餘額和所有驗證者的總餘額。為了達到 15.8% 的數字,我使用了以下腳本,該腳本源自規範 Eth2 規範的 v0.11.1:
DEPOSIT_AMOUNT = 32 * 10**9 VALIDATOR_COUNT = 16384 BASE_REWARD_FACTOR = 64 BASE_REWARDS_PER_EPOCH = 4 SECONDS_PER_SLOT = 12 SLOTS_PER_EPOCH = 32 SECONDS_PER_YEAR = 31557600 EPOCHS_PER_YEAR = SECONDS_PER_YEAR // (SECONDS_PER_SLOT * SLOTS_PER_EPOCH) def integer_squareroot(n): """ Return the largest integer ``x`` such that ``x**2 <= n``. """ x = n y = (x + 1) // 2 while y < x: x = y y = (x + n // x) // 2 return x def get_base_reward(total_balance, effective_balance): return effective_balance * BASE_REWARD_FACTOR // integer_squareroot(total_balance) // BASE_REWARDS_PER_EPOCH total_balance = DEPOSIT_AMOUNT * VALIDATOR_COUNT validator_balance = DEPOSIT_AMOUNT for _ in range(EPOCHS_PER_YEAR): penalty = get_base_reward(total_balance, validator_balance) * 3 validator_balance -= penalty total_balance -= penalty total_penalty = DEPOSIT_AMOUNT - validator_balance print("Final balance: {}".format(validator_balance)) print("Total penalty: {}".format(total_penalty)) print("Reduction %: {}".format(100 * total_penalty / DEPOSIT_AMOUNT))
這個腳本的輸出是:
Final balance: 26935963853 Total penalty: 5064036147 Reduction %: 15.825112959375
這是一個非常粗略的近似值(忽略滯後等一些因素),15.8% 的數字非常主觀。在現實世界中,
total_balance
隨著現有驗證者獲得獎勵和新驗證者的加入,這一數字可能會增加。相反,由於不活動洩漏,總餘額可能會減少,懲罰會增加。雖然您不能相信這 15.8% 的 p/a 懲罰是恆定的,但您有望了解離線懲罰的幅度。
注意:這些值以前偏離了 3 倍,現在已經更新。我很抱歉。
是的,離線會受到懲罰。引用https://ethos.dev/beacon-chain/上的文章:
基本上,如果自最終確定以來已經超過四個時期,所有驗證者都會遭受不活動懲罰,該懲罰會以二次方增加,直到最終確定檢查點
您可以在本文前面查看“紀元”的含義。