目前在區(qū)塊鏈網(wǎng)絡(luò)中左痢,兩種記錄模式非常流行丹喻,第一種是UTXO(未使用交易輸出)模型,另外一種是賬戶/余額模型缤至,UTXO在比特幣網(wǎng)絡(luò)和Hyperledger中使用,賬戶/余額模型在以太坊和其他區(qū)塊鏈項(xiàng)目中應(yīng)用較多康谆,本文簡(jiǎn)單介紹一下兩種模型的工作原理和優(yōu)缺點(diǎn)领斥。
在比特幣中,每筆交易都會(huì)花費(fèi)先前交易的產(chǎn)出沃暗,并產(chǎn)生新的產(chǎn)出月洛,這些產(chǎn)出可能會(huì)在未來(lái)通過(guò)交易消耗。 所有未使用的事務(wù)都保存在每個(gè)完全同步的節(jié)點(diǎn)中孽锥,因此該模型被命名為“UTXO”嚼黔。 用戶的錢包跟蹤與用戶擁有的所有地址相關(guān)聯(lián)的未使用交易的列表,并且錢包的余額被計(jì)算為這些未使用的交易的總和忱叭。
UTXO模型如何在比特幣交易中工作的簡(jiǎn)單示例:
1.通過(guò)采礦隔崎,Alice獲得了12.5個(gè)比特幣今艺。 Alice的錢包與一個(gè)12.5比特幣的UTXO記錄相關(guān)聯(lián)韵丑。
2.愛(ài)麗絲想給鮑勃1比特幣。 Alice的錢包首先解鎖了她12.5比特幣的UTXO虚缎,并使用這12.5比特幣作為交易的輸入撵彻。 該交易將1比特幣發(fā)送到Bob的地址,并且將11.5比特幣的提醒以新的UTXO的形式發(fā)回給Alice实牡,以新創(chuàng)建的地址(由Alice擁有)陌僵。
3.假設(shè)在步驟2之前還有另一個(gè)與Bob相關(guān)的2個(gè)比特幣的UTXO,Bob的錢包現(xiàn)在顯示他的余額是3個(gè)比特幣创坞。 Bob的錢包現(xiàn)在跟蹤兩個(gè)UTXO:一個(gè)來(lái)自前一個(gè)碗短,另一個(gè)來(lái)自第二步的交易。如果Bob希望花費(fèi)他們题涨,則需要解鎖每個(gè)UTXO偎谁。
賬戶/余額模型會(huì)將每個(gè)賬戶的余額保持為全球狀態(tài)总滩。 檢查帳戶的余額以確保其大于或等于支出交易金額。
以下是這個(gè)模型在以太坊中的工作原理簡(jiǎn)圖:
艾麗斯通過(guò)采礦獲得5個(gè)醚巡雨。 在系統(tǒng)中記錄愛(ài)麗絲有5個(gè)醚闰渔。
2.愛(ài)麗絲想給鮑勃1乙醚,所以系統(tǒng)將首先從愛(ài)麗絲的賬戶中扣除1乙醚铐望,所以愛(ài)麗絲現(xiàn)在有9個(gè)乙醚冈涧。
3.系統(tǒng)然后將鮑勃的賬戶增加1乙醚。 系統(tǒng)知道鮑勃有2個(gè)醚正蛙,所以Bob的平衡增加到3個(gè)醚督弓。
UTXO模型中的交易的一個(gè)比喻是紙幣賬單(紙幣)。 每個(gè)賬戶通過(guò)累積錢包中的賬單數(shù)量(與這個(gè)地址/錢包相關(guān)聯(lián))來(lái)記錄它有多少錢跟畅。 當(dāng)我們想花錢的時(shí)候咽筋,我們使用一個(gè)或多個(gè)賬單(現(xiàn)有的UTXO),足以支付成本徊件,并可能收到一些改變(新的UTXO)奸攻。 每張賬單只能用一次,因?yàn)橐坏┯猛晔郏琔TXO就從池中移出睹耐。
以太坊的記錄保存就像銀行一樣。 類比是使用ATM /借記卡部翘。 銀行跟蹤每張借記卡有多少錢硝训,當(dāng)我們需要花錢時(shí),銀行會(huì)在批準(zhǔn)交易前檢查記錄以確保我們有足夠的余額新思。
兩種模式都達(dá)到了在共識(shí)系統(tǒng)中跟蹤賬戶余額的同一目標(biāo)窖梁。
UTXO模型的優(yōu)點(diǎn):
可擴(kuò)展性 - 由于可以同時(shí)處理多個(gè)UTXO,因此可以實(shí)現(xiàn)并行事務(wù)并鼓勵(lì)可伸縮性創(chuàng)新夹囚。
隱私 - 甚至比特幣也不是一個(gè)完全匿名的系統(tǒng)纵刘,但只要用戶為每筆交易使用新地址,UTXO就可以提供更高級(jí)別的隱私荸哟。 如果需要增強(qiáng)隱私性假哎,可以考慮更復(fù)雜的方案,例如環(huán)簽名鞍历。
余額/賬戶模型的優(yōu)點(diǎn):
簡(jiǎn)單性 - 以太坊選擇了一種更直觀的模式舵抹,以便為復(fù)雜智能合約的開(kāi)發(fā)人員帶來(lái)益處,尤其是那些需要國(guó)家信息或涉及多方的開(kāi)發(fā)人員劣砍。 一個(gè)例子是一個(gè)智能合約惧蛹,跟蹤各國(guó)根據(jù)它們執(zhí)行不同的任務(wù)。 UTXO的無(wú)狀態(tài)模型會(huì)迫使交易包含狀態(tài)信息,這不必要地使合約的設(shè)計(jì)復(fù)雜化香嗓。
效率 - 除了簡(jiǎn)單之外爵政,賬戶/余額模型更加高效,因?yàn)槊抗P交易只需要驗(yàn)證發(fā)送賬戶是否有足夠的余額來(lái)支付交易陶缺。
賬戶/余額模型的一個(gè)缺點(diǎn)是暴露于雙重支出攻擊钾挟。 可以實(shí)施遞增的隨機(jī)數(shù)來(lái)抵消這種類型的攻擊。 在以太坊中饱岸,每個(gè)帳戶都有一個(gè)公共可見(jiàn)的隨機(jī)數(shù)掺出,每次進(jìn)行交易時(shí),隨機(jī)數(shù)都會(huì)增加一個(gè)苫费。 這可以防止相同的事務(wù)被多次提交汤锨。