メインコンテンツへスキップ

このページの翻訳を行う

🌏

このページの新しいバージョンがありますが、現在は英語のみです。最新バージョンの翻訳にご協力ください。

ページを翻訳する
英語を見る

ここにバグはありません!🐛

このページは翻訳されていないため、このページは英語で表示されています。

クライアントの多様性

最終編集者: , Invalid DateTime
ページ編集

イーサリアムノードの動作は、ノードが実行するクライアントソフトウェアによって制御されています。 プロダクションレベルのイーサリアムクライアントは複数存在しており、それぞれ別のチームにより、異なるプログラミング言語で開発され、保守されています。 これらのクライアントは共通の仕様に基づいて構築されており、クライアント間のシームレスな連携、共通する機能、同等のユーザーエクスペリエンスを提供しています。 しかしながら、現時点ではクライアントの占有率は偏ってしまっており、ネットワークの安全性が最大限にまで高められていません。 クライアントの多様性を可能な限り高めるには、クライアント別の利用者数は同程度になることが望ましいです。

前提知識

ノードやクライアントが何かについてご存知ではない場合、ノードとクライアントを参照してください。 実行レイヤーコンセンサスレイヤーは用語集に定義が記載されています。

クライアントが複数ある理由

独立して開発・保守されるクライアントが複数存在するのは、クライアントの多様性が攻撃やバグに対するネットワークの耐性を高めるからです。 複数のクライアントがあることはイーサリアム固有の強みです。他のブロックチェーンでは、単一のクライアントに依存しており、そのクライアントに絶対に誤りがないという前提に基づいています。 しかし、ただ複数のクライアントがあるだけでは不十分です。クライアントはコミュニティで採用され、すべてのアクティブノードが比較的均等に複数のクライアントに分散している必要があります。

クライアント実装の多様性が重要な理由

独立して開発・保守される多くのクライアントがあることは、分散型ネットワークの健全性には不可欠です。 この理由を探ってみましょう。

バグ

個々のクライアントにあるバグは、そのクライアントがイーサリアムノードのマイノリティである場合は、ネットワークへのリスクは低くなります。 多数のクライアントにノードがほぼ均等に分散しているならば、大半のクライアントで共通の問題がある可能性は小さいため、結果的としてネットワークはより堅牢になります。

攻撃耐性

クライアントの多様性は、攻撃に対する耐性も同時にもたらします。 例えば、特定のクライアントに対する攻撃で不正なチェーンへと改ざんしようとする試みが成功する可能性は低くなります。これは、他のクライアントに同じような攻撃ができる可能性は低く、正規のチェーンは壊れないためです。 クライアントの多様性が低いほど、多数派のクライアントへの攻撃に関するリスクが高まります。 クライアントの多様性がネットワーク上の悪意のある攻撃に対する重要な防御となることは、既に証明されています。例えば、2016 年の上海 DOS 攻撃の事例は、多数派のクライアント(Geth)に対して、ブロックごとに何万回も遅いディスク i/o 操作を実行したため起こりました。 この脆弱性を持たない他のクライアントもオンラインであったため、イーサリアムは Geth の脆弱性が修正されている間も攻撃に耐え、稼働を続けることができました。

プルーフ・オブ・ステークにおけるファイナリティ

イーサリアムノードの 33%以上を占めるコンセンサスクライアントのバグがあると、ビーコンチェーンのファイナライズを妨げる可能性があります。つまり、トランザクションの取り消しや改ざんが発生するおそれがあります。 これはイーサリアム上に構築された多くのアプリ、特に分散型金融(DeFi)にとって非常に大きな問題となります。

🚨 さらに、3 分の 2 のマジョリティを占めるクライアントの重大なバグにより、チェーンが誤って スプリットし、ファイナライズされ、大量のバリデータが無効なチェーン上で立ち往生する可能性があります。 これらのバリデータが正しいチェーンに再び参加しようとする場合、スラッシングのペナルティを受けるか、時間がかかり高額となる任意退出後に、再度アクティベーションを行います。 スラッシングの規模は過失のあるノードの数に比例し、3 分の 2 のマジョリティが最大のスラッシング(32 ETH)を受けます。

これらは可能性が低いシナリオですが、アクティブなノードにクライアントを均等に分散することで、イーサリアムのエコシステムはリスクを軽減することが出来ます。 特定のコンセンサスクライアントが、全ノードの 33%のシェアを占めないことが理想です。

責任の共有

マジョリティクライアントを維持するためには人件費もかかります。 小規模な開発チームは過剰な負担と責任を負わなければなりません。 クライアントの多様性が低いほど、マジョリティクライアントを保守するデベロッパーの責任が大きくなります。 この責任を複数のチームに分散させることは、イーサリアムのノードネットワークの健全性と、人々の繋がりの両方にとって望ましいことです。

現在のクライアントの多様性

クライアントの多様性を示す円グラフ 図のデータはethernodes.orgclientdiversity.orgから引用

上の 2 つの円グラフは、実行レイヤーとコンセンサスレイヤーの現在(2022 年 1 月の執筆時点)のクライアントの多様性のスナップショットを示しています。 実行レイヤーの大多数はGethが占めており、1 位と大差をつけてOpen Ethereumが 2 位、次にErigonNethermindと続きますが、その他のクライアントはネットワークの 1%未満に過ぎません。 コンセンサスレイヤーで最も一般的に使用されているPrysmは、Geth ほど独占しているわけではありませんが、それでもネットワークの 60%以上を占めています。 LighthouseTekuがそれぞれ約 20%と約 14%を占め、他のクライアントはほとんど使われていません。

実行レイヤーのデータはEthernodesから 2022 年 1 月 23 日に、 コンセンサスクライアントのデータはMichael Sproulから取得されました。 ビーコンチェーンのクライアントは、コンセンサスクライアントを識別するための明確な痕跡を常に持っている訳ではないため、コンセンサスクライアントのデータを取得することはより困難です。 データはマイノリティクライアントの一部を混同する場合がある分類アルゴリズムを用いて生成されました(詳細はこちらを参照)。 上の図では、これらの曖昧な分類は、どちらか一方のラベル(Nimbus/Teku など)で記載されています。 いずれにせよ、ネットワークのマジョリティが Prysm を実行していることは明白です。 データは固定されたブロック群(この場合はスロット 2048001 から 2164916) のスナップショットです。Prysm の占める割合が高まり、68%を超えることもありました。 これはスナップショットに過ぎませんが、図中の値は、クライアントの多様性の現状をよく表すものです。

コンセンサスレイヤーのクライアントの多様性についての最新のデータは、clientdiversity.orgから入手できます。

実行レイヤー

これまでクライアントの多様性に関する議論は、主にコンセンサスレイヤーに焦点が当てられていました。 しかし、実行クライアントGethは現在、すべてのノードの 85%を占めています。 この高い占有率は、コンセンサスクライアントと同じ理由で問題になります。 例えば、トランザクション処理や実行ペイロードの構築に影響を与えるバグが Geth にあると、コンセンサスクライアントが問題や不具合のあるトランザクションをファイナライズする可能性があります。 そのため、使われる実行クライアントがより均一に分散されると、イーサリアムの健全性が高まります。ネットワークの 33%以上を占めるクライアントが存在しないことが理想です。

マイノリティクライアントの使用

クライアントの多様性に対応するには、個々のユーザーがマイノリティクライアントを選ぶだけでなく、マイニング/バリデータプールや、メジャーな分散型アプリ(Dapp)や取引所などの機関がクライアントを切り替えることも必要です。 しかし、すべてのユーザーは現在の不均衡を是正し、利用可能なすべてのイーサリアムソフトウェアの使用の正常化に向けて貢献することができます。 マージ後はすべてのノードオペレーターは、実行クライアントとコンセンサスクライアントの両方を実行する必要があります。 以下に示すクライアントの組み合わせを選ぶことは、クライアントの多様性の向上につながります。

実行クライアント

Besu

Nethermind

Erigon

Akula

Go-Ethereum

コンセンサスクライアント

Nimbus

Lighthouse

Teku

Lodester - レビューおよび監査中

ノードオペレーターを大多数を占めるクライアントからの移行を奨励し、移行プロセスを加速できるよう、技術系のユーザーはマイノリティクライアント向けのチュートリアルやドキュメントの作成にご協力ください。 マイノリティコンセンサスクライアントへの移行に関するガイドは、 clientdiversity.orgから入手できます。

クライアントの多様性のダッシュボード

実行レイヤーとコンセンサスレイヤーのクライアントの多様性に関するリアルタイムの統計情報を提供しているダッシュボードがいくつかあります。

コンセンサスレイヤー:

実行レイヤー:

参考文献

この記事は役に立ちましたか?