
理解 BSV Transaction Output:金额、Locking Script 与 UTXO
Transaction output 是 BSV 交易创建的新价值单元,通常由金额和 locking script 组成。它既可以表示付款和找零,也可以承载 OP_RETURN 数据、token 状态或业务记录。理解 output、UTXO 和 output index,是理解 BSV 交易与应用协议设计的基础。
林知衡
technical_editor
在 BSV 交易中,transaction output(交易输出)是交易创建的新价值单元。它通常由两部分组成:
- 金额:这个输出包含多少 satoshis。
- locking script:未来花费这个输出需要满足什么条件。
如果说 input 表示“花掉哪些旧 UTXO”,那么 output 就表示“创建哪些新 UTXO 或数据记录”。理解 output,是理解 BSV 如何表达付款、找零、链上数据和应用状态的基础。
Output 里包含什么
一个普通 output 通常包含两类核心信息。
1. 金额
金额表示这个 output 承载多少 BSV,单位通常是 satoshis。
例如:
这表示该 output 包含 1000 satoshis 的价值。
2. Locking script
locking script 表示未来谁能花这个 output,以及如何花。
例如一个普通支付 output 可以理解为:
这个 output 如果还没有被后续交易花费,就会成为 UTXO。
Output 如何变成 UTXO
交易刚创建 output 时,它只是该交易中的一个输出。只要它没有被后续交易作为 input 引用,它就是 UTXO(Unspent Transaction Output,未花费交易输出)。
流程可以简化为:
- 交易 A 创建
output 0。 output 0还没有被花费,因此它是 UTXO。- 交易 B 的 input 引用交易 A 的
output 0。 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。
例如:
这类结构很常见。交易可以同时完成付款、找零和数据写入。
在 BSV 应用开发中,多 output 交易尤其重要。因为一个应用场景中,可能同时需要:
- 支付给某个地址;
- 把剩余金额找零给自己;
- 写入业务数据;
- 创建或更新应用状态。
为什么 Output Index 很重要
一笔交易中的 output 会按顺序编号:
后续交易如果要花费某个 output,input 必须引用两个信息:
因此,一个 UTXO 的完整定位不是只有“某个 txid”,而是由交易 ID 和输出序号共同确定。
这对应用开发也很重要。开发者在保存链上业务状态或引用某个输出时,通常应该同时保存:
txidoutput index
只保存 txid 往往不够,因为同一笔交易可能创建多个 output。
BSV 应用中的 Output 设计
在 BSV 上,很多应用协议的核心都体现在 output 设计中。
例如:
- 文件存证可以使用
OP_RETURNoutput 写入文件哈希。 - token 可以使用特定 output 表示所有权或状态。
- 凭证可以使用 output 记录签发信息。
- 供应链事件可以使用 output 记录物品状态变化。
但创建 output 并不等于已经设计好应用协议。一个可维护的 output 设计通常需要明确:
- 数据放在哪里;
- output 是否可花费;
- 脚本如何验证;
- 协议如何升级;
- Overlay 如何识别和索引。
也就是说,output 是协议表达的载体,但协议本身还需要清晰的规则、索引方式和状态解释方式。
新手常见误解
理解 transaction output 时,可以特别注意以下几点:
- output 不一定都是“给某个人”的付款。
- output 的 locking script 才是花费条件,地址只是生成脚本的便利表示。
OP_RETURNoutput 通常不是可花费资金。- 一笔交易可以创建多个 output。
- 保存业务引用时,
txid通常要配合output index。 - output 一旦被后续交易花费,就不再是 UTXO。
参考资料
推荐文章
区块链2026年5月26日
一个地址可以有很多 UTXO:理解 BSV 中的地址、余额与交易构造
在 BSV 的 UTXO 模型中,一个地址不是账户,也不是单一余额槽。同一个地址可以关联多个 UTXO,钱包余额只是这些 UTXO 的汇总。理解这一点,有助于正确处理交易构造、手续费、UTXO 碎片化和隐私问题。
区块链2026年5月26日
在 BSV 中,花钱就是消耗旧 UTXO、创造新 UTXO
在 BSV 中,花钱不是修改余额,而是消耗旧 UTXO、创建新 UTXO。理解这一点,有助于掌握付款、找零、交易链以及 token 和应用状态转移的基本逻辑。
区块链2026年5月26日
什么是 UTXO:理解 BSV 交易模型的基础
UTXO 是“未花费交易输出”,是 BSV 交易模型的基本单位。钱包余额并不是链上的账户字段,而是一组可控制 UTXO 的金额总和。理解 UTXO,有助于理解 BSV 的 input、output、找零、手续费、双花、Script 以及并行处理。