ブロックチェーンの勉強のために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 | データ保存形式の作成ロジックがある |