Towards Automated Formal Verification of zkEVMs Using LLM-Guided Constraint Synthesis
本論文は、Rust製zkEVMコードから実行可能な検証モデルを自動的に合成するために、LLMとSMTを組み合わせたハイブリッド・パイプラインを活用する新しいフレームワークであるVeriSynthを提案しており、手動による仕様策定やLLMのハルシネーション(幻覚)による制限を克服することで、90%を超えるバグ検出率を実現している。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
インターネットを、誰もがすべての取引を見ることができる、巨大でグローバルなデジタル台帳だと想像してみてください。ただし、それを制御する単一の人物は存在しません。これがブロックチェーンの世界であり、その最も有名な居住者がEthereumです。このシステムをより高速かつ安価にするために、開発者は「レイヤー2」ネットワークを構築しました。これらはオフスクリーン(画面外)で重労働を行い、最終的な結果だけをメインネットワークに示します。これらのオフスクリーンでの結果が、詳細を明かすことなく正直であることを証明するために、彼らは「ゼロ知識証明」と呼ばれる魔法のようなトリックを使用します。それは、魔法使いが鍵のかかった箱を見せ、中身を開けることなく、中の宝物が約束通りのものであることを証明するようなものです。
しかし、ここには落とし穴があります。魔法を機能させるためには、魔法使いの呪文の本(コンピュータコード)が完璧でなければなりません。もし魔法使いが、金の数を間違えて数えたり、地図の更新を忘れたりといった、呪文における小さなミスを犯した場合、箱は依然としてロックされ、有効であるように見えても、中身が空であったり偽物のコインが入っていたりする可能性があります。これはセキュリティにとって悪夢です。これを防ぐために、専門家は「形式検証(formal verification)」という手法を用います。これは、超厳格なロボット数学者が、呪文の本を一行ずつチェックし、その論理が欠陥のないものであることを保証する方法です。しかし、このロボットへの指示を書くことは非常に困難です。まるで、秘密の言語で書かれた複雑なビデオゲームのマニュアルを、ロボットが読める数学の教科書へと翻訳しようとするようなものです。
ここで、VeriSynthと呼ばれる新しいツールが登場します。研究者たちは、AI(人工知能)はコードを書くことには長けているものの、「幻覚(ハルシネーション)」を起こしやすいこと、つまり、もっともらしく聞こえるが間違っている事実を作り出してしまうことがあることに気づきました。そのため、彼らは単にAIにバグを探させるのではありませんでした。代わりに、AIを「クリエイティブな翻訳者」として機能させ、乱雑で秘密めいたコードをロボット数学者のためのドラフト(下書き)へと変換させ、そしてロボットを「はい、これは正しいです」または「いいえ、これはナンセンスです、やり直してください」と判定する「厳格な裁判官」として機能させるチームを構築したのです。
問題点:静かなるバグ
ゼロ知識Ethereum仮想マシン(zkEVM)の世界では、ショーを動かすコードはRustと呼ばれる言語で書かれています。Rustは強力ですが、非常にトリッキーです。時として、開発者が誤って、ガス(取引手数料)を誤ってカウントするコードを書いたり、メモリのスロットを更新し忘れたりすることがあります。もしこれが起きると、システムは、実際には壊れている取引に対して「有効な」証明を生成してしまう可能性があります。それは、銀行の窓口係が、レシートにはすべて完璧であると書いてあるにもかかわらず、誤ってあなたに10ドルではなく100ドルを渡してしまうようなものです。証明が有効に見えるため、ミスは見過ごされ、システム全体のセキュリティが静かに崩壊していくのです。
通常、これを修正する方法は、人間が詳細なテストケースを書き、あらゆる可能なミスを捉えることを期待することです。しかし、人間は疲れますし、コンピュータが遭遇する可能性のあるあらゆる奇妙なシナリオを想像することはできません。もう一つのアプローチは、エッセイやコードを書くものと同じような大規模言語モデル(LLM)を使用してバグを見つけることです。しかし、本論文は、AIに対して単に「バグを探せ」と命じることは信頼できないと主張しています。AIは、数学的な確実性が欠けているため、バグがないのにあると推測したり、あるいは完全に見逃したりすることがあるからです。
解決策:翻訳者と裁判官のチーム
この論文の著者であるHuang Shichen氏とそのチームは、VeriSynthと呼ばれるフレームワークを作成しました。彼らはこの問題を、メッセージが完璧でなければならない、ハイステークスな「伝言ゲーム」のように扱っています。
- 翻訳者(LLM): まず、システムは複雑なRustコードを、巨大なパズルを個々のピースに分けるように、小さく管理しやすい塊に分解します。次に、AIに対して、各パーツを「検証モデル」へと翻訳するよう求めます。これは単なる説明ではなく、コードがどのように振る舞うべきかをロボット数学者に正確に伝える、Python/Z3と呼ばれる言語で書かれた厳格な数学的ルールです。
- リファレンス・ライブラリ: AIが作り物をするのを防ぐために、VeriSynthは以前に検証された例の「カンニングペーパー」をAIに与えます。これは、新しいレゴセットを組み立てる前に、正しく組み立てられたレゴの写真をAIに見せて、パーツがどのような見た目であるべきかを教えるようなものです。
- 裁判官(SMTソルバー): これが最も重要な部分です。AIによる翻訳は、決して即座に信頼されることはありません。それは、超厳格なロボット数学者(SMTソルバー)に渡されます。ロボットは、翻訳がルールに適合しているかをチェックします。もし翻訳に構文エラー、欠落、または論理的な矛盾がある場合、ロボットはそれを拒絶します。
- 自動修復(Auto-Repair): もしロボットが翻訳を拒絶した場合、単に「失敗」と告げるのではありません。AIに対して、「この数値のサイズが間違っています」とか「メモリの更新を忘れています」といった具体的なエラーメッセージを返します。その後、AIは間違いを修正して、再び送り直します。このループは、ロボットが満足するまで続きます。
研究結果
チームは、隠れた間違いを含む、独自に作成した「バグのある」データセットを用いてVeriSynthをテストしました。これらの間違いは、単純な計算ミスから、異なるプログラム間の呼び出しに関する複雑な問題まで多岐にわたります。
結果は驚くべきものでした。
- VeriSynthは、95個のバグのうち87個を見つけ出し、**91.6%**の検出率を達成しました。
- 対照的に、厳格なロボット裁判官なしでAIに単にバグを探させた場合、AIは44個のバグしか見つけられず、検出率は**46.3%**でした。
- また、AIがロボットと対話し、再試行することを許可した場合(「対話型」のアプローチ)、58個のバグしか見つけられませんでした(61.1%)。
論文ではまた、VeriSynthをScrollという主要なプロジェクトで使用されている実際のテスト手法と比較しました。Scrollの専門家チームは、バグを捉えるための独自のテストセットを作成していました。彼らのテストは、95個のバグのうち55個を捉えました。VeriSynthは87個を捉えたため、人間が作成したテストが見逃した32個の追加のバグを発見したことになります。
なぜ重要なのか
研究者たちは、これは人間の開発者を置き換えることでも、AIが完璧であると言うことでもない、と強調しています。むしろ、AIを翻訳という重労働を行うための強力なツールとして使い、厳格で揺るぎないロボットを最終的な権威として維持することにあります。「自動修復」機能こそが最も重要な部分であり、これがない場合、システムの成功率は**66.3%**まで低下しました。これは、自らの間違いを修正する能力こそが、システムを機能させていることを証明しています。
この研究は、AIの創造性と数学的ソルバーの厳格な論理を組み合わせることで、人間が単独で作れるものよりもはるかに強力な、ブロックチェーンの未来のためのセーフティネットを構築できることを示唆しています。これは、デジタルセキュリティの世界において、最高の防御とは「創造的な精神が提案し、厳格な論理が決定を下す」というチームであるということを思い出させてくれます。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。