UTXO模型是什么?UTXO如何让比特币保持透明
比特币不是用“账户加余额”的方式记录价值,而是把每一笔具体的币视为独立存在的单位,未花费的交易输出也就是UTXO会以完整的形式被引用、被花掉、被拆分或被组合,这些UTXO在系统里扮演着“实物货币”一样的角色,使用时只能整块使用,无法将单个UTXO随意切开成两半。

UTXO会保持未花费状态,直到被当作某笔交易的输入,一旦被花出就不再属于UTXO的范围,所有未花费的UTXO共同组成UTXO集,比特币节点会持续跟踪这份集合,用来判断哪些币仍然可用,从而避免同一笔币被重复花掉。
UTXO的来源方式
比特币所有的UTXO都来自某个交易的输出,交易的输入部分消耗已有的UTXO,输出部分生成新的UTXO,如果追根溯源,可以一路回溯到最早的coinbase交易。
Coinbase交易的作用
Coinbase交易会奖励挖出新区块的矿工,这笔奖励没有输入,只会生成新的输出,这些输出本身就是新的UTXO,逐层记录在链上,延续到所有后续的交易中。
比特币UTXO模型的结构
比特币选择UTXO而不是账户模型,目的在于构建透明、可验证、无需依赖中心化机构的价值记录方式,节点可以直接从链上验证所有UTXO,自行判断哪些币是有效的。
地址与UTXO的关系
比特币地址只是脚本的编码,负责接收新的UTXO,但区块链本身不会记录“账户余额”,每个输入只携带验证脚本所需的签名与公钥,并指向先前的某个交易输出,通过交易ID与输出索引来引用一个真实存在的UTXO,由此也能推算出该UTXO对应的地址。
货币规则的执行方式
UTXO模型让所有节点都能自己计算全网币量,因为每个UTXO都是公开且可追溯的,任何人都能统计现有UTXO的总量,系统也因而适合执行固定通胀逻辑。
UTXO的拆分与组合
交易可以包含任意数量的输入和输出,用户可以把多个UTXO合成一个支付金额,也可以把一个较大的UTXO拆成多个部分来找零。
下面这张示意图展示了两个UTXO被组合后支付给对方,并把剩余金额以输出的形式退回。

找零会以新的输出形式出现,交易费用则来自输入值与输出值之间的差额,不会以额外的UTXO形式记录。
交易的验证方式
节点收到交易后会直接验证输入引用的UTXO是否存在、是否未被花掉、脚本是否有效,由于所有节点都能独立验证,链上不需要第三方机构做背书,重复花费自然也就没有可乘之机。
UTXO与账户模型的差异
传统金融体系与一些加密货币使用账户模型,记录账户余额变动,这种结构在记账上更直观,但会损失公开性,且难以让外界统计所有余额的实际情况。
账户模型中的可靠性问题
账户模型无法公开验证总资产规模,链上或银行只能内部记录数字,也容易出现透支等情况,而比特币每笔交易都必须引用确切的UTXO,这类问题不会出现。
UTXO带来的隐私方式
UTXO支持用户频繁创建新的地址,每个地址只负责接收某个独立的UTXO,这样可以降低外界把多个UTXO联系在一起的机会,相比账户模型需要长期使用同一个账户,地址的灵活性让隐私更容易保持,尽管链上分析尝试通过行为推测来还原UTXO之间的关系,这类推测往往依赖假设,不是完全确定的逻辑判断。
相关概念说明
交易
交易记录了比特币从某个UTXO转出并生成新的输出,所有交易都被记录在区块链结构中。
UTXO集
UTXO集就是某一时刻全网所有未花费输出的集合,总和代表系统当前的币量。
交易ID(txid)
交易ID是一串字符,由交易内容经过双重SHA256得到,用来指向某个确定的交易。
多重支付
多重支付指同一笔钱被花费两次的情况,比特币利用分布式账本与区块链来避免这种错误。
稀缺性
稀缺性说明货币不能被轻易制造出来,价值才能得以维持,而UTXO结构正好适用于严格记录总量的系统。






