7.BTC-挖矿难度-北大肖臻老师客堂笔记

第 7 讲(P7)的核心内容是围绕比特币的挖矿难度调整 以及以太坊中针对分叉问题的解决方案(GHOST 协议)

以下是该课程内容的结构化总结:

一、 为什么要调整挖矿难度?

为了维持系统的稳定性。比特币规定平均每 10 分钟产生一个区块。

  • 如果不调整: 随着计算机算力(哈希率)的提升,出块时间会越来越短。这会导致区块链频繁分叉,不仅降低系统安全性(容易受到攻击),还会造成大量的计算资源浪费。

二、 比特币的难度调整机制

  1. 调整周期: 每隔 2016 个区块(约 2 周时间)调整一次难度。
  2. 调整公式:
  • 目标值(Target)决定了难度,Target 越小,难度越大。
  • 公式:New Target = Old Target × (实际产生2016个区块的时间 / 预期时间2周)
  1. 限制保护: 为了防止波动过大,单次难度调整的最大幅度限制在 4 倍以内(即难度最多增加到原来的 4 倍,或减少到原来的 1/4)。

三、 相关核心概念(Orphan, Ghost, Uncle)

随着出块速度的加快(如以太坊约 15 秒一区块),分叉会变得非常频繁。为了处理这些分叉,引入了以下概念:

1. Orphan Block(孤块)
  • 定义: 在比特币中,如果两个矿工几乎同时挖出区块,只有一条链会成为"最长合法链",另一条链上的区块被称为"孤块"。
  • 结果: 在比特币中,孤块是完全无效的,矿工拿不到任何奖励。这对于算力较小的个体矿工不公平。
2. Uncle Block(叔父块)与 Uncle Reward(叔父奖)

这是以太坊为了解决孤块问题引入的机制:

  • Uncle Block: 虽然没能进入主链,但其"父母"是主链上的区块(即曾经发生过分叉但败北的区块)。
  • Uncle Reward(奖励): 为了鼓励矿工并提高系统安全性,以太坊会给这些叔父块的矿工一定的奖励(通常是区块奖励的 7/8 左右)。
  • 作用: 减少了大型矿池因为网络延迟优势对小矿工的剥削,使系统更加去中心化。
3. GHOST 协议
  • 全称: Greedy Heaviest Observed Subtree(观察到的最重子树协议)。
  • 核心思想: 在决定哪条是"主链"时,不简单地看哪条链最长,而是看哪条链包含的**工作量(包含的区块总数,包括叔父块)**最多。
  • 目的: 即使出块时间很短(分叉多),也能通过计入分叉块的工作量,快速使全网达成共识,防止 51% 攻击。

四、 总结:核心逻辑链

  1. 算力增长 出块变快 调整难度(维持 10 分钟/块)。
  2. 出块太快 (如以太坊) 产生大量 Orphan Block(浪费且不安全)。
  3. 引入 GHOST 协议 将孤块变为 Uncle Block 并给予 Uncle Reward
  4. 最终目的 既能保持快速确认(高 TPS),又能保证系统的公平性与安全性。
相关推荐
RainCity1 天前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
LinXunFeng9 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
闪闪发亮的小星星13 天前
高斯光以及高斯光公式解释
笔记
cqbzcsq13 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
m0_3801671413 天前
面向开发者的Top10加密货币数据API(2026年最新)
大数据·人工智能·区块链
阿米亚波13 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
自传.13 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding
.千余13 天前
【C++】模板进阶全解:非类型参数|全特化|偏特化|分离编译完全指南
开发语言·c++·笔记·学习·其他
自传.13 天前
尚硅谷 Vibe Coding|第二章 AI编程工具生态 学习笔记
笔记·学习·ai编程·尚硅谷·vibe coding
秋波。未央13 天前
Java Agent 开发 · Day 1 学习笔记(含作业完整标准答案)
java·笔记·学习