<span id="1ljtx"></span>
<strike id="1ljtx"></strike>
<strike id="1ljtx"><i id="1ljtx"></i></strike> <ruby id="1ljtx"></ruby>
<span id="1ljtx"><dl id="1ljtx"></dl></span><progress id="1ljtx"><noframes id="1ljtx">
<th id="1ljtx"><video id="1ljtx"><ruby id="1ljtx"></ruby></video></th>
<strike id="1ljtx"></strike>
<ruby id="1ljtx"></ruby>
<strike id="1ljtx"><i id="1ljtx"></i></strike>
<strike id="1ljtx"><dl id="1ljtx"><del id="1ljtx"></del></dl></strike><strike id="1ljtx"></strike><ruby id="1ljtx"></ruby>
<span id="1ljtx"><dl id="1ljtx"></dl></span><th id="1ljtx"><noframes id="1ljtx">
<span id="1ljtx"><dl id="1ljtx"></dl></span>
<strike id="1ljtx"></strike>
<strike id="1ljtx"></strike><span id="1ljtx"></span><strike id="1ljtx"><dl id="1ljtx"><ruby id="1ljtx"></ruby></dl></strike><strike id="1ljtx"><dl id="1ljtx"><del id="1ljtx"></del></dl></strike>
<strike id="1ljtx"></strike><strike id="1ljtx"></strike><strike id="1ljtx"></strike>
APP內打開
風險提示:防范以虛擬貨幣/區塊鏈名義進行的非法集資風險。 ——銀保監會等五部門

UTXO模型和Account賬戶模型的區別和對比

白話區塊鏈 2019-07-04 14:37:45
微信分享

掃碼分享

關于比特幣的UXTO模型和ETH的Account模型的理解和對比介紹,這事來自nervos社區erhuok同學的筆記

作者:erhuok / 來源:nervosTalk

最近一直看NX-MAX共識協議,以前沒有看過NC共識,很多基本的概念不是很了解,邊看邊做了些筆記,和大家分享:

Account模型

首先我們來看看Account模型是怎樣的,舉個例子A的銀行賬戶里面有1000元,B有2000元,C有3000元,現做兩個操作:

操作一,在A向B轉賬500

操作二,B向C轉賬1000元。

在正常操作邏輯下,賬戶模型的數據是這樣的:

操作一

賬戶 轉賬金額 余額
A 1000 - 500 500
B 2000 + 500 2500
C 3000 3000

操作二

賬戶 轉賬金額 余額
A 500 500
B 2500 - 1000 1500
C 3000 + 1000 4000

現在的銀行系統,證券系統以及我們常點的微信支付,支付寶,都是Account模型,底層數據庫采用關系型數據庫。支持事務處理,ACID特性(原子性,一致性,隔離性,持久性)。其實這個Account模型很容易理解,ETH也大致采用這個模型。

UTXO模型

UTXO的英文全稱為Unspent Transaction Output, 未消費的交易輸出。在UTXO模型,每一筆交易都有交易輸入和交易輸出兩個部分。怎么理解,也同樣舉個例子:

假設A地址有10個比特幣,B地址有5個比特幣,C地址有0個比特幣;現在進行如下操作:

操作一: A向B支付5個比特幣;

操作二: A向C支付2個比特幣;

操作三: B向C支付1個比特幣;

操作四: C向A支付3.5個比特幣;

起UTXO模型中的變化是這樣的:

操作一:

地址 交易記錄 凈UTXO
A 交易輸入:5 5
B   5
C 交易輸出:5 5

操作二:

地址 交易記錄 凈UTXO
A 交易輸入:5。交易輸入:2 3
B   5
C 交易輸出:5, 交易輸出:2 7

操作三:

地址 交易記錄 凈UTXO
A 交易輸入:5。交易輸入:2 3
B 交易輸入:1 4
C 交易輸出:5, 交易輸出:2; 交易輸出:1 8

操作四:

地址 交易記錄 凈UTXO
A 交易輸入:5;交易輸入:2;交易輸入:3.5 6.5
B 交易輸入:1 4
C 交易輸出:5, 交易輸出:2; 交易輸出:1;交易輸入:5;交易輸出:1.5 4.5

可以看見,在操作四的過程中:C地址有5,2,1三個交易輸出,可以理解為有5,2,1三枚硬幣,當要花出去3.5的時候,這三枚硬幣不可以拆分,所以花出去5,找零1.5. 這個找零的操作是UTXO模型自己自動來處理的。所以,要統計某一個比特幣地址有多少比特幣,起本質是統計這個地址下所有凈未花費的交易輸出個數。

下載白話區塊鏈APP

區塊鏈世界入口第一站,人人都能看懂的區塊鏈;24 小時熱點實時追蹤。

91香蕉视频污