EXGO學院|第21課:什麼是UTXO模型?

在上節課中,我們已經講過了什麼是雙花問題,其中,雙花問題的第一種情況,就是由於處理方在記賬時因為同步存在延遲的問題,導致同一筆錢,被反復花了兩次。所以,為了解決這種情況,一些區塊鏈專案便在共識機制的基礎上,引進了UTXO的帳戶機制。

所謂UTXO模型,簡單來說,就是一種特殊的帳戶記賬模型。它的中文意思叫作“未花費交易輸出”,它跟銀行傳統的帳戶模型有一個很大的區別就是,這種模型只記錄交易本身,而不記錄交易的結果。

像傳統的銀行帳戶模型,它是直接記錄結果的,比如,我帳戶裏有1萬塊錢,我要轉給你3000,就會從我帳戶裏扣除3000,我的帳戶餘額是7000, 你的帳戶裏增加3000。

但UTXO模型不是這樣記錄的,它會把整個交易過程記錄下來,原理是這樣的:還是假設我帳戶裏有1萬塊錢,我要轉給你3000。UTXO在記錄的時候,它會先記做這1萬塊錢全部轉了出來,然後再記錄有3000塊轉到了你的帳戶裏,又有7000塊從我的帳戶轉到我自己的帳戶。

整個過程種,它會把牽扯到的帳戶資金、交易地址,轉賬資金、資金來源等資訊全部記下。以此就能夠追蹤到每一筆交易的最初來源。所以,UTXO的本質其實是一種流水記賬,會把交易的過程記錄下來。

這種模型的好處在於,它讓每次交易過程,都被記錄得明明白白,並且可以追溯每筆資金的源頭。也正是基於這個特點,UTXO可以和共識機制一起解決雙花問題。

區塊鏈解決第一種類型的雙花問題,同樣借鑒了傳統銀行的方式,會按照順序一筆一筆處理交易。當節點在處理一筆交易的時候,會先通過UTXO模型檢驗交易資金存不存在,然後追溯這筆交易的源頭,確定沒問題後,就會通過共識機制進行全網廣播,記錄到鏈上。

如果有人想要用同一筆錢支付兩次,區塊鏈網路只會確認先接受到的那一筆,之後那筆交易,節點會在查詢UTXO時發現,這筆資金已經被支付出去,並不存在於你的帳戶中,從而拒絕交易。以此解決了第一種情況的雙花問題。

不過由規則內引發的雙花問題是UTXO也沒有辦法解決的。所謂規則內引發的雙花問題,就是利用共識機制的規則本身,對已經記好賬的交易進行篡改,常見的就是51%算力攻擊。

比如有一個採用POW共識機制的區塊鏈,因為整個網路的人數比較少,有一個節點掌握了整個網路51%的算力,這個時候,他就可以先進行一筆交易,等交易完成後,再通過共識機制篡改之前的那筆交易記錄,否定之前的那筆交易,讓已經花過的錢又重新回到自己帳戶,再次使用。

而這種情況的雙花問題,只能通過提高全網算力的方式來解決,所以,在區塊鏈中,使用的人越多,全網算力越高,整個網路也就越安全。

總的來說,UTXO不僅可以協助共識機制解決區塊鏈中的第一類雙花問題,更賦予了區塊鏈可追源的特點,區塊鏈也能以此為基礎,保證每筆交易的真實與可靠。

Updated on: 27/07/2023