5.1 以太坊原始碼詳解1

尹成發表於2018-11-09

go-ethereum程式碼閱讀環境搭建

Ubuntu 16.04 64bit

安裝GO

配置環境變數(GOROOT, GOPATH, GOBIN)

下載原始碼:

$ cd  $GOPATH; 
$ mkdir src
$ cd src  #進入go專案目錄,建立src目錄, 並進入src目錄
$ git clone https://github.com/ethereum/go-ethereum

使用vim或其他IDE開啟即可

windows 10 64bit

安裝GO

配置環境變數(GOROOT, GOPATH, GOBIN)

安裝git工具,請參考網路上的教程安裝git工具, go語言從github自動下載程式碼需要git工具的支援

開啟命令列工具下載 go-ethereum的程式碼

go get github.com/ethereum/go-ethereum

命令執行成功之後,程式碼就會下載到下面這個目錄,%GOPATH%\src\github.com\ethereum\go-ethereum 
如果執行過程中出現

# github.com/ethereum/go-ethereum/crypto/secp256k1
exec: "gcc": executable file not found in %PATH%

則需要安裝gcc工具,我們從下面地址下載並安裝

http://tdm-gcc.tdragon.net/download

安裝相應的IDE(Goland)

環境測試

開啟go-ethereum/rlp/decode_test.go. 在編輯框右鍵選擇執行, 如果執行成功,代表環境搭建完成

go ethereum 目錄大概介紹

go-ethereum專案的組織結構基本上是按照功能模組劃分的目錄,下面簡單介紹一下各個目錄的結構,每個目錄在GO語言裡面又被成為一個Package

accounts        實現了一個高等級的以太坊賬戶管理

bmt             二進位制的默克爾樹的實現

build           主要是編譯和構建的一些指令碼和配置

cmd             命令列工具,又分了很多的命令列工具

    /abigen     Source code generator to convert Ethereum contract definitions into easy to use, compile-time 

type-safe Go packages

    /bootnode   啟動一個僅僅實現網路發現的節點

    /evm        以太坊虛擬機器的開發工具, 用來提供一個可配置的,受隔離的程式碼除錯環境

    /faucet     

    /geth       以太坊命令列客戶端,最重要的一個工具

    /p2psim     提供了一個工具來模擬http的API

    /puppeth    建立一個新的以太坊網路的嚮導

    /rlpdump    提供了一個RLP資料的格式化輸出

    /swarm      swarm網路的接入點

    /util       提供了一些公共的工具

    /wnode      這是一個簡單的Whisper節點。 它可以用作獨立的引導節點。此外,可以用於不同的測試和診斷目的。

common          提供了一些公共的工具類

compression     Package rle implements the run-length encoding used for Ethereum data.

consensus       提供了以太坊的一些共識演算法,比如ethhash, clique(proof-of-authority)

console         console類

contracts   

core            以太坊的核心資料結構和演算法(虛擬機器,狀態,區塊鏈,布隆過濾器)

crypto          加密和hash演算法,

eth         實現了以太坊的協議

ethclient       提供了以太坊的RPC客戶端

ethdb           eth的資料庫(包括實際使用的leveldb和供測試使用的記憶體資料庫)

ethstats        提供網路狀態的報告

event           處理實時的事件

les         實現了以太坊的輕量級協議子集

light           實現為以太坊輕量級客戶端提供按需檢索的功能

log         提供對人機都友好的日誌資訊

metrics         提供磁碟計數器

miner           提供以太坊的區塊建立和挖礦

mobile          移動端使用的一些warpper

node            以太坊的多種型別的節點

p2p         以太坊p2p網路協議

rlp         以太坊序列化處理

rpc         遠端方法呼叫

swarm           swarm網路處理

tests           測試

trie            以太坊重要的資料結構Package trie implements Merkle Patricia Tries.

whisper         提供了whisper節點的協議。

 

 

相關文章