跳至主要內容
進階

UTXO 模型

深入理解比特幣的未花費交易輸出模型,這是比特幣與傳統帳戶模型的核心差異。

20 分鐘

什麼是 UTXO?

UTXO 是 "Unspent Transaction Output"(未花費交易輸出)的縮寫。 這是比特幣追蹤所有權的核心機制,與傳統銀行系統使用的帳戶餘額模型有根本性的不同。

你可以把 UTXO 想像成一張張的紙幣。每張紙幣有固定的面額, 當你想要支付時,必須使用整張紙幣,如果金額超過需要支付的數目, 你會收到找零(一個新的 UTXO)。

UTXO vs 帳戶模型

特性 UTXO 模型(比特幣) 帳戶模型(銀行/以太坊)
餘額追蹤 計算所有 UTXO 的總和 直接存儲餘額數字
隱私性 較好(可使用多個地址) 較差(所有交易關聯同一帳戶)
並行處理 天然支持(不同 UTXO 獨立) 需要處理 nonce 順序
驗證效率 只需驗證輸入的 UTXO 需要知道當前狀態

UTXO 的生命週期

1

創建

當一筆交易被確認,它的輸出就成為新的 UTXO。這些 UTXO 被「鎖定」在特定的腳本條件下。

2

存在

UTXO 存在於 UTXO 集合中,等待被花費。全節點維護這個集合來驗證新交易。

3

花費

當 UTXO 被用作交易輸入時,它就被「銷毀」了。你必須提供滿足鎖定條件的「解鎖腳本」。

實際範例

假設 Alice 想要發送 0.3 BTC 給 Bob,而她有以下 UTXO:

  • UTXO 1: 0.2 BTC
  • UTXO 2: 0.15 BTC
  • UTXO 3: 0.1 BTC

Alice 需要選擇足夠的 UTXO 來支付 0.3 BTC 加上交易費用。她可以使用 UTXO 1 和 UTXO 2(總計 0.35 BTC), 然後創建兩個輸出:

  • 給 Bob: 0.3 BTC
  • 找零給自己: 0.0499 BTC(扣除 0.0001 BTC 交易費)

UTXO 集合

所有未花費的 UTXO 組成了「UTXO 集合」。這個集合是驗證新交易的關鍵數據結構。 當一筆交易聲稱要花費某個 UTXO 時,節點會檢查這個 UTXO 是否存在於集合中。

有趣的事實: 截至 2024 年,比特幣 UTXO 集合包含約 1.5 億個 UTXO, 佔用約 8 GB 的磁碟空間。全節點需要將此集合保存在快速存儲中以高效驗證交易。

UTXO 管理最佳實踐

  • 合併小額 UTXO:當交易費用較低時,合併多個小額 UTXO 以降低未來的費用
  • 避免 dust:不要創建太小的 UTXO(通常小於 546 satoshis),它們的花費成本可能超過價值
  • 隱私考量:使用新地址接收找零,避免地址重用
已複製連結
已複製到剪貼簿