Alert Source Discuss
Standards Track: Core

EIP-5133: 将难度炸弹延迟到 2022 年 9 月中旬

将难度炸弹进一步延迟 700000 个区块,至 2022 年 9 月中旬。

Authors Tomasz Kajetan Stanczak (@tkstanczak), Eric Marti Haynes (@ericmartihaynes), Josh Klopfenstein (@joshklop), Abhimanyu Nag (@AbhiMan1601)
Created 2022-06-01

摘要

FORK_BLOCK_NUMBER 开始,客户端将根据一个虚假的区块号来计算难度,该区块号向客户端表明难度炸弹的调整比实际区块号晚 11,400,000 个区块。

动机

为了避免由于难度炸弹过早激活而导致的网络降级。

规范

使用虚假区块号来降低难度

对于 calc_difficulty 的目的,只需将指数冰河期组件中使用的 block.number 替换为以下公式:

fake_block_number = max(0, block.number - 11_400_000) if block.number >= FORK_BLOCK_NUMBER else block.number

理由

以下脚本预测炸弹将在区块 15530314 引爆,预计将在 9 月中旬左右被挖出。

import math
def predict_bomb_block(current_difficulty, diff_adjust_coeff, block_adjustment):
    '''
    预测难度炸弹变得明显时的区块号。

    current_difficulty: 当前难度
    diff_adjust_coeff: 直观地说,矿工必须付出更多的工作才能找到 PoW 的百分比增量
    block_adjustment: 将炸弹延迟的区块数
    '''
    return round(block_adjustment + 100000 * (2 + math.log2(diff_adjust_coeff * current_difficulty // 2048)))

# current_difficulty = 13891609586928851 (Jun 01, 2022)
# diff_adjust_coeff = 0.1 (historically, the bomb is noticeable when the coefficient is >= 0.1)
# block_adjustment = 11400000
print(predict_bomb_block(13891609586928851, 0.1, 11400000))

区块时间的精确增加非常难以预测(尤其是在炸弹变得明显之后)。 但是,根据炸弹过去的表现,我们可以预计到 9 月中旬会有 0.1 秒的延迟,到 10 月初会有 0.6-1.2 秒的延迟。

向后兼容性

没有已知的向后兼容性问题。

安全考虑

错误判断难度的影响可能意味着比预期的更长的区块时间,直到发布硬分叉为止。难度的剧烈变化会严重影响这个数字。此外,由于难度长期调整而导致的区块时间的逐渐变化会影响难度炸弹时期的时机。这会影响网络的可用性,但不太可能产生安全影响。

在这个具体例子中,网络哈希率有可能在 The Merge 之前大幅下降,这可能会加速炸弹在区块时间中被感知的时间线。选择的偏移值旨在考虑到这一点。

版权

CC0 下放弃版权和相关权利。

Citation

Please cite this document as:

Tomasz Kajetan Stanczak (@tkstanczak), Eric Marti Haynes (@ericmartihaynes), Josh Klopfenstein (@joshklop), Abhimanyu Nag (@AbhiMan1601), "EIP-5133: 将难度炸弹延迟到 2022 年 9 月中旬," Ethereum Improvement Proposals, no. 5133, June 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-5133.