• 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 小時熱點實時追蹤。

    毛片免费看