TL;DR
Go-Ethereumの以下のバージョン間のコマンドラインオプションの比較をおこなってみました。
-
1.8.23-stable-c9427004
Xircus (2019/2/20リリース) -
1.9.0-stable-52f24617
Full Biotic Kick (2019/7/10リリース)
主な変更点(Full Biotic Kick v1.9.0)
GitHubのリリースノートもですが、以下のブログにまとめられています。
ざっくりとまとめると・・・。
- 性能関連のデフォルト値(と内部処理の)見直しによる性能向上
-
Freezer
機能の追加。- 従来は格納先は
--datadir
の1か所だったのですが、これが--datadir.ancient
との2つに分かれます。 - SSDとHDDで格納先を分けるような対応が可能になりますね。
- メインネットのストレージ消費は200GB近くなっていたのでこれはありがたい。
- 従来は格納先は
- GraphQLからの呼び出し対応。GraphQLのIFと同じ呼出方が可能になった?
- Gethからアカウント管理機能のみ分割した
Clef
の追加。 - メトリクスをより汎用的にExpVars, Prometheusにも対応するようになりました。
- Puppeth Explorerの追加
- まだ試してませんが、こんな画面になっているはず。 https://blockscout.com/poa/core/
- ハードウェアウォレット追加対応
コマンド
追加されたコマンド
inspect Inspect the storage size for each type of data in the database
retesteth Launches geth in retesteth mode
Freezer機能の各DBのサイズ確認コマンドが追加。また、テスト用、デバッグ用の retesteth
モードが追加されたようです。ブロックの巻き戻しやデータインポートが可能? 自動テストのためのモードですかね。
削除されたコマンド
monitor Monitor and visualize node metrics
bug opens a window to report a bug on the geth repo
コマンドラインからメトリクスのグラフが見れるmonitor機能やバグレポート機能が削除。
起動オプションの変更
追加されたオプション
起動オプション系
--datadir.ancient Data directory for ancient chain segments (default = inside chaindata)
--pcscdpath value Path to the smartcard daemon (pcscd) socket file
--exitwhensynced Exits after block synchronisation completes
データ格納先のマルチ化に伴い、古いデータを配置する場所は --datadir.ancient
で指定する形式になりました。
また、起動後、同期が完了したら終了するという --exitwhensynced
が追加。ウォームスタンバイのような構成がとりやすくなりました。
アカウント系
--signer value External signer (url or path to ipc file)
--allow-insecure-unlock Allow insecure account unlocking when account-related RPCs are exposed by http
アカウントをRPC経由でアンロック状態にするためには --allow-insecure-unlock
が必要になりました。
GraphQL系
--graphql Enable the GraphQL server
--graphql.addr value GraphQL server listening interface (default: "localhost")
--graphql.port value GraphQL server listening port (default: 8547)
--graphql.corsdomain value Comma separated list of domains from which to accept cross origin requests (browser enforced)
GraphQLとの連携に関するオプション。
「REST-APIあまりにバラバラで作りすぎるから、少し統一しろ」と、「ブロックチェーンだけで無理にアプリを作らず、複数のデータストレージ(非BCも含む)を活用してサービスを提供するものだぞ」という開発側からのメッセージのように個人的には思いました。
削除されたオプション
--lightserv value Maximum percentage of time allowed for serving LES requests (0-90) (default: 0)
--lightpeers value Maximum number of LES client peers (default: 100)
ライトクライアント系のオプションは以下のように別セクション化されました。
LIGHT CLIENT OPTIONS:
--light.serve value Maximum percentage of time allowed for serving LES requests (multi-threaded processing allows values over 100) (default: 0)
--light.ingress value Incoming bandwidth limit for serving light clients (kilobytes/sec, 0 = unlimited) (default: 0)
--light.egress value Outgoing bandwidth limit for serving light clients (kilobytes/sec, 0 = unlimited) (default: 0)
--light.maxpeers value Maximum number of light clients to serve, or light servers to attach to (default: 100)
--ulc.servers value List of trusted ultra-light servers
--ulc.fraction value Minimum % of trusted ultra-light servers required to announce a new head (default: 75)
--ulc.onlyannounce Ultra light server sends announcements only
デフォルト値が変わったオプション
1.8.23では AppData\Ethash
であったDAGファイル置き場が微妙に変化。マイニングノードは、設定値デフォルトのまま、アップグレードして起動すると、最初のマイニングの際にDAGの再生成が走ってしまうものと思われます。
--ethash.dagdir "C:\Users\USER_NAME\AppData\Local\Ethash" Directory to store the ethash mining DAGs (default = inside home folder)
cacheのデフォルトが1024から4096に増加。ここはけっこう同期性能に影響大きかったポイントなのでよいですね。NW帯域などの関係もあり、単に増やせば増やしただけ性能向上するようなものではないですが。
--cache value Megabytes of memory allocated to internal caching (default = 4096 mainnet full node, 128 light mode) (default: 1024)
--cache.trie value Percentage of cache memory allowance to use for trie caching (default = 25% full mode, 50% archive mode) (default: 25)
--cache.gc value Percentage of cache memory allowance to use for trie pruning (default = 25% full mode, 0% archive mode) (default: 25)
--cache.noprefetch Disable heuristic state prefetch during block import (less CPU and disk IO, more time waiting for data)
--maxpeers
は25から50に増加。こちらもデフォルトはやや少なめだったので、このくらいがおいしいポイントかなと思います。
--maxpeers value Maximum number of network peers (network disabled if set to 0) (default: 50)