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

什么是UTXO

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

UTXO(Unspent Transaction Outputs)是未花費的交易輸出,它是比特幣交易生成及驗證的一個核心概念扩氢。交易構(gòu)成了一組鏈式結(jié)構(gòu),所有合法的比特幣交易都可以追溯到前向一個或多個交易的輸出录豺,這些鏈條的源頭都是挖礦獎勵饭弓,末尾則是當前未花費的交易輸出媒抠。

基于賬戶的交易

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

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

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

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

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

基于UTXO的交易

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

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

每筆交易都有若干交易輸入限煞,也就是資金來源,也都有若干筆交易輸出署驻,也就是資金去向。一般來說瓶蚂,每一筆交易都要花費(spend)一筆輸入,產(chǎn)生一筆輸出窃这,而其所產(chǎn)生的輸出征候,就是“未花費過的交易輸出”杭攻,也就是 UTXO疤坝。

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

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

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

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

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

請注意,這一筆交易必須將前面產(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绍刮。當我們說張三擁有 10 枚比特幣的時候,我實際上是說岁歉,當前區(qū)塊鏈賬本中,有若干筆交易的 UTXO 項收款人寫的是張三的地址刨裆,而這些 UTXO 項的數(shù)額總和是 10彬檀。而我們在比特幣錢包中所看到的賬戶余額,實際上是錢包通過掃描區(qū)塊鏈并聚合所有屬于該用戶的UTXO計算得來的窍帝。

兩種交易方式對比

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

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

一點思考

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狸相,一起剝皮案震驚了整個濱河市皇帮,隨后出現(xiàn)的幾起案子蛋辈,更是在濱河造成了極大的恐慌,老刑警劉巖冷溶,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纯衍,居然都是意外死亡苗胀,警方通過查閱死者的電腦和手機襟诸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門歌亲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陷揪,你說我怎么就攤上這事『凡” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵滤港,是天一觀的道長趴拧。 經(jīng)常有香客問我蜗搔,道長八堡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任缝龄,我火速辦了婚禮,結(jié)果婚禮上叔壤,老公的妹妹穿的比我還像新娘口叙。我一直安慰自己炼绘,他們只是感情好妄田,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脚曾,像睡著了一般启具。 火紅的嫁衣襯著肌膚如雪本讥。 梳的紋絲不亂的頭發(fā)上鲁冯,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音撞芍,去河邊找鬼涣仿。 笑死勤庐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的愉镰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼录择,長吁一口氣:“原來是場噩夢啊……” “哼碗降!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起讼渊,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菱皆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仇轻,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡奶甘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疲陕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸭轮,死狀恐怖橄霉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情姓蜂,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布钱慢,位于F島的核電站卿堂,受9級特大地震影響懒棉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜策严,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一饿敲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怀各,春花似錦、人聲如沸瓢对。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至僵腺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辰如,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工贵试, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留琉兜,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓毙玻,卻偏偏與公主長得像豌蟋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子桑滩,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348