﻿---
title: "UTXO 模型"
description: "了解比特币如何用未花费交易输出表示可花费价值、验证花费、创建找零、为交易空间定价，以及选币与隐私之间的权衡。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# UTXO 模型

> 仅供教育参考，不构成投资建议；投资可能产生损失。

<a id="answer"></a>

## 直接回答

未花费交易输出（UTXO）模型把可花费价值表示为彼此独立的输出，而不是记在某个账户名下的一笔余额。在比特币中，普通交易的输入通过交易标识符和输出索引指向先前的输出。该输出记录金额和锁定脚本。钱包显示的余额是它能够花费的各项输出之和，并非存放在某个地址里的余额字段。

一个输出必须整体花费。如果选中的输入超过付款额与手续费之和，交易必须明确创建找零输出；协议不会自动退回找零。一笔交易可以消耗多个既有 UTXO，并创建多个新的 UTXO，每个都有自己的金额和花费条件。

<a id="mechanism"></a>

## 运作机制

一笔普通的非 coinbase 交易要有效，每个被引用的输出都必须存在且尚未花费，每个输入都必须满足对应输出的锁定条件，而且输出总额不得超过输入总额。两者之差可作为交易手续费：

`fee = sum(inputs) - sum(outputs)`

节点接受区块时，会从当前 UTXO 集中移除已消耗的输出，并加入新创建的输出。验证和重建这一状态仍需要区块历史。链重组可能替换近期区块，因此链尖附近的输出可能重新变成未确认状态，也可能从已接受的历史中消失。

在一条已接受的链历史中，某个输出只能被消耗一次。互相冲突的未确认交易可能争用同一个输出，但内存池的接纳和替换属于节点策略，并不是让链上双花变得有效的规则。BIP 125 定义了选择性替换信号及相应策略，因此收到未确认交易不等于最终结算。

比特币区块空间的价格主要取决于交易权重和费率，而不是转账金额。BIP 141 定义 `virtual size = ceil(weight / 4)`。输入通常比输出增加更多交易数据，所以在相同费率下，花费许多小 UTXO 可能比花费一个较大的 UTXO 更贵。准确大小取决于所用脚本和见证类型。

花费不同 UTXO 的交易具有各自的输入依赖，因而验证和交易构建更容易并行处理。但它们并非在每种实现或应用中都会自动独立：选择同一输出的两笔交易会冲突，子交易也依赖其未确认父交易。钱包的选币逻辑必须协调这些依赖。

UTXO 不会带来匿名性。合并输入可能暗示共同控制，找零识别模式或地址复用也可能关联活动。这些只是启发式线索，并非密码学证明，但合并操作可能暴露分开花费时不会显现的关系。

与账户模型相比，UTXO 模型会明确呈现每个可花费对象及其消耗路径。账户系统通常更新余额、nonce 等共享账户状态。两种模型没有普遍意义上的优劣之分；它们在状态表示、可编程性、并发性和钱包设计上采取了不同权衡。

<a id="example"></a>

## 完整示例

Alice 控制 `0.08 BTC`、`0.12 BTC` 和 `0.50 BTC` 三个 UTXO。为了向 Bob 支付 `0.15 BTC`，她的钱包选择前两个输入，总计 `0.20 BTC`，并估算手续费为 `0.0002 BTC`。交易创建以下输出：

- Bob：`0.15 BTC`
- Alice 的找零：`0.0498 BTC`

计算过程为 `0.20 - 0.15 - 0.0002 = 0.0498 BTC`。确认后，`0.08 BTC` 和 `0.12 BTC` 两个输出已被花费；Bob 的输出与 Alice 的找零成为新 UTXO；`0.50 BTC` 的输出保持不变。

如果交易只创建 Bob 的 `0.15 BTC` 输出，遗漏的 `0.05 BTC` 会成为手续费，而不会自动退回。钱包也可以改选另一组输入、批量支付，或在费率较低时合并小额输出。这些选择需要权衡当前费用、未来费用、确认可靠性和隐私。

<a id="risks"></a>

## 风险与控制

- **费用风险：** 碎片化 UTXO 会增加输入权重；广播前应估算签名后交易的大小和费率。
- **隐私风险：** 合并输入与可识别的找零可能关联地址；不能把新地址视为必然无法关联。
- **确认风险：** 冲突交易、替换策略和链重组会使未确认收款具有可逆性。
- **恢复风险：** 链上保存 UTXO，钱包则保存或派生查找和花费它们所需的密钥与发现数据；应备份所有必要恢复要素。

<a id="misconceptions"></a>

## 常见误解

### 地址就是永久账户

地址编码或表示花费条件。钱包可以控制发送至多个收款地址和找零地址的输出，因此单个地址并不是钱包的完整状态。

### 手续费与付款金额成比例

手续费主要取决于交易权重和所选费率。输入较少的大额付款，可能比由许多输入拼成的小额付款更小、更便宜。

### 协议会自动创建找零

找零是付款方钱包主动构建的普通输出。输入中未分配给输出的任何价值，都可由矿工作为手续费取得。

### 未确认就等于已结算

内存池只是节点的临时视图，不是共识账本。接纳、替换和清除策略可能不同；确认风险会随时间下降，但不会在广播时消失。

<a id="related"></a>

## 相关主题

- [账户模型](/zh-cn/crypto/account-based-model/)
- [比特币](/zh-cn/crypto/bitcoin/)
- [区块确认](/zh-cn/crypto/block-confirmation/)
- [内存池](/zh-cn/crypto/mempool/)
- [粉尘攻击](/zh-cn/crypto/dust-attack/)

<a id="sources"></a>

## 来源

- [Bitcoin: A Peer-to-Peer Electronic Cash System](https://bitcoincore.org/bitcoin.pdf) - Satoshi Nakamoto (查阅日期: 2026-08-22)
- [Transactions — Bitcoin Developer Guide](https://developer.bitcoin.org/devguide/transactions.html) - Bitcoin.org (查阅日期: 2026-08-22)
- [Block Chain — Bitcoin Developer Guide](https://developer.bitcoin.org/devguide/block_chain.html) - Bitcoin.org (查阅日期: 2026-08-22)
- [BIP 141: Segregated Witness (Consensus layer)](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki) - Bitcoin Improvement Proposals (查阅日期: 2026-08-22)
- [BIP 125: Opt-in Full Replace-by-Fee Signaling](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki) - Bitcoin Improvement Proposals (查阅日期: 2026-08-22)

Source: https://wiki.fcontext.com/zh-cn/crypto/utxo-model/index.mdx
