什么是UTXO,UTXO模型的好處是什么?
比特幣網(wǎng)絡(luò)不是賬本/余額模型,而是UTXO模型,UTXO是比特幣交易生成及驗(yàn)證的一個(gè)核心概念。交易構(gòu)成了一組鏈?zhǔn)浇Y(jié)構(gòu),所有合法的比特幣交易都可以追溯到前向一個(gè)或多個(gè)交易的輸出,這些鏈條的源頭都是挖礦獎(jiǎng)勵(lì),末尾則是當(dāng)前未花費(fèi)的交易輸出。所有的未花費(fèi)(使用)的輸出即整個(gè)比特幣網(wǎng)絡(luò)的UTXO。什么是UTXO呢?
TX是Transaction(交易)的縮寫,TXO即為 TX output(交易輸出):包含一個(gè)value值和一段腳本,該腳本規(guī)定了誰(shuí)有權(quán)使用這筆交易(比如需要私鑰簽名)。UTXO就是Unspent TXO(未花費(fèi)的交易輸出),比特幣網(wǎng)絡(luò)規(guī)定,只有對(duì)“尚未使用過(guò)”的交易簽名才能是有效簽名。每筆交易都有若干交易輸入,也就是資金來(lái)源,也都有若干筆交易輸出,即資金去向。一般來(lái)說(shuō),每一筆交易都要花費(fèi)(spend)一筆輸入,產(chǎn)生一筆輸出,而其所產(chǎn)生的輸出,就是“未花費(fèi)過(guò)的交易輸出”,也就是 UTXO。
比特幣交易遵守以下規(guī)則:
1、所有的資金來(lái)源都必須來(lái)自前面某一個(gè)或者幾個(gè)交易的 UTXO,歷史交易出入相接,生生不息,錢就在交易之間流動(dòng)起來(lái)了。
2、任何一筆交易的交易輸入總量必須等于交易輸出總量,等式兩邊必須配平。
數(shù)字貨幣無(wú)法像金屬貨幣(比如黃金)那樣,僅靠物理轉(zhuǎn)移即可轉(zhuǎn)移所有權(quán)————即當(dāng)A將一份黃金交給B后,A必然不再擁有這份黃金。
而A將一份數(shù)字貨幣轉(zhuǎn)給(簽名)B后,A仍可以把同一筆交易轉(zhuǎn)給C,因?yàn)锳掌握私鑰,這兩份簽名均為有效簽名,這就構(gòu)成了“雙花”。以往的密碼學(xué)貨幣無(wú)法有效解決雙花問(wèn)題,因而無(wú)法擺脫對(duì)第三方中心化機(jī)構(gòu)認(rèn)證的依賴(第三方信任)。因此必須有一種機(jī)制來(lái)確保每筆交易只能使用一次,即只有對(duì)“尚未使用過(guò)”的交易簽名才能是有效簽名。
比特幣規(guī)定每一筆新的交易的輸入必須是某筆交易未花費(fèi)的輸出,每一筆輸入同時(shí)也需要上一筆輸出所對(duì)應(yīng)的私鑰進(jìn)行簽名,并且每個(gè)比特幣的節(jié)點(diǎn)都會(huì)存儲(chǔ)當(dāng)前整個(gè)區(qū)塊鏈上的UTXO,整個(gè)網(wǎng)絡(luò)上的節(jié)點(diǎn)通過(guò)UTXO及簽名算法來(lái)驗(yàn)證新交易的合法性。這樣,節(jié)點(diǎn)不需要追溯歷史就可以驗(yàn)證新交易的合法性。
UTXO模型的好處是:
可擴(kuò)展性 - 由于可以同時(shí)處理多個(gè)UTXO,因此可以實(shí)現(xiàn)并行事務(wù)并鼓勵(lì)可伸縮性創(chuàng)新。
隱私 - 甚至比特幣也不是一個(gè)完全匿名的系統(tǒng),但只要用戶為每筆交易使用新地址,UTXO就可以提供更高級(jí)別的隱私。 如果需要增強(qiáng)隱私性,可以考慮更復(fù)雜的方案,例如環(huán)簽名。
相比使用賬戶/余額模型的以太坊來(lái)說(shuō),這種模型的復(fù)雜度更高,效率也不及后者,但對(duì)于雙花攻擊的抗性更強(qiáng)。目前除了比特幣,也有一些其他的區(qū)塊鏈開(kāi)始推廣這種模型,例如Hyperledger,理由也正如前述,允許并行處理多個(gè)交易,同時(shí)可以保護(hù)隱私。但反對(duì)使用UTXO模型的人認(rèn)為,UTXO在實(shí)際運(yùn)行中會(huì)比理論上產(chǎn)生更大的復(fù)雜性,而這可能是沒(méi)必要的,而且由于其無(wú)狀態(tài)性,和智能合約的契合性不好。