区块链2026年6月30日3 分钟阅读

BUMP:BSV 统一梅克尔路径格式详解

BUMP 是 BSV 生态标准化梅克尔路径的格式,统一单证明与复合证明的编码,减少冗余数据,提升验证效率。本文从背景、数据结构、计算原理到应用定位,系统解读 BUMP 的核心设计与价值。

林知衡

林知衡

technical_editor

分享

一句话理解

BUMP(BSV Unified Merkle Path)是 BSV 生态用于统一表达梅克尔路径的标准格式,目标是用一种数据结构同时支持单个证明和多个相关证明,并尽可能减少不必要的数据。简单说,如果梅克尔证明是“提供从交易到梅克尔根的路径”这一概念,BUMP 就是“如何将这条路径标准化地编码和交换”的格式。

BUMP:BSV 统一梅克尔路径格式详解 文章封面

为什么需要 BUMP

早期系统中,梅克尔证明可能用不同格式表示,这带来几个典型问题:

  • 单笔交易证明和多笔交易证明的格式不统一
  • 同一区块中多笔交易的证明可能重复携带相同的分支哈希
  • 解析方需要为不同格式编写转换逻辑
  • 证明体积可能包含冗余数据

BRC-74 的设计动机正是将这些改进融合到一个新规格中。该规格说明,BUMP 支持用同一数据模型表达多个路径,并通过高度、偏移量和标志位等方式优化验证过程和数据体积。简言之,BUMP 让梅克尔证明在 BSV 生态中更标准、更高效、更适合应用间传输。

BUMP 包含什么

BUMP 的顶层编码包含以下关键字段:

  • block height:区块高度,帮助验证方快速定位对应区块头
  • tree height:梅克尔树的整体高度
  • levels:从第 0 层(叶子层)向上的各层证明数据
  • leaves:每一层需要提供的节点,节点内可包含偏移量、哈希值、txid 标记或 duplicate 标记

相比“只给一串兄弟哈希”,BUMP 提供了更结构化的信息,使得验证过程可以精确、自动化地完成。

level 0 的重要性

梅克尔树的第 0 层即交易 ID 层(叶子层)。BUMP 的 level 0 既可以包含客户端关心的目标 txid,也可以包含计算梅克尔根所需的兄弟 txid。这一设计让 BUMP 能够表达多个交易的相关证明——例如,同一区块中的两笔交易如果路径有重叠,BUMP 可以共享部分节点,而不是重复编码两套完整的证明。这就是 BUMP 相对于简单单路径证明的核心优势之一。

关键字段:offset、hash、txid、duplicate

BUMP 的 JSON 表达中,leaf 通常涉及以下概念:

  • offset:节点在当前层从左起的索引位置,缺失则验证者无法确定哈希在树中的位置
  • hash:该位置上的哈希值
  • txid:布尔标记,指示该哈希是否为接收方关心的交易 ID,而非仅用于计算根的兄弟哈希
  • duplicate:表示不提供额外哈希,而是按梅克尔树规则复制工作哈希,用于处理右侧节点缺失或奇数节点场景,减少编码数据

这些字段共同使验证者能够从 BUMP 中精确重建梅克尔根的计算过程。

BUMP 如何计算梅克尔根

验证的概念流程如下:

  1. 在 level 0 中找到目标 txid 的 offset
  2. 结合相邻节点计算上一层的哈希
  3. 逐层重复处理
  4. 最终得到梅克尔根
  5. 利用 block height 找到对应区块头
  6. 比对计算出的根与区块头中的梅克尔根

BSV TypeScript SDK 中,MerklePath 类可从 BUMP hex 或 binary 解析,并计算根。示意代码:

TypeScript
1import { MerklePath, WhatsOnChain } from '@bsv/sdk'
2
3const bump = MerklePath.fromHex(bumpHex)
4const root = bump.computeRoot(txid)
5
6const chainTracker = new WhatsOnChain('main')
7const ok = await bump.verify(txid, chainTracker)

verify() 不仅计算根,还会通过链追踪服务检查该根是否对应于有效区块头。

BUMP 与普通梅克尔路径的关系

普通梅克尔路径是概念上的:

  • 目标 txid + 相邻哈希 + 左右位置 → 梅克尔根

BUMP 则是标准化的数据格式:

  • block height + tree height + levels + leaves + flags

因此,BUMP 不是新的哈希算法,也不是梅克尔树的替代,而是将梅克尔路径用更适合 BSV 生态的数据结构表达出来。

BUMP 为什么适合 BSV

BSV 的扩展路线意味着区块可能包含大量交易,应用和钱包不应为每笔交易都传输冗余证明。BUMP 通过以下特性契合这一需求:

  • 支持多个路径合并,减少同一区块内多证明之间的重复
  • 携带 block height,方便快速查找区块头
  • 将单证明和复合证明统一为一种格式,降低不同系统间的转换成本

这对 SPV 钱包、Overlay 服务、交易处理器以及应用后端之间的证明交换都至关重要。

BUMP 不能解决什么

BUMP 只表达梅克尔路径,它不提供以下保证:

  • 不能单独证明交易脚本有效
  • 不能证明交易未被双花
  • 不能证明业务数据真实
  • 不能替代区块头链验证

BUMP 的价值在于标准化包含性证明,而非替代所有验证逻辑。

BUMP 在 BSV 技术栈中的位置

在 BSV 技术栈中,BUMP 可以这样定位:

  • 交易:提供 txid 和交易内容
  • BUMP:提供 txid 到梅克尔根的路径
  • Block Headers Service:验证梅克尔根是否在有效区块头中
  • BEEF:将交易和 BUMP 等证明材料打包传递
  • SPV Wallet / 应用:保存和验证相关数据

BUMP 是 SPV 数据交换的基础格式之一,理解 BUMP 后,再看 BEEF 会更加容易。

新手常见误解

  • BUMP 不是区块头,它只是梅克尔路径数据
  • BUMP 通常不包含完整交易,交易需另行提供或通过 BEEF 携带
  • BUMP 不是新的共识规则,而是证明数据格式
  • BUMP 可以合并多个路径,但合并前必须确认 block height 和根匹配
  • 拥有 BUMP 不代表交易业务可信,还需验证交易、签名、脚本、协议和区块头链

参考来源

推荐文章