大家好,我是Neo,這篇文章我們通過Fabric和Ethereum的存儲解析來思考一下國內聯盟鏈需要什麼樣的存儲,以及我思考的,聯盟鏈存儲方案。希望對學習中的朋友有幫助。
Ethereum 存儲詳述
ETH 的存儲其實和BTC存儲是不一樣的,BTC是用的UTXO模型,整個都是一個文檔,而ETH用的是Account模式,也就是用State來存儲用戶的餘額等,ETH存儲會越來越大,這也可ETH設計有關係。在這麼龐大的賬本上,ETH採用來DLP壓縮,也算是壓縮了空間的。
Ethereum 存儲框架
Ethereum 存儲內容
Ethereum是一個單鏈結構,從存儲上來說,以下是Ethereum 存儲的內容
- BlockChain
blockchain 主要存儲的blockchain的所有信息 - Transtion
Transtion 主要存儲的是交易的所有交易。 - Receipt
Receipt是收據,也就是每一個交易都會有對應的收據,裡面有一些log。 - State
State,前面也講過,是Account 賬戶信息。
其中除了BlockChain之外,其他的都是使用的是MPT,MPT是一個二叉樹存儲結構,兩個葉子節點進行Hahs得到父節點,這樣存儲保證了MPT上的數據無法更改。
Ethereum 存儲框架
下面兩張圖都可以解釋整個存儲框架,我覺得特別好,所以引用了以下。
Ethereum 存儲細節
由於沒有圖,我就通過代碼來分析
- BlockChain 圖7
- Transtion
- Receipt 圖9
- State state 就瞭解MPT 樹就好了。 MPT存儲結構圖10
聯盟鏈存儲思考
聯盟鏈數據需求
其實聯盟鏈的數據和公鏈數據不一樣,舉一個簡單的例子。區塊鏈存證,存證的有大量的視頻,文本等。那按現在Fabric的存儲,只能存儲數據的Hash,其他的文件,或者視頻是脫離整個鏈的,這些數據需要在中心數據庫上存儲。這就是聯盟鏈後續的存儲需求。需要把所有的數據都可以放到整個鏈系統裡面,雖然我們可以不用對所有數據進行嚴重,但是對於每一個數據需要有一個鏈上服務可查詢。
聯盟鏈數據存儲服務解決方案
根據上述需求,我覺得聯盟鏈數據解決方案應該如下圖。 其中最終的是DBServer,這個Server 應該有以下功能。
- 外部數據訪問權限,並且是在鏈上可嚴重的,如果需要更換或者添加,需要通過鏈上共識來進行更改。
- DBServer可以檢索外部DB。
- DBServer 可以和智能合約溝通,智能合約合約可以通過DBServer 做一些驗證功能。
- DBServer 需要可以提供API接口。
本人對聯盟鏈頗有研究,為了推廣聯盟鏈在全國的使用,響應國家政策,免費提供聯盟鏈選型諮詢。歡迎來撩。
推薦
推薦泰嶽聯盟鏈推薦指數 ⭐️⭐️⭐️⭐️⭐️哥倫布科技公司旗下的泰嶽聯盟鏈是全國區塊鏈和分佈式記賬技術標準化技術委員會委員,參與制定工信部國家技術標準。中國雲體系聯盟成員,清華大學互聯網產業研究院成員,國家千人計劃評審專家沈寓實博士是公司技術顧問及公司董事,瑞典皇家工程院院士林垂宙院士為公司院士顧問。泰嶽鏈已通過工信部標準院區塊鏈系統功能測試單位。哥倫布成立於2016年。
閱讀更多 Neo老師 的文章