- 區塊鏈架構之美:從比特幣、以太坊、超級賬本看區塊鏈架構設計
- 何昊編著
- 495字
- 2021-07-23 17:31:06
0.4 數據層
區塊鏈作為一個分布式系統用于解決特定場景的一些問題,從本質來看,區塊鏈是一個“狀態機”。從技術角度來看,狀態是指一個事物在某一特定的時間點所保存的信息。狀態機是指記錄某一時刻事物所處狀態的機器或設備。給定某些輸入,狀態機的狀態可能會發生改變,同時狀態機會對這些發生改變的狀態提供相應的輸出,對于區塊鏈這種狀態機來說,這些輸出可以看作是不可改變的。
比特幣系統、以太坊和超級賬本在區塊鏈數據結構、數據模型和數據存儲方面各有特色。在數據模型的設計上,比特幣系統采用了基于交易的模型,每筆交易由表明花費來源的輸入和表明花費去向的輸出組成,所有交易通過輸入與輸出鏈接在一起,因此每一筆交易都可追溯。以太坊與超級賬本需要支持功能更為豐富的通用應用,因此采用了基于賬戶的模型,可基于賬戶快速查詢當前余額或應用狀態。
在數據存儲的設計上,因為區塊鏈數據類似于傳統數據庫的預寫式日志,因此通常按日志文件格式存儲。由于系統需要大量基于哈希值的鍵值檢索(如基于交易哈希值檢索交易數據、基于區塊哈希值檢索區塊數據),索引數據和狀態數據通常存儲在鍵值數據庫中,如比特幣系統、以太坊和超級賬本都用LevelDB存儲索引數據。
推薦閱讀
- UNIX編程藝術
- HTML5+CSS3王者歸來
- CockroachDB權威指南
- Java面向對象思想與程序設計
- 騰訊iOS測試實踐
- 深入理解Django:框架內幕與實現原理
- 算法訓練營:入門篇(全彩版)
- Blender 3D Incredible Machines
- Java持續交付
- MATLAB定量決策五大類問題
- WordPress Plugin Development Cookbook(Second Edition)
- Python面向對象編程:構建游戲和GUI
- Asynchronous Android Programming(Second Edition)
- SQL Server與JSP動態網站開發
- Lighttpd源碼分析