取引のファイナライズが一時停止したイーサリアム、何が起こったのか?

イーサリアムブロックチェーンは先日、2度も短時間、ブロックをファイナライズできない事態が発生した。ブロックチェーンの安全性にリスクをもたらす、不安定で好ましくない事態だったが、切迫した危機ではない。

「ファイナリティ(決済完了)」の遅れが、イーサリアムブロックチェーンの機能にどのような影響を及ぼしたかについて多くの混乱が広まり、セキュリティ上の懸念についての議論が巻き起こった。何が起こったのか、振り返ってみる価値はあるだろう。

関連記事:イーサリアム、取引を25分間完了できず

原因は調査中

ブロックのファイナリティが一時的に失われた原因はまだ調査中だが、イーサリアムブロックチェーン上でノードの実行に使われるクライアントソフトウェアを手がけるプリズム(Prysm)は新バージョンをリリース。「最近のメインネットの問題を受けた初のフルリリース」であり、「非常に重要な修正」を含むと説明した。

データブロックが完了されない場合でも、エンドユーザーのエクスペリエンスにおいて、中断や変化が生じることはないとされている。だが、ファイナリティの喪失は、reorg(ブロックの再編成)といったセキュリティ問題につながる可能性がある。

reorgが発生するのは、ブロックチェーンが同時に2つ以上のブロックを生成してしまった場合。その原因は通常、バグまたは攻撃だ。つまり、バリデーターのノードが一時的にブロックチェーンの新バージョンを作り、旧バージョンも並行して存続してしまう。そのため、トランザクションが適切に処理されたかを検証することが難しくなる。

今回の出来事の連鎖的影響は、エンドユーザーにも広がった。分散型取引所(DEX)大手のdYdXは、一時的に預け入れを停止した。ポリゴンのzkEVMでも、預け入れに遅延が生じたためだ。

イーサリアムの取引完了の一時停止に伴って、
失敗に終わったバリデータースロットの数が急増した(Glassnode)

ファイナライズの仕組み

イーサリアムのようなプルーフ・オブ・ステーク(PoS)ブロックチェーンの場合、バリデーターはまず、取引を含むブロックを提案する必要がある。ブロックが提案されると、他のバリデーターが承認して、ブロックチェーンに永久に追加されるが、これには約15分かかる。バリデーターの3分の2によって承認されると、ブロックが成立する。

つまりフィナリティとは、ブロックチェーン上の取引が変更不可能と見なされる時点を指す。ファイナリティは、ブロック内の取引を変更できないことを保証すると考えられている。

ファイナリティを保証できない場合、ブロックチェーンは「inactivity leak」と呼ばれる緊急事態に入り、バリデーターは取引を完了できなかったことに対してペナルティを課される。この状態は、ブロックチェーンに取引の完了を再開させるインセンティブとして働く。先週の出来事によって、イーサリアム史上初めて、inactivity leakが発動された。

イーサリアムコミュニティは、現在ブロックの完了にかかる時間が長過ぎることを認めている。

「ブロックの提案から完了までに遅れが生じると、攻撃者が特定のブロックを検閲したり、MEV(最大抽出可能価値)を引き出すことに使えるreorgのチャンスも生んでしまう」とイーサリアムのウェブサイトでも指摘されている。

イーサリアムの共同創設者ヴィタリック・ブテリン氏は7年前、ファイナリティの問題について意見を表明しており、この問題の重要性がうかがえる。

5月11日に初めてファイナリティが失われた時、開発者たちは即座にツイッターで情報をシェア。助けを借りて何が起こっているのかを見極めると表明した。25分後には問題は解決され、チェーンは取引のファイナライズを再開した。

それからおそよ24時間後、イーサリアムは再び、1時間ほど取引のファイナライズをストップ。一部のインフラプロバイダーのサービス停止を引き起こした。

過去にも、イーサリアムブロックチェーンの運用に使われるクライアントソフトウェアのバグが原因で取引のファイナライズが一時的に停止したことがある。ソフトウェアの欠陥に備え、イーサリアムでは複数のクライアントソフトウェアを採用しており、ブロックチェーン上のアクティビティが継続できるようにしている。

アプリケーションへの影響

イーサリアム財団のプロトコルサポート責任者ティム・ベイコ(Tim Beiko)氏は、今回の出来事は「間違いなく重大だが、イーサリアムのセキュリティや健全性が損なわれたり、リスクにさらされているわけではない」と語った。

「短時間のうちに事態は是正され、1日か2日後には、クライアントソフトウェアのパッチを発表して、問題の再発防止を図った」(ベイコ氏)

開発者たちはファイナライズが一時停止した原因をまだ調査中で、この先の「Consensus Layer」会議で事後検証のレポートについて議論する予定だ。

ベイコ氏によれば、今回の問題は「対処のために、プロトコルのきわめて極端なフォールバック(機能を落とした稼働)をテストし始めるところ」まではいかなかった。

しかし、イーサリアムブロックチェーン上で運営される複数のアプリケーションに影響が出た。

ポリゴン(Polygon)の技術責任者ジョルディ・ベイリナ(Jordi Baylina)氏はファイナリティの停止によって、ポリゴンのzkEVMへの預け入れが遅れ、さらにファイナリティの停止を原因としてサービスの一時停止に陥ったインフラプロバイダーInfuraを利用していたために、zkEVMを利用していた個人への影響がさらに深刻なものになったと語った。

「レイヤー2で預け入れするには、レイヤー1のファイナリティを待つ必要がある」とベイリナ氏。「ファイナリティが復活するまでは(チェーンを)使うことはできず、レイヤー2での二重支払いのリスクが生じる」と説明した。

dYdXも預け入れを一時停止し、「問題の監視、調査を続ける」と語った。

それでもイーサリアム開発者たちは、ネットワークは停止しなかったと強調する。

「今回のインシデントは、素晴らしい訓練となった。2、3の問題が重なったようだ(よくあることだ)。チェーンは優雅に復活し、イーサリアムをさらにレジリエントにするために改善できる、いくつかの別の問題も見つけた」とイーサリアム財団の開発者マリウス・バン・デ・ウィジュデン(Marius Van Der Wijden)氏はツイートしている。

|翻訳・編集:山口晶子、増田隆幸
|画像:Shutterstock
|原文:Ethereum Briefly Stopped Finalizing Transactions. What Happened?