目次
ZK命令の検証とは何ですか?
ZK 命令の検証が難しいのはなぜですか?
#ZK 命令の検証とは何を意味しますか?
ZK 命令を確認するにはどうすればよいですか?
ステップ 1: スタック メモリ
ステップ 2: 算術演算
ステップ 3: 実行フロー
ホームページ ウェブ3.0 ゼロ知識証明の高度な形式的検証: ZK 命令を検証する方法

ゼロ知識証明の高度な形式的検証: ZK 命令を検証する方法

May 01, 2024 am 08:40 AM
ブロックチェーン イーサリアム web3.0

形式検証テクノロジが zkVM (ゼロ知識仮想マシン) にどのように適用されるかを深く理解するために、この記事では単一命令の検証に焦点を当てます。 ZKP(ゼロ知識証明)の高度形式検証の全体状況については、同時公開した記事「ゼロ知識証明ブロックチェーンの高度形式検証」を参照してください。

ZK命令の検証とは何ですか?

zkVM (ゼロ知識仮想マシン) は、特定のプログラムが特定の入力で実行され、正常に終了できることを証明する短い証明オブジェクトを作成できます。 Web3.0 分野では、L1 ノードはスマート コントラクトの入力状態から出力状態への遷移の短い証明のみを検証するだけでよく、実際のコントラクト コードの実行はオフチェーンで完了できるため、zkVM のアプリケーションにより高スループットが可能になります。

zkVM 証明者は、まずプログラムを実行して各ステップの実行記録を生成し、次に実行記録データを数値表のセットに変換します (このプロセスを「算術化」と呼びます)。これらの数値は、特定のテーブル セル間の接続方程式、固定定数、テーブル間のデータベース検索制約、および隣接するテーブル行の各ペア間で満たされる必要がある多項式などの制約のセット (回路など) を満たす必要があります。方程式 (別名「ゲート」)。オンチェーン検証では、テーブル内の特定の数値が表示されないことを保証しながら、すべての制約を満たすテーブルが実際に存在することを確認できます。

各 VM 命令の実行は、このような多くの制約に直面します。ここでは、VM 命令のこの一連の制約を「ZK 命令」と呼びます。以下は、Rust で書かれた zkWasm メモリ ロード命令制約の例です。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

#ZK 命令の形式検証は、これらのコードに対して形式推論を実行することによって行われ、最初に形式言語に変換されます。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

#単一の制約にエラーが含まれている場合でも、攻撃者が悪意のある ZK 証明を送信する可能性があります。悪意のある証拠に対応するデータテーブルは、スマートコントラクトの法的な運用に対応していません。イーサリアムなどの非 ZK チェーンでは、異なる EVM (イーサリアム仮想マシン) 実装を実行する多数のノードがあり、同じバグが同時に同じ場所で発生する可能性は低くなります。zkVM チェーンには単一の VM 実装しかありません。 。この観点だけから見ても、ZK チェーンは従来の Web3.0 システムよりも脆弱です。

さらに悪いことに、非 ZK チェーンとは異なり、zkVM トランザクションの計算の詳細が送信されず、チェーン上に保存されないため、攻撃が発生した後、トランザクションの特定の詳細を発見することが非常に困難になるだけでなく、攻撃だけでなく、攻撃自体を特定することさえ困難になる場合があります。

zkVM システムは非常に厳密な検査を必要としますが、残念ながら、zkVM 回路の正確性を保証することは困難です。

ZK 命令の検証が難しいのはなぜですか?

VM (仮想マシン) は、Web3.0 システム アーキテクチャの最も複雑な部分の 1 つです。スマート コントラクトの強力な機能は、Web3.0 機能をサポートする中核であり、その力は柔軟かつ複雑な基盤となる VM から得られます。一般的なコンピューティングおよびストレージ タスクを完了するには、これらの VM が多数の命令をサポートできなければなりません。と州。たとえば、EVM の geth 実装には 7,500 行を超える Go 言語コードが必要です。同様に、これらの命令の実行を制約する ZK 回路も同様に大きくて複雑です。 zkWasm プロジェクトと同様、ZK 回路の実装には 6000 行を超える Rust コードが必要です。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

zkWasm 回路アーキテクチャ

プライベート決済などの特定のアプリケーション向けに設計された ZK システムとの比較zkVM 回路で使用される専用の ZK 回路では、zkVM 回路の規模ははるかに大きくなります。制約ルールの数は前者よりも 1 ~ 2 桁多くなり、演算テーブルには数百の列が含まれる可能性があります。何千ものデジタルセル。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

#ZK 命令の検証とは何を意味しますか?

ここでは、zkWasm の XOR 命令が正しいことを確認したいと思います。技術的に言えば、zkWasm の実行テーブルは、正当な Wasm VM 実行シーケンスに対応します。したがって、マクロの観点から確認したいのは、この命令が実行されるたびに、新しい正当な zkVM 状態が常に生成されるということです。テーブル内の各行は VM の正当な状態に対応し、次の行は常に生成されます。これは、対応する VM 命令を実行することによって生成されます。以下の図は、XOR 命令の正しさに関する形式定理を示しています。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

ここで、「state_rel i st」は、状態「st」がステップ「i」のスマート コントラクトの正当な zkVM 状態であることを示します。ご想像のとおり、「state_rel (i 1) ...」を証明するのは簡単ではありません。

ZK 命令を確認するにはどうすればよいですか?

XOR 命令の計算セマンティクスは非常に単純ですが、ビット単位の排他的 OR (ビット単位でメモリから 2 つの整数を取得し、XOR 計算を実行し、計算された新しい整数を同じスタックに格納します) を計算することです。 。さらに、この命令の実行ステップはスマート コントラクト実行プロセス全体に統合される必要があり、その実行の順序とタイミングは正しくなければなりません。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

したがって、XOR 命令の実行結果は、データ スタックから 2 つの数値をポップし、それらの XOR 結果をプッシュし、同時にプログラム カウンターをインクリメントすることになります。スマートコントラクトの次の指示をポイントします。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

ここでの正当性属性の定義が、従来のバイトコード VM (イーサリアム L1 ノードの EVM インタープリタなど) を検証するときと一般に同じであることを理解するのは難しくありません。直面する状況は非常によく似ています。これは、マシン状態の高レベルの抽象定義 (ここではスタック メモリと実行フロー) と、各命令の予期される動作の定義 (ここでは算術ロジック) に依存します。

ただし、以下で説明するように、ZKP と zkVM の特殊な性質により、その正しさの検証プロセスは通常の VM の検証プロセスとは大きく異なることがよくあります。ここでの 1 つの命令が zkWASM 内の多くのテーブルの正しさに依存していることを確認します。その中には、値のサイズを制限するために使用される範囲テーブル、バイナリ ビット計算の中間結果に使用されるビット テーブル、データを格納する実行テーブルなどがあります。行ごとの一定サイズの VM 状態 (物理 CPU のレジスタおよびラッチ内のデータと同様)、および動的に可変サイズの VM 状態を表すメモリ (メモリ、データ スタック、およびコール スタック) テーブルとジャンプ テーブル。

ステップ 1: スタック メモリ

従来の VM と同様に、命令の 2 つの整数パラメーターがスタックから読み取れること、およびそれらの XOR 結果の値が次のとおりであることを確認する必要があります。バックスタックが正しく書き込まれました。スタックの正式な表現もかなり見慣れたものです (グローバル メモリとヒープ メモリもありますが、XOR 命令はそれらを使用しません)。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

ZK 証明者はスタックや配列などのデータ構造をネイティブにサポートしていないため、zkVM は複雑なスキームを使用して動的データを表現します。逆に、スタックにプッシュされた値ごとに、メモリ テーブルに個別の行が記録され、列の一部はエントリの有効時間を示すために使用されます。もちろん、これらのテーブル内のデータは攻撃者によって制御される可能性があるため、テーブル エントリがコントラクト実行時の実際のスタック命令に実際に対応していることを確認するには、いくつかの制約を課す必要があります。これは、プログラム実行中のスタック プッシュの数を慎重に計算することで実現されます。各命令を検証するときは、このカウントが常に正しいことを確認する必要があります。さらに、単一の命令によって生成される制約を、スタック操作を実装するテーブル検索と時間範囲チェックに関連付ける一連の補題があります。最上位レベルから、メモリ操作のカウント制約は次のように定義されます。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

ステップ 2: 算術演算

従来の VM と同様に、ビット単位の XOR 演算が正しいことを確認する必要があります。私たちの物理的なコンピュータの CPU は一度にこれを実行できるため、これは簡単に思えます。

しかし、zkVM の場合、これは実際には単純ではありません。 ZK 証明者がネイティブにサポートする算術命令は加算と乗算のみです。バイナリ ビット演算を実行するために、VM はかなり複雑なスキームを使用します。このスキームでは、1 つのテーブルが固定バイト レベルの演算結果を格納し、もう 1 つのテーブルが複数のテーブル行で演算を実行する方法を示す「スクラッチ パッド」として機能します。 64 ビットの数値は 8 バイトに分解され、再組み立てされて結果が得られます。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

zkWasm ビットテーブル仕様の一部

従来のプログラミング言語での非常に単純な XOR 操作はこちらこれらの補助テーブルの正確さを検証するには、多くの補題が必要です。ディレクティブには次のようになります:

零知识证明的先进形式化验证:如何验证一条 ZK 指令

ステップ 3: 実行フロー

従来の VM と同様に、プログラム カウンターの値が正しく更新されていることを確認する必要があります。 XOR などの逐次命令の場合、各ステップの後にプログラム カウンタを 1 つずつ増やす必要があります。

zkWasm は Wasm コードを実行するように設計されているため、Wasm メモリの不変の性質が実行中維持されることを確認することも重要です。

従来のプログラミング言語では、ブール値、8 ビット整数、64 ビット整数などのデータ型がネイティブにサポートされていますが、ZK 回路では、変数は常に整数の剰余の範囲内にあります。素数 (≈ 2254)。 VM は通常 64 ビットで実行されるため、回路開発者は制約システムを使用して数値範囲が正しいことを確認する必要があり、形式検証エンジニアは検証プロセス全体を通じてこれらの範囲に関する不変プロパティを追跡する必要があります。実行フローと実行テーブルに関する推論には他のすべての補助テーブルが関係するため、すべてのテーブル データの範囲が正しいことを確認する必要があります。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

メモリ操作数管理の場合と同様に、zkVM では制御フローを検証するために同様の補題のセットが必要です。具体的には、各呼び出し命令と戻り命令では呼び出しスタックの使用が必要です。呼び出しスタックは、データ スタックと同様のテーブル スキームを使用して実装されます。 XOR 命令の場合、コール スタックを変更する必要はありませんが、命令全体を検証する場合は、制御フローの操作数が正しいかどうかを追跡して検証する必要があります。

零知识证明的先进形式化验证:如何验证一条 ZK 指令この命令を検証する

すべての手順をまとめて、zkWasm XOR 命令のエンドツーエンドの正当性定理を検証してみましょう。以下の検証は対話型証明環境で完了します。この環境では、形式的な構築と論理的推論のすべてのステップが最も厳密な機械チェックを受けます。

零知识证明的先进形式化验证:如何验证一条 ZK 指令

#上記のように、zkVM 回路の正式な検証は実行可能です。しかし、これは多くの複雑な不変プロパティを理解して追跡する必要がある難しい作業です。これは、検証されるソフトウェアの複雑さを反映しています。検証に含まれるすべての補題は、回路開発者によって正しく処理される必要があります。大きなリスクが伴うことを考えると、人間による慎重なレビューのみに依存するのではなく、正式な検証システムによって機械チェックを受けることは価値があるでしょう。

以上がゼロ知識証明の高度な形式的検証: ZK 命令を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

OUYIとは何ですか? ouyiとは何ですか OUYIとは何ですか? ouyiとは何ですか Apr 01, 2025 pm 03:18 PM

OKXはグローバルデジタル資産取引プラットフォームです。その主な機能には、1。デジタル資産の売買(スポット取引)、2。デジタル資産間の取引、3。4。DiversifiedTrading製品(デリバティブなど)の提供、5。Asset付加価値サービスの提供、6。便利な資産管理。

デジタル通貨でポジションを転がす方法は?デジタル通貨ローリングプラットフォームとは何ですか? デジタル通貨でポジションを転がす方法は?デジタル通貨ローリングプラットフォームとは何ですか? Mar 31, 2025 pm 07:36 PM

デジタル通貨ローリングポジションは、貸付を使用して取引レバレッジを増幅してリターンを増やす投資戦略です。 この記事では、ローリング(バイナンス、Okex、gate.io、huobi、bybitなど)をサポートする取引プラットフォームの選択などの重要な手順など、デジタル通貨ローリングプロセスを詳細に説明します。 ただし、ローリングポジション取引は非常に危険であり、投資家は慎重に運営し、完全なリスク管理戦略を策定する必要があります。 デジタル通貨ローリングのヒントの詳細については、読み続けてください。

gate.io取引プラットフォームの取引料を計算する方法は? gate.io取引プラットフォームの取引料を計算する方法は? Mar 31, 2025 pm 09:15 PM

gate.io取引プラットフォームの処理料は、トランザクションタイプ、トランザクションペア、ユーザーVIPレベルなどの要因によって異なります。スポット取引のデフォルト料金率は0.15%(VIP0レベル、メーカー、テイカー)ですが、VIPレベルはユーザーの30日間の取引量とGTポジションに基づいて調整されます。レベルが高いほど、料金率は低くなります。 GTプラットフォームコイン控除をサポートしており、55%オフの最低割引を楽しむことができます。契約トランザクションのデフォルトレートはメーカー0.02%、テイカー0.05%(VIP0レベル)であり、これもVIPレベルの影響を受け、異なる契約タイプとレバレッジ

OUYI OKEXアカウントを登録、使用、キャンセルする方法に関するチュートリアル OUYI OKEXアカウントを登録、使用、キャンセルする方法に関するチュートリアル Mar 31, 2025 pm 04:21 PM

この記事では、OUYI OKEXアカウントの登録、使用、キャンセル手順を詳細に紹介します。登録するには、アプリをダウンロードし、携帯電話番号または電子メールアドレスを入力して登録する必要があります。使用法は、ログイン、リチャージ、引き出し、取引、セキュリティ設定などの操作手順をカバーします。アカウントをキャンセルするには、OUYI Okexカスタマーサービスに連絡し、必要な情報を提供し、処理を待つ必要があり、最後にアカウントキャンセルの確認を取得する必要があります。 この記事を通じて、ユーザーはOUYI OKEXアカウントの完全なライフサイクル管理を簡単に習得し、デジタルアセットトランザクションを安全かつ便利に実施できます。

Binance Binance Computerバージョン入学バイナンスバイナンスコンピューターバージョンPC公式ウェブサイトログイン入り口 Binance Binance Computerバージョン入学バイナンスバイナンスコンピューターバージョンPC公式ウェブサイトログイン入り口 Mar 31, 2025 pm 04:36 PM

この記事では、Binance PCバージョンのログインと登録の完全なガイドを提供します。最初に、Binance PCバージョンでログインする手順を詳細に説明しました。ブラウザで「Binance公式Webサイト」を検索し、ログインボタンをクリックし、電子メールとパスワードを入力し(検証コードを入力するには2FAを有効にしてください)、次にログインします。記事では、登録プロセスを説明します。最後に、この記事はアカウントのセキュリティも強調し、ユーザーに公式ドメイン名、ネットワーク環境に注意を払い、パスワードを定期的に更新し、アカウントのセキュリティを確保し、ビナンスPCバージョンが提供するさまざまな機能のより良い使用、市場条件の視聴、取引の実施、資産の管理などを確保します。

仮想通貨アプリソフトウェアに推奨されるWebサイトは何ですか? 仮想通貨アプリソフトウェアに推奨されるWebサイトは何ですか? Mar 31, 2025 pm 09:06 PM

この記事では、Binance Academy、Okx Learn、Coingecko、Cryptoslate、Coindesk、Investopedia、Coinmarketcap、Huobi University、Coinbase Learn、Cryptocompareなど、10の有名な仮想通貨関連アプリの推奨Webサイトを推奨しています。これらのWebサイトは、仮想通貨市場データ、価格動向分析などの情報を提供するだけでなく、基本的なブロックチェーンの知識、取引戦略、さまざまな取引プラットフォームアプリのチュートリアルとレビューなどの豊富な学習リソースを提供し、ユーザーがそれらをよりよく理解し、利用するのに役立ちます。

通貨取引ネットワーク公式ウェブサイトコレクション2025 通貨取引ネットワーク公式ウェブサイトコレクション2025 Mar 31, 2025 pm 03:57 PM

世界のトップにランクされており、スポット、契約、Web3ウォレットなどのすべてのカテゴリのトランザクションをサポートしています。セキュリティと低いハンドリング料金があります。コンプライアンスと高い流動性で知られる長い歴史を持つ包括的な取引プラットフォームは、多言語サービスをサポートしています。業界のリーダーは、通貨取引、レバレッジ、オプションなどをカバーし、強力な流動性を備えており、BNB控除料をサポートします。

Web3トランザクションはどのプラットフォームですか? Web3トランザクションはどのプラットフォームですか? Mar 31, 2025 pm 07:54 PM

この記事では、Binance、Okx、Gate.io、Kraken、Bybit、Coinbase、Kucoin、Bitget、Gemini、Bitstampなど、有名なWeb3トレーディングプラットフォームのトップ10をリストします。 この記事では、通貨の数、取引タイプ(スポット、先物、オプション、NFTなど)、取り扱い手数料、セキュリティ、コンプライアンス、ユーザーグループなどなど、各プラットフォームの特性を詳細に比較します。高周波トレーダー、契約取引愛好家、またはコンプライアンスとセキュリティに焦点を当てた投資家であろうと、そこから参照情報を見つけることができます。