在质押32ETH成为验证者后,验证者通过参加验证交易、提出新区块等活动会获得ETH奖励,同时也会因为不良行为而受到处罚,所有的奖励与惩罚在每个epoch中只出现一次,下面将介绍ETH 2.0下的奖励惩罚机制
某一验证者在一个单独的epoch中的奖励是基于base_reward计算而来,base_reward表示在最优化条件下,该验证者在每个时期收到的平均奖励。这是根据验证者的effective_balance和该epoch中活跃验证者总数计算得出的:
base_reward = effective_balance * (base_reward_factor / (base_rewards_per_epoch * sqrt(sum(active_balance))))
effective_balance:该验证者质押的ETH总数base_reward_factor:64base_rewards_per_epoch:4sum(active balance)是该epoch中所有活跃验证者质押的ETH总数
不难发现base_reward与effective_balance成正比关系,与验证者总数成反比(由sum(active balance)体现)。验证者越多,则全网每一个验证者base_reward加总后越多,为了证明这一点,我们不妨假设所有验证者都是活跃验证者,证明如下:
Sum(base_reward) = base_reward × N(全网验证者总数)
= Constant × sqrt(N)
对Sum(base_reward)求导得:Constant / (2 × sqrt(N)) > 0,说明为单调递增函数,即随着N的增加,Sum(base_reward)增加
同时随着N的增加,每一位验证者的base_reward却是逐渐减小的,大家可以自行证明
base_reward可以被分为5个部分,分别计算,每个组成部分都有不同权重,权重之和为64,5个组成部分为(摘自Ethereum官网,我就不翻译了):
source vote: the validator has made a timely vote for the correct source checkpoint
target vote: the validator has made a timely vote for the correct target checkpoint
head vote: the validator has made a timely vote for the correct head block
sync committee reward: the validator has participated in a sync committee
proposer reward: the validator has proposed a block in the correct slot
每个部分对应的权重分别为:
TIMELY_SOURCE_WEIGHT------uint64(14)
TIMELY_TARGET_WEIGHT-------uint64(26)
TIMELY_HEAD_WEIGHT---------uint64(14)
SYNC_REWARD_WEIGHT--------uint64(2)
PROPOSER_WEIGHT-------------uint64(8)
举例:如果一个验证者,他既不在规定slot产生新区块,也不对检查点及时投票(不满足1,5),但其他都做得很好(满足2,3,4),那么他可以获得的奖励就是:
该验证者可获得的奖励 = ((64 - 14 - 8) / 64) × base_reward
除了这5部分的奖励之外,以太坊还设计了inclusion_delay_reward来激励验证者快速验证并投票,计算公式为:
inclusion_delay_reward = base_reward / delay
delay为所验证的区块与发出投票之间间隔的slots数,如果在所验证区块所属的那个slot中就投票,那么取1,如果是在下一个slot再投票,则取2
对于新区块的提出者来说,每一个对新提出区块投支持票的验证者,都会使得该提出者获得base_reward / 8 的奖励,所以获得奖励的数量与参与验证投票的验证者数量有关,同时,新区块的提出者也可以将其他验证者不良行为的证据打包在新区块中,来获得更多奖励,当新区块中包含其他验证者的可罚没行为(slashing,后面会讲到)的证据时,该区块提出者将获得:slashed_validators_effective_balance / 512 的奖励
对于良好的行为,系统会给予奖励,而对于不良行为,系统也会相应的进行处罚
对于错过 source vote 和 target vote 的行为,该验证者的账户会被扣除与其完成 source vote 和 target vote 所获得奖励相同数额的 ETH,即不光不会给奖励,还会扣除与奖励金额相同的ETH
而对于错过 head vote 以及没有在规定slot产生新区块来说,是没有任何惩罚的(光是错过这些奖励,就已经很肉疼了)
可罚没行为是一种更加严重的不良行为,可导致验证者被强制踢出网络,并没收其所质押的ETH,包括:
在一个slot中,产生并签名了两个不同的区块
恶意给其他区块投票,形成分叉,来改变交易历史
对于同意slot不同区块都投支持票(也被称为Nothing at stake问题,这样做是希望避免自己成为投票中的少数方,防止自己拿不到奖励)
如果以上行为被发现,则验证者所质押的ETH的 1/32 会立即被销毁(最大为1个ETH),之后开始长达36天的退出阶段,在这个过程中质押的ETH会逐渐流失,在第18天时,会有一个额外的惩罚,叫做 correlation penalty(相关惩罚),该惩罚的力度与该罚没案件发生前 36 天内所有被处以罚没惩罚的验证者所质押的ETH总量成比例,也就意味着,如果这段时间有越多的验证者被处以罚没,则针对该验证者的惩罚力度越大,罚没的最大值为该验证者所质押的所有ETH
如果信标链连续4个epochs都无法达成 finalized,这时,名为 Inactivity Leak 的紧急智能合约会被激活,这个智能合约的目的就是为了创造条件使信标链达成 finalized
如果全网的验证者中,有超过 1/3 离线或者投票失败,那么就会导致无法达成超过 2/3 的投票率,也就无法达成 finalized,这个紧急智能合约会使得这些不管是离线还是投票失败的验证者所质押的ETH逐渐流失,直到这群没能投票的验证者的总质押数占全部验证者总质押数的比例小于 1/3,从而让那些活跃的验证者可以达成 finalized
