沒有UTXO,比特幣或不能如此穩定執行10年

買賣虛擬貨幣
在比特幣社羣內,有一種這樣的說法:其實並沒有比特幣,有的只是UTXO。還有一種說法是:如果理解了UTXO,你就理解了比特幣。這兩種說法雖然都有不同程度的誇張,但足以體現UTXO之於比特幣的重要性。既然UTXO這麼重要,今天我們就來簡單介紹一下UTXO。1. 什麼是UTXO

在當前的區塊鏈專案中,主要有兩種記錄儲存方式,一種是賬戶/餘額模型,一種是UTXO模型。比特幣採用就是UTXO模型,以太坊、EOS等則採用的是賬戶/餘額模型。

UTXO是 Unspent Transaction Output的縮寫,意思是未花費的輸出,可以簡單理解為還沒有用掉的收款。比如韓梅梅收到一筆比特幣,她沒有用掉,這筆比特幣對她來說就是一個UTXO。

2. 賬戶/餘額模型和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,這是找零給李雷的。

3. 總結

UTXO 核心設計思路是:它記錄交易事件,而不記錄最終狀態。要計算某個使用者有多少比特幣,就要對其錢包裡所有的UTXO求和,得到結果就是他的持幣數量。UTXO模型在轉賬交易時,是以UTXO為單位的,也就是說在支付時,呼叫的是整數倍UTXO,比如1個UTXO,3個UTXO,沒有0.5個UTXO的說法。

在上文中,我們介紹了比特幣的一般性交易:呼叫一個UTXO給其他人付款,以及集合型交易:呼叫多個UTXO給其他人付款;你還能舉出其他的交易型別嗎?

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;