【易錯(cuò)概念】UTXO 和 Account 模型對比


在當(dāng)前區(qū)塊鏈?zhǔn)澜缰行渍龋饕袃煞N記錄保存方式,UTXO 模式(Unspent Transaction Output) 和 Account 模式。Bitcoin 采用的是 UTXO 模型盆耽,Ethereum 采用的 Account 模型,同樣 CITA 也采用了 Account 模型扼菠。

Bitcoin 的設(shè)計(jì)初衷是點(diǎn)對點(diǎn)的電子現(xiàn)金系統(tǒng)摄杂,在比特幣中,每個(gè)交易消耗之前交易生成的 UTXO 然后生成新的 UTXO循榆,賬戶的余額即所有屬于該地址的未花費(fèi) UTXO 集合析恢,Bitcoin 的全局狀態(tài)即當(dāng)前所有未花費(fèi)的 UTXO 集合。Ethereum 意圖創(chuàng)建一個(gè)更為通用的協(xié)議秧饮,該協(xié)議支持圖靈完備的編程語言映挂,在此協(xié)議上用戶可以編寫智能合約,創(chuàng)建各種去中心化的應(yīng)用盗尸。由于 UTXO 模型在狀態(tài)保存以及可編程性方面的缺陷柑船,Ethereum 引入了 Account 模型。下面我們對兩種模型的優(yōu)缺點(diǎn)做進(jìn)一步展開泼各。

UTXO 模型

UTXO 模型中鞍时,交易只是代表了 UTXO 集合的變更。而賬戶和余額的概念是在 UTXO 集合上更高的抽象,賬號和余額的概念只存在于錢包中逆巍。

優(yōu)點(diǎn):

  1. 計(jì)算是在鏈外的及塘,交易本身既是結(jié)果也是證明。節(jié)點(diǎn)只做驗(yàn)證即可蒸苇,不需要對交易進(jìn)行額外的計(jì)算磷蛹,也沒有額外的狀態(tài)存儲(chǔ)。交易本身的輸出 UTXO 的計(jì)算是在錢包完成的溪烤,這樣交易的計(jì)算負(fù)擔(dān)完全由錢包來承擔(dān)味咳,一定程度上減少了鏈的負(fù)擔(dān)。

  2. 除 Coinbase 交易外檬嘀,交易的 Input 始終是鏈接在某個(gè) UTXO 后面槽驶。交易無法被重放,并且交易的先后順序和依賴關(guān)系容易被驗(yàn)證鸳兽,交易是否被消費(fèi)也容易被舉證掂铐。

  3. UTXO 模型是無狀態(tài)的,更容易并發(fā)處理揍异。

  4. 對于 P2SH 類型的交易全陨,具有更好的隱私性。交易中的 Input 是互不相關(guān)聯(lián)的衷掷,可以使用 CoinJoin 這樣的技術(shù)辱姨,來增加一定的隱私性。

缺點(diǎn):

  1. 無法實(shí)現(xiàn)一些比較復(fù)雜的邏輯戚嗅,可編程性差雨涛。對于復(fù)雜邏輯,或者需要狀態(tài)保存的合約懦胞,實(shí)現(xiàn)難度大替久,且狀態(tài)空間利用率比較低。

  2. 當(dāng) Input 較多時(shí)躏尉,見證腳本也會(huì)增多蚯根。而簽名本身是比較消耗 CPU 和存儲(chǔ)空間的。

ACCOUNT 模型

對于 Account 模型胀糜,Account 模型保存了世界狀態(tài)稼锅,鏈的狀態(tài)一般在區(qū)塊中以 StateRoot 和 ReceiptRoot 等形式進(jìn)行共識。交易只是事件本身僚纷,不包含結(jié)果,交易的共識和狀態(tài)的共識本質(zhì)上可以隔離的拗盒。

優(yōu)點(diǎn):

  1. 合約以代碼形式保存在 Account 中怖竭,并且 Account 擁有自身狀態(tài)。這種模型具有更好的可編程性陡蝇,容易開發(fā)人員理解痊臭,場景更廣泛哮肚。

  2. 批量交易的成本較低。設(shè)想礦池向礦工支付手續(xù)費(fèi)广匙,UTXO 中因?yàn)槊總€(gè) Input 和 Out 都需要單獨(dú) Witness script 或者 Locking script允趟,交易本身會(huì)非常大,簽名驗(yàn)證和交易存儲(chǔ)都需要消耗鏈上寶貴的資源鸦致。而 Account 模型可以通過合約的方式極大的降低成本潮剪。

缺點(diǎn):

  1. Account 模型交易之間沒有依賴性,需要解決重放問題分唾。

  2. 對于實(shí)現(xiàn)閃電網(wǎng)絡(luò)/雷電網(wǎng)絡(luò)抗碰,Plasma 等,用戶舉證需要更復(fù)雜的 Proof 證明機(jī)制绽乔,子鏈向主鏈進(jìn)行狀態(tài)遷移需要更復(fù)雜的協(xié)議弧蝇。

UTXO VS ACCOUNT

對于以上幾個(gè)優(yōu)點(diǎn)和缺點(diǎn),我們再做一些分析和對比折砸。

第一看疗,關(guān)于計(jì)算的問題的。

UTXO 交易本身對于區(qū)塊鏈并沒有復(fù)雜的計(jì)算睦授,這樣簡單的講其實(shí)并不完全準(zhǔn)確两芳,原因分有兩個(gè),一是 Bitcoin 本身的交易多為 P2SH睹逃,且 Witness script 是非圖靈完備的盗扇,不存在循環(huán)語句。而對于 Account 模型沉填,例如 Ethereum疗隶,由于計(jì)算多在鏈上,且為圖靈完備翼闹,一般計(jì)算較為復(fù)雜斑鼻,同時(shí)合約安全性就容易成為一個(gè)比較大的問題。當(dāng)然是否圖靈完備對于是否是賬戶模型并沒有直接關(guān)聯(lián)猎荠。但是賬戶模型引入之后坚弱,合約可以作為一個(gè)不受任何人控制的獨(dú)立實(shí)體存在,這一點(diǎn)意義重大关摇。

第二荒叶,關(guān)于 UTXO 更易并發(fā)的問題。

在 UTXO 模型中输虱,世界狀態(tài)即為 UTXO 的集合些楣,節(jié)點(diǎn)為了更快的驗(yàn)證交易,需要在內(nèi)存中存儲(chǔ)所有的 UTXO 的索引,因此 UTXO 是非常昂貴的愁茁。對于長期不消費(fèi)的 UTXO蚕钦,會(huì)一直占用節(jié)點(diǎn)的內(nèi)存。所以對于此種模型鹅很,理論上應(yīng)該鼓勵(lì)用戶減少生產(chǎn) UTXO嘶居,多消耗 UTXO。但是如果要使用 UTXO 進(jìn)行并行交易則需要更多的 UTXO 作為輸入促煮,同時(shí)要產(chǎn)生更多的 UTXO 來保證并發(fā)性邮屁,這本質(zhì)上是對網(wǎng)絡(luò)進(jìn)行了粉塵攻擊。并且由于交易是在錢包內(nèi)構(gòu)造污茵,所以需要錢包更復(fù)雜的設(shè)計(jì)樱报。反觀 Account 模型,每個(gè)賬戶可以看成是單獨(dú)的互不影響的狀態(tài)機(jī)泞当,賬戶之間通過消息進(jìn)行通信迹蛤。所以理論上用戶發(fā)起多筆交易時(shí),當(dāng)這些交易之間不會(huì)互相調(diào)用同一 Account 時(shí)襟士,交易是完全可以并發(fā)執(zhí)行的盗飒。

第三,關(guān)于 Account 模型的交易重放問題陋桂。

Ethereum 使用了在 Account 中增加 nonce 的方式逆趣,每筆交易對應(yīng)一個(gè) nonce,nonce 每次遞增嗜历。這種方式雖然意在解決重放的問題宣渗,但是同時(shí)引入了順序性問題,同時(shí)使得交易無法并行梨州。例如在 Ethereum中痕囱,用戶發(fā)送多筆交易,如果第一筆交易打包失敗暴匠,將引起后續(xù)多筆交易都打包不成功鞍恢。在 CITA 中我們使用了隨機(jī) nonce 的方案,這樣用戶的交易之間沒有順序性依賴每窖,不會(huì)引起串聯(lián)性失敗帮掉,同時(shí)使得交易有并行處理的可能。

第四窒典,存儲(chǔ)問題蟆炊。

因?yàn)?UTXO 模型中,只能在交易中保存狀態(tài)瀑志。而 Account 模型的狀態(tài)是在節(jié)點(diǎn)保存盅称,在 Ethereum 中使用MPT 的方式存儲(chǔ)肩祥,Block 中只需要共識 StateRoot 等即可。這樣對于鏈上數(shù)據(jù)缩膝,Account 模型實(shí)際更小,網(wǎng)絡(luò)傳輸?shù)牧扛“杜瑫r(shí)狀態(tài)在節(jié)點(diǎn)本地使用 MPT 方式保存疾层,在空間使用上也更有效率。例如 A 向 B 轉(zhuǎn)賬贡避,如果在 UTXO 中假設(shè)存在 2 個(gè) Input 和2個(gè) Output痛黎,則需要 2 個(gè) Witness script 和 2 個(gè)Locking script;在 Account 模型中則只需要一個(gè)簽名刮吧,交易內(nèi)容只包含金額即可湖饱。在最新的隔離見證實(shí)現(xiàn)后,Bitcoin的交易數(shù)據(jù)量也大大減少杀捻,但是實(shí)際上對于驗(yàn)證節(jié)點(diǎn)和全節(jié)點(diǎn)仍然需要針對 Witness script 進(jìn)行傳輸和驗(yàn)證井厌。

第五,對于輕節(jié)點(diǎn)獲取某一地址狀態(tài)致讥,UTXO 更復(fù)雜仅仆。

例如錢包中,需要向全節(jié)點(diǎn)請求所有關(guān)于某個(gè)地址的所有 UTXO垢袱,全節(jié)點(diǎn)可以發(fā)送部分 UTXO墓拜,錢包要驗(yàn)證該筆 UTXO 是否已經(jīng)被消費(fèi),有一定的難度请契,而且錢包很難去證明 UTXO 是全集而不是部分集合咳榜。而對于 Account 模型則簡單很多,根據(jù)地址找到 State 中對應(yīng)狀態(tài)爽锥,當(dāng)前狀態(tài)的 State Proof 則可以證明合約數(shù)據(jù)的真?zhèn)斡亢.?dāng)然對于 UTXO 也可以在每個(gè)區(qū)塊中對 UTXO 的 root 進(jìn)行驗(yàn)證,這一點(diǎn)與當(dāng)前 Bitcoin 的實(shí)現(xiàn)有關(guān)救恨,并非 UTXO 的特點(diǎn)贸辈。

結(jié)論

綜上來看,Account 模型在可編程性肠槽,靈活性等方面更有優(yōu)勢擎淤;在簡單業(yè)務(wù)和跨鏈上,UTXO 有其非常獨(dú)到和開創(chuàng)性的優(yōu)點(diǎn)秸仙。對于選擇何種模型嘴拢,要從具體的業(yè)務(wù)場景進(jìn)行出發(fā)。

本文轉(zhuǎn)載自《UTXO 和 Account 模型對比》寂纪,作者:Nervos [NervosNetwork]席吴,版權(quán)歸原作者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赌结,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子孝冒,更是在濱河造成了極大的恐慌柬姚,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庄涡,死亡現(xiàn)場離奇詭異量承,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)穴店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門撕捍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泣洞,你說我怎么就攤上這事忧风。” “怎么了球凰?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵狮腿,是天一觀的道長。 經(jīng)常有香客問我弟蚀,道長蚤霞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任义钉,我火速辦了婚禮昧绣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捶闸。我一直安慰自己,他們只是感情好删壮,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布央碟。 她就那樣靜靜地躺著税灌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亿虽。 梳的紋絲不亂的頭發(fā)上菱涤,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天洛勉,我揣著相機(jī)與錄音,去河邊找鬼收毫。 笑死攻走,一個(gè)胖子當(dāng)著我的面吹牛殷勘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昔搂,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巩趁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起议慰,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤奴曙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后炉菲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拍霜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年薪介,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汁政。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡记劈,死狀恐怖勺鸦,靈堂內(nèi)的尸體忽然破棺而出目木,到底是詐尸還是另有隱情,我是刑警寧澤刽射,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布柄冲,位于F島的核電站吻谋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏现横。R本人自食惡果不足惜漓拾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一阁最、第九天 我趴在偏房一處隱蔽的房頂上張望骇两。 院中可真熱鬧,春花似錦低千、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至告喊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間黔姜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工淮椰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帮毁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓烈疚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猾浦。 傳聞我的和親對象是個(gè)殘疾皇子灯抛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 01 在出來討飯前,朱重八還是一個(gè)不知所措的少年夹抗,在他經(jīng)過三年漂泊的生活回到皇覺寺時(shí),他已經(jīng)是一個(gè)有自信戰(zhàn)勝一切的...
    小碗月牙閱讀 167評論 0 2
  • 金雞百花獎(jiǎng)落戶廈門漠烧,給廈門增添了一大盛事,夜幕降臨已脓,絢麗的燈光秀,幻化出各種各樣的形狀厕宗,展現(xiàn)著廈門的繁華,此次電影...
    yoyo游閱讀 112評論 0 0
  • 親愛的千溝萬壑 你… 你靜臥在那里 幾千年都不曾挪動(dòng) 種種風(fēng)雨修飾你的容貌 東去的河 西飛的雪 也不曾轉(zhuǎn)移你的雙眸...
    E可C閱讀 72評論 0 0
  • 視覺傳達(dá)畢業(yè)后一般做什么,有什么要求嗎霹购?工資怎樣
    mirito閱讀 121評論 0 0