Alert Source Discuss
Standards Track: Core

EIP-1234: 君士坦丁堡难度炸弹延迟和区块奖励调整

Authors Afri Schoedon (@5chdn)
Created 2018-07-19

简单总结

由于难度炸弹(也称为“冰河时代”)的缓慢加速,平均区块时间正在增加。 此 EIP 建议将难度炸弹延迟大约 12 个月,并在君士坦丁堡分叉(即 Metropolis 分叉的第二部分)中减少区块奖励。

摘要

CNSTNTNPL_FORK_BLKNUM 开始,客户端将根据虚假的区块号计算难度,该区块号向客户端表明难度炸弹的调整比 Homestead 分叉先前指定的延迟约 500 万个区块。 此外,区块奖励将调整为 2 ETH 的基数,叔块和侄块的奖励将相应调整。

动机

Casper 的开发和向权益证明的转换被推迟,Ethash 工作量证明对于矿工来说应该是可行的,并且允许平均每 15 秒密封一次新区块,再持续 12 个月。 随着冰河时代的延迟,人们希望不要突然增加矿工的奖励。 难度炸弹早已为人所知,现在它将停止发生。 为了维持系统的稳定性,抵消冰河时代延迟的区块奖励减少将使系统保持与之前大致相同的状态。 减少奖励还可以降低在以太坊接近权益证明时矿工驱动的链分裂的可能性。

规范

使用虚假区块号放松难度

为了 calc_difficulty 的目的,只需将 block.number 的使用(在指数冰河时代组件中使用)替换为以下公式:

fake_block_number = max(0, block.number - 5_000_000) if block.number >= CNSTNTNPL_FORK_BLKNUM else block.number

调整区块、叔块和侄块奖励

为了确保恒定的以太币发行量,将区块奖励调整为 new_block_reward,其中

new_block_reward = 2_000_000_000_000_000_000 if block.number >= CNSTNTNPL_FORK_BLKNUM else block.reward

(2E18 wei,或 2,000,000,000,000,000,000 wei,或 2 ETH)。

类似地,如果在 block.number >= CNSTNTNPL_FORK_BLKNUM 的区块中包含一个叔块,使得 block.number - uncle.number = k,则叔块奖励为

new_uncle_reward = (8 - k) * new_block_reward / 8

这是 Constantinople 之前的现有叔块奖励公式,只需使用 new_block_reward 进行调整。

对于 block.number >= CNSTNTNPL_FORK_BLKNUM 的侄块奖励为

new_nephew_reward = new_block_reward / 32

这是 Constantinople 之前的现有侄块奖励公式,只需使用 new_block_reward 进行调整。

理由

这将使冰河时代延迟 2900 万秒(大约 12 个月),因此该链将在 2019 年冬季恢复到 30 秒的区块时间。 另一种建议是向难度计算中添加特殊规则,以有效地_暂停_不同区块之间的难度。 这将导致类似的结果。

这之前在 All Core Devs Meeting #42 和随后的会议中讨论过; 并在 Constantinople Session #1 中被接受。

向后兼容性

此 EIP 不具有向前兼容性,并且在难度计算以及区块、叔块和侄块奖励结构中引入了向后不兼容性。 因此,应将其包含在特定区块号的计划硬分叉中。 建议将此 EIP 包含在 Metropolis 的第二次硬分叉中,即 Constantinople

测试用例

一旦规范被开发者接受或被客户端实现,就应该创建测试用例。

实现

它在逻辑上的实现与 EIP-649 没有区别; Parity-Ethereum 的实现可在 parity-ethereum#9187 中找到。

版权

通过 CC0 放弃版权和相关权利。

Citation

Please cite this document as:

Afri Schoedon (@5chdn), "EIP-1234: 君士坦丁堡难度炸弹延迟和区块奖励调整," Ethereum Improvement Proposals, no. 1234, July 2018. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-1234.