5.BTC-实现-北大肖臻老师客堂笔记

这个视频主要讲比特币系统在实现层面的细节,并穿插用概率论工具来分析挖矿与安全性;下面先按逻辑帮你梳理结构,再对你列的名词逐个解释并和 BTC 机制对应起来。

视频主线内容概括

  • 先回顾两种账本模式:基于交易的 UTXO 模式(比特币)和基于账户的模式(以太坊、银行系统),说明为什么 BTC 选择 UTXO。
  • 然后讲全节点如何维护 UTXO 集、如何验证交易与区块(检查 total input = total output + fee、签名、脚本等)。
  • 接着用伯努利试验、伯努利过程、泊松过程、指数分布等概率模型来刻画"挖矿找区块"的随机性,说明系统的安全与"最长合法链"规则之间的关系(不可逆账本、双花成功概率随确认数几何级数下降)。
  • 最后讨论"自私挖矿"等攻击策略,说明虽然存在激励攻击,但在正常参数下比特币整体仍由挖矿过程保护安全。

两种账本模型与 BTC 实现

  1. 基于交易的账本模式(transaction-based ledger)

    • 核心对象不是"账户余额",而是一串串交易记录以及未花费输出 UTXO 集。每一笔新交易列出若干旧输出作为输入,并创建新的输出,系统只需要保证所有 UTXO 只能被花费一次。
    • 比特币选择这种模式,方便实现复杂锁定条件(脚本)、并行验证,以及更清晰的"不可双花"检查,因为只要同一个 UTXO 被引用两次,就能立刻判定为非法。
  2. 基于账户的账本模式(account-based ledger)

    • 系统直接维护"地址 → 余额"的映射,每笔交易就是"从账户 A 减少 x,给账户 B 增加 x"。
    • 这种模式验证交易时要小心并发和重放,但实现智能合约状态机更自然,所以以太坊等采用账户模型来维护合约状态和余额。

UTXO、全节点与挖矿安全

  1. 全节点维护 UTXO(UNspent Transaction Output)

    • 全节点从创世区块开始顺序处理每个区块:对每笔合法交易,把其输入引用的 UTXO 从集合删除,再把该交易产生的新输出加入集合,从而保持一份当前"未花费输出"的快照。
    • 验证新交易时,节点检查:
      • 引用的每个输入都在 UTXO 集中(未被花费)。
      • 输入对应脚本能被签名正确解锁。
      • 不出现同一个 UTXO 在同一区块或同一链上被花两次的情况。
  2. total input = total output 的含义

    • 对普通交易:所有输入金额总和 ≥ 输出金额总和;差额就是矿工费(fee)。视频里简化常写 total input = total output(含 fee)来强调系统必须"账平",即不会凭空生钱。
    • 对 coinbase(挖矿奖励)交易:允许创造新币,规则由协议固定(区块补贴 + 手续费),但仍要满足格式和上限约束,否则区块无效。
  3. bitcoin is secured by mining(比特币由挖矿保障安全)

    • 挖矿过程要求矿工为出块付出真实算力成本,谁想篡改历史就必须重做被篡改之后的所有工作量并追上当前最长合法链,成本极高。
    • 因为算力是现实资源,攻击者要想超过全网,就要投入巨额电力和硬件,这就是工作量证明背后的安全性来源。

概率论工具与挖矿过程

下面这些数学概念在视频中被用来建模"矿工何时出块""攻击者何时追上"等问题。

  1. Bernoulli trial(伯努利试验)

    • 一次随机实验,只有两个结果:成功/失败。对挖矿而言,"本次哈希是否小于目标值"就是一次伯努利试验:成功则找到区块,失败则没找到。
  2. Bernoulli process(伯努利过程)

    • 一系列彼此独立、成功概率相同的伯努利试验序列,比如矿工不断计算哈希,每次尝试成功概率极低但固定,尝试次数越多,总体成功概率随时间线性积累。
    • 在全网视角,把所有矿工的哈希尝试看成一个巨大的伯努利过程,可以推导出在给定算力下平均出块时间约为 10 分钟。
  3. Memoryless(无记忆性)

    • 指随机过程的未来与过去无关,条件只与"当前状态"有关。指数分布和几何分布都具有无记忆性。
    • 在 BTC 中,"已经等了 5 分钟还没出块"并不影响"下一分钟出块"的概率;下一分钟出不出块只与当前网络算力和难度相关,这就是出块时间近似指数分布的无记忆性直观含义。
  4. Poisson process(泊松过程)

    • 一个计数随机过程,用来描述"单位时间内发生多少次随机事件",满足:独立增量、平稳增量、同时事件概率可忽略等条件。
    • 把"区块被找到"看作随机事件,可以近似为一个泊松过程:在任意时间间隔内,被找到的区块数服从泊松分布,其参数由全网算力与难度共同决定。
  5. Exponential distribution(指数分布)

    • 泊松过程相邻两次事件之间的间隔时间服从指数分布。
    • 在比特币中,"连续两块之间间隔时间 T"近似服从指数分布;这解释了为何区块间隔有长有短但平均值约为 10 分钟,也为后续分析攻击成功概率提供数学基础。
  6. Progress free(无进展性)

    • 指在随机搜索问题中,既往的尝试不会让你"更接近成功",每次尝试都是从零开始的。对挖矿来说,每次计算新的哈希,结果完全独立于之前的哈希,不会因为"算了很久"就更容易出块。
    • 无进展性保证了比特币中算力与出块概率线性对应:拥有 30% 算力,就期望获得 30% 的区块奖励。
  7. Geometric series(几何级数)与安全性

    • 视频用几何级数来计算"攻击者在落后 k 个区块的情况下,最终成功追上的概率",这本质上是一个随机游走问题,成功概率收敛成几何级数形式。
    • 结论:只要攻击者算力占比小于 50%,当受害者等待的确认数 k 增大时,攻击成功概率会按几何级数快速衰减,接近于 0,从而形成"不可逆账本"的实际效果。

最长合法链与不可逆账本

  1. 最长合法链(longest valid chain)

    • 协议要求:
      • 节点只接受满足所有规则(格式、脚本、难度、奖励上限等)的合法区块。
      • 如果有多条合法链分叉,节点选择累计难度最高(通常等价于区块数最多)的链作为当前主链,也叫"最长合法链"。
    • 因为矿工都朝同一条最长链挖,短链一旦被长链超越,经济上就被"废弃",攻击者要推翻历史就要重挖更多区块才可能让自己的链变成最长。
  2. Irrevocable ledger(不可逆账本)

    • 严格来说,比特币任何历史都"可以被改写",但需要极大算力和时间成本。随着一个交易被更多区块确认,攻击者需要重写的工作量指数级增加,经济上变得不可行,因此称为"事实上不可逆"。
    • 视频通过几何级数和泊松模型,计算"双花成功概率随确认数增加而急剧下降",这一点与实际使用中建议"等待 6 个确认就几乎安全"相呼应。

Selfish mining(自私挖矿)

  1. 基本思想

    • 自私挖矿是一种偏离协议推荐行为的策略:矿工找到新区块后先不广播,而是悄悄在自己的私有链上继续挖,试图在公开链之上领先多个区块。
    • 当私有链领先时,自私矿工可以在有利时机一次性公布这条更长链,把 honest 矿工的区块"挤掉",从而获得超过自己算力占比的奖励份额。
  2. 为什么可行以及条件

    • 自私挖矿利用的是"最长链规则"加上网络传播延迟:一旦自私矿工的私有链公布后被多数节点接受,原来的公开链区块会被孤立,其他矿工的工作作废。
    • 视频一般会提到的关键点:
      • 自私矿工算力必须达到一定阈值(比如约 33% 以上)并且在网络传播上有一定优势,攻击才在长期收益上优于诚实挖矿。
      • 在此阈值下,比特币协议存在激励缺陷,不过社区可以通过改进见证规则、传播策略等方式降低自私挖矿收益。
  3. 与不可逆性、最长链的关系

    • 自私挖矿不是直接篡改已广泛确认的深层历史,而是在浅层不断制造短分叉以多拿奖励,对最终账本不可逆性影响有限,但会降低系统的去中心化程度和公平性。
    • 这类分析同样依赖泊松过程与几何级数,评估不同策略下长期收益与攻击成功概率。

下面是按"文字版思维导图"整理的结构,你可以直接照着画到 XMind / MindNode / Obsidian 里:

比特币实现(BTC 实现)

  • 比特币由挖矿保障安全(PoW)
  • 通过最长合法链形成"事实上不可逆"的分布式账本

一、账本模式

  • 基于交易的账本模式(transaction-based ledger)

    • 以交易和 UTXO 为核心
    • 每笔交易:消耗旧 UTXO,产生新 UTXO
    • 易于检测双花:同一 UTXO 只能被花一次
  • 基于账户的账本模式(account-based ledger)

    • 维护"账户 → 余额"映射
    • 交易:从账户 A 减余额,加到账户 B
    • 适合智能合约状态机(如以太坊)

二、UTXO 与全节点

  • 全节点维护 UTXO 集(Unspent Transaction Output)

    • 从创世区块顺序执行:
      • 输入引用的 UTXO:从集合删除
      • 新生成输出:加入集合
    • 验证新交易:
      • 输入必须在 UTXO 集中
      • 签名/脚本验证通过
      • 不得重复花费同一 UTXO
  • total input = total output(含手续费)

    • 普通交易:
      • 输入总和 ≥ 输出总和
      • 差额 = 矿工费
    • coinbase 交易:
      • 特许"增发":区块补贴 + 手续费
      • 受协议上限约束,否则区块无效

三、概率模型与挖矿

  • 伯努利试验(Bernoulli trial)

    • 单次哈希:成功 / 失败
    • 成功 = 找到满足目标的区块头
  • 伯努利过程(Bernoulli process)

    • 连续独立哈希尝试
    • 固定、极小的成功概率
    • 全网算力决定试验频率
  • 无记忆性(Memoryless)

    • 已经等多久不影响"下一分钟出块"的概率
    • 区块间隔近似指数分布的典型性质
  • 泊松过程(Poisson process)

    • "单位时间内产生多少区块"的计数过程
    • 区块数在时间区间内服从泊松分布
  • 指数分布(Exponential distribution)

    • 相邻两区块的时间间隔服从指数分布
    • 平均值 ≈ 10 分钟
  • 无进展性(Progress free)

    • 过去计算的哈希"没有累积进度"
    • 每次尝试独立,从 0 开始
    • 算力占比 ≈ 区块奖励占比
  • 几何级数(Geometric series)与安全性

    • 模型:攻击者落后 k 个区块,追上的概率
    • 条件:攻击算力 < 50%
    • 结果:
      • 确认数 k 增大 → 攻击成功概率按几何级数快速衰减
      • 交易随确认数增加趋于"不可逆"

四、最长合法链与不可逆账本

  • 最长合法链(longest valid chain)

    • 只接受满足全部规则的合法区块
    • 多条合法链分叉时:
      • 选择累计难度最高(通常最长)的链
    • 矿工向最长链追加新块,短链逐渐被淘汰
  • 不可逆账本(irrevocable ledger)

    • 理论上可回滚,现实中代价极大
    • 随确认数增加:
      • 篡改需要重做的大量工作量
      • 双花成功概率趋近 0(几何级数衰减)

五、自私挖矿(Selfish mining)

  • 基本策略

    • 找到新区块后先不广播
    • 私下在自己的私有链上继续挖
    • 在有利时机一次性公布私有长链
    • 挤掉诚实矿工的区块,获取超出算力占比的收益
  • 成功条件

    • 拥有较高算力(约 1/3 以上)
    • 在网络传播上有一定优势
    • 长期期望收益 > 诚实挖矿策略
  • 对系统影响

    • 主要影响:奖励分配与去中心化程度
    • 目标不是重写深层历史,而是利用短分叉多拿奖励
    • 协议与网络层可通过优化传播等方式缓解
      在这里插入图片描述
相关推荐
China_Yanhy2 小时前
[特殊字符] AWS 区块链交易系统架构结案白皮书
系统架构·区块链·aws
鄭郑2 小时前
【Playwright学习笔记 07】其它用户视觉定位的方法
笔记·学习
China_Yanhy3 小时前
区块链架构的“神经系统”:SNS, SQS, Step Functions 与 AppSync 深度解析
架构·区块链
mjhcsp3 小时前
[笔记] 线性规划 学习笔记
笔记·学习
2501_937798393 小时前
2026企业AI数字资产管理平台评测:谁在定义下一代无形资产?
笔记
dulu~dulu3 小时前
英语改错知识点总结
笔记·英语·自用·英语改错
自不量力的A同学3 小时前
Qwen3-TTS 全家桶开源上线
笔记
claider3 小时前
Vim User Manual 阅读笔记 usr_21.txt Go away and come back 跳转去跳转回来
笔记·编辑器·vim
Tina Tang4 小时前
Agentic AI学习笔记(3)
笔记·学习