您好,登錄后才能下訂單哦!
本篇內容介紹了“Bytom如何用PAT樹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
?PAT樹具有[基數樹](https://en.wikipedia.org/wiki/Radix_tree) 的特點,內容可快速追蹤。
?PAT樹具有[merkle樹](https://en.wikipedia.org/wiki/Merkle_tree) 的特點,數據可快速證明。
在分布式系統中,一致性和有效性是十分關鍵的點。bytom采用PAT樹,其中的數據可快速證明,可以快速證明每一份狀態機是否一致。內容可快速追蹤,可以使bytom在每一個快照狀態下,快速查找其數據,并檢驗數據的有效性。
Bytom 如何用PAT樹?
Ethereum的PAT樹是16叉基數樹,分兩層,第一層管理的是所有的賬戶,第二層管理是各賬戶的存儲內容。
Bytom 的PAT樹與Ethereum 不同?
Bytom 的PAT樹是二叉基數樹。
Bytom的PAT樹是用來管理未花費的outputs。
為什么要使用UTXO?
UTXO誕生于比特幣,和現實世界的RMB一樣,從央行誕生的那一刻起,他流轉無數人的賬戶,但他的價值面額始終和原來一樣,這樣以幣為中心,而不是以人為中心,資產便于監管和統計。Bytom 就是用于資產的發布和管理的,所以,UTXO的這種以資產為中心的設計模式,是很適合Bytom上面的資產管理。
怎么使用UTXO?
相比比特幣的UTXO, bytom的UTXO多了三個字段
assertid, 因為bytom是一個多資產發布與管理的平臺,所以使用該字段來唯一確定各種資產。
accountid, 這是便于各賬戶對utxo的索引和管理,bytom 相比bitcoin,引入了賬戶模型,后面會介紹。
program, 擁有該utxo的賬戶可以用Ivy語言編寫自己想要的程序放在該字段,以便在交易時,圖靈完備的BVM會執行該程序。
BVM是在狀態機的轉化過程被啟動運行,也就是excute(transaction)這一步驟。
為什么需要使用BVM?
bitcoin 中的非圖靈完備棧式腳本語言,所表達的功能極少,很難實現一些稍微復雜的功能,如verify_spv(跨鏈錨定驗證的功能,如btc_relay),再如簡單的去實現multi_lock(M人加密,只要收集N人私鑰就能解密,0 < N < M)功能。
ethereum中的evm能簡單的用solidity語言編寫程序實現這些功能,但EVM過于復雜,它號稱超級世界計算機,對于bytom這種只對資產有興趣的區塊鏈是沒必要的。
如何使用BVM?
用戶在發送每一筆交易時,可以自己編寫自己所需要的程序,等到交易打包進塊時,BVM會去執行該代碼,由于BVM是圖靈完備的虛擬機,所以需要加入feed計價機制(feed 等同于ethereum的gas * gasprice)來解決停機問題。
為什么要采用賬戶模型?
賬戶模型易于管理相關數據,是以人為中心,十分的直觀。對于BVM來說,基于賬戶代碼去執行也十分便捷。再者我們引入了資產模型,類似于賬戶模型,這樣易于資產的監管和查詢。
bytom怎么去實現賬戶模型?
bytom 中的賬戶模型也分兩類,但不同于ethereum中的個人帳戶和合約賬戶, 它是指資產賬戶和個人賬戶。
資產賬戶:
assetid 是全局唯一的資產識別id。
alias 是資產的別名,可便于記憶,如(gold, silver) 。
vmversion 是為了軟分叉時,做到動態過度。
program 是指發布該資產時需要執行的程序。
initialblockhash 是指該資產是在哪個塊高度被登記。
signer 管理公私鑰對,以便用該資產的私鑰簽名,只有擁有該資產私鑰的人才能發布該資產。
definition 對該資產的解釋說明等。
個人賬戶:
accountid 全局唯一可識別賬戶id。
alais 帳戶名。
signer, 私鑰對,用于發送交易。
*utxos 該賬戶所有的未花費交易的索引,便于快速管理該賬戶下資產。
program, 該賬戶發送交易時可插入需要的程序。
UTXO的物理結構,用memcache 存著。UTXO的邏輯結構則是用二叉PAT樹來管理。
個人賬戶 根據AccountId 能夠快速的索引其相關的utxo。資產賬戶根據AssetId能夠快速的管理相關的utxo。
Bytom用PAT樹來組織utxo作為世界狀態樹。
賬戶模型分兩種,資產賬戶和個人賬戶,賬戶可以索引管理其相關的utxo。
UTXO 池會采用如memcache的內存數據庫,落盤數據庫會選擇關系型數據庫,數據會選擇protobuf來序列化。
在賬戶做交易時,每個賬戶都可以從世界狀態樹去查找選擇自己的utxo,并編寫自己所需的資產程序,將其做為TxInput。
在交易打包進塊時,驗證節點會去實例化BVM,并執行該交易中所有TxInput中的程序。
“Bytom如何用PAT樹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。