所謂UTXO模型,簡單來說,就是一種特殊的賬戶記賬模型。它的中文意思叫作“未花費交易輸出”,它跟銀行傳統的賬戶模型有一個很大的區別就是,這種模型只記錄交易本身,而不記錄交易的結果。
像傳統的銀行賬戶模型,它是直接記錄結果的,比如,我賬戶裡有1萬塊錢,我要轉給你3000,就會從我賬戶里扣除3000,我的賬戶餘額是7000,你的賬戶裡增加3000。
但UTXO模型不是這樣記錄的,它會把整個交易過程記錄下來,原理是這樣的:還是假設我賬戶裡有1萬塊錢,我要轉給你3000。UTXO在記錄的時候,它會先記做這1萬塊錢全部轉了出來,然後再記錄有3000塊轉到了你的賬戶裡,又有7000塊從我的賬戶轉到我自己的賬戶。
整個過程種,它會把牽扯到的賬戶資金、交易地址,轉賬資金、資金來源等資訊全部記下。以此就能夠追蹤到每一筆交易的最初來源。所以,UTXO的本質其實是一種流水記賬,會把交易的過程記錄下來。
這種模型的好處在於,它讓每次交易過程,都被記錄得明明白白,並且可以追溯每筆資金的源頭。也正是基於這個特點,UTXO可以和共識機制一起解決雙花問題。
區塊鏈解決第一種型別的雙花問題,同樣借鑑了傳統銀行的方式,會按照順序一筆一筆處理交易。當節點在處理一筆交易的時候,會先透過UTXO模型檢驗交易資金存不存在,然後追溯這筆交易的源頭,確定沒問題後,就會透過共識機制進行全網廣播,記錄到鏈上。
如果有人想要用同一筆錢支付兩次,區塊鏈網路只會確認先接受到的那一筆,之後那筆交易,節點會在查詢UTXO時發現,這筆資金已經被支付出去,並不存在於你的賬戶中,從而拒絕交易。以此解決了第一種情況的雙花問題。
不過由規則內引發的雙花問題是UTXO也沒有辦法解決的。所謂規則內引發的雙花問題,就是利用共識機制的規則本身,對已經記好賬的交易進行篡改,常見的就是51%算力攻擊。比如有一個採用POW共識機制的區塊鏈,因為整個網路的人數比較少,有一個節點掌握了整個網路51%的算力,這個時候,他就可以先進行一筆交易,等交易完成後,再透過共識機制篡改之前的那筆交易記錄,否定之前的那筆交易,讓已經花過的錢又重新回到自己賬戶,再次使用。
而這種情況的雙花問題,只能透過提高全網算力的方式來解決,所以,在區塊鏈中,使用的人越多,全網算力越高,整個網路也就越安全。
總的來說,UTXO不僅可以協助共識機制解決區塊鏈中的第一類雙花問題,更賦予了區塊鏈可追源的特點,區塊鏈也能以此為基礎,保證每筆交易的真實與可靠。