以太坊源碼分析(1)——代碼結構

一、說在最前

本系列文章【以太坊源碼分析】將邊學習邊更新,如未特殊說明,將默認爲【go-ethereum-1.8.0】。

本系列文章的目的爲深入學習以太坊,文章中會加入博主對區塊鏈的理解,任何組織或個人不得在不經作者同意的情況下,用於商業用途。如經發現,本博主將保留法律追究的權利。除此之外,歡迎轉載,多多分享。

最後,本系列文章是學習類和分享類文章,如有錯誤歡迎指正。

二、首先從目錄結構入手

.
├── accounts        賬戶相關
├── bmt             二進制Merkle-Patricia Trie的實現
├── build           構建腳本等
├── cmd             命令行工具入口
├── common          提供了一些公共的工具類
├── compression     壓縮
├── consensus       以太坊的共識算法,包括ethhash, clique
├── console         JavaScript解釋的運行時控制檯環境
├── containers      包括docker等容器用於開發
├── contracts       內置合約,用戶測試
├── core            核心模塊,包括交易,區塊,虛擬機等
├── crypto          加密,數字簽名和hash算法
├── dashboard       儀表板
├── eth             以太坊協議
├── ethclient       以太坊rpc客戶端實現
├── ethdb           數據庫,主要是LevelDB
├── ethstats        
├── event           事件的實現
├── internal        
├── les             輕量級Ethereum子協議
├── light           輕量級客戶端
├── log             日誌實現
├── metrics         度量器
├── miner           區塊打包、挖礦實現
├── mobile          手機客戶端
├── node            節點實現
├── p2p             p2p協議
├── params          
├── rlp             rlp 編碼
├── rpc             rpc 實現
├── swarm           swarm網絡處理
├── tests
├── trie            MPT的實現 
├── vendor
└── whisper         whisper節點的協議

二、以太坊代碼關聯

以太坊源碼中,除 build cmd miner 模塊之外,其他代碼都是一些實現類的小模塊,最後在 core 模塊下組裝出核心功能,並在 cmd 中構建出一些命令行工具對外提供訪問入口。

其中,以太坊的幾個核心功能木塊包括:

  • consensus 共識
  • eth 協議
  • ethclient 客戶端rpc實現
  • ethdb 數據庫
  • miner 挖礦

後面將圍繞這幾個模塊進入代碼學習階段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章