時間:2023-08-13|瀏覽:279
UTXO,即未花費的交易輸出(Unspent transaction output),基于UTXO的模型與銀行使用的賬戶余額模型完全不同。
在比特幣賬戶中,余額不會顯示成一個總數,而是由區塊鏈網絡中所有與當前賬戶有關的UTXO所組成。比特幣的每一筆交易都由輸入和輸出兩個部分組成,輸入代表轉入到你的比特幣地址上的幣,輸出代表你轉出的幣。未花費的交易輸出會那么差額就是交易費,該交易費將被增加到該區塊的激勵中。”
由于UTXO的特殊設計,轉賬比特幣會生成兩筆交易,一筆轉給對方,一筆轉給自己,俗稱“找零”。
在現實生活中進行資金交易時,流程通常是這樣的:小黃得到了10元現金,轉給小牛2元,那么小黃的賬戶減去2元,小牛的賬戶加上2元;小牛和小黃又分別轉給小王1元,小牛和小黃的賬戶分別減去1元,在小王的賬戶上加上2元。
而在比特幣交易中,記賬方式如下所示。同樣是上述流程,小黃通過挖礦得到了10比特幣,他向小牛轉了2比特幣。后來小牛和小黃又各自向小王轉了1比特幣。
而比特幣錢包地址中只記錄了這幾筆交易的流水,并沒有余額的概念。
每筆比特幣交易由若干個輸入和輸出組成,輸入是用來證明你能夠拿出這些比特幣給別人的憑證,這個憑證就是前一個人給你的轉賬記錄。
小黃的比特幣錢包地址中有兩種交易類型。Coinbase是一種特殊交易,指的是小黃挖礦后獲得的獎勵,這種交易實際上只有輸出沒有輸入,輸出的是挖礦者小黃的比特幣錢包地址。小黃要向小牛轉2個比特幣,那么輸入就是小黃挖礦得來的10比特幣交易,輸出是2個比特幣給小牛,另外8個比特幣轉回給自己。
輸出數量必須小于等于輸入數量,如果沒有把多余的比特幣轉回給自己,很可能會作為手續費獎勵給記賬的礦工。后續流程類似,小牛向小王轉1比特幣的輸入是小牛從小黃那得到的2比特幣。包含多個輸入和輸出的交易數據結構被稱為UTXO,即未花費的交易輸出。數據庫中有專門的表記錄UTXO,一旦未花費的輸入產生了其他輸出,該輸入交易就會從UTXO表中刪除。
為什么中本聰選擇采用UTXO而不是賬戶體系呢?一個直接的好處是交易可以并行處理。例如,在銀行的賬戶體系中,如果你和你朋友都想對某一個銀行卡賬戶進行操作,這兩筆交易在處理時有先后順序。而在UTXO中不存在這樣的問題,只要每筆錢都有來源且來源是未被使用過的,任意多個操作同時向一個地址轉賬,或者從同一個地址轉出也是沒有問題的。