Alert Source Discuss
Standards Track: Core

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.