EIP-4345: 难度炸弹延迟至 2022 年 6 月
将难度炸弹延迟到 2022 年 6 月才会变得明显。
Authors | Tim Beiko (@timbeiko), James Hancock (@MadeOfTin), Thomas Jay Rush (@tjayrush) |
---|---|
Created | 2021-10-05 |
摘要
从 FORK_BLOCK_NUMBER
开始,客户端将基于一个伪造的区块号来计算难度,该区块号向客户端表明难度炸弹的调整比实际区块号晚 10,700,000 个区块。
动机
目标是在 2022 年 6 月之前完成 The Merge。如果届时尚未准备就绪,则可以进一步延迟炸弹。
规范
使用伪造区块号缓和难度
为了 calc_difficulty
的目的,只需将指数冰河时代组件中使用的 block.number
替换为以下公式:
fake_block_number = max(0, block.number - 10_700_000) if block.number >= FORK_BLOCK_NUMBER else block.number
理由
以下脚本预测到 2022 年 6 月区块时间将延迟约 0.1 秒,到 2022 年 7 月将延迟约 0.5 秒。这有理由解决,因为效果将会显现,但又不是那么紧急,我们没有空间在需要时进行处理。
def predict_diff_bomb_effect(current_blknum, current_difficulty, block_adjustment, months):
'''
预测未来指定月份数内对区块时间的影响(以比率表示)。
用于预测的变量:
current_blknum = 13423376 # 2021 年 10 月 15 日
current_difficulty = 9545154427582720
block adjustment = 10700000
months = 7.5 # 2022 年 6 月
months = 8.5 # 2022 年 7 月
'''
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(13423376,9545154427582720,10700000,7.5)
diff_adjust_coeff = predict_diff_bomb_effect(13423376,9545154427582720,10700000,8.5)
向后兼容性
没有已知的向后兼容性问题。
安全考虑
错误判断难度影响可能意味着比预期更长的区块时间,直到发布硬分叉。难度的大幅波动会严重影响这个数字。此外,由于难度中的长期调整导致的区块时间的逐渐变化可能会影响难度炸弹 epoch 的时间。这会影响网络的可用性,但不太可能产生安全影响。
在这个特定的实例中,网络哈希率有可能在 The Merge 之前大幅下降,这可能会加速炸弹在区块时间中感受到的时间线。选择的偏移值旨在考虑到这一点。
版权
版权及相关权利通过 CC0 放弃。
Citation
Please cite this document as:
Tim Beiko (@timbeiko), James Hancock (@MadeOfTin), Thomas Jay Rush (@tjayrush), "EIP-4345: 难度炸弹延迟至 2022 年 6 月," Ethereum Improvement Proposals, no. 4345, October 2021. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-4345.