权益证明的奖励与罚没
以太坊使用其原生加密货币以太币 (ETH) 来保障安全。希望参与验证区块并识别链头的节点运营商,需要将以太币存入以太坊上的存款合约。然后,他们通过运行验证者软件来获得以太币报酬,该软件负责检查通过点对点网络接收到的新区块的有效性,并应用分叉选择算法来识别链头。
验证者有两个主要角色:1) 检查新区块,如果有效则对其进行“证明”;2) 当从整个验证者池中被随机选中时,提议新区块。如果验证者在被要求时未能完成这两项任务中的任何一项,他们就会错失以太币报酬。验证者有时还负责签名聚合和参与同步委员会。
还有一些很难意外发生且表明存在恶意意图的行为,例如为同一个时隙提议多个区块,或为同一个时隙证明多个区块。这些都是“可罚没”的行为,会导致验证者在被移出网络(这需要 36 天)之前被销毁一定数量的以太币(最多 1 ETH)。被罚没的验证者的以太币在退出期间会慢慢流失,但在第 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. source vote: 验证者及时为正确的来源检查点进行了投票
2. target vote: 验证者及时为正确的目标检查点进行了投票
3. head vote: 验证者及时为正确的链头区块进行了投票
4. sync committee reward: 验证者参与了同步委员会
5. proposer reward: 验证者在正确的时隙提议了区块
每个组成部分的权重如下:
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)
来源