UTXO
UTXO(Unspent Transaction Output,未花費交易輸出)是比特幣和許多區塊鏈記錄餘額的方式。它不像銀行帳戶那樣記錄「你有多少錢」,而是追蹤「你有哪些可以花的錢」。
什麼是 UTXO?
想像你的錢包裡有三張紙鈔:一張 100 元、一張 50 元、一張 20 元。你的「餘額」是 170 元,但實際上你擁有的是三張獨立的紙鈔。
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 時:
這個 UTXO 會被「消耗」(spent)
產生新的 UTXO 給收款人
如果有找零,產生另一個 UTXO 給你自己
具體例子
假設你有兩個 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?
優點
隱私性較好
每次交易可以用新地址收找零
難以追蹤完整的資金流向
容易驗證
只需檢查 UTXO 是否存在且未被花費
不需要計算整個帳戶歷史
支援並行處理
不同的 UTXO 可以同時被花費
沒有帳戶狀態衝突問題
天然防止雙花
每個 UTXO 只能被花費一次
已花費的 UTXO 無法再使用
缺點
計算餘額較複雜
需要加總所有 UTXO
對新手不太直覺
交易較複雜
需要處理找零
交易體積可能較大
智能合約較難實現
每次交易都創建新的 UTXO
狀態管理較困難
UTXO vs 帳戶模型
餘額表示
UTXO 總和
帳戶餘額數字
隱私性
較高
較低
交易並行
容易
較難
智能合約
受限
彈性高
直覺性
較低
較高
以太坊選擇帳戶模型,是因為它更適合複雜的智能合約操作。比特幣選擇 UTXO,是因為它更適合簡單、安全的價值轉移。
UTXO 與交易費
UTXO 的數量會影響交易費:
UTXO 越多,交易體積越大,費用越高
大額 UTXO 較省錢
例如:
用 1 個 1 BTC 的 UTXO 轉帳,交易較小
用 100 個 0.01 BTC 的 UTXO 轉帳,交易很大
UTXO 集
「UTXO 集」(UTXO Set)是指當前所有未花費的 UTXO 的集合。這是比特幣網路中最重要的資料結構之一。
截至 2024 年,比特幣 UTXO 集大約有 8000 萬個 UTXO
每個全節點都需要維護完整的 UTXO 集
UTXO 集的大小影響節點的記憶體需求
哪些區塊鏈使用 UTXO?
使用 UTXO 模型:
Bitcoin(比特幣)
Litecoin(萊特幣)
Bitcoin Cash(比特幣現金)
Cardano(卡爾達諾)
Ergo
使用帳戶模型:
Ethereum(以太坊)
Solana
大多數 EVM 相容鏈
延伸閱讀
Last updated