go-ethereumを読む(1) 準備編

ブロックチェーンの勉強のためにEthereumのデファクトとなっているgo-ethereumのソースコードを読んだのでそれを記録としてまとめます。

v1.8.15ベースに解説します。


debug

pritty printがあると便利

go-ethereumはgovendorを使っているので下記のコマンドでインストールしておくのをおすすめ

$ govendor fetch github.com/k0kubun/pp@=v2.3.0

使い方


geth


urfave/cli

gethでつかっているcliライブラリ


主要なディレクトリ構成

名前
説明

accounts
Ethereumはアカウントベースなので、アドレスや鍵のプログラムがここにある 

cmd
gethコマンド,puppethコマンドなどコマンドのmain.goなどがある

common
Addressなどの汎用的に使う型やそれ用の関数がある

consensus
ethash(PoW), clique(PoA)などのロジックがある

core
Ethereumのコア機能の実装がある

eth
EthServiceの機能がある

ethclient
rpcリクエスト用のクライアントがある

ethdb
LevelDBのwrapper

event
FeedやSubscriptionといったものがある

miner
マイニング用の汎用的なロジックがある(ethash, cliqueなどの特化したロジック以外)

node
nodeをセットアップ、起動するためのロジックがある

p2p
p2pのロジックがある

rlp
Recursive Length PrefixというEthereumで独自定義されているバイナリフォーマット用のロジックがある

rpc
http,ws,ipcなど具体的なrpcサーバのロジックがある

trie
データ保存形式の作成ロジックがある