> For the complete documentation index, see [llms.txt](https://help.tokenpocket.pro/cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.tokenpocket.pro/cn/faq/btcwallet/utxo.md).

# 什么是UTXO模型

比特币的账本系统和我们传统的“账户/余额”模型不同。为了更好地理解比特币的运作，我们需要了解它的UTXO（未消费的交易输出）模型。这个模型是比特币特有的一种记账方式。

UTXO模型全称是“未消费的交易输出”。它本质上是一种通过交易记录来管理资金的方式，而不是通过账户余额来管理。简单来说，UTXO模型记录的是每笔交易中的“输入”和“输出”，而不是账户中的余额。<br>

### 在比特币系统中，每一笔交易都有两个部分：

交易输入（Input）：这部分标识了资金的来源。

交易输出（Output）：这部分标识了资金的去向。

每一笔交易都可以有多个输入和多个输出。我们可以把每一笔交易看作是用来“消费”前面交易的输出，同时产生新的输出，这些新的输出在未来可以被用作其他交易的输入。

### 交易示例

交易A：假设有一个矿工节点X，它通过挖矿获得了15枚比特币的奖励。这15枚比特币最初就是一个未消费的交易输出（UTXO）。

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeTkZwPHNxHWjoai0P41nzQfeDTzv2J5Bsm0UKHuQK6bnBf60zng6KXB_r40vsxb63e4oAlplZDtkmO8JUCUv1515Aow9ywADIqjt5nGp_1KegyYVtWiE2i5MHNfE36XOLTYCbKJG8H7wBb3rz23-w3cfay?key=w0MPkuau-iF-LsMc5MtkxQ" alt=""><figcaption></figcaption></figure>

接下来，节点X进行了一些交易：

交易B：节点X把自己拥有的5枚比特币转给了节点Y。这笔交易可以表示为:&#x20;

* 输入：节点X的15枚比特币（来自挖矿的奖励）。
* 输出：节点Y获得了5枚比特币，节点X剩下10枚比特币作为找零。

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXc6U1z2MO_HmEl3L1wOKboqszpEBtKfJPtVIjZCYnZwFU0-68crLXaoI9YmX49z4UVR_tdBcltUgTZsh3JKe-yLjpQJWzH8gdXa-qCAtZpQa8KNzPWKzQOIDzi8jMq2CdRrFi4EcOzGqksMwpZ7gGe-ROs?key=w0MPkuau-iF-LsMc5MtkxQ" alt=""><figcaption></figcaption></figure>

在这个交易中，节点X消费了之前获得的15枚比特币（作为输入），产生了两个新的未消费的交易输出（UTXO）：一个是节点Y的5枚比特币，另一个是节点X剩下的10枚比特币。<br>

交易C：

后来，节点X和节点Y一起合资，各自拿出3枚比特币支付给节点Z。这笔交易可以表示为：

* 输入：节点X的10枚比特币中的3枚，节点Y的5枚比特币中的3枚（来自之前交易B）。
* 输出：节点Z获得了6枚比特币，节点X剩下7枚比特币作为找零，节点Y剩下2枚比特币作为找零，这些都是新产生的UTXO。

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcvwF_YSGubBVSkfdOLxOcg9HXa56Ik_eHZVYf2ltszSWGAIjuvneoh_iUEH8Xg3bCxAlmR8n-g4m4nyv5MDazPp-KsWbyVw8wi0yTtVkPL2JMeW6YnKs_AW1b4mfAT1KBOmd22hmbO8xc9FLd0AwiepVAG?key=w0MPkuau-iF-LsMc5MtkxQ" alt=""><figcaption></figcaption></figure>

### 结论

比特币系统中的每个“账户”可以视为对应着某个地址，比特币区块链不会直接跟踪每个地址的比特币余额，而是在区块链中存储交易数据的整个历史，比特币系统通过“交易池”跟踪区块链网络中所有UTXO的集合，而某个地址在某个时间点所具有的“余额”，是通过检查、求和与该地址相关的所有UTXO来计算。当使用UTXO时，它将从交易池中被删除，这将实时在计算余额时反映出来。

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXceehc8RNc0nwtjtdgUFaPzCTO6gsxMHctyN1rEOchcAapY3LPFPdBzdUUuylCWnOg_SZtK8m_WhRloNDrAUvCJIpLHHNdcBg0ONIaGB8xRmV6Yen1GivaeapjXGBFY0vHA6tXxdhPrHD60C633I-E0YEiP?key=w0MPkuau-iF-LsMc5MtkxQ" alt=""><figcaption></figcaption></figure>

<br>
