最近大熱門的BRC-20 Token是基於比特幣,但比特幣區塊鏈無法對其進行規則約束。 製造BRC-20 Token的成本在於將文件添加到區塊鏈中,以及未來與Token關聯的UTXO的移動。
既然UTXO這麼重要,今天我們就來簡單介紹一下UTXO。
01. 什麼是UTXO
在目前的區塊鏈專案中,主要有兩種記錄保存方式,一種是帳戶/餘額模型,一種是UTXO模型。比特幣採用是UTXO模型,以太坊等則採用的是帳戶/餘額模型。
UTXO是Unspent Transaction Output的縮寫,意思是未花費的輸出,可以簡單理解為還沒有用掉的收款。例如韓梅梅收到一筆比特幣,她沒有用掉,這筆比特幣對她來說就是一個UTXO。
02. 帳戶/餘額模型和UTXO模型
帳戶/餘額模型生活中很常見,例如我們的銀行帳戶、微信帳戶,都是基於帳戶/餘額模型。
帳戶內的餘額是作為一個整體存在的。 李雷帳戶上有多少錢,看看餘額便知道,在發生交易時,變動的是餘額。例如,情人節當天,李雷透過微信給韓梅梅轉520元,李雷微信帳戶餘額會減掉520元,而韓梅梅帳戶餘額會增加520元。
UTXO模型則不同於帳戶模型。 李雷有多少比特幣,要對他比特幣地址所有UTXO求和才知道。簡單來說,UTXO模型就像我們使用的錢包,而錢包裡的每張紙幣或每枚硬幣都是單獨的UTXO,因此錢包裡有多少錢,並不一目了然,需要把所有紙幣和硬幣面額相加才能得出。
而每一次收付款,是以UTXO為單位消耗或接收的。例如我們用10元錢買5元早餐時,這個10元作為一個UTXO先整體付給賣家,賣家再找零給你。
我們透過一個例子來說明。
情人節當天,李雷給韓梅梅買花,價格520元。用現金支付,他掏出6張百元大鈔(相當於6個100元的UTXO)給賣家,賣家需要為李雷找零80元(50元、20元和10元紙幣各一張)。過程中顯而易見,李雷花600元買花,得到80元找零,賣家賣出花,得到520元。
從UTXO的角度看,李雷花掉了6個UTXO(6張100元),得到3個UTXO(3張找零);賣家得到6UTXO,找零時花掉了3個UTXO。
如果用比特幣完成這筆交易,過程就會稍有不同,假設李雷用6個均為1BTC的UTXO付給賣家5.2BTC,最後賣家得到一個價值5.2BTC的UTXO,找零給李雷是一個價值0.8BTC的UTXO,換句話說6個UTXO被“銷毀”,變成了兩個新的UTXO。 (兩者不同的原因在於,紙鈔面額的種類有限,而比特幣不受這個限制)。
如果李雷和韓梅秀恩愛的過程發生在比特幣網路上,轉帳過程是怎麼樣的?
李雷挖掘得到系統獎勵的12.5枚比特幣,於是李雷比特幣地址上就有一個12.5BTC的UTXO。
李雷要轉5.2BTC給韓梅梅,12.5BTC的UTXO將會被整體花掉,其中5.2BTC 轉給韓梅梅,剩下的7.3BTC找零給自己(為方便討論,此處忽略礦工費)。換句話說,之前12.5BTC是以一個UTXO的形式整體存在的,在進行轉帳時,這個UTXO被「銷毀」了,不存在了,變成了兩個新的UTXO:一個屬於韓梅梅,這個UTXO價值5.2BTC,另一個屬於李雷,這個UTXO價值7.3BTC,這是找零給李雷的。
03.總結
UTXO 核心設計思路是:它記錄交易事件,而不記錄最終狀態。 要計算某個用戶有多少比特幣,就要對其錢包裡所有的UTXO求和,得到結果就是他的持幣數量。 UTXO模型在轉帳交易時,是以UTXO為單位的,也就是說在付款時,調用的是整數倍UTXO,例如1個UTXO,3個UTXO,沒有0.5個UTXO的說法。
比特幣的一般性交易:呼叫一個UTXO給其他人付款,以及集合型交易:呼叫多個UTXO給其他人付款。
你還能舉出其他的交易類型嗎?
以上是想深入了解BRC-20,先學習UTXO的詳細內容。更多資訊請關注PHP中文網其他相關文章!