一、先看一个不对称
现实里你给我一张 100 元纸币,这件事结束了。你手上少了一张,我手上多了一张。没有任何人需要被通知,也没有任何人需要同意。
现在换成数字的。你给我一个文件,内容是 我欠你 100 元。
你: [100元.txt] ──── 复制 ───▶ 我:[100元.txt]
[100元.txt] ← 你手上还有一份
[100元.txt] ← 还可以再给别人一份
问题不在于文件能不能被伪造——签名可以解决伪造(第 7 讲会讲)。问题在于文件能被无成本地复制,而复制出来的每一份都和原件一模一样,包括签名。
打个比方
实物钞票像一块蛋糕:给出去,你就没有了。这个"没有了"不需要任何人记录、任何人同意——它是物理性质。
数字文件像一句话:你把它告诉别人之后,你自己一点都没少。你可以再告诉一百个人。
⭐ 数字现金的全部难题,一句话就能说完:怎么让"一句话"表现得像"一块蛋糕"。
而这件事在物理上是做不到的——比特没有"给出去就没了"这种性质。所以只能换个方向:既然没法让副本消失,那就让所有人对"哪一份算数"达成一致。 这一转向就是后面三十几讲的全部内容。
双花(double spending):同一笔资金被花费两次。这是数字现金区别于实物现金的唯一核心难题。
⚠️ 很多人以为区块链解决的是"防伪造"或"防篡改"。不是的。防伪造是数字签名解决的,那是 1976 年就有的技术。区块链解决的是双花。
二、传统方案:找一个记账的
银行是怎么做的?
它不记录"你有几张钞票",它记录一个数字,并且是唯一的一份:
账户余额表(只有银行有这一份)
┌─────────┬────────┐
│ Alice │ 100 │
│ Bob │ 50 │
└─────────┴────────┘
Alice 转 30 给 Bob:
① 检查 Alice 余额 ≥ 30
② Alice -= 30 且 Bob += 30 ← 原子操作
关键在第 ② 步的原子性:扣款和加款要么都发生,要么都不发生。而原子性之所以能保证,是因为只有一个人在写这张表。
Alice 想双花?她可以同时发出两笔转账,但银行会串行处理:第一笔通过后余额变成 70,第二笔再检查时就会被拒。
⭐ 传统金融的解法可以概括成一句话:让双花变成不可能,办法是指定一个唯一的记账者。
⚠️ 这里有一个非常容易滑过去的点,值得停一下:银行方案解决双花,靠的不是技术,是"只有一个人在写"。
上面那两步里没有任何密码学,没有任何巧妙的算法——就是一张表和一个串行的写入者。它之所以成立,完全建立在"这张表只有一份"上。 一旦你要求"每个人都能自己持有一份账本",这个前提立刻消失,而扣款和加款之间的原子性也跟着消失。
记住这一点,你就能看懂后面所有共识协议在费劲做什么:它们全部是在没有唯一写入者的情况下,重新造出那个"串行"。
这个方案有效,但它的代价是你必须信任那个记账者:
| 你在信任银行什么 | 出问题时会怎样 |
|---|---|
| 它不会篡改余额 | 你的钱凭空消失,且你无法证明 |
| 它不会拒绝服务 | 账户被冻结,资产在名义上还是你的但你动不了 |
| 它会一直存在 | 破产、跑路、被关停 |
| 它对所有人一视同仁 | 你可能因为国籍、行业被拒绝开户 |
⚠️ 这些不是理论风险。 每一条在现实中都反复发生过。所以问题变成:
能不能不指定记账者,也保证不发生双花?
三、一个朴素方案,以及它为什么失败
最直觉的想法:大家都记账。
Alice 转 30 给 Bob
│
└─▶ 广播给全网所有人
│
├─▶ 节点 1:记下来
├─▶ 节点 2:记下来
├─▶ 节点 3:记下来
└─▶ ...
每个人手上都有完整账本,Alice 想改自己的余额,得同时改所有人的——看起来很难。
但它防不住双花。 Alice 可以这样做:
时刻 T,Alice 余额 = 30
同时发出两笔交易:
Tx₁:Alice → Bob 30 元 (发给网络的左半边)
Tx₂:Alice → Carol 30 元 (发给网络的右半边)
由于网络传播有延迟,不同节点收到这两笔交易的顺序不同:
节点 A 看到:Tx₁ 先到 → 接受 Tx₁,拒绝 Tx₂(余额不足)
节点 B 看到:Tx₂ 先到 → 接受 Tx₂,拒绝 Tx₁(余额不足)
⟹ 账本分裂。Bob 认为自己收到了钱,Carol 也认为自己收到了钱。
Bob 发货了,Carol 也发货了,而 Alice 只付了 30 元。
⭐ 这一步是全课最重要的洞察之一: 双花问题的本质不是"验证"问题,而是排序问题。每个节点单独看,两笔交易都完全合法——签名有效、余额充足。冲突只在"谁在前"这个问题上。
所以真正要解决的是:
在一个没有中心、节点可以随时加入退出、消息传递有延迟的网络里,如何让所有诚实节点对「事件的顺序」达成一致?
这就是共识(consensus)问题。它是分布式系统的经典课题,早在比特币之前几十年就被研究——下一讲会讲它的理论边界。
四、为什么"少数服从多数"不行
既然是排序分歧,投票不就行了?让全网投票决定 Tx₁ 和 Tx₂ 谁在前。
问题在于谁有投票权。
在一个任何人都能匿名加入的网络里,“一人一票"等于"一个网络地址一票”,而一个人可以轻易造出一百万个地址:
Alice 的真实身份:1 个人
Alice 创建的节点:1,000,000 个
投票结果:Tx₂ 在前(Alice 的一百万票 vs 诚实节点的一千票)
女巫攻击(Sybil attack):单个实体伪造大量身份来获得不成比例的影响力。名字来自一本关于多重人格的书 Sybil。
⚠️ 女巫攻击是所有无准入系统的根本困难。 任何"按身份数量"分配权力的机制,在无准入环境下都会立刻失效。
所以投票权必须绑定到某种无法凭空复制的稀缺资源上:
| 方案 | 稀缺资源 | 代表 |
|---|---|---|
| 工作量证明 | 算力(电力 + 硬件) | 比特币 |
| 权益证明 | 链上资产(被锁定的代币) | 以太坊 |
| 准入制 | 由某个权威签发的身份 | 联盟链、传统 BFT |
前两个是这门课第四单元的主题。第三个其实退回了"信任某个权威",只是把权威从"记账者"换成了"发身份的人"。
五、中本聪的组合
⭐ 回到那块蛋糕:这套组合并没有让副本消失——比特没法变成蛋糕。它做的是另一件事:让"哪一份算数"这件事,变成一个改起来极其昂贵的公共记录。
2008 年的比特币白皮书没有发明任何一项新的密码学。哈希、签名、Merkle 树、工作量证明都是现成的。
它做的是一个组合:
① 把交易打包成"块",块之间用哈希链接 → 一旦确定顺序就难以改动(第 9 讲)
② 谁能写下一块?由工作量证明抽签决定 → 解决女巫攻击(第 15 讲)
③ 分歧时以"累计工作量最大"的链为准 → 给出唯一的排序规则(第 16 讲)
④ 写块的人得到新币奖励 → 让诚实挖矿比作恶更赚钱(第 17 讲)
⭐ 第 ④ 条常被低估,但它是整个设计的粘合剂:前三条只是让作弊变难,第四条让作弊变得不划算。 安全性最终建立在经济激励上,而不是纯粹的密码学不可能性。
我们会在第 16、17 讲看到这个区别的实际后果:比特币的安全不是“51% 攻击在数学上不可能”,而是"51% 攻击的成本高于收益"——这是一个经济命题,会随着币价、算力、奖励结构而变化。
六、它没有解决什么
这一节很重要,因为它划定了这门课全部内容的边界。
① 链上数据的真实性——预言机问题
链能保证"所有人看到的数据一致",不能保证"这个数据是真的"。
链上记录: "2026 年 8 月 30 日,北京气温 31°C"
链能保证: 所有人读到的都是 31,且这条记录不会被悄悄改成 25
链不能保证:北京当天真的是 31°C
任何来自链外的信息(价格、天气、比赛结果、身份),都必须由某个预言机(oracle)写进来,而预言机是一个信任点。这不是工程问题,是范式的边界:链是一台复制状态机,它只知道自己被喂了什么。
⚠️ 第 35 讲会讲到,预言机操纵是 DeFi 最大的损失来源之一,而它在原理上无法被"链上解决"。
② 链下资产
“把房子上链"这个说法有一个隐含前提:存在一个会承认链上记录的法律系统。如果法院不认,链上写着房子归你毫无意义。
对于原生数字资产(比特币、以太币),链上记录就是资产本身——所以不存在这个问题。对于任何链外资产,链只是一个数据库,它的效力来自链外的制度。
③ 密钥丢失
去中心化意味着没有客服。私钥丢了,资产永久锁死;私钥泄露,资产永久失去。
银行: 忘记密码 → 拿身份证去柜台重置
区块链: 忘记私钥 → 结束
这不是缺陷,是同一件事的两面:没有人能替你恢复,也就意味着没有人能替你冻结。
④ 身份与合规
链上只有公钥,没有人。“这个地址是不是恐怖分子"这种问题在链上无解。
七、一个必要的澄清:去中心化不是二元的
“去中心化"经常被当成一个开关,其实它是一组独立的维度:
| 维度 | 问题 | 比特币 | 以太坊 | 典型 L2 |
|---|---|---|---|---|
| 架构去中心化 | 有多少台独立的机器 | 高 | 高 | 低(排序器常是单点) |
| 政治去中心化 | 有多少个独立的决策实体 | 中 | 中 | 低 |
| 逻辑去中心化 | 状态是不是可以被切成互不依赖的两半 | 否 | 否 | 否 |
| 验证去中心化 | 普通人能不能自己验证全链 | 高(硬盘约几百 GB) | 中 | 视 DA 方案而定(第 29 讲) |
⭐ 最后一行是这门课最关心的。 一条链如果"技术上是分布式的,但普通人已经跑不动全节点了”,那它实际上退回了信任少数运营者——第 26 讲会详细展开这一点。
八、本讲小结
- 双花是数字现金的唯一核心难题。 防伪造由数字签名解决(1976 年就有),不是区块链的贡献。
- ⭐ 双花的本质是排序问题,不是验证问题。 冲突的两笔交易单独看都完全合法,分歧只在"谁在前”。
- 传统方案是指定唯一记账者,它有效,但代价是你必须信任它不篡改、不冻结、不消失、不歧视。
- “大家都记账"防不住双花,因为网络延迟会让不同节点看到不同顺序,账本会分裂。
- ⚠️ 投票不行,因为女巫攻击:无准入环境下身份可以无限伪造,所以投票权必须绑定到无法凭空复制的稀缺资源——算力或质押资产。
- 中本聪的贡献是组合而非发明:哈希链定序 + PoW 抽签 + 最长链规则 + 经济激励。第四项让安全性成为一个经济命题,而不是数学上的不可能性。
- 它从原理上解决不了四件事:链上数据是否为真(预言机问题)、链外资产的法律效力、密钥丢失、身份合规。这些不是"还没做到”,是范式边界。
- 去中心化不是开关,是多个独立维度。 其中最该关心的是"普通人还能不能自己验证”。
思考题
- 为什么说双花是排序问题而不是验证问题?请构造一个例子说明两笔冲突交易各自都完全合法。
- 银行方案里,原子性依赖什么前提?把这个前提去掉之后哪一步会失效?
- 女巫攻击为什么在传统企业内网里不是问题,在公链里是根本困难?
- 有人说"区块链保证数据不可篡改"。这句话在什么意义上对,什么意义上错?
- 如果比特币把区块奖励立刻降到零(只剩手续费),第五节的四条组合里哪一条会受影响?为什么?
- “把房产证上链就能防止一房两卖”——这个说法的隐含前提是什么?前提不成立时会怎样?
- 举一个你熟悉的系统,按第七节的四个维度评估它的去中心化程度。