
コインベースの「Base」がまた停止 原因はたった1つのシーケンサーバグだった
システムをリセットした直後、今度は「レースコンディション」が発生。シーケンサーは処理に追いつけず、ベースは再び停止に追い込まれた。

コインベースのレイヤー2ネットワーク「ベース」で先週発生した2度の停止。その原因は、シーケンサーのバグだった――。ベースが土曜日に公表したポストモーテムで明らかになった。
ベースのエンジニアリングチームによれば、問題はシーケンサーのブロック生成ロジックに潜んでいた。トランザクション検証に失敗したあとも、「古いジャーナル状態」が残り続けてしまうバグが確認されたという。
同チームはこう説明している。
「無効なトランザクションがブロックビルダーに送られ、実行時に失敗した。ここまでは想定通りだった。しかし、本来であれば消去されるべき、アクセス済みのアカウントやストレージスロットを含むジャーナル状態が、誤ってクリアされなかった」
ベースのレイヤー2ネットワークは、単一のシーケンサーで稼働している。つまり、そこに重大なバグが起きれば、ネットワーク全体が止まりかねない構造だ。シーケンサーとは、トランザクションの順番を決める中央集権的なブロックチェーン部品であり、アービトラム、OPメインネット、ジーケーシンク・エラなど、他のレイヤー2チェーンでも障害の原因となってきた。
木曜日と金曜日、ベースのメインネットでは2度にわたってブロック生成が停止した。最初の障害は116分間、2度目は20分間続いた。
この間、新たなブロック生成は完全に止まった。シーケンサーとバリデータノードは、問題のある無効ブロックを越えて処理を進めることができず、シーケンシングが復旧するまで足止めを食らった格好だ。
ベースのチームは、実行中にジャーナル状態が正しく更新されるよう、シーケンサーにパッチを適用して障害を解消した。
ただし、復旧対応は想定より長引いたという。理由は「元のバグとは無関係なインフラ上の事情」だった。
さらに、システムのリセット後には「レースコンディション」も発生した。これによりシーケンサーが最新状態に追いつけず、2度目の停止につながった。
今後、ベースのエンジニアリングチームは、プロトコルの「ファズテスト」を強化する方針だ。ファズテストとは、大量のランダムな入力、壊れた入力、想定外の入力をシステムに投げ込み、バグを洗い出す手法である。
加えて、将来同様の障害が起きた際に、バリデータノードを手動で再起動しなくても済むよう、「グレースフル・リカバリー」の構築も進めるという。
ベースの障害は今回が初めてではない
ベースでシーケンサー絡みの障害が起きたのは、今回が初めてではない。
2024年9月には17分間、2025年8月には約30分間、ブロック生成が停止している。
L2Beatによれば、ベースは預かり資産規模を示す「総保全価値」で、レイヤー2ネットワークとして第2位の規模を持つ。その額は110億ドル弱、日本円にして約1兆7,800億円にのぼる。

