utxo模型_什么是UTXO?简析账户/余额模型和UTXO模型
在比特幣社區(qū)內(nèi),有一種這樣的說法:其實(shí)并沒有比特幣,有的只是UTXO。還有一種說法是:如果理解了UTXO,你就理解了比特幣。
這兩種說法雖然都有不同程度的夸張,但足以體現(xiàn)UTXO之于比特幣的重要性。既然UTXO這么重要,今天我們就來簡(jiǎn)單介紹一下UTXO。
什么是UTXO
在當(dāng)前的區(qū)塊鏈項(xiàng)目中,主要有兩種記錄保存方式,一種是賬戶/余額模型,一種是UTXO模型。比特幣采用就是UTXO模型,以太坊、EOS等則采用的是賬戶/余額模型。
UTXO是 Unspent Transaction Output的縮寫,意思是未花費(fèi)的輸出,可以簡(jiǎn)單理解為還沒有用掉的收款。比如韓梅梅收到一筆比特幣,她沒有用掉,這筆比特幣對(duì)她來說就是一個(gè)UTXO。
賬戶/余額模型和UTXO模型
賬戶/余額模型生活中很常見,比如我們的銀行賬戶、微信賬戶,都是基于賬戶/余額模型。
賬戶內(nèi)的余額是作為一個(gè)整體存在的。李雷賬戶上有多少錢,看一下余額便知道,在發(fā)生交易時(shí),變動(dòng)的是余額。比如,情人節(jié)當(dāng)天,李雷通過微信給韓梅梅轉(zhuǎn)520元,李雷微信賬戶余額會(huì)減掉520元,而韓梅梅賬戶余額會(huì)增加520元。
UTXO模型則不同于賬戶模型。李雷有多少比特幣,要對(duì)他比特幣地址所有UTXO求和才知道。簡(jiǎn)單來說,UTXO模型就像我們用的錢包,而錢包里的每張紙幣或每枚硬幣都是一個(gè)單獨(dú)的UTXO,因此錢包里有多少錢,并不一目了然,需要把所有紙幣和硬幣面額相加才能得出。
而每一次收付款,是以UTXO為單位消耗或者接收的。比如我們用10元錢買5元早餐時(shí),這個(gè)10元作為一個(gè)UTXO先整體付給賣家,賣家再找零給你。
我們通過一個(gè)例子來說明。
情人節(jié)當(dāng)天,李雷給韓梅梅買花,價(jià)格520元。用現(xiàn)金支付,他掏出6張百元大鈔(相當(dāng)于6個(gè)100元的UTXO)給賣家,賣家需要給李雷找零80元(50元、20元和10元紙幣各一張)。這個(gè)過程中顯而易見,李雷花600元買花,得到80元找零,賣家賣出花,得到520元。
從UTXO的角度看,李雷花掉了6個(gè)UTXO(6張100元),得到3個(gè)UTXO(3張找零);賣家得到6UTXO,找零時(shí)花掉了3個(gè)UTXO。
如果用比特幣完成這筆交易,過程就會(huì)稍有不同,假設(shè)李雷用6個(gè)均為1btc的UTXO付給賣家5.2BTC,最后賣家得到一個(gè)價(jià)值5.2BTC的UTXO,找零給李雷是一個(gè)價(jià)值0.8BTC的UTXO,換句話說6個(gè)UTXO被“銷毀”,變成了兩個(gè)新的UTXO。(兩者不同的原因在于,紙幣面額的種類有限,而比特幣不受這個(gè)限制)。
如果李雷和韓梅梅秀恩愛的過程發(fā)生在比特幣網(wǎng)絡(luò)上,轉(zhuǎn)賬過程是怎樣的?
李雷挖礦得到系統(tǒng)獎(jiǎng)勵(lì)的12.5枚比特幣,于是李雷比特幣地址上就有一個(gè)12.5BTC的UTXO。
李雷要轉(zhuǎn)5.2BTC給韓梅梅,12.5BTC的UTXO將會(huì)被整體花掉,其中5.2BTC 轉(zhuǎn)給韓梅梅,剩下的7.3BTC找零給自己(為方便討論,此處忽略礦工費(fèi))。換句話說,之前12.5BTC是以一個(gè)UTXO的形式整體存在的,在進(jìn)行轉(zhuǎn)賬時(shí),這個(gè)UTXO被“銷毀”了,不存在了,變成了兩個(gè)新的UTXO:一個(gè)屬于韓梅梅,這個(gè)UTXO價(jià)值5.2BTC,另一個(gè)屬于李雷,這個(gè)UTXO價(jià)值7.3BTC,這是找零給李雷的。
兩種模型在轉(zhuǎn)賬時(shí)的對(duì)比
UTXO 核心設(shè)計(jì)思路是:它記錄交易事件,而不記錄最終狀態(tài)。要計(jì)算某個(gè)用戶有多少比特幣,就要對(duì)其錢包里所有的UTXO求和,得到結(jié)果就是他的持幣數(shù)量。UTXO模型在轉(zhuǎn)賬交易時(shí),是以UTXO為單位的,也就是說在支付時(shí),調(diào)用的是整數(shù)倍UTXO,比如1個(gè)UTXO,3個(gè)UTXO,沒有0.5個(gè)UTXO的說法。
總結(jié)
以上是生活随笔為你收集整理的utxo模型_什么是UTXO?简析账户/余额模型和UTXO模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python程序设计丁亚涛课后答案_py
- 下一篇: python向量机使用方法_Python