理解 BSV Transaction Output:金额、Locking Script 与 UTXO

Transaction output 是 BSV 交易创建的新价值单元,通常由金额和 locking script 组成。它既可以表示付款和找零,也可以承载 OP_RETURN 数据、token 状态或业务记录。理解 output、UTXO 和 output index,是理解 BSV 交易与应用协议设计的基础。

林知衡

林知衡

technical_editor

发布于 2026年5月25日15 分钟阅读

在 BSV 交易中,transaction output(交易输出)是交易创建的新价值单元。它通常由两部分组成:

  • 金额:这个输出包含多少 satoshis。
  • locking script:未来花费这个输出需要满足什么条件。

如果说 input 表示“花掉哪些旧 UTXO”,那么 output 就表示“创建哪些新 UTXO 或数据记录”。理解 output,是理解 BSV 如何表达付款、找零、链上数据和应用状态的基础。

Output 里包含什么

一个普通 output 通常包含两类核心信息。

1. 金额

金额表示这个 output 承载多少 BSV,单位通常是 satoshis。

例如:

TEXT
11000 satoshis

这表示该 output 包含 1000 satoshis 的价值。

2. Locking script

locking script 表示未来谁能花这个 output,以及如何花。

例如一个普通支付 output 可以理解为:

TEXT
1金额:1000 satoshis
2条件:未来必须提供某个公钥对应的有效签名

这个 output 如果还没有被后续交易花费,就会成为 UTXO。

Output 如何变成 UTXO

交易刚创建 output 时,它只是该交易中的一个输出。只要它没有被后续交易作为 input 引用,它就是 UTXO(Unspent Transaction Output,未花费交易输出)

流程可以简化为:

  1. 交易 A 创建 output 0
  2. output 0 还没有被花费,因此它是 UTXO。
  3. 交易 B 的 input 引用交易 A 的 output 0
  4. output 0 被花费,因此它不再是 UTXO。

钱包余额也是基于这个模型计算出来的:钱包找到所有自己能够控制的 UTXO,并把它们的金额汇总起来。

Locking script 的作用

locking script 是 output 的花费条件。

在常见的 P2PKH 支付中,locking script 大致表达的是:

只有能够提供对应公钥和有效签名的人,才能花费这个 output。

这意味着 output 并不是简单地写着“给 Bob”。它写入的是一段可验证的条件。Bob 的钱包如果控制对应私钥,就可以在未来创建一笔新交易,在 input 中提供签名和公钥,从而满足该 output 的花费条件。

这种设计让 BSV 不需要依赖中心化账户系统来判断谁有权花钱。花费权由脚本和签名验证共同表达。

Output 不一定都是付款

很多人第一次接触交易输出时,会把 output 理解成“给某个人付款”。这只是一种常见场景,但不是全部。

在 BSV 中,output 可以表达多种内容:

  • 普通支付输出。
  • 找零输出。
  • OP_RETURN 数据输出。
  • token 协议输出。
  • 应用状态输出。
  • 凭证或业务记录相关输出。

其中,有些 output 是可花费的,有些不是。

例如,OP_RETURN 输出通常用于写入数据,不创建可花费资金。它仍然是 transaction output,但通常不是未来可以继续花费的 UTXO。

一笔交易可以有多个 Output

一笔交易不只能有一个输出。实际交易中,经常会同时包含多个 output。

例如:

TEXT
1output 0: 给收款人 300 satoshis
2output 1: 找零给自己 698 satoshis
3output 2: OP_RETURN 写入一段业务数据

这类结构很常见。交易可以同时完成付款、找零和数据写入。

在 BSV 应用开发中,多 output 交易尤其重要。因为一个应用场景中,可能同时需要:

  • 支付给某个地址;
  • 把剩余金额找零给自己;
  • 写入业务数据;
  • 创建或更新应用状态。

为什么 Output Index 很重要

一笔交易中的 output 会按顺序编号:

TEXT
1output 0
2output 1
3output 2

后续交易如果要花费某个 output,input 必须引用两个信息:

TEXT
1txid + output index

因此,一个 UTXO 的完整定位不是只有“某个 txid”,而是由交易 ID 和输出序号共同确定。

这对应用开发也很重要。开发者在保存链上业务状态或引用某个输出时,通常应该同时保存:

  • txid
  • output index

只保存 txid 往往不够,因为同一笔交易可能创建多个 output。

BSV 应用中的 Output 设计

在 BSV 上,很多应用协议的核心都体现在 output 设计中。

例如:

  • 文件存证可以使用 OP_RETURN output 写入文件哈希。
  • token 可以使用特定 output 表示所有权或状态。
  • 凭证可以使用 output 记录签发信息。
  • 供应链事件可以使用 output 记录物品状态变化。

但创建 output 并不等于已经设计好应用协议。一个可维护的 output 设计通常需要明确:

  • 数据放在哪里;
  • output 是否可花费;
  • 脚本如何验证;
  • 协议如何升级;
  • Overlay 如何识别和索引。

也就是说,output 是协议表达的载体,但协议本身还需要清晰的规则、索引方式和状态解释方式。

新手常见误解

理解 transaction output 时,可以特别注意以下几点:

  • output 不一定都是“给某个人”的付款。
  • output 的 locking script 才是花费条件,地址只是生成脚本的便利表示。
  • OP_RETURN output 通常不是可花费资金。
  • 一笔交易可以创建多个 output。
  • 保存业务引用时,txid 通常要配合 output index
  • output 一旦被后续交易花费,就不再是 UTXO。

参考资料

推荐文章