比特币交易主要分为交易输入与交易输出两大部分,整套转账逻辑依托UTXO模型运转,这也是比特币和账户型公链最核心的区别。很多币圈新手习惯用传统账户余额思维理解比特币转账,很容易忽略输入输出的底层逻辑,看懂这两个组成部分,才能读懂链上转账、矿工费计算、找零地址、链上追踪等实操问题。

交易输入代表资金来源,每一个输入都会指向区块链历史中一笔尚未花费的交易输出,也就是UTXO。输入结构内包含前序交易哈希、输出索引号以及解锁脚本,解锁脚本携带私钥生成的数字签名,用来向全网节点证明交易者拥有这笔资金的支配权。一笔交易可以包含多个输入,当用户持有的单个UTXO金额不足以完成转账时,钱包会自动聚合多个UTXO充当输入。需要注意,除了挖矿产生的Coinbase交易没有输入,网络内所有普通转账交易,必须拥有至少一个有效输入,被消耗后的UTXO会永久标记为已花费,无法二次使用,从底层杜绝双重支付风险。

交易输出代表资金分配去向,每一笔输出由转账金额与锁定脚本构成。锁定脚本相当于给比特币加上一把锁,规定未来谁才有资格花费这笔资产,日常转账里锁定脚本一般绑定收款地址对应的公钥哈希。一笔交易能够同时生成多个输出,一部分输出分配给收款地址,另一部分则作为找零返还发送者地址,输入总额减去所有输出总额的差额,就是这笔交易支付给矿工的手续费。最小转账单位为聪,协议内还存在粉尘限制,过小金额的输出会被节点判定为粉尘交易,难以被矿工打包确认。

输入和输出存在强对应的循环关系,旧交易生成的输出,会成为后续新交易可用的输入,不断形成完整的资金流转链条。钱包展示的地址余额,并不是网络直接记录的数字,而是钱包遍历区块链,汇总该地址能够解锁的全部UTXO数值。不少用户转账时出现余额充足却无法发起交易,根源就是可用UTXO碎片化,多个小额输入会增大交易体积,推高手续费,长期频繁小额转账很容易造成UTXO碎片化问题。
熟悉交易输入与输出结构,对于链上数据分析、优化转账成本、辨别交易骗局都具备实用价值。在区块浏览器查询任意一笔BTC交易哈希,都能够清晰看到vin输入列表与vout输出列表,通过追踪输入来源和输出流向,可以梳理完整资金链路。同时,隔离见证升级后,签名相关见证数据被移出交易主体,压缩了交易占用区块空间,但交易输入、输出的基础框架没有发生改变,底层流转逻辑依旧保持稳定。
