風險提示:防範以"虛擬貨幣""區塊鏈"名義進行非法集資的風險。——銀保監會等五部門
資訊
發現
搜索
登錄
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
查看行情
一文看懂比特幣的UTXO模型
Harbour
Odaily资深作者
@bcxiongdi
2022-12-29 02:00
本文約2379字,閱讀全文需要約4分鐘
賬戶模型VS UTXO模型。

二級標題

以太坊,EOS,Solana 這些大家所熟知的鏈都使用的是賬戶模型,甚至可以說90% 以上的項目都使用的是賬戶模型,而只有一些老牌項目用的是UTXO 模型,如,BTC,DOGE ,LTC,當然也有一些比較新的項目也用的這個模型,如Layer 2 中使用OP 方案的FUEL。

二級標題

二級標題

二級標題

2.什麼是賬戶模型

簡單理解,就是銀行賬戶那套系統,比如銀行之間的轉賬,支付寶、微信的轉賬等等都屬於賬戶模型。下面我舉個栗子:

A -50 ,B + 50 

假如A 有100 ,B 有100

A 50 , B 150 

這時A 給B 轉賬50 塊錢

在系統中的表現形式就是

所以他們的餘額

這是一筆轉賬。

再假如,A 還是有100 ,他要給100 個新開戶的新人轉賬1 元。

這時需要A 同時給100 人轉賬1 塊錢

第1 筆

A -1 ,第1 個人+ 1

所以他們的餘額

A 99 ,第1 個人1

第2 筆

A -1 ,第2 個人+ 1

所以他們的餘額

A 98 ,第2 個人1

第3 筆

A -1 ,第3 個人+ 1

......

所以他們的餘額

A 97 ,第3 個人1

以此類推

第100 人

A -1 ,第100 個人+ 1

理論上,隨著交易筆數的增長,執行所需要的時間就越多。

二級標題

二級標題

二級標題

3.什麼是UTXO 模型

前面也有提到,很多老牌主流用的是UTXO,而這個圈子的老祖宗比特幣也是用的UTXO 模型,順便提一下,我們國家的發行的法定數字貨幣DCEP 也是基於UTXO 模型做的,所以這個模型必然有它的獨特之處。

UTXO 全稱Unspent Transaction Output,意思是“未花費交易輸出”,他的模型簡單說有點像日常生活中的現金體系,舉個栗子:

A 有一個錢包(現實中的錢包),裡面有1 元面值, 10 元面值以及100 元面值。

A 要給B、C、D 分別1 塊錢。

A 有三種方式

第一種:拿出1 元面值的錢給 B

第二種:拿出10 元面值的錢給C,找回9 元

第三種:拿出100 元面值的錢給D,找回99 元

這三種方式都可以把這次交易完成。

再回到鏈上,想像一下這裡每一個面值的錢其實就是一個鏈上UTXO,具體在使用過程中的UTXO 並不是在轉移的,而是在不斷的銷毀和重建,例如:

A 用第二種方式給C 轉錢, 10 元面值的UTXO 會被銷毀,系統會重新印出一張1 元面值和一張9 元面值的UTXO, 1 元的給C, 9 元的還給A。

第三種方式也同理, 100 元的銷毀,印出1 張1 元面值的和一張99 元面值的UTXO, 1 元的給D, 99 元的還給A。

這是UTXO 和賬戶模型轉賬方式的不同,更牛逼的是,UTXO 模型可以並行轉賬,因為餘額是通過分散的UTXO 存在的,所以每個面值其實可以同時轉賬給不同的人,上面三種方式是可以在一筆交易中同時完成的,因為不會涉及到賬戶一致性問題,每個UTXO 都是單獨獨立計算的。

我們在對比上面的賬戶模型,每一筆交易都必須依託於上一筆交易的完成,這其中的性能差距可想而知。這樣就理解為什麼央行數字貨幣使用的是UTXO 模型了,不然深圳怎麼給5 萬個錢包發送1000 萬數字人民幣?

再說回上面那個例子:

想知道這個錢包地址到底有多少錢就需要統計底下有多少個餘額的UTXO 並求和。

二級標題

二級標題

二級標題

4.賬戶模型和UTXO 的優缺點

賬戶模型優點:

合約以代碼形式保存在Account 中,並且Account 擁有自身狀態。這種模型具有更好的可編程性,容易開發人員理解,場景更廣泛。

批量交易的成本較低。設想礦池向礦工支付手續費,UTXO 中因為每個Input 和Out 都需要單獨Witness script 或者Locking script,交易本身會非常大,簽名驗證和交易存儲都需要消耗鏈上寶貴的資源。而Account 模型可以通過合約的方式極大的降低成本。

賬戶模型缺點:

Account 模型交易之間沒有依賴性,需要解決重放問題。 Ethereum 是怎麼解決的,我們清楚Ethereum 是採用的是唯一的Nonce 值的方法,每個交易Tx 中有一個Nonce 字段,對於每個用戶來說,這個Nonce 都不能重複,從而避免了重放攻擊。

對於實現閃電網絡/雷電網絡,Plasma 等,用戶舉證需要更複雜的Proof 證明機制,子鏈向主鏈進行狀態遷移需要更複雜的協議。

UTXO 優點:

計算是在鏈外的,交易本身既是結果也是證明。節點只做驗證即可,不需要對交易進行額外的計算,也沒有額外的狀態存儲。交易本身的輸出UTXO 的計算是在錢包完成的,這樣交易的計算負擔完全由錢包來承擔,一定程度上減少了鏈的負擔。

除Coinbase 交易外,交易的Input 始終是鏈接在某個UTXO 後面。交易無法被重放,並且交易的先後順序和依賴關係容易被驗證,交易是否被消費也容易被舉證。

UTXO 模型是無狀態的,更容易並發處理。

當Input 較多時,見證腳本也會增多。而簽名本身是比較消耗CPU 和存儲空間的。

二級標題

  • 二級標題

二級標題

5.賬戶模型和UTXO 簡要區別有哪些

  • 賬戶餘額

賬戶模型:可以簡單明了的看到賬戶底下有多少錢。

UTXO 模型:統計該地址底下有多少個UTXO ,把他們匯總起來的結果才是餘額。

  • 當交易筆數指數級上升時

賬戶模型:會越來越吃力。

UTXO 模型:天然支持高並發。

BTC
基礎知識