比特币转移资产的本质,不是把某个硬币从一个钱包搬到另一个钱包,而是由发送者使用私钥签署一笔交易,把此前属于自己的未花费交易输出(utxo)重新锁定到接收方地址,随后交由全网节点验证并写入区块链。钱包更像是管理私钥和构造交易的工具,真正记录资产状态的,是比特币网络上的一组交易输出。只要私钥能够满足输出脚本设定的条件,持有人就具备支配相应比特币的权利。

理解UTXO,是看懂比特币转账的关键。传统账户体系习惯显示账户余额,比特币则把余额拆成一笔笔尚未花费的输出。比如某个地址拥有0.3 BTC和0.2 BTC两笔UTXO,用户要支付0.4 BTC时,钱包可能同时引用这两笔资金作为交易输入,再生成一个0.4 BTC的收款输出,并把剩余部分扣除手续费后作为找零,发送回发送者控制的新地址。也就是说,交易不是修改一个账户里的数字,而是消耗旧输出、创建新输出,资产沿着交易链不断流转。
用户在钱包中输入收款地址和金额后,钱包会挑选可用UTXO,组装交易数据,并用私钥生成数字签名。签名并不是把私钥暴露给网络,而是证明发送者确实拥有这些输入对应的控制权,同时承诺交易中的关键内容没有被擅自改动。网络节点收到交易后,会检查输入是否真实存在、是否已经被花费、签名是否有效、输出金额是否超过输入金额等。任意一笔UTXO只能被成功使用一次,试图把同一笔资金同时支付给两个人,就会触发双重支付冲突。

通过节点验证的交易会进入未确认交易池,并向更多网络节点传播。矿工从中挑选交易打包区块,通过工作量证明竞争记账权;新区块被广播后,其他节点会再次验证区块和其中交易,确认无误后接入本地账本。交易所在区块被后续区块继续连接,就会形成更多确认。确认数量越多,想通过重写历史来推翻交易所需付出的算力和成本越高,因此大额结算通常不会只看已广播,而会等待若干个区块确认。

手续费和找零机制,也解释了为什么区块浏览器里经常会看到多个输入、多个输出。比特币交易的输入总额不能低于输出总额,差额通常成为支付给矿工的手续费;发送者若没有一笔金额刚好匹配的UTXO,就需要生成找零输出。交易确认后,接收方获得的是新的UTXO,未来还可以继续作为下一笔交易的输入。整个过程公开、可追踪且具有不可逆特征,地址本身不等于实名身份,但一旦地址与现实身份发生关联,相关资金流向往往可以沿着链上记录持续分析。比特币转移资产依靠的并非银行式的中心审批,而是私钥授权、UTXO模型、数字签名、节点验证和区块确认共同构成的一套公开结算规则。