无信任机制:从密码学到共识的数学保证

一、什么是无信任机制?

传统金融中,你把钱交给银行,信任它会帮你保管和转账。区块链则不同——参与者不需要信任任何个人或机构,而是通过数学和密码学来保证系统安全。

更准确的说法是最小化信任:你仍然需要信任密码学算法是正确的、软件没有被篡改,但不需要信任任何具体的运营方。


二、密码学层:信任的数学根基

2.1 哈希函数

哈希函数(如 SHA-256)是区块链的”指纹生成器”,满足三个关键性质:

性质 含义 为什么重要
原像抵抗 知道哈希值,反推原始数据几乎不可能 保护隐私
抗碰撞性 找不到两个不同数据有相同哈希 防止伪造
第二原像抵抗 给定一个数据,找不到另一个有相同哈希 防止篡改

Merkle Tree:将所有交易哈希组织成二叉树。验证单笔交易只需 $\log_2 n$ 个哈希,而非全部 $n$ 个交易。

安全性:若哈希函数本身是安全的,则 Merkle Tree 的根也是抗碰撞的。这是因为任何伪造都需要找到哈希碰撞,而这是计算上不可行的。

2.2 数字签名

比特币使用 secp256k1 椭圆曲线:

  • 私钥:一个随机大整数 $d$
  • 公钥:$Q = dG$($G$ 是曲线上的固定点)
  • 签名:用私钥对消息哈希签名,任何人可用公钥验证

核心安全假设:从公钥 $Q$ 反推私钥 $d$,等价于求解离散对数问题,目前没有高效算法。

2.3 零知识证明(ZKP)

ZKP 让你证明”我知道某个秘密”而不泄露秘密本身。

KZG 多项式承诺(用于 zk-SNARKs 和以太坊 Verkle Trees):

可信设置生成 SRS:${g, g^\tau, g^{\tau^2}, …, g^{\tau^d}}_1, {h, h^\tau}_2$

对多项式 $f(X) = \sum_{i=0}^d a_i X^i$,承诺为:

在点 $z$ 处打开:计算商多项式 $q(X) = \frac{f(X) - y}{X - z}$,发送 $\pi = g^{q(\tau)}$。

验证(双线性配对):

正确性:右边 $= e(g^{q(\tau)}, h^{\tau-z}) = e(g, h)^{q(\tau)(\tau-z)} = e(g, h)^{f(\tau)-y}$ = 左边。

应用场景

  • Zcash:证明交易合法,不暴露金额和地址
  • 以太坊扩容:zk-Rollup 在链下计算,链上只验证一个简短证明
类型 可信设置 证明大小 抗量子
zk-SNARKs 需要 ~200 字节
zk-STARKs 不需要 ~50KB

三、共识层:没有中心权威如何达成一致?

3.1 拜占庭将军问题

$n$ 个将军要统一作战计划,其中最多 $f$ 个可能是叛徒。经典结论:

  • 口头消息:需要 $n \geq 3f + 1$
  • 签名消息:需要 $n \geq 2f + 1$

区块链把这个场景从封闭的军事网络扩展到任何人都能加入的开放网络。

3.2 工作量证明(PoW)

比特币的 PoW 要求矿工找到 Nonce,使得区块头的哈希小于目标值:

这本质上是一个计算难题——没有捷径,只能暴力尝试。

核心安全定理

定理:若攻击者控制算力比例 $\alpha < 0.5$,落后 $z$ 个区块时追上诚实链的概率为:

证明思路

把追赶过程看作随机游走。每出一个块:

  • 概率 $1-\alpha$:诚实链增长,差距 +1
  • 概率 $\alpha$:攻击链增长,差距 -1

这是经典的赌徒破产问题。设 $P_k$ 为从落后 $k$ 个区块开始最终追上的概率。

递推关系:$Pk = (1-\alpha) P{k+1} + \alpha P_{k-1}$

解这个差分方程,结合边界条件 $P0 = 1$ 和 $P\infty = 0$,得到:

当 $\alpha = 0.3$,$z = 6$ 时:

这就是比特币”6 个确认”安全性的数学来源。

期望追赶时间

当 $\alpha = 0.3$,$z = 6$,$T = 10$ 分钟:

攻击者平均需要 2.5 小时才能追上,且成功率仅 0.5%。

3.3 权益证明(PoS)

以太坊 2.0 使用 Gasper 协议,结合两个机制:

LMD GHOST:选择”最重”的子树作为主链(类似 PageRank 的思路)

Casper FFG:提供最终性(Finality)——一旦区块被 Finalize,就不可逆转。

核心安全定理

定理(问责安全性):若两个冲突的区块都被 Finalize,则至少 $\frac{1}{3}$ 的质押验证者会被识别并惩罚(Slash)。

证明

Finalize 需要 $\geq \frac{2}{3}$ 质押权重的投票。设两个冲突区块分别获得集合 $S_1$ 和 $S_2$ 的投票,$|S_1| \geq \frac{2}{3}W$,$|S_2| \geq \frac{2}{3}W$。

由容斥原理:

这 $\frac{1}{3}W$ 的验证者同时给两个冲突区块投票,违反了”不双重投票”规则,可被自动识别和惩罚。

罚没条件

  • 双重投票:同一轮对两个不同区块投票
  • 环绕投票:投票逻辑自相矛盾

违反者损失 1~32 ETH,经济惩罚让攻击成本极高。


四、智能合约:代码即法律

4.1 EVM 架构与 Gas 模型

以太坊虚拟机为基于栈的 256 位架构:

1
2
3
4
5
Stack (max 1024 items)          Memory (byte array, linear cost)
↓ ↓
└────────→ EVM 执行引擎 ←─────┘

Storage (Merkle Patricia Trie, persistent)

EIP-1559 交易费机制

BaseFee 销毁,PriorityFee 给矿工/验证者。智能合约漏洞导致巨额损失:

  • The DAO(2016):$60M
  • Poly Network(2021):$610M

代码一旦部署不可修改,所以需要在部署前数学证明其正确性。

4.2 重入攻击的数学分析

漏洞版本(危险):

1
2
3
4
5
6
function withdraw() public {
uint amount = balances[msg.sender];
(bool success, ) = msg.sender.call{value: amount}(""); // 外部调用!
require(success);
balances[msg.sender] = 0; // 状态更新太晚
}

攻击者合约在 call 时递归调用 withdraw,此时余额尚未清零,可以反复提款。

安全版本(检查-生效-交互模式):

1
2
3
4
5
6
7
function withdraw() public {
uint amount = balances[msg.sender];
require(amount > 0); // 检查
balances[msg.sender] = 0; // 先更新状态!
(bool success, ) = msg.sender.call{value: amount}(""); // 再外部调用
require(success);
}

数学上,这确保了状态转移的原子性:要么全部完成,要么回滚,不会出现中间状态被利用。


五、跨链互操作性

5.1 哈希时间锁定(HTLC)

实现两条链上的原子交换,无需信任中介:

1
2
3
4
5
6
7
8
9
根酱 (BTC)                          牛腩 (ETH)
│ │
├── 生成随机数 x, 计算 H(x) ─────────→│
│ │
│←── 部署 ETH 合约: 锁 H(x), 超时 t2 ─┤
├── 部署 BTC 合约: 锁 H(x), 超时 t1 ─→│ (t1 < t2)
│ │
├── 用 x 解锁 ETH ──────────────────→│
│←── 牛腩 用 x 解锁 BTC ─────────────┤

如果 根酱 不行动,超时后双方都能退款。如果 根酱 行动,牛腩 必然能拿到 x。

安全性依赖于:哈希函数是单向的(知道 H(x) 推不出 x),以及时间锁的不可逆性两条链不会同时回滚

5.2 轻客户端

不用下载全部区块链(几百 GB),只下载区块头(80 字节/块,每年约 4MB)。

验证交易时,只需:

  1. 确认区块头的 PoW 有效
  2. 通过 Merkle Path 验证交易确实在这个区块里

复杂度从 $O(n)$ 降到 $O(\log n)$。


六、区块链的”不可能三角”

任何区块链系统都面临三方权衡:

特性 含义 典型代表
去中心化 任何人都能参与,无准入门槛 比特币、以太坊
安全性 能容忍大量恶意节点 BFT 联盟链
可扩展性 高吞吐、低延迟 Solana、联盟链

定理:在无许可网络中,三者不可兼得。

直观理解:网络分区时,你要么停止确认(保安全),要么各自确认(冒双花风险),要么减少通信快速确认(但状态可能不一致)。

当前解决方案:

  • Layer 2(Rollup):把计算放到链下,链上只验证
  • 分片(Sharding):把数据和计算分到多个子链
  • 模块化区块链(Celestia):分离共识层、数据层、执行层

无信任机制的层次结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌─────────────────────────────────────┐
│ 应用层:DeFi、NFT、DAO、跨链桥 │
│ (智能合约自动执行,无需人工干预) │
├─────────────────────────────────────┤
│ 执行层:EVM、WASM、Move VM │
│ (Gas 模型防止资源滥用,形式化验证) │
├─────────────────────────────────────┤
│ 共识层:PoW、PoS、BFT │
│ (数学证明保证一致性和活性) │
├─────────────────────────────────────┤
│ 数据层:Merkle Tree、Patricia Trie │
│ (抗碰撞性继承,高效成员证明) │
├─────────────────────────────────────┤
│ 密码学层:哈希、签名、ZKP、承诺方案 │
│ (归约到标准困难问题,可证明安全) │
└─────────────────────────────────────┘

每一层的”无信任”都建立在下一层的密码学保证之上。正如比特币白皮书所言:

“What is needed is an electronic payment system based on cryptographic proof instead of trust.”

我们需要的不是更多的信任,而是更聪明的信任方式——把信任从人转移到数学和代码上。