比特币交易分为交易输入(Inputs)与交易输出(Outputs)两大组成部分,这套结构依托比特币独特的UTXO账本模型运行,也是区分比特币和账户型公链最核心的标志,绝大多数普通用户在钱包转账时,只会填写接收地址与金额,很难察觉输入与输出在后台自动完成的整套资金清算逻辑。很多币圈新手容易把比特币转账理解成传统银行账户的余额增减,但在比特币网络中不存在独立账户余额,所有资产都以离散的未花费交易输出形式存在,每一次转账本质就是消耗旧输出作为输入,同时生成全新的交易输出完成资产所有权转移。

交易输入代表一笔交易的资金来源,每一条输入都会精准引用历史交易中尚未花费的UTXO,包含对应历史交易ID、输出索引以及解锁脚本,解锁脚本一般就是用户私钥生成的数字签名,用来向全网节点证明资产归属权。这里有一个十分关键的实操细节,UTXO无法拆分使用,只能整体消耗,当用户想要转账的金额小于单个UTXO数额时,钱包程序会自动选取一笔或多笔UTXO汇总作为输入。一旦某条UTXO被当作输入使用,会立刻被全网标记为已花费,永久无法再次动用,这也是比特币协议从底层规避双重支付问题的重要机制。

交易输出代表资金最终分配去向,每一条输出包含转账数额与锁定脚本,锁定脚本会绑定目标比特币地址,规定谁才有资格在后续交易中动用这笔资产。一笔交易能够同时生成多条输出,日常转账场景下普遍存在两类输出,一类是发送至收款地址的目标资产,另一类是返还给转账发起人的找零输出,很多用户疑惑转账之后为何会多出一笔小额回款,根源就是找零机制。除此之外,输入总额和全部输出总额之间产生的差额,会自动成为交易手续费,作为激励提供给打包交易的矿工,网络拥堵阶段,用户调整手续费,本质就是调整输入与输出之间的差额空间。

输入与输出相互依存、缺一不可,二者共同构成完整有效的比特币交易,仅有输入没有输出或者仅有输出没有输入的交易都会被网络节点直接拒绝,唯一例外是区块内第一笔铸币交易,也就是Coinbase交易,该交易没有常规输入,用来发放区块奖励。对于币圈交易者而言,理解二者逻辑能够看懂区块浏览器内的链上明细,辨别转账是否生成找零输出,同时能够理解多输入、多输出交易的手续费差异,在频繁转账、小额定投、链上归集资产等场景合理规划UTXO,避免大量零散小额UTXO堆积,造成后续转账手续费偏高、打包确认缓慢等常见问题。
