事後: GRANDPA の曖昧さと sysinfo プロセスにより、最終的に Kusama Network に巨額のペナルティが課せられる
PolkaBase
2020-08-21 06:02
本文约1629字,阅读全文需要约7分钟
冒険的な Kusama カナリア ネットワークには、1 か月前にもう 1 つの小さな「ひねり」がありました。ネットワークの罰則、ノードの切断、一連の練習の後、Kusama は少しの抵抗 (堅牢性) を増

文章

結果論: GRANDPA の曖昧さと sysinfo プロセスは最終的に Kusama ネットワークに多大なペナルティをもたらす

画像の説明

「コード内の複数のバグにより、ノードがKusamaネットワークから離脱し、検証されたブロックのブロックを保存しているデータベースが失われました。その結果、同じノードが再起動時にこれらのブロックに二重署名しました。Kusama議会の動議はユーザーに提出されました」この問題に起因する罰金は補償されます。」

7 月 31 日金曜日、ランタイム v2019 を使用する 2 つの Kusama バリデーターが数分ごとにクラッシュし始め、2 つの明らかなエラーが発生し、問題が報告されました。一見すると、バリデーターのキーに問題があるように見えます。影響を受けたバリデーター同士がプロセス中にキーを変更していないことを確認したため、これが原因ではないことが後に判明しました。また、この問題は Polkadot ではなく、Kusama ネットワークにのみ存在するようです。

もう少し詳しく調査したところ、チームは、この問題は GRANDPA のあいまいさによって引き起こされているようで、元々はファイル記述子のリークによって引き起こされた Kusama のスラッシュ イベントを引き起こし、ノードをクラッシュさせていることに気付きました。このリークにより、ノードは GRANDPA 投票者の状態 (特定のラウンドでの投票) をディスクに書き込むことができなくなり、このデータを失ったノードは再起動後に再度投票し、今回は最初に検証するために選択したブロックよりも多くのブロックに投票します。 。これにより、GRANDPA アルゴリズムがあいまいなアルゴリズム状況に遭遇することになります。

https://wiki.polkadot.network/

GRANDPA 曖昧さ: バリデーターは、同じブロック時間に異なるチェーンで 2 つ以上の意図投票情報に署名します。

これら 2 つのイベントの組み合わせにより、v0.8.15 (Kudama v2015) がリリースされネットワークがアップグレードされた後のある時点で、バリデーターが厳しいペナルティを受ける状況が発生しました。権限検出は以前からランタイム モジュール レベルで利用可能でしたが、クライアントではデフォルトでは有効になっていません。また、このバージョンでは、GRANDPA アルゴリズムが署名されていない外部のあいまいさをレポートできるようになります。https://github.com/

GRANDPA の新しいレポート機能:

この情報をもとに、チームの主な仮説は、ファイル記述子の漏洩によって引き起こされたあいまいさは実際には早い段階で起こり始めていたが、報告されたのは 7 月の v0.8.15 アップグレード後に限られているということです: このバージョンを実行しているネットワークでノードがクラッシュする その後、報告が開始されました。独自のノードのステータスが表示され、関連チームの注目を集めました。それでも、Parity によって実行されたノードのログを調査したところ、あいまいな「Equivocation」が以前に発生したことは明らかになりませんでした (それらは端末に記録されるでしょう)。

ファイル記述子漏洩の根本原因をさらに調査した結果、権限の検出とメトリクスの収集という 2 つの主な原因が判明しました。 DHT からのデータをクエリするために使用するソケットが多すぎる権限検出 (つまり、他の権限 IP アドレスの検出)。システム メトリクスの収集 (CPU やメモリなど) については、システム内のすべてのプロセスおよび各プロセスのスレッド上でファイル記述子のキャッシュを保持する sysinfo クレートに依存します (データは /proc から読み取ることによって取得されます)。

短期的な解決策は、デフォルトで Authorization Discovery を無効にし、システム メトリックの収集を停止することです。ソケットのオーバーコミットに対する回避策が用意されている場合、Authority Discovery モジュールは将来のリリースで再び有効になる予定です。

新しいバージョンをリリースする前に、パリティ チームは Authority Discovery を手動で無効にすることをお勧めします。また、ノードがクラッシュした場合は、バリデーターが再起動する前に遅延 (1 ~ 2 分) を導入することをお勧めします。これにより、ノードのチケットがディスク上に保持されていない場合に、ノードが GRANDPA で曖昧になる可能性が低くなります。

議論と開発を経て、上記で詳述した短期修正を含む Polkadot v0.8.22 がリリースされました。すべてのバリデータはバージョンをアップグレードし、結果を監視する必要があります。草間評議会は、バグによって引き起こされたすべてのスラッシュを元に戻しました。この精神に基づいて、バリデーターの指名による損失ではなく、経済的損失の復元について新たな議論が行われています。

https://matrix.to/

発展を続けるために、草間コミュニティに参加する方法はたくさんあります。草間チャンネルのディスカッションに参加してください:

https://wiki.polkadot.network/

翻訳・編集:ショーン・ポルカベース

https://polkadot.network/

翻訳・編集:ショーン・ポルカベース

元のリンク:https://polkadot.network

PolkaBase
作者文库