# 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) — 交易驗證原理


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.0x1.academy/gei-kai-fa-zhe-de-zhi-nan/utxo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
