EIP-649: Metropolis 难度炸弹延迟和区块奖励减少
Authors | Afri Schoedon (@5chdn), Vitalik Buterin (@vbuterin) |
---|---|
Created | 2017-06-21 |
简单总结
由于难度炸弹(也称为“冰河世纪”)的缓慢加速,平均区块时间正在增加。本 EIP 提议将难度炸弹延迟约一年半,并通过拜占庭分叉(Metropolis 分叉的第一部分)减少区块奖励。
摘要
从 BYZANTIUM_FORK_BLKNUM
开始,客户端将基于一个虚假的区块号来计算难度,该区块号提示客户端难度炸弹的调整比 Homestead 分叉中先前指定的要晚约 300 万个区块。 此外,区块奖励将调整为 3 ETH 的基数,叔块和侄块的奖励将相应调整。
动机
Casper 的开发和向权益证明的过渡被推迟,Ethash 工作量证明对于矿工来说应该是可行的,并且允许平均每 15 秒密封新的区块,再持续一年半。 随着冰河世纪的延迟,人们希望不要突然增加矿工的奖励。 难度炸弹早已为人所知,现在它将停止发生。 为了保持系统的稳定性,抵消冰河世纪延迟的区块奖励减少将使系统保持与之前大致相同的状态。 减少奖励还可以降低在以太坊接近权益证明时,由矿工驱动的链分裂的可能性。
规范
使用虚假区块号来放宽难度
对于 calc_difficulty
的目的,只需将 block.number
的使用(在指数冰河世纪组件中使用)替换为以下公式:
fake_block_number = max(0, block.number - 3_000_000) if block.number >= BYZANTIUM_FORK_BLKNUM else block.number
调整区块、叔块和侄块的奖励
为了确保恒定的以太发行量,将区块奖励调整为 new_block_reward
,其中
new_block_reward = 3_000_000_000_000_000_000 if block.number >= BYZANTIUM_FORK_BLKNUM else block.reward
(3E18 wei,或 3,000,000,000,000,000,000 wei, 或 3 ETH)。
类似地,如果一个叔块包含在 block.number >= BYZANTIUM_FORK_BLKNUM
的区块中,使得 block.number - uncle.number = k
,则叔块奖励为
new_uncle_reward = (8 - k) * new_block_reward / 8
这是 Metropolis 之前的现有叔块奖励公式,只需使用 new_block_reward
进行调整。
对于 block.number >= BYZANTIUM_FORK_BLKNUM
的侄块奖励为
new_nephew_reward = new_block_reward / 32
这是 Metropolis 之前的现有侄块奖励公式,只需使用 new_block_reward
进行调整。
理由
这将使冰河世纪延迟 4200 万秒(约 1.4 年),因此到 2018 年底,链将恢复到 30 秒的区块时间。 另一种替代方案是向难度计算添加特殊规则,以有效地_暂停_不同区块之间的难度。 这会产生类似的结果。
这之前在 All Core Devs Meeting #09, #12, #13, 和 #14 上讨论过。 在 All Core Devs Meeting #19 中达成了关于规范的共识,并在 EIP issue #649 中起草了规范。 决定替换 EIP #186 并将区块奖励减少与难度炸弹延迟一起包括在 All Core Devs Meeting #20 和 #21 中;在 #22 中被接受。
向后兼容性
此 EIP 不具有向前兼容性,并且在难度计算以及区块、叔块和侄块奖励结构中引入了向后不兼容性。 因此,它应包含在计划好的硬分叉中的某个区块号上。 建议将此 EIP 包含在两个 Metropolis 硬分叉的第一个中,即 Byzantium 分叉。
测试用例
测试用例存在于 ethereum/tests #269 中。
实现
以下客户端实现了 EIP-649:
Yellow Paper 在 #333 中实现了 EIP-649。
其他值得注意的实现:
版权
在 CC0 下放弃版权和相关权利。
Citation
Please cite this document as:
Afri Schoedon (@5chdn), Vitalik Buterin (@vbuterin), "EIP-649: Metropolis 难度炸弹延迟和区块奖励减少," Ethereum Improvement Proposals, no. 649, June 2017. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-649.