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