進階
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),它們的花費成本可能超過價值
- ✓ 隱私考量:使用新地址接收找零,避免地址重用
已複製連結