区块链

比特币区块头:SPV和轻客户端的80字节基石

区块头是比特币区块的80字节摘要,虽不包含完整交易,却是连接工作量证明链和承诺交易集的关键结构。本文解释区块头字段、Merkle root和SPV原理,帮助理解BSV大规模扩展的实现基础。

林知衡

林知衡

technical_editor

发布于 2026年6月20日4 分钟阅读

先讲结论

区块头是比特币区块的一个轻量级、固定大小的摘要结构,仅有80字节。它不包含全部交易数据,但通过包含前一个区块的哈希来链接到工作量证明链,并通过Merkle root来承诺区块内的所有交易。理解区块头是掌握SPV(简化支付验证)的关键,因为SPV用户正是通过维护区块头链和接收Merkle proof来验证交易,而无需下载完整区块。在BSV的大区块路线下,这一特性使普通用户和应用能以极低的资源消耗参与网络。

比特币区块头:SPV和轻客户端的80字节基石 文章封面

区块与区块头的区别

一个比特币区块可以简化为两部分:

Code
1block:
2 header
3 transactions
  • transactions:区块内所有交易的完整数据,大区块时代这部分体量可能非常庞大。
  • header:固定大小的80字节摘要结构,由若干固定字段组成(参考BSV Skills Center)。

SPV的核心思想正源于此:用户不必保存完整的交易历史,只需保存并验证区块头链即可。

区块头的六大字段

区块头通常包含以下六个字段:

  1. Version(版本):区块所遵循的规则版本。
  2. Previous Block Hash(前块哈希):前一个区块头的哈希值,用于将当前区块连接到前一个区块,形成链条。
  3. Merkle Root(默克尔根):由区块内所有交易ID经默克尔树计算得出的32字节根哈希,用于高效承诺交易集合。
  4. Timestamp(时间戳):区块的大致生成时间。
  5. Bits(难度目标):表示当前工作量证明难度目标的紧凑格式。
  6. Nonce(随机数):矿工在挖矿过程中不断调整的数值,以找到满足难度目标的区块头哈希。

这六个字段共同决定了区块头自身的哈希值,也就是常说的区块哈希或区块ID。

如何形成不可篡改的链

区块链并非简单地将区块罗列在一起。每个区块头都明确引用了前一个区块头的哈希:

Code
1Block 100 header
2 previous block hash → Block 99 header hash
3
4Block 101 header
5 previous block hash → Block 100 header hash

若要修改历史区块,其哈希值就会改变,从而导致后续所有区块的链接失效。因此,一个区块头后面累积的区块越多,重写该区块所需付出的工作量就越大,这便是区块头链能代表累积工作量的原因。

Merkle Root:将交易承诺到区块头

区块头不直接包含交易列表,但包含Merkle root。只要区块内任意一笔交易发生变化,Merkle root通常会随之改变,进而使区块头哈希也发生变化。由此,区块头通过Merkle root以密码学方式承诺了其所包含的交易集合。

对SPV而言,这个链式关系至关重要:

Code
1交易 txid
2 → Merkle proof
3 → Merkle root
4 → block header
5 → proof-of-work chain

如果这一链路成立,轻客户端就能确信某笔交易已被包含在一条经过工作量证明的链上。

Nonce与工作量证明

矿工在构造候选区块时,会计算区块头的双重SHA-256哈希。只有当哈希值小于当前难度目标时,该区块才被认为完成了工作量证明。Nonce是矿工可调整的字段之一,通过不断改变nonce(以及其他可变数据),矿工重复哈希运算直至找到有效解。

这不是某种中心化的盖章机制,而是全网可独立验证的哈希谜题。任何节点拿到区块头后,都能快速执行验证(更多细节):

Code
1double SHA-256(header) < target

80字节固定大小的重要意义

区块可以不断增大,但区块头始终保持80字节。白皮书强调,当用户仅保存区块头时,数据量的增长极为缓慢(见白皮书相关部分)。以平均10分钟一个区块计算,一年的区块头总量仅为数MB级别,与完整交易数据相比微不足道。

BSV的扩展路线正是依赖这种差异:矿工和专业基础设施负责处理大区块和海量交易,而普通用户、钱包和应用只需通过区块头和证明来验证与自己相关的交易。

区块头不能做什么

区块头本身不包含交易的具体内容,因此:

  • 它不能直接告诉你某笔交易的详细信息(如金额、脚本等)。
  • 它不能证明某个业务事件在现实世界中的真实性,只能提供链上包含性和工作量证明上下文。

要全面验证一笔交易,你还需要:

  • 交易本身的完整数据。
  • 包含该交易的Merkle proof或Merkle路径。
  • 对应的区块头或可信的区块头服务。
  • 对交易脚本、输入输出、金额等进行业务层验证。

可见,区块头是SPV的基础,但并非完整验证的全部。

在BSV技术栈中的位置

随着BSV向大区块方向发展,完整区块数据将不断增加。区块头始终保持固定大小,使得轻钱包和应用可以仅维护区块头链。诸如SPV Wallet、Block Headers Service、BEEF、BUMP和Overlay服务等组件,都围绕一个核心事实构建:应用无需保存全链数据,也能验证自己关心的交易。

架构上可以理解为:

Code
1矿工/节点:处理完整区块和交易
2Block Headers Service:提供区块头和Merkle root验证
3钱包/应用:保存自己相关的交易、证明及区块头上下文

这种分层比让每个应用都遍历全链更符合大规模应用场景。

常见误解澄清

  • 区块头不是完整区块,它不包含任何交易细节。
  • 80字节只是区块头的大小,并非区块大小限制。
  • Merkle root是交易集合的根哈希,不是单笔交易的哈希。
  • 仅保存区块头不等于保存了所有交易,SPV仍需获取具体的交易数据和Merkle proof。
  • 区块头能验证工作量证明,但不能替代业务层面的验证。

理解区块头是迈向SPV和轻量级BSV应用的第一步,它为在庞大网络中实现高效、低成本的交易验证提供了基础。

推荐文章