UTXO模型(比特幣)VS 餘額模型(以太坊)?

專員在之前的0學區塊鏈的專題中,也是比較詳細的講解了區塊鏈的其他部分的組成,共識協議也好,虛擬機智能合約也好,都是整個區塊鏈技術中十分重要的一環。例如,共識協議保證了區塊鏈中網絡交易的一致性,虛擬機則給區塊鏈帶來了更多的可能性,給他更多的業務擴展空間等等。

但是其實對於區塊鏈,有個比較重要的點,專員也沒跟大家講,就是區塊鏈的存儲記錄模型。

1

何為存儲記錄模型?

專員簡單的來說一下,其實就是在整個區塊鏈中,token的流轉或者某一個地址的餘額是按怎麼樣的模式以及結構記錄在鏈上的。雖說,現在的白皮書也很少提到這些東西,但是在專員覺得,Token的記錄方式也是無比重要的,在整個區塊鏈的構成中。

現階段,整個區塊鏈的存儲記錄模式可以分為兩大類:

1) 以比特幣為首的UTXO模型。

2) 以以太坊為首的賬戶餘額模型。

這兩種模型各有優劣,但是就專員所知道的來說,現階段有智能合約以及虛擬存在的區塊鏈,一般都是賬戶餘額模型,因為就專員的所知,在技術角度來看,很難在UTXO模型中加入智能合約。因此,為了區塊鏈的落地以及擴展性方面的要求,現在市面上普遍的公鏈都是賬戶餘額模型。

2

從自己的角度簡單跟大家來聊一下,這兩種模式的區別?

UTXO,UTXO的全稱是Unspent Transaction Output,翻譯成中文,其實就是未消費的交易輸出。

舉個例子,在現實的生活中,我們手上的現金其實就是未消費的交易輸出,就像下圖所示,每次我們產生一筆交易,我們會拿出一部分“現金”(就是一些未消費的交易輸出),緊接著我們會有部分找零,因此在比特幣中每一筆交易都會有輸入輸出。緊接著所有沒有消耗的“現金“,都會完全同步的保存在各個節點中,用戶錢包在查詢餘額時,其實就是根據用戶私鑰對應地址與相關聯的未使用交易的列表,並且在錢包中計算這些未使用的UTXO總和,這也就是比特幣錢包的最最基本的原理。

問題來了

可能會涉及一些UTXO的合併等等,不然可能找零會越來越多,嚴重拖慢區塊鏈的運行速度。

小結

因此其實專員覺得,其實比特幣所使用的UTXO模型,更加貼近現實生活中現金交易的模式,之前專員也聽說央行在開發我們自己的數字貨幣,並將數字貨幣定性為“M0“,何為M0,其實就是現金。專員也猜測,會不會央行也會使用UTXO的模型來記錄數字貨幣,因為UTXO更有現金的特性?當然這也僅僅只是猜測,UTXO模式與現在金融的存儲模式是有很大的區別的。

但是,其實是這樣的,UTXO也有他本身的問題存在,UTXO的效率問題也是比較明顯的,一筆交易可能會涉及多個UTXO的,需要對每個UTXO進行簽名,UTXO的查詢等等也是效率比較低的。

UTXO模型(比特幣)VS 餘額模型(以太坊)?

3

以太坊則採用了賬戶餘額模型

其實賬戶餘額模式就是比較簡單,舉個例子,就是現在我們在銀行裡存錢或許曲線都是賬戶模型的,在銀行甚至在支付寶,就是你創建的就是一個個賬戶,每次一筆就是,在你的賬戶對應的數字中加上或減去某一個數字,在對方的賬戶減去或加上某個數字。

在以太坊中,有一個名字叫世界狀態(World State)

對應的有個StateDB,StateDB比較複雜,裡面還設計到一些默克爾樹等等,專員有機會以後會跟大家介紹的。

不過這次,大家可以簡單把他理解成一個Key/Value的存儲,一個Address對應一個餘額,每次錢包查餘額,不需要像比特幣那複雜去計算UTXO的綜合等等,他只需要取出地址對應的餘額即可,基本上跟銀行查餘額是一個模式。

因此可以很直接的概括出來,賬戶/餘額模型的好處,就是簡單加高效,並且在賬戶餘額模型中,可以很方便的將虛擬機模塊嵌入進去。

因此,當然其實也有其他的公鏈有提出其他的模式,例如比原鏈的BUTXO模型等等,但是實際上都是大同小異離不開專員說的上述的兩種模型。

文末

但是,專員覺得,無論是UTXO或者賬戶餘額模型都能夠很好的解決區塊鏈世界中的交易安全的問題,並且解決一些潛在的攻擊的可能性,但是每種技術都各有利弊,公鏈的開發團隊也是在設計的時候回權衡各種存儲的模型,選出一種適合的模型技術。專員也期待著,會有更牛逼的大神提出更加優秀的存儲模型,幫助區塊鏈有更好的發展。

歡迎感興趣的朋友在評論區與專員互動!


分享到:


相關文章: