本文提出了一个具体的提案,旨在实现相关的惩罚机制,该机制能最大程度地保持简单性,并与当前已有的有价值的不变性相一致。该机制通过调整罚款因子,根据未正确参与的验证者总余额来动态调整惩罚,从而鼓励验证者之间的反相关性,同时保持平均验证者收入不变。
参见之前的工作:关于“相关性证明惩罚”的分析 和 通过更多反相关激励来支持去中心化质押
这篇文章介绍了一个关于如何实施相关性惩罚的具体方案,该方案最大程度地兼顾了 (i) 简易性,以及 (ii) 与现有有价值的不变性保持一致。
PENALTY_ADJUSTMENT_FACTOR = 2**12
,MAX_PENALTY_FACTOR = 4
NET_EXCESS_PENALTIES
non_attesting_balance
为在该 slot 中_未_正确证明的总余额penalty_factor = min((non_attesting_balance * PENALTY_ADJUSTMENT_FACTOR) // (NET_EXCESS_PENALTIES * total_active_balance + 1), MAX_PENALTY_FACTOR)
R
为当前正确证明的奖励(基于 base_reward
计算,并根据分配给相关工作的 fraction 进行调整)。这保持不变。penalty_factor * R
的惩罚(而不是像今天一样受到 R
的惩罚)NET_EXCESS_PENALTIES = max(1, NET_EXCESS_PENALTIES + penalty_factor) - 1
应该很容易看出 NET_EXCESS_PENALTIES
跟踪了 sum(penalty_factor[slot] for slot in slots) - len(slots)
。因此,如果 penalty_factor
在一段时间内平均超过 1,NET_EXCESS_PENALTIES
将持续上升,直到不再是这种情况。NET_EXCESS_PENALTIES
是 penalty_factor
计算中的分母,因此 NET_EXCESS_PENALTIES
的上升将压低平均 penalty_factor
值,直到平均值低于 1(反之亦然,如果它下降)。
penalty_factor
与当前 slot 的总 non_attesting_balance
成正比,因此为了使其平均值为 1,它必须大致等于当前 slot 的 non_attesting_balance
除以长期平均值 - 这与此处提出的设计完全相同。
因为 penalty_factor
的平均值为 1,所以平均非参与惩罚等于 R
,与今天相同。因此,对于任何正确的证明率,验证者的平均奖励与今天相同,假设他们的不正确证明与其他验证者的不相关。
PENALTY_ADJUSTMENT_FACTOR
影响惩罚调整的速度。
使 penalty_factor
更加“连续”,例如,将 base_reward
放入计算 penalty_factor
的分子中(以及最大值中,以及每个 slot 的递减量中),然后使用它直接计算惩罚。
探索更巧妙的方法来跨多个工作应用此机制(正确的 head 证明、target 证明...)。一种朴素的方法是仅对每个工作按顺序应用它,但可能存在更巧妙的方法。
- 原文链接: ethresear.ch/t/a-concret...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!