剛好最近在研究 Hinkol Protocol 的時候有機會翻出這篇好久以前寫的內容
UTXO 是 Unspent Transaction Output 的縮寫,意思是未花費的輸出,簡單來說就是還沒有用掉的收款。比如Will收到一筆比特幣,他沒有用掉,這筆比特幣對他來說就是一筆 UTXO,如果把這筆比特幣分為兩份也不會視為兩筆UTXO來計,下面將舉例說明:
如果Will得到了6.25BTC的區塊獎勵,他要將5BTC轉給Eric的錢包,這樣的過程在UTXO模型中是這樣紀錄的:
案例一:Will的錢包裡有一筆6.25BTC的UTXO
今天他想將6.25BTC轉給Eric,那UTXO的流程為:Will將6.25BTC轉給Eric,Eric又找零給Will 1.25BTC,因此原先那筆6.25BTC的UTXO被銷毀了,而創造出兩筆UTXO ,分別價值 5BTC(Will轉出給Eric的BTC)和1.25BTC(Will轉出後剩餘的BTC)
案例二:Will的錢包裡有10筆個別價值1BTC的UTXO
如果Eric向Will購買了5.2個BTC,那Will會將錢包裡6筆價值1BTC的UTXO銷毀,轉給Eric,而Eric再還給Will一筆0.8BTC的UTXO。因此一共會銷毀6個UTXO再創建2筆UTXO。
UTXO的創建和銷毀是由交易中找零、輸入和輸出的機制建立,它只記錄交易事件,而不記錄最終狀態,與比特幣數量的多寡並無太大關係,要記住的一點是,UTXO 模型在轉帳交易時,是以 UTXO 為單位的,也就是說只有整數倍 UTXO,沒有 0.5 個 UTXO 的說法。