8.BTC-挖矿-北大肖臻老师客堂笔记

这段视频是《区块链技术与应用》第 08 讲"BTC 挖矿"的内容,重点讲清楚:什么是全节点、矿工具体做什么、挖矿流程和策略,以及和前面"难度、工作量证明"的关系。


一、全节点的职责

视频先从"全节点"说起,说明什么样的节点才算比特币系统中的全节点。

  • 一直在线:长时间运行程序、参与网络协议、持续收发区块和交易。
  • 本地维护完整区块链:磁盘里保存从创世区块到当前高度的全部区块数据。
  • 维护 UTXO 集合:在内存中维护当前"未花费输出集合"(UTXO set),用来快速验证转账是否真的有钱可花。UTXO 是检测双花(double spending)的关键数据结构。
  • 监听并验证交易:从 P2P 网络中接收交易,对签名、余额、格式等做合法性检查,丢弃非法交易。
  • 决定打包哪些交易:把合法交易放入本地的交易池(mempool),再从中挑选交易准备打包进新区块,一般优先手续费高的交易。
  • 监听并验证区块:收到其他矿工挖出的新区块后,检查区块头、工作量证明(难度目标)、区块内所有交易是否合法,决定是否接受这个区块并接到当前最长合法链上。
    全节点是"规则的执行者和裁判",哪怕不挖矿,只要运行全节点就能帮助网络一起维护协议的正确性。

二、矿工在全节点基础上的额外工作

矿工本质上是"带挖矿功能的全节点",在普通全节点的基础上,多做了几件事。

  • 选择要延长哪条链:
    • 当存在多条合法链分支时,矿工按照"最长合法链"原则选择一个分支作为当前主链的末尾,在该链尾部继续挖新区块。
  • 构造候选区块:
    • 从本地 UTXO 和 mempool 中挑出一批交易,组合成一个完整区块(区块头 + 区块体),并在区块体中加入一笔"铸币交易"(coinbase),把区块奖励和手续费打给自己控制的地址。
  • 做工作量证明(PoW):
    • 不断修改区块头中的随机数(nonce)或其他可调字段,反复计算区块头哈希,直到找到一个小于当前难度目标的哈希值,即完成挖矿。

因此,矿工的核心任务可以概括为两步:

1)选链;2)在所选链上构造合法区块并做 PoW 计算。


三、挖矿的具体流程

视频对"矿工从接收交易到挖出区块"的过程做了较完整的串联。

  1. 接收交易并存入 mempool

    • 矿工节点从网络接收交易,对每笔交易做完整验证(签名、余额、格式等),合法的放入本地交易池,非法的直接丢弃,不再转发。
  2. 决定区块内容

    • 按一定策略(一般是优先手续费更高的交易)从 mempool 中选出一批交易,注意总大小不能超过区块大小上限。 blog.csdn
    • 在这些交易前加入一笔 coinbase 交易,指定奖励的接收地址(矿工自己的地址)。
  3. 构造区块头

    • 设置前一个区块的哈希(指向父区块)、Merkle 根、时间戳、难度目标等字段,形成一个待挖的区块头。
  4. 执行 PoW

    • 不断修改 nonce 或额外字段,重复计算哈希,直到满足难度要求为止。
    • 这是一个完全概率性的过程,算力越大,找到符合条件哈希的概率越高。
  5. 广播新区块

    • 找到合法哈希后,矿工将新区块广播给网络中其他节点,对方验证通过后,将该区块接到各自的最长合法链上,并继续在这个新区块上向前挖矿。

四、分支与"沿哪条链挖下去"的策略

视频强调了一点:由于网络延迟与挖矿的随机性,比特币系统中临时出现"多分支"的情况是正常现象。

  • 同时挖出两个区块:
    • 不同矿工几乎同时在同一个高度挖出两个区块,部分节点先收到 A 区块,部分节点先收到 B 区块,于是形成两个长度相同的合法分支。
  • 矿工的策略:
    • 每个矿工总是对"当前看到的最长合法链"的末尾进行挖矿,即只在自己认为的主链上继续延长。
  • 分支的消解:
    • 之后某个分支先挖出下一个区块,就变成更长的链,网络中大多数节点会随之切换到更长的分支,另一条短分支变成"孤块链",其区块奖励作废、对应交易需要重新被打包。

这一策略保证了长远来看全网会逐渐收敛到一个主链,但短期内允许存在暂时的不一致。


五、难度、收益与矿工行为(与前一讲的衔接)

虽然"难度、出块时间"等细节主要在上一讲"挖矿难度"里展开,但本视频在讲挖矿行为时有若干关键承接点。

  • 出块时间和难度调节:
    • 比特币系统以 10 分钟左右的平均出块时间为目标,通过全网算力与难度调整机制,使整体出块速度在长期统计上保持稳定。
  • 矿工收益构成:
    • 每个新区块带有固定区块奖励 + 区块中所有交易的手续费,合计收益通过 coinbase 交易发给挖出区块的矿工。
  • 矿工的激励与安全性:
    • 因为要投入大量算力与电费,矿工有动机遵守协议(否则挖出的非法区块会被全节点拒绝,无法获得奖励)。
    • 大部分算力诚实执行规则时,比特币的安全性才能得到保障,这是 PoW 机制设计的根本出发点之一。

六、视频的整体逻辑结构总结

可以把整个第 08 讲"BTC 挖矿"总结为下面的结构:

  1. 先界定"全节点"的概念和职责:维护区块链、UTXO、验证交易与区块。
  2. 再在此基础上定义"矿工":全节点 + 决定打包交易 + 执行 PoW 的节点。
  3. 详细讲挖矿流程:从接收交易、构造区块、PoW 计算,到广播新区块。
  4. 解释有分支时矿工如何选链、为什么会出现分叉,以及系统如何自然消解大多数临时分叉。
  5. 与上一讲的难度调整、收益机制衔接,强调挖矿行为背后的激励与安全性含义。
相关推荐
历程里程碑2 小时前
Linux 6 权限管理全解析
linux·运维·服务器·c语言·数据结构·笔记·算法
其美杰布-富贵-李2 小时前
Spring Event 学习笔记
笔记·学习·spring·事件消息
嗯? 嗯。2 小时前
S32K144开发笔记-S32k系列芯片基础知识
笔记·s32k
Gain_chance2 小时前
18-学习笔记尚硅谷数仓搭建-数据仓库运行环境搭建(hive的安装及配置)
数据仓库·hive·笔记·学习
Tina Tang2 小时前
【Hello Agent】第一章 初识智能体笔记
笔记
QZ_orz_freedom2 小时前
后端学习笔记-WebSocket
笔记·学习
Gain_chance2 小时前
20-学习笔记尚硅谷数仓搭建-数据仓库开发环境搭建-hive连接DataGrip
数据仓库·hive·笔记·学习·datagrip
Gain_chance5 小时前
19-学习笔记尚硅谷数仓搭建-数据仓库运行环境搭建(spark安装及配置)
数据仓库·笔记·学习·spark
Gain_chance5 小时前
21-学习笔记尚硅谷数仓搭建-数据仓库模拟数据生成
数据仓库·笔记·学习