- 區塊鏈底層設計Java實戰
- 牛冬編著
- 614字
- 2019-07-25 11:59:20
2.1 比特幣架構
根據中本聰的論文“Bitcoin: A Peer-to-Peer Electronic Cash System”中對比特幣系統的描述,我們可以整理出如圖2-1所示的比特幣系統架構。

圖2-1 比特幣系統架構
如圖2-1所示,比特幣系統分為6層,由下至上依次是存儲層、數據層、網絡層、共識層、RPC層、應用層。
其中,存儲層主要用于存儲比特幣系統運行中的日志數據及區塊鏈元數據,存儲技術主要使用文件系統和LevelDB。
數據層主要用于處理比特幣交易中的各類數據,如將數據打包成區塊,將區塊維護成鏈式結構,區塊中內容的加密與哈希計算,區塊內容的數字簽名及增加時間戳印記,將交易數據構建成Merkle樹,并計算Merkle樹根節點的哈希值等。
區塊構成的鏈有可能分叉,在比特幣系統中,節點始終都將最長的鏈條視為正確的鏈條,并持續在其后增加新的區塊。
網絡層用于構建比特幣底層的P2P網絡,支持多節點動態加入和離開,對網絡連接進行有效管理,為比特幣數據傳輸和共識達成提供基礎網絡支持服務。
共識層主要采用了PoW(Proof Of Work)共識算法。在比特幣系統中,每個節點都不斷地計算一個隨機數(Nonce),直到找到符合要求的隨機數為止。在一定的時間段內,第一個找到符合條件的隨機數將得到打包區塊的權利,這構建了一個工作量證明機制。從PoW的角度,是不是發現PoW和分布式鎖有異曲同工之妙呢?
RPC層實現了RPC服務,并提供JSON API供客戶端訪問區塊鏈底層服務。
應用層主要承載各種比特幣的應用,如比特幣開源代碼中提供了bitcoin client。該層主要是作為RPC客戶端,通過JSON API與bitcoin底層交互。除此之外,比特幣錢包及衍生應用都架設在應用層上。
推薦閱讀
- Learning ROS for Robotics Programming(Second Edition)
- Mastering Objectoriented Python
- 深度強化學習算法與實踐:基于PyTorch的實現
- Oracle 18c 必須掌握的新特性:管理與實戰
- 前端HTML+CSS修煉之道(視頻同步+直播)
- C語言程序設計
- Kubernetes源碼剖析
- 代碼閱讀
- R語言:邁向大數據之路(加強版)
- SpringBoot從零開始學(視頻教學版)
- Mastering HTML5 Forms
- Mastering Embedded Linux Programming
- Python應用開發技術
- Elastix Unified Communications Server Cookbook
- Developer,Advocate!