geth 1.9.0 リリースノート


Ethereumノードのgethの1.9.0がリリースされました。
取り急ぎ本家ブログを要約しました。 https://blog.ethereum.org/2019/07/10/geth-v1-9-0/
間違いなどあるかもしれませんので、鵜呑みにしないでください。

※DBのマイグレーションが行われるため、一度アップデートすると元に戻せません。再同期する必要がありますので注意してください。

Performance:

データベースのロジックの変更により、ブロックチェーンデータの同期が早くなった。Fast, Full, Archiveともに。

Freezer:

DBをLevelDBとFreezerDBに分けて あまり使わないデータをフリーザDBに保存しておくことで戦闘力を下げる施策です。configなどでディレクトリ設定できるので、HDDとSSDの使い分けをうまくすればコストダウンにつながるでしょう。

GraphQL:

JSON-RPCだけじゃなくGraphQLにも対応しちゃったぞ。

Hardware wallets:

ハードウェアウォレットの対応を増やしました。Ledger, Trezor, Status keycardsに対応しています。

Clef:

アカウント機能をGethから分離してClefと命名して、標準化しました。APIを作成し、JSON-RPCで通信できちゃいます。今までの使い方も残してあるのでご安心を。

Ultra Light Client:

スマホなどの端末向けに超軽量クライアントモードを追加しました。難しい話は https://hackmd.io/@GMFZzCl1SH6s2lX25nC15A/HJy7jjZpm?type=view

Checkpoint oracle:

ライトクライアントはチェーンの検証にチェックポイントを利用します。今まではそれがgethにハードコーディングされていましたが、スマートコントラクト内から取得することができるようになります。それによってプログラム内にハードコードする必要がなくなりとってもハッピー。特にプライベートネットワークの場合恩恵が高いでしょう。

Monitoring:

監視はテキストUIとRCPレポートしかありませんでしたが、刷新しました。メトリクスにはExpVars, InfluxDB and Prometheus.が使えるようになっています。可視化にはDatadog, Grafanaに対応しています。

Puppeth explorer:

EtherscanとEtherchainはクローズドソースだが、ついにオープンなブロックエクスプローラーを出す時がきました。BlockscoutをPuppethに予備的に統合し、プライベートネットワーク展開ツールの大きな穴を埋めました。

Discovery protocol:

ノードがピアを探すときなどに利用するプロトコルにもっとよいものがないか探しています。特にプライベートネットワークなどでノードが少ない場合に問題が生じます。

Ethereum Node Records:

ENSにIPv6アドレスの対応とRinkeby nodeを探索する機能が追加されました。

Bootnodes:

最初に接続するノード一覧を更新しました。

Other changes

  • RPC APIs: ​​EIP 695で定義されているeth_chainId RPCメソッドをサポート
  • Networking: デフォルトピア数が25から50になりました。P2Pネットワーキングの問題をデバッグするために、新しいCLIツール(cmd / devp2p)がソースツリーに追加されました。このツールはalltoolsアーカイブにはまだ配布されていませんが、ピア検出で問題を確認することは既に非常に便利です。P2Pサーバーは、頻繁に接続しようとするIPからの接続を拒否します。
  • Miscellaneous: abigenツールの改良には多くの作業が費やされました。 GoバインディングはSolidity構造体と関数ポインタ引数をサポートします。 Javaジェネレータも同様に改良されています。モバイルフレームワークはデプロイトランザクションを作成できます。go-ethereumレポの重要部分はCGOなしで構築されています。この作業にJeremy Schlatterに感謝します。

Compatibility:

1.9.0で互換性のなくなったものや削除されたもののサマリ。Google翻訳そのまま貼り付けます。

  • セキュリティ上の理由から、オープンHTTP、WebSocket、またはGraphQLポートを使用したアカウントのロック解除は許可されていません。パワーユーザーは自分の責任で--allow-insecure-unlock CLIフラグを使用して古い動作を復元できます。
  • 古いUbuntu dockerイメージと古い(モノリシック)Alpine dockerイメージは、1年以上前に廃止予定として削除されました。 2016年にクラスターを構成したのでなければ、おそらくAlpineのスリムなイメージを使用した方が安全なはずです。
  • オリジナルのgeth monitor CLIコマンドは、それをサポートするdebug_metrics RPC APIエンドポイントとともに削除されました。モニタリングに頼る人は、DatadogまたはGrafanaと共にExpVar、InfuxDB、またはPrometheusメトリクスレポートを使用する必要があります。
  • geth bug CLIコマンドが削除されました。これは不必要な面倒さです。バグに遭遇した場合は、GitHubトラッカーで問題を開き、手動でテンプレートに記入することができます。
  • les / 1とeth / 62のプロトコルが削除されました。 les / 1はGethによってのみサポートされ、Constantinopleの全員がすでにles / 2を実行しています。 eth / 62はFrontierより前でも非推奨ですが、cpp-ethereumのために残されました。
  • 2019年4月上旬にGoogleがソーシャルネットワークを公開して以来、Google+認証はPuppethの蛇口から削除されました。
  • 元帳HDウォレット導出パスは、元のレガシーパスから正規のエコシステムへと更新されました。古いパスからのアカウントは引き続き検出されます。
  • デフォルトのキャッシュ許容量は、ネットワークと同期モードに基づいて動的に選択されます。メインネットのフルノードのデフォルトは4GB、テストネットとプライベートネットワークのデフォルトは1GBです。 Lightクライアントのデフォルトは128MBです。明示的な--cacheはもちろん光栄です。
  • Whisper v6のPoW計算は、仕様に完全には準拠していないため、Parityと互換性がありませんでした。これは修正されましたが、それはまたGeth v1.9.0に同梱されているWhisped v6が以前のバージョンと互換性がないことを意味します。
  • lightservと - lightpeersフラグは--light.serveと - light.maxpeersにそれぞれ改名されました。古いバージョンは非推奨ですが、来年かそこらのために動作し続けます。
  • Windowsのデフォルトのdatadirは、LocalAppData環境変数から派生しました。 $ HOME / AppData / Roaming内の古い場所はまだ認識されています。場所の変更はCygwinやリモートユーザーアカウントを使った設定でよりうまく機能します。
  • JSON-RPCサーバーは書き直され、現在は双方向通信をサポートしています。 rpc.Client.RegisterNameメソッドを使用して、クライアント側でメソッドハンドラを公開できます。これを徹底的にテストしましたが、新しいサーバーとの互換性の問題があるかもしれません。見つかったRPCの問題を報告してください。

最後に

みんなありがとう。