Suiのネットワークが約2時間停止
レイヤー1ブロックチェーン「Sui(スイ)」のメインネットネットワークが、バグにより11月21日に約2時間にわたり完全停止した。なお現在では回復しており通常通り利用可能だ。
「スイ(Sui)」の開発を支援するスイ財団(Sui Foundation)によると今回の停止は、混雑制御(Congestion Control)のコードに存在する「assert!」エラーが原因とのこと。特定の条件下でトランザクションの推定実行コストがゼロと計算された場合、バリデーターがクラッシュする仕様になっていたという。
このバグは、プロトコルバージョン63および68で導入された、TotalGasBudgetWithCapモードが有効な状態で、ネットワークが「ミュータブルな共有オブジェクト入力」、「MoveCallコマンドがゼロ」といった特定の形のトランザクションを受信するという条件を満たしたことで引き起こされたものであるとのこと。
混雑制御とは、1つの共有オブジェクトに書き込まれるトランザクションの処理負荷を制限するシステムで、ネットワークが過負荷になり遅延するのを防ぐ役割を担っているという。「スイ」は多くのユーザートランザクションを並列処理できるが、複数のトランザクションがすべて同じ共有オブジェクトに書き込む場合、順番に実行しなければならず、特定のオブジェクトに影響を与えるトランザクションの処理数には限界があるため、混雑制御システムを用いているという。
この混雑制御システムは、トランザクションの複雑さをより正確に見積もることによって共有オブジェクトの利用率を向上させるために最近アップグレードされていたとのこと。今回のバグの原因である、TotalGasBudgetWithCapのコードは、そのアップグレードにより追加されたものであるという。
開発チームは、問題を発見した後、コード修正を行い、バリデーターの迅速な対応により、修正後わずか15分でネットワークが復旧したとのこと。迅速な対応ができたのは、インシデント検知・対応システムがうまく機能し、すぐに総動員で問題の分析と修正を行えたことと、バリデーターのコミュニティによる迅速な作業のおかげであるとしている。
スイ財団は今後このようなバグが発生しないよう、問題を引き起こしたような特異なトランザクションを再現するテストシステムを強化するとのこと。またリリースバイナリの生成時間を短縮することで、今後の対応時間をさらに短縮するという。 ・「スイ」は、メタ(Meta)のブロックチェーン研究開発部門であるディエム(Diem)の元リードエンジニアたちによって設立されたミステンラボ(Mysten Labs)開発のブロックチェーン。高い処理性能による高速なトランザクションと低い手数料で利用できることから高く評価されている。なおスイは、昨年5月3日にメインネットがローンチしている。
ちなみに「スイ」は、ディエム開発の開発言語「ムーブ(Move)」を採用している。また「スイ」の他に、ディエムの開発チームに所属していた元メンバーによって開発されているL1ブロックチェーン「アプトス(Aptos)」でも、「スイ」と同じく開発言語には「ムーブ」が採用されている。
The Sui network is back up and processing transactions again, thanks to swift work from the incredible community of Sui validators.
— Sui (@SuiNetwork) November 21, 2024
The 2-hour downtime was caused by a bug in transaction scheduling logic that caused validators to crash, which has now been resolved. https://t.co/TJh2zwvQcD
参考:スイ財団ブログ