﻿---
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-tw/crypto/account-based-model/)
- [比特幣](/zh-tw/crypto/bitcoin/)
- [區塊確認](/zh-tw/crypto/block-confirmation/)
- [記憶池](/zh-tw/crypto/mempool/)
- [粉塵攻擊](/zh-tw/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-tw/crypto/utxo-model/index.mdx
