20-ETH-难度调整

学习视频来源:https://www.bilibili.com/video/BV1Vt411X7JF/?p=20
本博客除了包含自己的在学习过程中记录的笔记外,还包含少部分自己扩展的内容,如有错误,敬请指正。

文章目录

  • [1. 比特币 vs 以太坊:难度调整频率](#1. 比特币 vs 以太坊:难度调整频率)
  • [2. 基础难度公式](#2. 基础难度公式)
  • [3. 难度调整量的计算](#3. 难度调整量的计算)
    • [1. 难度调整单位](#1. 难度调整单位)
    • [2. 难度调整系数](#2. 难度调整系数)
    • [3. 难度调整量](#3. 难度调整量)
  • [4. 为什么引入"叔父标志"?](#4. 为什么引入“叔父标志”?)
  • [5.示例(以不带叔父区块为例,叔父标志 = 1)](#5.示例(以不带叔父区块为例,叔父标志 = 1))
  • [6. 难度炸弹:推动从 PoW 转向 PoS 的关键设计](#6. 难度炸弹:推动从 PoW 转向 PoS 的关键设计)
    • [1. 为什么需要难度炸弹?](#1. 为什么需要难度炸弹?)
    • [2. 难度炸弹如何工作?](#2. 难度炸弹如何工作?)
    • [3. 为什么 PoS 一再推迟?难度炸弹如何应对?](#3. 为什么 PoS 一再推迟?难度炸弹如何应对?)
  • [7. 以太坊的发展阶段(PoW 时代)](#7. 以太坊的发展阶段(PoW 时代))

1. 比特币 vs 以太坊:难度调整频率

  • 比特币 :每 2016 个区块(约两周)调整一次难度;
  • 以太坊(PoW 阶段)每个区块都调整一次难度

这使得以太坊能更快响应算力变化,维持平均出块时间在 13--15 秒左右。


2. 基础难度公式

当前区块的难度计算公式为:

当前区块难度 = max ⁡ ( 最小难度 , 父区块难度 + 难度调整量 ) + 难度炸弹 \text{当前区块难度} = \max\left( \text{最小难度},\ \text{父区块难度} + \text{难度调整量} \right) + \text{难度炸弹} 当前区块难度=max(最小难度, 父区块难度+难度调整量)+难度炸弹

其中:

  • 最小难度 = 131072(即十六进制 0x20000),是协议规定的硬性下限;
  • 父区块难度:上一个区块的难度值;
  • 难度调整量:根据出块快慢动态计算;
  • 难度炸弹:为推动共识机制转型而设计的指数增长项(后文详述)。

3. 难度调整量的计算

1. 难度调整单位

以太坊协议中,定义父区块难度/2048,向下取整为一个调整单位。

难度调整单位 = ⌊ 父区块难度 2048 ⌋ \text{难度调整单位} = \left\lfloor \frac{\text{父区块难度}}{2048} \right\rfloor 难度调整单位=⌊2048父区块难度⌋

这个单位不是固定值,而是随父区块难度同比例缩放,确保在高算力或低算力环境下都能平滑调节。

2. 难度调整系数

调整系数 = max ⁡ ( 叔父标志 − ⌊ 出块时间间隔 9 ⌋ , − 99 ) \text{调整系数} = \max\left( \text{叔父标志} - \left\lfloor \frac{\text{出块时间间隔}}{9} \right\rfloor,\ -99 \right) 调整系数=max(叔父标志−⌊9出块时间间隔⌋, −99)

说明:

  • 出块时间间隔 = 当前区块时间戳 − 父区块时间戳(单位:秒);
  • 叔父标志
    • 如果当前区块引用了至少一个叔父区块,则 叔父标志 = 2
    • 否则(无叔父区块),叔父标志 = 1
  • −99 是调整系数的下限,主要是为了应对被黑客攻击或者想不到的黑天鹅事件,防止难度崩盘式下跌。

3. 难度调整量

难度调整量 = 调整系数 × 难度调整单位 \text{难度调整量} = \text{调整系数} \times \text{难度调整单位} 难度调整量=调整系数×难度调整单位


4. 为什么引入"叔父标志"?

当当前区块引用叔父区块时,系统整体出块奖励会变多(矿工可获得出块奖励 + 叔父额外奖励 + 给叔父区块的奖励 )。

这会导致 ETH 发行速率上升,破坏长期通胀模型的稳定性。

为了维护发行节奏的稳定,协议规定:只要包含叔父区块,就提高难度一个单位(即叔父标志 = 2),从而略微抑制出块速度,平衡新增代币供应。


5.示例(以不带叔父区块为例,叔父标志 = 1)

出块时间间隔(秒) 调整系数计算 调整结果
[1, 8] 1 − ⌊ 间隔 / 9 ⌋ = 1 − 0 = 1 1 - \lfloor \text{间隔}/9 \rfloor = 1 - 0 = 1 1−⌊间隔/9⌋=1−0=1 难度 增加 1 个难度调整单位(出块太快)
[9, 17] 1 − 1 = 0 1 - 1 = 0 1−1=0 难度 不变(出块时间可接受)
[18, 26] 1 − 2 = − 1 1 - 2 = -1 1−2=−1 难度 减少 1 个难度调整单位(出块太慢)
> 26 继续减小,但 ≥ −99 最多减少 99 个难度调整单位

6. 难度炸弹:推动从 PoW 转向 PoS 的关键设计

1. 为什么需要难度炸弹?

以太坊计划从 工作量证明(PoW) 转向 权益证明(PoS)

但问题来了:那些已经在 GPU/ASIC 上投入大量资金的矿工会不会强烈抵制?

如果强行切换,很可能导致社区分裂------一部分人坚持 PoW 链,另一部分使用新的 PoS 链,造成硬分叉和生态割裂。

为了避免这种情况,以太坊核心开发者设计了一个巧妙机制:难度炸弹

2. 难度炸弹如何工作?

难度炸弹是一个指数增长的额外难度项,其公式为:

难度炸弹 = { 2 ( ⌊ 当前区块号 100000 ⌋ − 2 ) , 如果 ⌊ 当前区块号 100000 ⌋ ≥ 2 0 , 否则 \text{难度炸弹} = \begin{cases} 2^{\left( \left\lfloor \dfrac{\text{当前区块号}}{100000} \right\rfloor - 2 \right)}, & \text{如果 } \left\lfloor \dfrac{\text{当前区块号}}{100000} \right\rfloor \geq 2 \\ 0, & \text{否则} \end{cases} 难度炸弹=⎩ ⎨ ⎧2(⌊100000当前区块号⌋−2),0,如果 ⌊100000当前区块号⌋≥2否则

  • 前期增长极慢(前几百万区块几乎无感);
  • 后期指数爆炸(每 10 万个区块,炸弹值翻倍);
  • 最终导致出块时间从 15 秒延长到几分钟甚至几小时------进入"冰河时代"。

💡 目的很明确:让 PoW 挖矿逐渐变得无利可图,倒逼全网升级到 PoS,不升级就挖不到矿,而不是靠强制投票或中心化决策。

3. 为什么 PoS 一再推迟?难度炸弹如何应对?

现实是:PoS(Serenity)的开发比预期困难得多 ,迟迟无法上线。

但难度炸弹已经开始显现------矿工发现越来越难挖出区块,网络濒临瘫痪。

怎么办?

以太坊通过 硬分叉"回退区块号" 来降低难度炸弹值。

有效区块号 = max ⁡ ( 当前区块号 − 3,000,000 , 0 ) \text{有效区块号} = \max(\text{当前区块号} - \text{3,000,000},\ 0) 有效区块号=max(当前区块号−3,000,000, 0)

然后用这个"回退后的区块号"代入难度炸弹公式,从而大幅降低难度。同时还需要降低出块奖励(5ETH->3ETH)。

难度炸弹调整后,为什么要同步降低区块奖励?

因为难度下调后,如果维持原奖励,矿工单位时间收益会高于历史水平 ,这对早期参与挖矿的用户不公平。因此需要降低区块奖励,以保持经济模型的公平性。


7. 以太坊的发展阶段(PoW 时代)

本课程内容基于 2018 年,当时以太坊尚未转向 PoS,仍处于挖矿阶段。其发展分为四个主要阶段:

  1. Frontier(2015.7):初始上线,命令行界面,开发者挖矿;
  2. Homestead(2016.3):首个稳定版,引入最小难度 131072;
  3. Metropolis
    • Byzantium(2017.10):首次推迟难度炸弹,奖励降至 3 ETH;
    • Constantinople(2019.2):再次推迟,奖励降至 2 ETH;
  4. Serenity (即 The Merge ,2022年9月):正式切换至 PoS,PoW 终止,难度炸弹失效。

注:直到 2022 年 9 月 15 日,以太坊才完成"合并"(The Merge),彻底告别挖矿。


八、链选择规则:最大难度合法链

  • 比特币 :选择 最长合法链(即区块数量最多);
  • 以太坊(PoW) :选择 总难度最大的合法链,其中:

总难度 = ∑ i = 0 当前区块 第 i 个区块的难度 \text{总难度} = \sum_{i=0}^{\text{当前区块}} \text{第 } i \text{ 个区块的难度} 总难度=i=0∑当前区块第 i 个区块的难度

Difficulty:表示当前区块难度。

Total Difficulty: 表示总区块难度。

九、总结:机制背后的设计哲学

机制 目的
逐块调整难度 快速适应算力波动,稳定出块时间
叔父标志联动 平衡因叔父奖励带来的通胀上升
−99 下限 防范黑客或黑天鹅事件导致系统崩溃
难度调整单位 实现与当前网络状态匹配的比例式调节
难度炸弹 以经济手段而非强制手段推动共识升级,避免社区分裂
推迟炸弹 + 降奖励 在 PoS 延迟的现实下,防止挖不出矿,并保证矿工公平
相关推荐
MQLYES21 小时前
17-ETH-交易树和收据树
区块链
终端域名21 小时前
区块链技术在金融领域的实际应用方法
金融·区块链
MQLYES21 小时前
16-ETH-状态树
区块链
MQLYES1 天前
18-ETC-GHOST
区块链
终端域名1 天前
区块链技术驱动金融:数字货币与智能合约技术的双轮重构
金融·区块链·智能合约
终端域名1 天前
资产证券化:区块链在现代战争中的核心价值落地 —— 适配性、应用场景与核心优势
大数据·人工智能·区块链
China_Yanhy2 天前
区块链运维日记 · 第 1 日 :消失的 2000 笔提现 —— 致命的 Nonce 冲突
运维·区块链
终端域名2 天前
如何评估区块链、加密货币领域域名的价值?
区块链·网站域名
软件工程小施同学2 天前
区块链论文速读 CCF A--TDSC 2025 (4)
区块链