# Fraud ProofとZK Fraud Proofの実装アイデア詐欺証明はブロックチェーン分野で広く応用されている技術方案であり、最初はイーサリアムコミュニティに起源を持ち、ArbitrumやOptimismなどのLayer2プロジェクトに採用されました。2023年にビットコインエコシステムが興起した後、Robin LinusはBitVM方案を提案し、詐欺証明を核心にして、ビットコインの既存技術基盤の上で二層またはブリッジに新しいセキュリティモデルを提供しました。BitVMは複数のバージョンの進化を経て、初期の論理ゲート回路を基本としたBitVM0から、後にZK詐欺証明とGroth16検証回路を核としたBitVM2へと至り、関連技術の道筋は成熟を続けています。Bitlayer、Citrea、BOBなどの複数のプロジェクトは、BitVMを技術基盤として異なる実装を行っています。この記事では、Optimismの詐欺証明方案を例に挙げ、MIPS仮想マシンとインタラクティブな詐欺証明に基づく方案、およびZK化詐欺証明の主要な考え方について解析します。## OutputRoot と StateRootOptimismは有名なOptimistic Rollupプロジェクトで、その基盤はシーケンサーとEthereumチェーン上のスマートコントラクトで構成されています。シーケンサーは取引を処理した後、データをEthereumに送信します。Optimismノードクライアントを実行すると、これらのデータをダウンロードし、ローカルで実行して現在の状態セットのハッシュを計算できます。もしシーケンサーが誤ったステートセットハッシュをアップロードした場合、ローカル計算結果は異なります。この場合、詐欺証明システムを通じて異議を申し立てることができます。EVM系ブロックチェーンは通常、Merkle Treeデータ構造を使用して状態セットを記録し、これをWorld State Trieと呼びます。取引が実行された後、World State Trieは変化し、その最終的なハッシュも更新されます。イーサリアムはこのハッシュをStateRootと呼び、状態セットの変化を表すために使用します。OptimismのアカウントシステムはEthereumに似ており、StateRootフィールドも採用しています。シーケンサーは定期的にOutputRootをEthereumにアップロードし、OutputRootはStateRootと他の2つのフィールドから計算されます。! [BitVMの背景:詐欺証明とZK詐欺証明の実装](https://img-cdn.gateio.im/social/moments-4740909e3c2dd651d7b12dec84677a36)## MIPS仮想マシンとメモリMerkleツリーチェーン上でOutputRootの正当性を検証するための最も簡単な方法は、イーサリアム上にOPノードクライアントを実装することですが、2つの問題があります:1. スマートコントラクトは詐欺証明に必要な入力パラメータを自動的に取得できません2. イーサリアムのガスリミットは制限されており、複雑な計算タスクはサポートされていません。最初の問題はPreimageOracle契約によって解決できます。二つ目の問題については、OPチームがSolidityでMIPS仮想マシンを作成し、一部のOPノード機能を実装しました。OP開発チームはGolangを使用して簡易プログラムを作成しました。その機能はOPノードが取引を実行し、ブロックを生成し、OutputRootモジュールと基本的に一致します。しかし、計算コストが大きすぎるため、すべての取引をチェーン上で完全に実行することはできません。これに対して、Optimismはインタラクティブ詐欺証明システムを設計し、取引処理プロセスをMIPSオペコードの順次処理に細分化しました。各オペコードの実行後、仮想マシンの状態ハッシュが変化し、これらの記録はMerkleツリーに集約されます。インタラクティブ詐欺証明では、どのMIPSオペコードが仮想マシンの状態ハッシュエラーを引き起こしたかを特定し、その時の状態をチェーン上で再現してそのオペコードを実行し、結果が一致するかを観察する必要があります。これには、一部のMIPS仮想マシンの状態情報をチェーン上にアップロードする必要があります。チェーン上の詐欺証明に関連する契約は、Step関数を通じてMIPSオペコードの実行を完了します:ソリディティ機能step( バイトメモリ_stateData、 バイトメモリ_proof) public は (bytes32) { を返します。 // ...}_stateDataと_proofパラメータには、単一のMIPSオペコード実行の依存データが含まれています。例えば、レジスタの状態、メモリ状態のハッシュなどです。OPは32ビットMIPSアーキテクチャを採用しており、メモリは28層の二分木メルクルツリーとして構成できます。基底には2^27個の葉レコードがあり、それぞれのメモリアドレスデータを保持しています。すべての葉データを集約した後のハッシュはmemRootです。! [BitVMの背景:詐欺証明とZK詐欺証明の実装](https://img-cdn.gateio.im/social/moments-d3f8076fec7cb8639affdec1b2b6bf34)## インタラクティブ詐欺証明有争議なMIPSオペコードを特定するため、OPチームはFault Dispute Game(FDG)プロトコルを開発しました。FDGには挑戦者と防御者の2つの役割が含まれており、双方はローカルでGameTreeを構築する必要があります。GameTreeは二層の木で構成されています: 第一層の葉は異なるブロックのOutputRootであり、第二層の葉はMIPS仮想マシンの状態ハッシュです。争議の双方はチェーン上で何度も相互作用し、最終的にチェーン上で実行する必要がある単一のMIPSオペコードを特定します。まとめると、インタラクティブ詐欺証明は二つのコアメカニズムを含んでいます:1. FDG定位に必要なオンチェーンで実行されるMIPSオペコードおよびVMステータス情報2. イーサリアムチェーン上のMIPS仮想マシンでこのオペコードを実行し、最終結果を得る! [BitVMの背景:詐欺証明とZK詐欺証明の実装](https://img-cdn.gateio.im/social/moments-1a7effb3d036526f536ca4c917bdeb75)## ZKベースの詐欺証明従来の詐欺証明はインタラクションが複雑で、以下の問題があります:1. 多段階のインタラクションが大量のガスコストを生み出す2. インタラクションプロセスが長いため、その間にRollupは正常に取引を実行できません。3. チェーン上で特定のVMの開発が難しいこれらの問題を解決するために、OptimismはZK詐欺証明の概念を提案しました。核心は、チャレンジ時に再実行が必要な取引を指定し、シーケンサーがZK証明を提供し、Ethereumのコントラクトが検証することです。インタラクティブ詐欺証明と比較して、ZK Fraud Proofは多回のインタラクションを一回のZK証明生成と検証に置き換え、時間とコストを節約します。ZK Rollupと比較して、ZK Fraud Proofに基づくOP Rollupは、挑戦されたときのみ証明を生成し、計算コストを削減します。ZK化詐欺証明思路もBitVM2によって採用されています。BitVM2を採用しているプロジェクトには、Bitlayer、Goat Networkなどがあり、ビットコインスクリプトを通じてZK Proof検証プログラムを実現し、オンチェーンプログラムのサイズを大幅に簡素化しました。! [BitVMの背景:詐欺証明とZK詐欺証明の実装](https://img-cdn.gateio.im/social/moments-2b0e69f87b0e05dec63e9648fdc822d0)
詐欺証明の詳細解説: インタラクティブなソリューションからZK Fraud Proofへの技術の進化
Fraud ProofとZK Fraud Proofの実装アイデア
詐欺証明はブロックチェーン分野で広く応用されている技術方案であり、最初はイーサリアムコミュニティに起源を持ち、ArbitrumやOptimismなどのLayer2プロジェクトに採用されました。2023年にビットコインエコシステムが興起した後、Robin LinusはBitVM方案を提案し、詐欺証明を核心にして、ビットコインの既存技術基盤の上で二層またはブリッジに新しいセキュリティモデルを提供しました。
BitVMは複数のバージョンの進化を経て、初期の論理ゲート回路を基本としたBitVM0から、後にZK詐欺証明とGroth16検証回路を核としたBitVM2へと至り、関連技術の道筋は成熟を続けています。Bitlayer、Citrea、BOBなどの複数のプロジェクトは、BitVMを技術基盤として異なる実装を行っています。
この記事では、Optimismの詐欺証明方案を例に挙げ、MIPS仮想マシンとインタラクティブな詐欺証明に基づく方案、およびZK化詐欺証明の主要な考え方について解析します。
OutputRoot と StateRoot
Optimismは有名なOptimistic Rollupプロジェクトで、その基盤はシーケンサーとEthereumチェーン上のスマートコントラクトで構成されています。シーケンサーは取引を処理した後、データをEthereumに送信します。Optimismノードクライアントを実行すると、これらのデータをダウンロードし、ローカルで実行して現在の状態セットのハッシュを計算できます。
もしシーケンサーが誤ったステートセットハッシュをアップロードした場合、ローカル計算結果は異なります。この場合、詐欺証明システムを通じて異議を申し立てることができます。
EVM系ブロックチェーンは通常、Merkle Treeデータ構造を使用して状態セットを記録し、これをWorld State Trieと呼びます。取引が実行された後、World State Trieは変化し、その最終的なハッシュも更新されます。イーサリアムはこのハッシュをStateRootと呼び、状態セットの変化を表すために使用します。
OptimismのアカウントシステムはEthereumに似ており、StateRootフィールドも採用しています。シーケンサーは定期的にOutputRootをEthereumにアップロードし、OutputRootはStateRootと他の2つのフィールドから計算されます。
! BitVMの背景:詐欺証明とZK詐欺証明の実装
MIPS仮想マシンとメモリMerkleツリー
チェーン上でOutputRootの正当性を検証するための最も簡単な方法は、イーサリアム上にOPノードクライアントを実装することですが、2つの問題があります:
最初の問題はPreimageOracle契約によって解決できます。二つ目の問題については、OPチームがSolidityでMIPS仮想マシンを作成し、一部のOPノード機能を実装しました。
OP開発チームはGolangを使用して簡易プログラムを作成しました。その機能はOPノードが取引を実行し、ブロックを生成し、OutputRootモジュールと基本的に一致します。しかし、計算コストが大きすぎるため、すべての取引をチェーン上で完全に実行することはできません。
これに対して、Optimismはインタラクティブ詐欺証明システムを設計し、取引処理プロセスをMIPSオペコードの順次処理に細分化しました。各オペコードの実行後、仮想マシンの状態ハッシュが変化し、これらの記録はMerkleツリーに集約されます。
インタラクティブ詐欺証明では、どのMIPSオペコードが仮想マシンの状態ハッシュエラーを引き起こしたかを特定し、その時の状態をチェーン上で再現してそのオペコードを実行し、結果が一致するかを観察する必要があります。これには、一部のMIPS仮想マシンの状態情報をチェーン上にアップロードする必要があります。
チェーン上の詐欺証明に関連する契約は、Step関数を通じてMIPSオペコードの実行を完了します:
ソリディティ 機能step( バイトメモリ_stateData、 バイトメモリ_proof ) public は (bytes32) { を返します。 // ... }
_stateDataと_proofパラメータには、単一のMIPSオペコード実行の依存データが含まれています。例えば、レジスタの状態、メモリ状態のハッシュなどです。
OPは32ビットMIPSアーキテクチャを採用しており、メモリは28層の二分木メルクルツリーとして構成できます。基底には2^27個の葉レコードがあり、それぞれのメモリアドレスデータを保持しています。すべての葉データを集約した後のハッシュはmemRootです。
! BitVMの背景:詐欺証明とZK詐欺証明の実装
インタラクティブ詐欺証明
有争議なMIPSオペコードを特定するため、OPチームはFault Dispute Game(FDG)プロトコルを開発しました。FDGには挑戦者と防御者の2つの役割が含まれており、双方はローカルでGameTreeを構築する必要があります。
GameTreeは二層の木で構成されています: 第一層の葉は異なるブロックのOutputRootであり、第二層の葉はMIPS仮想マシンの状態ハッシュです。争議の双方はチェーン上で何度も相互作用し、最終的にチェーン上で実行する必要がある単一のMIPSオペコードを特定します。
まとめると、インタラクティブ詐欺証明は二つのコアメカニズムを含んでいます:
! BitVMの背景:詐欺証明とZK詐欺証明の実装
ZKベースの詐欺証明
従来の詐欺証明はインタラクションが複雑で、以下の問題があります:
これらの問題を解決するために、OptimismはZK詐欺証明の概念を提案しました。核心は、チャレンジ時に再実行が必要な取引を指定し、シーケンサーがZK証明を提供し、Ethereumのコントラクトが検証することです。
インタラクティブ詐欺証明と比較して、ZK Fraud Proofは多回のインタラクションを一回のZK証明生成と検証に置き換え、時間とコストを節約します。ZK Rollupと比較して、ZK Fraud Proofに基づくOP Rollupは、挑戦されたときのみ証明を生成し、計算コストを削減します。
ZK化詐欺証明思路もBitVM2によって採用されています。BitVM2を採用しているプロジェクトには、Bitlayer、Goat Networkなどがあり、ビットコインスクリプトを通じてZK Proof検証プログラムを実現し、オンチェーンプログラムのサイズを大幅に簡素化しました。
! BitVMの背景:詐欺証明とZK詐欺証明の実装