对于桩块链系统的一些证明,如果节点在投注过程中下降,就会受到惩罚。如果ETH2.0签入节点发生故障,会有某种惩罚吗?如果没有的话,如何才能阻止工作人员在他们的节点上、下供电,从而扰乱网络呢?
发布于 2020-04-02 02:41:29
是的,离线是有惩罚的。在“正常”(非活动泄漏)情况下,验证器每年在离线时损失大约15.8%的股份。离线一个月占1.4%,离线一周占0.3%。
具体来说,未能创建认证的验证者将受到惩罚。当网络无法最终敲定(正如@提到的那样)时,这些处罚就更加严厉了。这些严厉的惩罚也被称为“无活动泄漏”,其目的是(通过减少平衡)快速推出脱机验证器,这样在线验证器就可以构成大多数并恢复最后定稿。
在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%的惩罚是不变的,但你希望你能对离线惩罚的程度有一个了解。
注意:这些值以前是以3的倍数关闭的,现在已经更新了。我很抱歉。
发布于 2020-04-01 18:49:30
是的,离线是有惩罚的。引用https://ethos.dev/beacon-chain/的文章:
基本上,如果自终结以来有四个以上的时期,所有验证器都会遭受不活动的惩罚,这种惩罚会二次增加,直到检查点最后确定为止。
您可以在前面的文章中检查一下“时代”是什么意思。
https://ethereum.stackexchange.com/questions/82067
复制相似问题