词条 · 加密与分布式 · 核心
剪枝
把已经花掉的老交易从本地删掉,只留 Merkle 树上必要的哈希,区块头链条依然完整可验。
也称:剪枝、pruning、prune、回收磁盘空间
先看一个麻烦
一条永不删除的链,会一直长。十年后新节点要下载全部历史才能参与,这个门槛会把小设备全部挤出去。
但你不能随便删——链的安全性正来自”每个区块都指着前一个的哈希”,删掉中间任何东西,后面的哈希就全对不上了。
朴素办法:只留最近的区块
砍掉一年前的所有数据,只留最近的。
行不通。你需要老区块来验证”这笔钱确实存在过、且还没被花掉”。删掉它们,你就无法独立判断一笔交易是否合法,只能相信别人告诉你的。
机制:删交易,留哈希
白皮书第 7 节的做法利用了 Merkle 树的一个性质:一个区块里所有交易被压成一个根哈希,而验证根哈希不需要全部叶子。
所以:一笔交易的所有输出都被花掉之后,把这笔交易本身删掉,只保留 Merkle 树上重建根哈希所必需的那几个中间节点。
原文的示意图很清楚:一个有 Tx0–Tx3 四笔交易的区块,剪掉 Tx0、Tx1、Tx2 之后,只剩
Root Hash
/ \
Hash01 Hash23
/ \
Hash2 Hash3
|
Tx3
Hash01 被留下来了(它替代了整个左半边),Hash2 也留着,但 Tx0、Tx1、Tx2 和 Hash0、Hash1 都没了。根哈希仍能算出来,所以区块头依然可验,链条依然完整。
原文那句话是关键:
The interior hashes do not need to be stored.
内部哈希不需要全部存储。
回访:这就是 80 字节那个算式的意义
白皮书紧接着算了一笔账:一个不含交易的区块头约 80 字节,每十分钟一个区块,那么
80 bytes * 6 * 24 * 365 = 4.2MB per year
一年 4.2 MB。这个数字之所以重要,是因为它意味着光是区块头链就足以维护链的完整性,而它小到可以放进内存。剪枝把”必须保存的东西”和”可以丢掉的东西”分开了。
这也是轻节点(见节点)能成立的理论基础:只跟区块头,不存交易。
边界与常见误解
剪枝不改变链的历史,也不是”区块变小了”。它是每个节点各自的本地存储优化——你剪掉的数据在别人那里还有,网络整体并未遗忘。
另外白皮书里没有 prune 这个词,第 7 节标题是 Reclaiming Disk Space。“剪枝”是后来的通行叫法。
来源
提到这个词条的文章
- 比特币白皮书逐节拆解经典拆解 2026-07-31