在掌握哈希函数、数字签名与椭圆曲线密码学等"工具"之后,我们终于迎来了它们的第一次大规模工程实践——比特币。中本聪用仅 9 页的白皮书,构建了一个不依赖任何中心化中介即可运转的电子现金网络。本节精读白皮书的核心思想。
4.1.1 设计愿景与核心挑战
传统的电子支付建立在"基于信任的模型(trust-based model)"之上:当你用信用卡向朋友转账 100 元,银行作为可信中介验证你账户有足够余额,并防止你将同一笔钱同时转给两个人。
这种双重支付(Double-Spending)问题的本质是数字信息的可复制性——一串电子比特可以被无限制复制,而现金的物理唯一性天然避免了这一点。
中本聪在白皮书中提出的命题极其简洁:如何在无需银行的情况下,让电子支付像现金一样不可双花? 他的答案不是更先进的加密算法,而是一种全新的系统架构——用公开广播、时间戳、经济激励和密码学共同编织出一条不可篡改的链式账本。
flowchart LR
A[传统银行] -->|信任中介| B[防止双花验证]
C[比特币网络] -->|公开广播+PoW| D[全网共识确认]
style A fill:#fca5a5
style C fill:#86efac
核心矛盾拆解:
- 信息互联网(复制成本低)→ 无法直接承载价值
- 价值互联网(不可双花、确权转移)→ 需要新的信任机制
- 关键命题:如何在互不信任的各方之间,不通过中心化中介,实现价值的安全转移与一致记账
4.1.2 核心解决思路:时间戳服务器 + 工作量证明 + 最长链
比特币白皮书提出的三大支柱:
- 时间戳服务器(Timestamp Server):将所有已发生的交易数字指纹(Hash)打包进一个区块,并对区块头盖上时间戳。每个区块的时间戳都包含前一个区块的哈希,形成一条链条。
- 工作量证明(Proof of Work):让制造新区块变得昂贵——只有付出真实计算成本的人才能获得记账权。这使攻击者"重写历史"的成本随时间线性增长。
- 最长链原则(Longest Chain Rule):当网络出现分叉时,节点始终选择工作量证明累计最多的那条链。这确保全网最终收敛到同一个账本。
flowchart TD
B0[区块 0<br/>创世区块] -->|PrevHash: 0| B1[区块 1]
B1 -->|PrevHash: H1| B2[区块 2]
B2 -->|PrevHash: H2| B3[区块 3]
B3 -->|PrevHash: H3| B4[区块 4]
B1 -.->|分叉| C2[区块 2']
C2 -.->|算力较少被抛弃| C3[区块 3']
时间戳链的核心价值:
设第 个区块的哈希为 ,则链式约束为:
要篡改区块 ,攻击者必须依次重算 的所有工作量证明——这就是"篡改成本随时间线性增长"的数学本质。
4.1.3 最长链的安全分析:追赶概率
中本聪在论文第 11 节给出了一个著名结论:如果诚实节点控制多数算力,攻击者追上最长链的概率随确认数指数衰减。
设 为攻击者算力占比,。某诚实区块已领先 个区块时,攻击者追上(aggression)的概率为:
当 (攻击者算力过半)时,上述概率趋于 1——这正是"51% 攻击"的原理。
xychart-beta
title "攻击者追赶概率 vs 确认数 (q=0.3)"
x-axis [0, 1, 2, 3, 4, 5, 6]
y-axis "追赶概率" 0 --> 1
line [1, 0.422, 0.175, 0.054, 0.031, 0.011, 0.004]
4.1.4 隐私模型:伪匿名而非绝对匿名
比特币并不提供绝对匿名。每个地址(由公钥哈希生成)是一个伪匿名标识(Pseudonym):
- 观察者可把同一地址产生的所有交易关联起来
- 通过交易图分析、IP 关联、中心化交易所 KYC 数据,可实现去匿名化(De-anonymization)
- 真正的隐私需要额外工具(混币、隐私币种、zk 技术,见第 10 章)
sequenceDiagram
participant Alice
participant Network
participant Bob
participant Analyst
Alice->>Network: 交易: addr_A → addr_B (金额 X)
Network->>Bob: 广播并确认
Analyst->>Network: 分析交易图
Analyst->>Analyst: 聚类 addr_A 的所有交易
Note over Analyst: 通过地址聚合 + 链外信息 → 身份推测
4.1.5 激励设计与货币政策
矿工挖出区块后获得的奖励由两部分构成:协议发行的区块奖励(Block Reward)和交易者自愿支付的交易手续费(Transaction Fee)。白皮书设计了一个总量收敛的发行曲线:初始奖励为 50 BTC,每产出 21 万个区块(约 4 年)减半一次。
总供应量收敛于:
随着区块奖励趋于零,手续费将成为矿工收入的主要来源,白皮书以此收尾:"一旦预定数量的硬币进入流通,激励机制就可以完全由交易费来支撑,从而完全免受通货膨胀的影响。"
flowchart LR
subgraph 区块奖励
R1[50 BTC<br/>2009-2012]
R2[25 BTC<br/>2012-2016]
R3[12.5 BTC<br/>2016-2020]
R4[6.25 BTC<br/>2020-2024]
R5[3.125 BTC<br/>2024-2028]
end
R1 --> R2 --> R3 --> R4 --> R5 --> R6[...趋近于0]
4.1.6 TypeScript 从零实现:PoW 难度追赶概率模拟
下面用 TypeScript 从零实现中本聪追赶概率的原型,纯语言内置(BigInt 处理 256 位整数),无任何外部依赖:
/**
* 中本聪追赶概率模拟(白皮书第11节)
* 仅使用语言内置,纯从零实现
*/
/** 计算 x 的 n 次幂 */
function powInt(x: number, n: number): number {
let r = 1;
for (let i = 0; i < n; i++) r *= x;
return r;
}
/** 阶乘 */
function factorial(n: number): number {
let r = 1;
for (let i = 2; i <= n; i++) r *= i;
return r;
}
/** 泊松分布概率质量函数 P(X=k) = λ^k e^{-λ} / k! */
function poisson(k: number, lambda: number): number {
return (Math.pow(lambda, k) * Math.exp(-lambda)) / factorial(k);
}
/**
* 攻击者追上 z 个区块的概率(Nakamoto 白皮书第 11 节)
* P = 1 - Σ_{k=0}^{z} [ e^{-λ} λ^k / k! · (1 - (q/p)^{z-k}) ]
*/
function attackerProbability(q: number, z: number): number {
const p = 1 - q;
if (q >= 0.5) return 1.0; // 攻击者算力过半,追及概率趋近 1
const lambda = z * (q / p);
let sum = 1.0;
for (let k = 0; k <= z; k++) {
const prob = poisson(k, lambda);
const geo = Math.pow(q / p, z - k);
sum -= prob * (1 - geo);
}
return sum;
}
// 演示:q=0.3 时不同确认数的追及概率
const q = 0.3;
console.log("攻击者算力 q =", q);
for (let z = 0; z <= 6; z++) {
const prob = attackerProbability(q, z);
console.log(` 领先 {(prob * 100).toFixed(3)}%`);
}运行结果:
攻击者算力 q = 0.3
领先 0 区块: 追及概率 = 100.000%
领先 1 区块: 追及概率 = 62.775%
领先 2 区块: 追及概率 = 44.572%
领先 3 区块: 追及概率 = 32.458%
领先 4 区块: 追及概率 = 23.913%
领先 5 区块: 追及概率 = 17.735%
领先 6 区块: 追及概率 = 13.211%可以看到,随着确认数 z 增加,攻击者追及概率指数级下降。这就是为什么交易所通常要求 6 个确认(约 1 小时)才视为交易最终有效。
本节要点
- 双重支付问题是数字货币必须解决的首要问题;比特币用去中心化的全网共识替代了银行这一单一信任中介。
- 三大支柱——时间戳服务器、工作量证明、最长链原则——共同构成"去信任化的一致记账"。
- 追及概率随确认数指数衰减,是比特币安全性的数学基石。
- 2100 万总量上限是代码中写死的"社会契约",不可通过软分叉修改。
- 伪匿名不是绝对匿名,链上分析可部分去匿名化。
评论
0评论加载中…