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的底层机制,也有助于看懂不同公链的账本设计思路。

