
理解 BSV 交易中的找零 output:为什么它必须显式写入交易
找零 output 是 BSV UTXO 模型中的关键概念:旧 UTXO 必须整体花费,未用完的金额需要通过新的 output 退回给付款方。本文解释找零的工作方式、手续费关系、找零地址、隐私影响以及 UTXO 管理中的实践问题。
林知衡
technical_editor
在 BSV 的 UTXO 模型中,找零 output 是交易把未花完的输入金额退回给付款方的新 output。它不是系统自动生成的“余额调整”,而是必须由钱包或交易构造者显式写入交易。
理解找零很重要,因为一旦手动构造交易时忘记创建找零 output,输入金额与输出金额之间的差额就会全部变成手续费。
一句话理解找零 output
找零 output 是交易把未花完的输入金额退回给付款方的新 output。
在账户模型里,转账后余额会自动减少。例如账户里有 1000 satoshis,支付 300 satoshis 后,账户余额看起来会变成 700 satoshis(暂不考虑手续费)。
但 BSV 使用的是 UTXO 模型。UTXO 不能被部分修改,旧 UTXO 一旦被使用,就必须整体花费。剩余金额如果还属于付款方,就需要通过新的 output 重新锁定给付款方。
为什么需要找零
假设你有一个 1000 satoshis 的 UTXO,想支付 300 satoshis,手续费是 2 satoshis。
你不能只从这个 UTXO 上“扣掉 300”。正确的交易结构是:
- input:花费原来的 1000 satoshis UTXO
- output 0:给收款人 300 satoshis
- output 1:找零给自己 698 satoshis
- fee:2 satoshis
交易完成后,原来的 1000 satoshis UTXO 已经被花掉,不再存在。新的 698 satoshis output 如果还没有被花费,就会成为付款方新的 UTXO。
这就是 UTXO 模型中“余额变化”的真实过程:不是修改旧余额,而是销毁旧 UTXO,并创建新的 UTXO。
找零不是自动发生的
找零必须写进交易 output。
如果一笔交易的 input 总额是 1000 satoshis,但 output 只写了给收款人的 300 satoshis,没有写找零 output,那么剩下的 700 satoshis 不会自动退回给付款人,而是会全部成为手续费。
计算关系是:
系统不会自动知道你希望把剩余金额退回给自己。钱包必须显式创建找零 output。
因此,手动构造交易时忘记找零,是非常严重的错误。
钱包通常如何处理找零
普通钱包会在用户界面中隐藏大部分细节。用户看到的可能只是“转账 300 satoshis”,但底层其实是一笔完整的 UTXO 重组交易。
一般流程包括:
- 选择足够的 UTXO 作为 inputs。
- 创建收款 output。
- 估算手续费。
- 计算剩余金额。
- 创建找零 output。
- 用私钥签名交易。
也就是说,钱包不仅要“发钱”,还要决定使用哪些 UTXO、找零发到哪里、手续费如何估算,以及是否需要避免产生过小的找零。
什么是找零地址
找零 output 需要锁定到某个地址或脚本。这个地址通常称为找零地址。
一个简单例子:
地址 C 仍由付款人的钱包控制,但它不一定等于原来的地址 A。
如果钱包总是把找零发回原地址,外部观察者更容易分析交易之间的关系。因此,更好的钱包通常会为找零生成新地址,减少地址复用带来的关联风险。
找零与链上隐私
找零是公开链上隐私分析的重要线索。
观察者可能尝试判断一笔交易中哪个 output 是付款,哪个 output 是找零。常见判断依据包括:
- 金额是否接近整数或业务金额;
- 地址是否曾经出现过;
- output 的排列顺序;
- 脚本类型是否相同;
- 后续花费模式。
钱包可以通过使用新的找零地址、避免地址复用、合理管理 UTXO 等方式降低关联性。但需要注意,这些做法不能完全消除公开链上的分析可能。
找零与 UTXO 管理
每一次找零都会创建新的 UTXO。如果应用频繁付款,钱包可能积累大量小额找零 UTXO。
这会带来几个实际问题:
- 后续交易可能需要更多 inputs,导致交易体积变大;
- UTXO 太小可能不经济;
- 合并 UTXO 可能暴露多个地址或资金来源之间的关联;
- UTXO 选择策略会影响手续费和隐私。
因此,生产级钱包不能只做到“能付就行”,还需要具备 UTXO 管理策略。例如在合适时机整理 UTXO、避免产生过多小额找零、平衡费用和隐私需求等。
BSV 低费环境下,找零问题仍然存在
BSV 的低费路线让小额交易更可行,但并不意味着找零问题消失。
在大量微支付或数据交易场景中,钱包和应用仍然需要处理:
- 小额 UTXO 是否值得保留;
- 找零是否低于矿工策略限制;
- 是否需要定期整理 UTXO;
- 如何避免交易体积过大。
低费降低了交易成本,但没有改变 UTXO 模型的基本规则:旧 UTXO 必须整体花费,剩余金额必须通过新的 output 找回。
新手常见误解
关于找零,最容易出现以下误解:
- 找零不是自动退回,必须作为 output 写进交易;
- 忘记找零会导致剩余金额变成手续费;
- 找零地址不一定等于付款地址;
- 找零 output 会影响链上隐私;
- 找零太小可能带来 dust 或矿工策略问题;
- 钱包界面显示的是简单转账,但底层可能包含多个 inputs 和找零 output。
参考资料
推荐文章
区块链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 以及并行处理。