> For the complete documentation index, see [llms.txt](https://www.0x1.academy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.0x1.academy/gei-kai-fa-zhe-de-zhi-nan/utxo.md).

# UTXO

### UTXO（Unspent Transaction Output，未花費交易輸出）是比特幣和許多區塊鏈記錄餘額的方式。它不像銀行帳戶那樣記錄「你有多少錢」，而是追蹤「你有哪些可以花的錢」。

***

## 什麼是 UTXO？

想像你的錢包裡有三張紙鈔：一張 100 元、一張 50 元、一張 20 元。你的「餘額」是 170 元，但實際上你擁有的是三張獨立的紙鈔。

UTXO 就是這個概念的數位版：

| 傳統帳戶模型   | UTXO 模型      |
| -------- | ------------ |
| 餘額：170 元 | UTXO 1：100 元 |
|          | UTXO 2：50 元  |
|          | UTXO 3：20 元  |

在 UTXO 模型中，沒有「餘額」這個數字。你的「餘額」是把所有屬於你的 UTXO 加總計算出來的。

***

## UTXO 如何運作？

### 接收比特幣

當有人轉 0.5 BTC 給你，這筆交易會創建一個新的 UTXO：

```
UTXO #12345
金額：0.5 BTC
擁有者：你的地址
```

### 發送比特幣

當你要花這 0.5 BTC 時：

1. 這個 UTXO 會被「消耗」（spent）
2. 產生新的 UTXO 給收款人
3. 如果有找零，產生另一個 UTXO 給你自己

{% hint style="info" %}
**類比理解**

就像你用 100 元買 70 元的東西：

* 100 元紙鈔「消失」了（被消耗）
* 商家收到 70 元（新的 UTXO）
* 你收到 30 元找零（另一個新的 UTXO）

你不能只撕下 70 元給商家——必須整張紙鈔交出去，再拿回找零。
{% endhint %}

***

## 具體例子

假設你有兩個 UTXO：

* UTXO A：0.3 BTC
* UTXO B：0.5 BTC

現在你要轉 0.6 BTC 給朋友：

**輸入（Inputs）：**

* UTXO A（0.3 BTC）
* UTXO B（0.5 BTC）
* 總計：0.8 BTC

**輸出（Outputs）：**

* 給朋友：0.6 BTC（新 UTXO）
* 給自己（找零）：0.19 BTC（新 UTXO）
* 礦工費：0.01 BTC

交易完成後：

* UTXO A 和 B 被標記為「已花費」
* 產生兩個新的 UTXO

***

## 為什麼用 UTXO？

### 優點

1. **隱私性較好**
   * 每次交易可以用新地址收找零
   * 難以追蹤完整的資金流向
2. **容易驗證**
   * 只需檢查 UTXO 是否存在且未被花費
   * 不需要計算整個帳戶歷史
3. **支援並行處理**
   * 不同的 UTXO 可以同時被花費
   * 沒有帳戶狀態衝突問題
4. **天然防止雙花**
   * 每個 UTXO 只能被花費一次
   * 已花費的 UTXO 無法再使用

### 缺點

1. **計算餘額較複雜**
   * 需要加總所有 UTXO
   * 對新手不太直覺
2. **交易較複雜**
   * 需要處理找零
   * 交易體積可能較大
3. **智能合約較難實現**
   * 每次交易都創建新的 UTXO
   * 狀態管理較困難

***

## UTXO vs 帳戶模型

| 特性   | UTXO（比特幣） | 帳戶模型（以太坊） |
| ---- | --------- | --------- |
| 餘額表示 | UTXO 總和   | 帳戶餘額數字    |
| 隱私性  | 較高        | 較低        |
| 交易並行 | 容易        | 較難        |
| 智能合約 | 受限        | 彈性高       |
| 直覺性  | 較低        | 較高        |

以太坊選擇帳戶模型，是因為它更適合複雜的智能合約操作。比特幣選擇 UTXO，是因為它更適合簡單、安全的價值轉移。

***

## UTXO 與交易費

UTXO 的數量會影響交易費：

* **UTXO 越多**，交易體積越大，費用越高
* **大額 UTXO 較省錢**

例如：

* 用 1 個 1 BTC 的 UTXO 轉帳，交易較小
* 用 100 個 0.01 BTC 的 UTXO 轉帳，交易很大

{% hint style="info" %}
**實用建議**

如果你有很多小額 UTXO（「灰塵」），可以在手續費低的時候把它們合併成一個大的 UTXO，這樣未來轉帳會比較便宜。
{% endhint %}

***

## UTXO 集

「UTXO 集」（UTXO Set）是指當前所有未花費的 UTXO 的集合。這是比特幣網路中最重要的資料結構之一。

* 截至 2024 年，比特幣 UTXO 集大約有 8000 萬個 UTXO
* 每個全節點都需要維護完整的 UTXO 集
* UTXO 集的大小影響節點的記憶體需求

***

## 哪些區塊鏈使用 UTXO？

**使用 UTXO 模型：**

* Bitcoin（比特幣）
* Litecoin（萊特幣）
* Bitcoin Cash（比特幣現金）
* Cardano（卡爾達諾）
* Ergo

**使用帳戶模型：**

* Ethereum（以太坊）
* Solana
* 大多數 EVM 相容鏈

***

## 延伸閱讀

* [比特幣](/bi-te-bi/bi-te.md) — 比特幣基本介紹
* [交易](/jiao-yi-cao-zuo/undefined.md) — 交易如何運作
* [OP\_RETURN](/gei-kai-fa-zhe-de-zhi-nan/op-return.md) — 在 UTXO 中嵌入資料
* [哈希值](/qu-kuai-lian-ru-he-da-cheng-gong-shi/wa/ha-xi-zhi.md) — 交易驗證原理
