1
雷鋒網(wǎng)AI金融評(píng)論按:本文作者為中國(guó)信息通信研究院(工信部電信研究院)專家敖萌博士,雷鋒網(wǎng)獨(dú)家特約文章,雷鋒網(wǎng)與信通院聯(lián)合首發(fā)。未來,敖萌博士原創(chuàng)的區(qū)塊鏈系列文章還將繼續(xù)刊出,雷鋒網(wǎng)與信通院相關(guān)平臺(tái)同步更新,敬請(qǐng)關(guān)注!
比特幣作為一個(gè)優(yōu)秀的、目前最成功的區(qū)塊鏈系統(tǒng),非常值得我們研究和學(xué)習(xí)。通過前面的文章,相信大家已經(jīng)知道比特幣就是一個(gè)大家一起維護(hù)的賬本了。那么,這個(gè)賬本具體是怎樣工作的呢?
比特幣使用了一種叫做UXTO的模式代替?zhèn)鹘y(tǒng)的賬戶。UXTO是Unspent Transaction Output的縮寫,是比特幣發(fā)明人”中本聰“的天才設(shè)計(jì)。本質(zhì)上,UXTO就是流水賬。了解過一點(diǎn)點(diǎn)會(huì)計(jì)學(xué),見過企業(yè)記賬的同學(xué)都知道,我們現(xiàn)在的會(huì)計(jì)系統(tǒng)絕大部分采用的是一種叫做”借貸記賬法“的方法,賬目分成借方和貸方,每發(fā)生一筆業(yè)務(wù)都要登記兩個(gè)以上的科目。
簡(jiǎn)單來說,Alice轉(zhuǎn)賬給Bob 1美元,使用借貸記賬法至少要產(chǎn)生兩條賬目,Alice賬戶減少1美元,Bob賬戶增加1美元。這種記賬法在企業(yè)經(jīng)營(yíng)、企業(yè)審計(jì)中有無數(shù)的好處,這里就不詳述了。但是這種記賬法也有一個(gè)最大的缺點(diǎn),就是容易產(chǎn)生記賬錯(cuò)誤和記賬誤差。一筆交易需要登記兩條以上的賬目,本質(zhì)上記錄的是“交易的結(jié)果”,而不是“交易本身”。
如果讓一個(gè)程序員來設(shè)計(jì)基于“借貸記賬法”的賬本,數(shù)據(jù)庫(kù)中記錄的就是每一個(gè)賬戶的變動(dòng)情況和余額。在數(shù)據(jù)庫(kù)系統(tǒng)中,需要一系列額外的規(guī)則,來確保交易成功地進(jìn)行。在Alice給Bob轉(zhuǎn)賬1美元的操作中,系統(tǒng)首先需要檢查Alice賬戶余額是否大于等于1美元,然后檢查Bob的賬戶地址是否合法,最后才是Alice賬戶減1,Bob賬戶加1。
上述過程是不是非常復(fù)雜?其實(shí)會(huì)計(jì)的工作之所以那么忙,就是因?yàn)樗麄兠刻於家呀灰撞鸱殖刹煌目颇咳ビ涗?。不同的?huì)計(jì)對(duì)交易理解不同,可能記錄的科目就不一樣(當(dāng)然在簡(jiǎn)單的轉(zhuǎn)賬系統(tǒng)中,不存在這個(gè)問題),于是產(chǎn)生了記賬差異。
“中本聰”沒有采用這種復(fù)雜的記賬方案,而是采用了一種追蹤比特幣的流水賬記錄法——UXTO。本質(zhì)上,就是只記錄交易本身,而不記錄交易的結(jié)果。從金融系統(tǒng)設(shè)計(jì)角度來說,這種方式有點(diǎn)“交易清算分離”的意思。區(qū)塊鏈系統(tǒng)只處理所有的交易,而需要清算、查看余額等信息,由區(qū)塊鏈節(jié)點(diǎn)自行處理。
講一個(gè)故事來理解一下UXTO:淘金者Tom挖到了一塊黃金,重量是100克,于是首先記錄了一條挖礦記錄,有100克黃金進(jìn)入了Tom的口袋。然后Tom把這塊黃金送給了Alice,于是系統(tǒng)記錄了一條交易----有100克黃金從Tom的口袋轉(zhuǎn)移到了Alice的口袋。后來Alice又把黃金切成了兩半,賣給了Bob和Charlie,于是系統(tǒng)又記錄了一條交易----有100克黃金從Alice口袋里轉(zhuǎn)出,分別轉(zhuǎn)給了Bob 50克和Charlie 50克。上面的記錄看上去就是像下面這個(gè)表格:
用程序員最熟悉的樹結(jié)構(gòu)來描述可能更清楚:
每一個(gè)根節(jié)點(diǎn)都是一個(gè)CoinBase(挖礦交易),也就是每一枚比特幣的最初來源。繼而隨著交易的變動(dòng),這棵樹不斷的生長(zhǎng),每個(gè)葉子節(jié)點(diǎn)就是一個(gè)UXTO----Unspent Transaction Output----未花費(fèi)過的交易輸出。嚴(yán)格來說,比特幣系統(tǒng)并不是一個(gè)樹結(jié)構(gòu),而是一個(gè)單向圖。伴隨著交易的復(fù)雜程度,中間樹枝會(huì)有不斷的交錯(cuò),但是不妨礙我們利用樹結(jié)構(gòu)來理解它。
比特幣的UXTO系統(tǒng)遵守兩個(gè)規(guī)則:
1、 除了 CoinBase(挖礦交易)之外,所有的資金來源都必須來自前面某一個(gè)或者幾個(gè)交易的UXTO;
2、任何一筆交易的輸入總量必須等于輸出總量,等式兩邊必須配平。
這樣記錄交易是不是簡(jiǎn)單多了?規(guī)則越少,系統(tǒng)就越不容易出問題。比特幣運(yùn)行了這么多年,這方面經(jīng)受住了時(shí)間的檢驗(yàn)。
UXTO模式最大的好處就是,它忠實(shí)地記錄了交易。我們的現(xiàn)實(shí)世界是隨著時(shí)間流動(dòng)的,交易一筆一筆地發(fā)生,比特幣的區(qū)塊鏈系統(tǒng)一筆一筆忠實(shí)地記錄著這個(gè)世界發(fā)生的事情,不能回滾,不能刪除。只要交易記錄準(zhǔn)確了、清楚了,那么每個(gè)人進(jìn)行清算的結(jié)果就都不會(huì)出錯(cuò)。
因此,“交易”是比特幣區(qū)塊鏈系統(tǒng)的核心,“記錄交易”是區(qū)塊鏈系統(tǒng)的設(shè)計(jì)原則,也是區(qū)塊鏈設(shè)計(jì)思想的核心之一。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。