Standards Track: Core
EIP-3554: 难度炸弹延迟至2021年12月
EIP-3554: 难度炸弹延迟至2021年12月
Authors | James Hancock (@madeoftin) |
---|---|
Created | 2021-05-06 |
简单概要
将难度炸弹的生效时间延迟到2021年12月的第一个星期。
摘要
从 FORK_BLOCK_NUMBER
开始,客户端将根据一个虚假的区块号计算难度,该区块号向客户端表明难度炸弹的调整比实际区块号晚 9,700,000 个区块。
动机
目标是在2021年12月之前进行上海升级和/或合并。届时可以重新调整炸弹,或者完全移除。
规范
使用虚假区块号来放松难度
为了 calc_difficulty
的目的,只需将指数冰河时代组件中使用的 block.number
替换为以下公式:
fake_block_number = max(0, block.number - 9_700_000) if block.number >= FORK_BLOCK_NUMBER else block.number
理由
以下脚本预测12月第一周的区块时间将延迟0.1秒,到月底将延迟1秒。这给出了解决的理由,因为效果将会显现,但又不会太紧急,以至于我们没有足够的空间在需要时进行处理。
def predict_diff_bomb_effect(current_blknum, current_difficulty, block_adjustment, months):
'''
预测指定月份后对区块时间的影响(作为比率)。
上次预测中使用的变量:
current_blknum = 12382958
current_difficulty = 7393633000000000
block adjustment = 9700000
months = 6
'''
blocks_per_month = (86400 * 30) // 13.3
future_blknum = current_blknum + blocks_per_month * months
diff_adjustment = 2 ** ((future_blknum - block_adjustment) // 100000 - 2)
diff_adjust_coeff = diff_adjustment / current_difficulty * 2048
return diff_adjust_coeff
diff_adjust_coeff = predict_diff_bomb_effect(12382958,7393633000000000,9700000,6)
向后兼容性
没有已知的向后兼容性问题。
安全考虑
对难度影响的错误判断可能意味着比预期更长的区块时间,直到发布硬分叉。难度的大幅变化可能会严重影响这个数字。此外,由于难度长期调整而导致的区块时间逐渐变化可能会影响难度炸弹 epoch 的时间。这会影响网络的可用性,但不太可能产生安全影响。
版权
通过 CC0 放弃版权和相关权利。
Citation
Please cite this document as:
James Hancock (@madeoftin), "EIP-3554: 难度炸弹延迟至2021年12月," Ethereum Improvement Proposals, no. 3554, May 2021. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-3554.