提要
- 比特幣不使用“賬戶-餘額” 的模式來表示價值。相反,它將幣作為首要的概念,每一筆錢各自由比特幣用戶持有。
- 一個未花費的交易輸出(UTXO)代表“一整塊” 的比特幣。 UTXO 被用作比特幣交易的輸入。
- UTXO 模型使得比特幣在可審計性、透明性和效率上更優於傳統金融系統。
什麼是UTXO?
一個未花費的交易輸出(UTXO)就代表一定數量的比特幣。多個UTXO 可以組合、單個UTXO 也可以拆分,做出支付所需的任何面額。
我們可以將UTXO 理解成實物貨幣,因為它們必須作為完整的一個單元來使用。如果你想花5 毛錢,你不可能掰開一個1 塊錢硬幣來付款。相反,你必須花掉整個1 塊錢,然後拿5 毛錢的找零。但是,不同於實物貨幣,UTXO 沒有標準面額。一個UTXO 可以是任意數量的比特幣。
顧名思義,一個UTXO 就是一個比特幣交易的輸出。輸出以UTXO 的形式存在,直到被用作另一個交易的輸入為止,這時就不再是未花費的。
在任意時間點,現有UTXO 的集合都被稱為UTXO 集。比特幣節點會追踪UTXO 集,從而確定哪些代幣未被花費,以及哪些人可以花費它們。該系統可以讓比特幣解決多重支付(Double Spend)問題。雙重花費問題是長期困擾數字貨幣嘗試的一大難題。
UTXO 是如何創建的?
新的UTXO 是通過花費現有UTXO 創建的。每個比特幣交易都由輸入和輸出組成。輸入花費已有UTXO,輸出則創建新的UTXO。
那麼,如果新的UTXO 是通過銷毀已有UTXO 創建的,那麼最初的UTXO 是怎麼來的?
幣庫 交易
Coinbase 交易是一種特殊類型的交易,通過創建新的比特幣來獎勵找到區塊的礦工。由於創造了新的比特幣,coinbase 交易沒有輸入,但是會產生一個或多個輸出。就像所有正常輸出一樣,coinbase 交易的輸出是新的UTXO。
每個UTXO 的歷史都可以追溯到coinbase 交易的一個或多個輸出。理解比特幣的UTXO 模型
比特幣的UTXO 模型不同於大多數數字貨幣系統。這是因為比特幣的設計目的有別於傳統金融系統。比特幣的初衷是實現完全透明化、公平性和可審計性。 UTXO 可以幫助比特幣實現這些目標。那麼UTXO 模型是如何運作的?
地址和UTXO
在傳統金融系統中,交易會從一個賬戶中取出資金轉移到另一個賬戶中。比特幣的UTXO 模型沒有賬戶,因此沒有專門的發送方賬戶/地址。地址雖然被用來接收UTXO,但是永遠不會直接記錄在區塊鏈上。比特幣地址是scriptPubKeys 的編碼,包含在每個交易的輸出中。
當比特幣被花費出去時,輸入只包含執行scriptPubKey 所必需的簽名和公鑰,並沒有提到比特幣來自區塊鏈上的哪個地址。但是,UTXO 的上一個地址是可以輕鬆計算得出的。每個交易輸入都通過交易id 來指明其前序交易,並通過索引來指明使用該前序交易的哪一個輸出(實質上就是在引用現有的UTXO)。被引用的交易輸出的scriptPubKey 可以被轉化成比特幣地址。
比特幣的貨幣政策
UTXO 模型可以讓所有比特幣節點在任意時刻就比特幣的存在情況達成共識。也就是說,任何人都可以審計比特幣的總供應量,來確保比特幣的貨幣政策被嚴格遵守。
UTXO 的組合和拆分
一個比特幣交易可以包含任意數量的輸入和輸出。因此,用戶可以任意組合和拆分UTXO 來完成任意金額的付款。
例如,Alice 持有兩個UTXO,分別價值0.5 比特幣 和0.7 BTC。當她向Bob 支付1 BTC 時,可以使用這兩個UTXO 作為輸入,然後將1 BTC 的輸入發送給Bob。
Alice 還另外創建了一個0.199 BTC 的輸出作為找零發送給自己。由於需要支付交易費,她無法給自己發送0.2 BTC。
⚠️ 交易費不以交易輸出(UTXO)的形式體現。它是通過輸入值和輸出值之間的差額推算得出。
交易驗證
UTXO 模型可以讓比特幣節點有效驗證鏈上的每個交易。當節點收到一個交易時,無論該交易是否已經打包進區塊,均可驗證該交易內的UTXO 是否真的有效且沒有被花費。正因如此,比特幣可以在不依賴可信第三方的情況下解決雙重花費問題。
UTXO 模型vs. 賬戶模型
大多數金融系統(包括銀行和密碼學貨幣)不使用UTXO 模型。因此,用戶不依靠某幾種代幣來控制資產,而是使用一個或多個賬戶,且每個賬戶都有餘額。賬戶模型可以讓金融機構和商家精確記錄個人賬戶的借入貸出情況,避免找零和選幣問題。
賬戶模型的可靠性問題
賬戶模型的優勢是以犧牲透明性和可審計性為代價的。審計所有銀行賬戶中的美元總量是不可能的。
另外,大多數賬戶模型飽受退單和賬戶透支等問題的困擾。由於比特幣交易必須引用要被花費的UTXO,無效交易不可能被添加到區塊鏈上。
UTXO 模型的隱私問題
UTXO 模型為用戶提供隱私優勢。比特幣用戶可以將每個UTXO 存儲在不同的地址中分別處理。通過這種方式,用戶可以隱藏其持有的UTXO 之間的聯繫,避免暴露在公眾視線中。對於區塊鏈觀察者來說,確定哪些UTXO 屬於哪些用戶會變得更有難度。
比特幣的設計極大降低了生成新地址的難度。賬戶模型系統(尤其在傳統金融體系中)使得生成新賬戶變得非常麻煩,甚至不可行,迫使用戶將全部或大部分資金存放在一個賬戶中。
鏈分析公司試圖通過各種方法破壞比特幣的隱私性並確定UTXO 的所有權。然而,這些方法靠的是假設和間接證據,而非嚴格的邏輯。
相關術語
交易
交易是比特幣從一個地址轉移到另一個地址的記錄。所有交易都記錄在區塊鏈上的區塊中。
UTXO 集合
UTXO 集是某一時間點存在的所有UTXO 的集合。所有UTXO 的總量就是比特幣的當前供應量。
交易ID(txid)
交易ID(txid)是標識特定交易的一串字母和數字。這個字符串只是對交易進行二次SHA 256 計算得到的哈希值。
多重支付
所謂的多重支付,就是有人將同一筆錢花了不止一次,並讓一方或雙方相信他們已經拿到了錢。比特幣利用去中心化賬本和帶有時間戳的區塊鏈解決了雙重花費問題。
稀缺性
貨幣稀缺性指的是貨幣很難被找到或創造出來。雖然貨幣普及很重要,但是一旦貨幣可以被輕而易舉地創造出來,會對經濟產生負面影響。