【區(qū)塊鏈探索筆記十一】:UTXO

什么是UTXO

在比特幣錢包當(dāng)中,我們通常能夠看到賬戶余額,然而在中本聰設(shè)計的比特幣系統(tǒng)中,并沒有余額這個概念。“比特幣余額”是由比特幣錢包應(yīng)用派生出來的產(chǎn)物。中本聰發(fā)明了UTXO交易模型,并將其應(yīng)用到比特幣當(dāng)中。

UTXO(Unspent Transaction Outputs)是未花費(fèi)的交易輸出,它是比特幣交易生成及驗證的一個核心概念。交易構(gòu)成了一組鏈?zhǔn)浇Y(jié)構(gòu),所有合法的比特幣交易都可以追溯到前向一個或多個交易的輸出,這些鏈條的源頭都是挖礦獎勵,末尾則是當(dāng)前未花費(fèi)的交易輸出。

基于賬戶的交易

我們先看下傳統(tǒng)的交易是如何進(jìn)行的:我們設(shè)計一個支付系統(tǒng),給張三一個賬戶,里面有余額100 元,李四有一個賬戶,里面有余額50元。當(dāng)張三要付給李四20元時,做以下操作:

1. 檢查張三賬戶余額是否充足,如果不足20元就終止交易,向張三報“余額不足”

2. 在張三賬戶里減去20元(假設(shè)零手續(xù)費(fèi))

3. 在李四賬戶里增加20元

現(xiàn)在的銀行也好、信用卡也好、證券交易系統(tǒng)也好,互聯(lián)網(wǎng)第三方支付系統(tǒng)也好,其核心都是基于賬戶(account based)的設(shè)計,由關(guān)系數(shù)據(jù)庫支撐。

基于UTXO的交易

要理解UTXO,最簡單的辦法就是把一枚比特幣從誕生到在商海中沉浮的經(jīng)歷描述一下。我們假設(shè)一個這樣的場景:張三挖到12.5 枚比特幣。過了幾天,他把其中 2.5 枚支付給李四。又過了幾天,他和李四各出資 2.5 比特幣湊成 5 比特幣付給王五。

比特幣的區(qū)塊鏈賬本里記錄的是一筆又一筆的交易。

每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向。一般來說,每一筆交易都要花費(fèi)(spend)一筆輸入,產(chǎn)生一筆輸出,而其所產(chǎn)生的輸出,就是“未花費(fèi)過的交易輸出”,也就是 UTXO。

比特幣交易遵守幾個規(guī)則:

第一,除了 coinbase交易之外,所有的資金來源都必須來自前面某一個或者幾個交易的 UTXO,就像接水管一樣,一個接一個,此出彼入,此入彼出,生生不息,錢就在交易之間流動起來了。

第二,任何一筆交易的交易輸入總量必須等于交易輸出總量,等式兩邊必須配平。

上圖第一個交易#1001 號交易是 coinbase 交易。比特幣是礦工挖出來的。當(dāng)一個礦機(jī)費(fèi)盡九牛二虎之力找到一個合格的區(qū)塊之后,它就獲得一個特權(quán),能夠創(chuàng)造一個 coinbase 交易,在其中放入一筆新錢,并且在交易輸出的收款人地址一欄,堂堂正正的寫上自己的地址。假設(shè)這筆比特幣的數(shù)額為12.5 枚,這個coinbase 交易隨著張三挖出來的區(qū)塊被各個節(jié)點(diǎn)接受,經(jīng)過六個確認(rèn)以后永遠(yuǎn)的烙印在歷史中。

過了幾天,張三打算付 2.5 個比特幣給李四,張三就發(fā)起#2001號交易,這個交易的資金來源項寫著“#1001(1)”,也就是 #1001 號交易——張三挖出礦的那個 coinbase 交易——的第一項 UTXO。然后在本交易的交易輸出 UTXO 項中,把2.5個比特幣的收款人地址設(shè)為李四的地址。

請注意,這一筆交易必須將前面產(chǎn)生那一項 12.5 個比特幣的輸出項全部消耗,而由于張三只打算付給李四 2.5 個比特幣,為了要消耗剩下的10比特幣,他只好把剩余的那 10 個比特幣支付給自己,這樣才能符合輸入與輸出配平的規(guī)則。

再過幾天,張三和李四打算AA制合起來給王五付 5 枚比特幣。那么張三或李四發(fā)起 #3001 號交易,在交易輸入部分,有兩個資金來源,分別是#2001(1) 和 #2001(2),代表第 #2001 號交易的第 (1) 和第 (2) 項 UTXO。然后在這個交易的輸出部分里如法炮制,給王五5比特幣,把張三剩下的 7.5 比特幣發(fā)還給自己。以后王五若要再花他這5比特幣,就必須在他的交易里注明資金的來源是 #3001(1)。

所以,其實并沒有什么比特幣,只有UTXO。當(dāng)我們說張三擁有 10 枚比特幣的時候,我實際上是說,當(dāng)前區(qū)塊鏈賬本中,有若干筆交易的 UTXO 項收款人寫的是張三的地址,而這些 UTXO 項的數(shù)額總和是 10。而我們在比特幣錢包中所看到的賬戶余額,實際上是錢包通過掃描區(qū)塊鏈并聚合所有屬于該用戶的UTXO計算得來的。

兩種交易方式對比

1.UTXO只需要看最后一次交易,而賬戶系統(tǒng)要看歷史全數(shù)據(jù)后所有的增減操作全部加起來才能獲得正確的余額,兩者效率差異隨著時間推移會越來越大;

2.UTXO未來可以裁剪歷史老數(shù)據(jù),而賬戶系統(tǒng)則不能丟棄老數(shù)據(jù),前者區(qū)塊鏈可以控制住整體大小,而后者只能持續(xù)膨脹。

一點(diǎn)思考

比特幣規(guī)定每一筆新的交易的輸入必須是某筆交易未花費(fèi)的輸出,每一筆輸入同時也需要上一筆輸出所對應(yīng)的私鑰進(jìn)行簽名,并且每個比特幣的節(jié)點(diǎn)都會存儲當(dāng)前整個區(qū)塊鏈上的UTXO,整個網(wǎng)絡(luò)上的節(jié)點(diǎn)通過UTXO及簽名算法來驗證新交易。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,695評論 2 370