一、說在最前
本系列文章【以太坊源碼分析】將邊學習邊更新,如未特殊說明,將默認爲【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
挖礦
後面將圍繞這幾個模塊進入代碼學習階段。