Utxo全称未花费交易输出,是比特币网络底层用来记录资产所有权的核心记账单元,也是很多加密项目采用的底层账本模型。和银行系统直接记录账户余额的逻辑不同,链上并不直接存储某个地址的余额数值,用户钱包显示的余额,是钱包软件扫描所有归属该地址的Utxo,将金额相加后计算出来的结果。每一笔Utxo都来自过往交易的输出,被密码脚本锁定在对应地址,只有持有对应私钥的用户,才可以解锁并使用这笔资产。Utxo具备原子属性,不能拆分使用,想要动用部分金额,就必须完整消耗原有Utxo,再生成新的输出,整个流转逻辑更接近现实世界的现金零钱模式。
Utxo的核心交易机制围绕输入与输出完成,每一次转账本质是消耗旧Utxo、生成新Utxo的过程。用户发起交易时,钱包会自动挑选一个或者多个可用Utxo充当交易输入,输入的总金额除去转给接收方的资产与矿工手续费之后,剩余部分会生成一笔找零Utxo返还给自己。被当作输入的旧Utxo会直接标记为已花费,永久失效,不会再次出现在Utxo集合当中,从底层机制规避双花问题,节点只需要校验Utxo是否未被消费、签名是否合法,就可以快速完成交易验证。完整网络维护一份全局Utxo集合,全节点实时同步更新,删除已经花费的条目,收录新生成的输出,保障全网账本状态统一。
对比账户模型,Utxo模型有着独有的优势,同时也存在一定的技术取舍。不同Utxo之间互相独立,互不干扰,多笔不共用Utxo的交易能够并行完成校验,在高并发场景具备天然优势,为后续分片扩容提供基础条件。在隐私层面,转账可以生成全新的找零地址,减少地址复用带来的交易链路关联,相比固定地址记账模式,提升链上行为的隔离度。但这套机制也增加了钱包的处理复杂度,钱包需要设计Utxo选择算法,平衡交易字节大小与手续费成本,零散小额Utxo堆积,还会造成Utxo膨胀,拉高交易字节,推高转账手续费开销。原生比特币Utxo脚本能力有限,复杂业务实现难度更高,后续部分公链推出扩展Utxo模型,以此兼容智能合约场景。
Utxo机制渗透在日常转账、多签托管、脚本锁定等多个业务当中。普通用户进行比特币转账时,钱包后台自动完成Utxo归集、消耗、找零整套流程,大部分使用者感知不到底层逻辑。机构与托管平台会借助Utxo的多签脚本,设置多方签名解锁条件,实现联合资产管理,需要多个私钥共同签名才能够花费对应Utxo,降低单点私钥泄露带来的资产风险。时间锁脚本同样依托Utxo实现,可以把Utxo设置为指定时间之后才允许解锁,适用于资产定时释放、遗产规划等场景。部分交易所的冷钱包架构,也会利用Utxo的特性做资金分层管理,隔离热钱包与冷钱包的资产输出,优化大额资产的存储安全。
对于普通加密货币参与者,理解Utxo也可以帮助规避很多实操误区。大量碎片化小额Utxo留存,会造成后续转账输入数量变多,交易体积膨胀,手续费随之上涨,定期归集零散Utxo,能够优化钱包的转账体验。同时Utxo不存在部分消耗,转账时产生的找零Utxo和收款Utxo拥有同等资产效力,需要妥善保管对应地址的私钥。不少新手会疑惑转账之后为什么会多出陌生地址的资产记录,大多就是找零Utxo生成带来的正常现象。Utxo作为区块链早期成熟的账本范式,它的设计思路至今仍在影响多条公链的底层开发,看懂Utxo,也能更好理解加密资产的链上流转逻辑。