国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

深入解剖比特幣和以太坊,對比 UTXO 和 Account 模型優劣

bbbbbb / 3499人閱讀

摘要:加密經濟網絡中的底層公鏈是比比特幣更像比特幣的價值存儲平臺。這一點將會在經濟模型設計中講到,敬請期待在技術實現上,我們也充分對比了比特幣模型和以太坊模型的優劣,從中繼承了比特幣協議對狀態為核心的優秀架構。

Nervos 加密經濟網絡中的底層公鏈 CKB 是比比特幣更像比特幣的價值存儲平臺。(這一點將會在經濟模型設計中講到,敬請期待~)在技術實現上,我們也充分對比了比特幣 UTXO 模型和以太坊 Account 模型的優劣,從中繼承了比特幣協議對狀態為核心的優秀架構。我們稱 CKB 是一個通用驗證網絡,Cell 是對 UTXO 的一般化版本。并且,發展出了 CKB 模型的優勢,在 CKB 當前狀態中存儲的是任意的共同知識,而不再僅僅是某一種單一數字貨幣。在深入了解 CKB 公鏈中的 Cell 模型前,我們來談一談前置概念:UTXO 和 Account 模型!

秘猿科技區塊鏈小課堂 17 期


在當前區塊鏈世界中,主要有兩種記錄保存方式,UTXO 模式(Unspent Transaction Output) 和 Account 模式。Bitcoin 采用的是 UTXO 模型,Ethereum 采用的 Account 模型,同樣 CITA 也采用了 Account 模型。

Bitcoin 的設計初衷是點對點的電子現金系統,在比特幣中,每個交易消耗之前交易生成的 UTXO 然后生成新的 UTXO,賬戶的余額即所有屬于該地址的未花費 UTXO 集合,Bitcoin 的全局狀態即當前所有未花費的 UTXO 集合。Ethereum 意圖創建一個更為通用的協議,該協議支持圖靈完備的編程語言,在此協議上用戶可以編寫智能合約,創建各種去中心化的應用。由于 UTXO 模型在狀態保存以及可編程性方面的缺陷,Ethereum 引入了 Account 模型。下面我們對兩種模型的優缺點做進一步展開。

UTXO 模型

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

優點:

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

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

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

對于 P2SH 類型的交易,具有更好的隱私性。交易中的 Input 是互不相關聯的,可以使用 CoinJoin 這樣的技術,來增加一定的隱私性。

缺點:

無法實現一些比較復雜的邏輯,可編程性差。對于復雜邏輯,或者需要狀態保存的合約,實現難度大,且狀態空間利用率比較低。

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

ACCOUNT 模型

對于 Account 模型,Account 模型保存了世界狀態,鏈的狀態一般在區塊中以 StateRoot 和 ReceiptRoot 等形式進行共識。交易只是事件本身,不包含結果,交易的共識和狀態的共識本質上可以隔離的。

優點:

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

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

缺點:

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

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

UTXO VS ACCOUNT

對于以上幾個優點和缺點,我們再做一些分析和對比。

第一,關于計算的問題的。

UTXO 交易本身對于區塊鏈并沒有復雜的計算,這樣簡單的講其實并不完全準確,原因分有兩個,一是 Bitcoin 本身的交易多為 P2SH,且 Witness script 是非圖靈完備的,不存在循環語句。而對于 Account 模型,例如 Ethereum,由于計算多在鏈上,且為圖靈完備,一般計算較為復雜,同時合約安全性就容易成為一個比較大的問題。當然是否圖靈完備對于是否是賬戶模型并沒有直接關聯。但是賬戶模型引入之后,合約可以作為一個不受任何人控制的獨立實體存在,這一點意義重大。

第二,關于 UTXO 更易并發的問題。

在 UTXO 模型中,世界狀態即為 UTXO 的集合,節點為了更快的驗證交易,需要在內存中存儲所有的 UTXO 的索引,因此 UTXO 是非常昂貴的。對于長期不消費的 UTXO,會一直占用節點的內存。所以對于此種模型,理論上應該鼓勵用戶減少生產 UTXO,多消耗 UTXO。但是如果要使用 UTXO 進行并行交易則需要更多的 UTXO 作為輸入,同時要產生更多的 UTXO 來保證并發性,這本質上是對網絡進行了粉塵攻擊。并且由于交易是在錢包內構造,所以需要錢包更復雜的設計。反觀 Account 模型,每個賬戶可以看成是多帶帶的互不影響的狀態機,賬戶之間通過消息進行通信。所以理論上用戶發起多筆交易時,當這些交易之間不會互相調用同一 Account 時,交易是完全可以并發執行的。

第三,關于 Account 模型的交易重放問題。

Ethereum 使用了在 Account 中增加 nonce 的方式,每筆交易對應一個 nonce,nonce 每次遞增。這種方式雖然意在解決重放的問題,但是同時引入了順序性問題,同時使得交易無法并行。例如在 Ethereum中,用戶發送多筆交易,如果第一筆交易打包失敗,將引起后續多筆交易都打包不成功。在 CITA 中我們使用了隨機 nonce 的方案,這樣用戶的交易之間沒有順序性依賴,不會引起串聯性失敗,同時使得交易有并行處理的可能。

第四,存儲問題。

因為 UTXO 模型中,只能在交易中保存狀態。而 Account 模型的狀態是在節點保存,在 Ethereum 中使用MPT 的方式存儲,Block 中只需要共識 StateRoot 等即可。這樣對于鏈上數據,Account 模型實際更小,網絡傳輸的量更小,同時狀態在節點本地使用 MPT 方式保存,在空間使用上也更有效率。例如 A 向 B 轉賬,如果在 UTXO 中假設存在 2 個 Input 和2個 Output,則需要 2 個 Witness script 和 2 個Locking script;在 Account 模型中則只需要一個簽名,交易內容只包含金額即可。在最新的隔離見證實現后,Bitcoin的交易數據量也大大減少,但是實際上對于驗證節點和全節點仍然需要針對 Witness script 進行傳輸和驗證。

第五,對于輕節點獲取某一地址狀態,UTXO 更復雜。

例如錢包中,需要向全節點請求所有關于某個地址的所有 UTXO,全節點可以發送部分 UTXO,錢包要驗證該筆 UTXO 是否已經被消費,有一定的難度,而且錢包很難去證明 UTXO 是全集而不是部分集合。而對于 Account 模型則簡單很多,根據地址找到 State 中對應狀態,當前狀態的 State Proof 則可以證明合約數據的真偽。當然對于 UTXO 也可以在每個區塊中對 UTXO 的 root 進行驗證,這一點與當前 Bitcoin 的實現有關,并非 UTXO 的特點。

結論

綜上來看,Account 模型在可編程性,靈活性等方面更有優勢;在簡單業務和跨鏈上,UTXO 有其非常獨到和開創性的優點。對于選擇何種模型,要從具體的業務場景進行出發。

參考文獻

Thoughts on UTXOs by Vitalik Buterin:
https://medium.com/@ConsenSys...

What are the pros and cons of Ethereum balances vs. UTXOs?:
https://ethereum.stackexchang...

Mastering Bitcoin 2nd Edition - Programming the Open Blockchain: https://github.com/bitcoinboo...

Accounts and not UTXOs: https://github.com/ethereum/w...

交易中的nonce的作用是什么?: https://docs.nervos.org/cita/...

Why is EVM-on-Plasma hard?: https://medium.com/@kelvinfic...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24726.html

相關文章

  • Libra 的天秤 First-class Asset

    摘要:區塊鏈上的底層模型設計,實際上就是分別以比特幣和以太坊為代表的兩種模型比特幣的模型以太坊的模型而實際上二者的差異千差萬別,代表了兩種思路。以太坊的模型和銀行賬戶類似,在賬戶中記錄用戶的余額。 showImg(https://segmentfault.com/img/bVbt7zb?w=2779&h=1179); 6 月 18 日,Facebook 加密貨幣項目 Libra 發布的白皮書...

    entner 評論0 收藏0
  • 比特UTXO模型介紹

    摘要:比特幣與模型全名是,未花費交易輸出,相比于賬戶模型來說沒那么直觀。在比特幣的世界里,并沒有一個紀錄所有帳戶余額的帳本。 如果你曾上過BlockExplorer觀察自己的比特幣收入狀況,你是否曾經被搞的一頭霧水呢?這正是因為比特幣所使用的交易模型并非我們直覺上以賬戶為基礎的,而是一種叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特幣所...

    Dean 評論0 收藏0
  • 比特UTXO模型介紹

    摘要:比特幣與模型全名是,未花費交易輸出,相比于賬戶模型來說沒那么直觀。在比特幣的世界里,并沒有一個紀錄所有帳戶余額的帳本。 如果你曾上過BlockExplorer觀察自己的比特幣收入狀況,你是否曾經被搞的一頭霧水呢?這正是因為比特幣所使用的交易模型并非我們直覺上以賬戶為基礎的,而是一種叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特幣所...

    oliverhuang 評論0 收藏0
  • 比特UTXO模型介紹

    摘要:比特幣與模型全名是,未花費交易輸出,相比于賬戶模型來說沒那么直觀。在比特幣的世界里,并沒有一個紀錄所有帳戶余額的帳本。 如果你曾上過BlockExplorer觀察自己的比特幣收入狀況,你是否曾經被搞的一頭霧水呢?這正是因為比特幣所使用的交易模型并非我們直覺上以賬戶為基礎的,而是一種叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特幣所...

    import. 評論0 收藏0
  • 比原鏈設計思考: 擴展性UTXO模型

    摘要:的起源來自高明的中本聰中本聰對比特幣的設計,讓整個世界進入了數字貨幣時代。比原鏈的思考馬克思哲學的否定之否定規律,事物的發展變化是螺旋式上升的。 用戶模型是比原鏈在最初就需要確定的重要數據結構, 團隊的選擇還是聚焦在兩種典型的模型系統中,Account模型和UTXO模型,和其他大多數區塊鏈設計一樣, 選擇了模型就決定了協議層的重要實現,兩種模型各有利弊,不同區塊鏈針對想聚焦的場景自身會...

    Vicky 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<