Урок 3

プルーフオブリザーブをzk-SNARKテクノロジーと組み合わせる方法は?

このレッスンでは、zk-SNARKテクノロジーと、zk-SNARKテクノロジーを使用してProof of Reservesが最適化される方法について説明します

背景

ゼロ知識証明(ZKP)は、1980年代初頭にS. Goldwasser、S. Micali、およびC. Rackoffによって最初に提案された暗号技術で、論文「インタラクティブ証明システムの知識複雑性論文では、数学的な文を検証する問題を明らかにせずに解決するための理論モデルとして概念化されました。この概念は、従来の暗号技術の枠を挑戦し、機密情報を処理する新しい方法を提供するため、学術界で広範な関心を集めています。

ZKPは、抽象的な理論的概念から具体的なプロトコルに進化し、さまざまなアプリケーションに統合できるようになりました。2010年に、Grothが「」というタイトルの論文を発表しました。短いペアリングベースの非対話型ゼロ知識引数「zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)」の理論的なマイルストーンとなり、ZKPにおいて重要な解決策となった。ゼロ知識証明の応用において最も重要な進展は、2015年にZ-cashが使用したゼロ知識証明システムであり、取引や金額のプライバシー保護を提供している。その後、スマートコントラクトとzk-SNARKが組み合わさり、その応用範囲がさらに広がる。

zk-SNARKの基本原則

従来のZKPは3つの原則に従います:

  • 完全性:もし文が真なら、正直な証明者は常に検証者を説得できる。
  • 健全性: ステートメントが偽である場合、詐欺師はほんのわずかな確率で検証者を誤解することしかできません。
  • ゼロ知識:ステートメントが真である場合、検証者はステートメントが真であるという事実以外の何も取得できません。言い換えれば、検証プロセスは、証明を構築するのに使用できる情報を明かさないでしょう。

ZKPの原理は、簡単な例を通じて理解することができます: AにBの電話番号を証明する必要がある場合、直接Bの電話番号を明らかにする必要はありません。その代わりに、直接Bの電話番号にダイヤルし、それを通過した後にBの電話番号を持っていることを証明することができます。このプロセスではBの電話番号は漏洩しません。
zk-SNARKは、次の特性でこれらの原則をさらに強化しています。

  • ゼロ知識: 検証者は証明から有用な情報を得ません。
  • 簡潔であり:証明のサイズは小さく(通常数十バイト)、検証時間は短い(通常数ミリ秒)です;
  • Non-interactive: The prover only needs to send the proof to the verifier once, without further communication required.
  • 信頼できるパラメータ:証明者とバリデーターの両方が、信頼できる第三者によって生成された共通参照文字列(CRS)を使用する必要があり、この文字列には、漏洩または改ざんされた場合にシステムのセキュリティを脅かす可能性のある機密情報が含まれている可能性があります。

Grothの論文では、非対話型ゼロ知識証明方法がペアリングに基づいて提案され、計算問題を二次算術プログラム(QAP)に変換します。この方法は楕円曲線暗号とハッシュ関数を使用して効果的な証明を構築します。その後のzk-SNARK設計には一般的に4つのステップが含まれます。

  • システムセットアップ:信頼された第三者によって実行されます。 これには、証明キー(pk)と検証キー(vk)を含むCRSの生成が含まれます。 このプロセスは1回だけ実行する必要があり、CRSは複数回再利用できます。
  • エンコーディングの問題: 計算問題 f(x) = y を QAP 形式 A(x) ・ B(x) = C(x) ・ Z(x) に変換します。ここで、A(x)、B(x)、C(x) は f の回路構造によって決定された多項式であり、Z(x) は固定の多項式です。x はランダムに選択された点、y は f の出力です。このプロセスは、証明者または検証者、あるいは事前に第三者によって行われることができます。
  • プルーフの生成:プルーバーによって実行されます。入力w、pk、x、およびfを使用して、特定の値wを明らかにせずに、f(w) = yを満たすwを知っていることを証明する証明πを生成するプロセスです。このプロセスには多項式の計算、楕円曲線の操作、ハッシュ関数の操作が含まれており、最終的にはいくつかの楕円曲線の点とハッシュ値からなるπが生成されます。
  • 証明検証: 検証者によって実行されます。これには、vk、x、y、および \pi を使用して検証し、証明者が f (w) = y を満たす w を知っているかどうかを判断することが含まれます。このプロセスには、多項式計算、楕円曲線演算、およびハッシュ関数演算も含まれます。最後に、証明が有効かどうかを示すブール値を取得します。

簡単な例で説明すると、埋蔵された宝物の正確な位置を示す宝の地図を持っていると仮定しましょう。宝の位置を知っていることを誰かに証明したいが、宝の地図の内容や宝の実際の位置を明かしたくありません。zk-SNARK技術を使用する場合、宝の地図の複雑なパズルを作成する必要があります。重要なパズルの一部(証拠)を選択して他の人に示し、その人に、宝の位置など、全体のパズルがどのように組み合わさるかを知っていると納得させますが、全体のパズルを明かさずに済みます。ただし、このためには、信頼できる印刷所から特別な印を取得する必要があります。この印は、パズルの一部の正当性を証明するために使用されます。

Exchange Reservesとzk-SNARKの組み合わせ

前回の議論で、zk-SNARKは共通の参照文字列を設定することを可能にし、これは制約を実行中の回路に設定できることを意味します。Gate.ioの準備を例に取ると、回路に5つのコア制約を設定しています。下記に示す通りです:

①ユーザーの純資産をMerkleツリーに挿入する前に、ユーザーIDに対応するノードが空である。
②ユーザーの総資産/負債を、ユーザーの資産リストと各資産の価格に基づいて計算します。総資産は総負債よりも大きくなければなりません。
③ユーザーの資産/負債を取引所の資産/負債に追加します。
④ユーザーの状態ハッシュを、ユーザーID、総資産/負債、資産リストを使用して計算します。ユーザーの状態をMerkleツリーに挿入して、新しいMerkleルートを取得します。
⑤ 前のユーザーがユーザー操作を作成する前のツリーのルートノードのハッシュ値は、後続のユーザーがユーザー操作を作成した後のハッシュ値と等しくなければなりません。
(Operation ①では、ノードデータが偽にならないようにできます。操作②では、負の残高アカウントを回避できます。操作⑤では、操作前後でユーザーデータが変更されないようにできます。)
これにより、負の残高の問題が解決されます。取引データは回路を通過するだけで、制約チェックを自動的に実行し、資産番号を取得する必要があります。ただし、この解決策には一定の計算能力とハードウェア条件が必要です。32コアのマシンに128GBのRAMを搭載して、1000万人のユーザーの資産証明を計算すると、15日かかります。Reservesの証明の計算は並列化できます。10台のマシンがあれば、1.5日しかかかりません。

結論

関連する制約を設定することで、zk-SNARKは負の値の問題の発生を回避し、ユーザーのプライバシーとセキュリティをよりよく保護することができます。Gate.ioのプルーフオブリザーブは、現在100以上のコインの準備率を証明することができ、ユーザーは簡単にクリックするだけでそれを表示できます。リンク. 次のレッスンでは、3分以内に資産のセキュリティを確認する方法を説明します。

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
Каталог
Урок 3

プルーフオブリザーブをzk-SNARKテクノロジーと組み合わせる方法は?

このレッスンでは、zk-SNARKテクノロジーと、zk-SNARKテクノロジーを使用してProof of Reservesが最適化される方法について説明します

背景

ゼロ知識証明(ZKP)は、1980年代初頭にS. Goldwasser、S. Micali、およびC. Rackoffによって最初に提案された暗号技術で、論文「インタラクティブ証明システムの知識複雑性論文では、数学的な文を検証する問題を明らかにせずに解決するための理論モデルとして概念化されました。この概念は、従来の暗号技術の枠を挑戦し、機密情報を処理する新しい方法を提供するため、学術界で広範な関心を集めています。

ZKPは、抽象的な理論的概念から具体的なプロトコルに進化し、さまざまなアプリケーションに統合できるようになりました。2010年に、Grothが「」というタイトルの論文を発表しました。短いペアリングベースの非対話型ゼロ知識引数「zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)」の理論的なマイルストーンとなり、ZKPにおいて重要な解決策となった。ゼロ知識証明の応用において最も重要な進展は、2015年にZ-cashが使用したゼロ知識証明システムであり、取引や金額のプライバシー保護を提供している。その後、スマートコントラクトとzk-SNARKが組み合わさり、その応用範囲がさらに広がる。

zk-SNARKの基本原則

従来のZKPは3つの原則に従います:

  • 完全性:もし文が真なら、正直な証明者は常に検証者を説得できる。
  • 健全性: ステートメントが偽である場合、詐欺師はほんのわずかな確率で検証者を誤解することしかできません。
  • ゼロ知識:ステートメントが真である場合、検証者はステートメントが真であるという事実以外の何も取得できません。言い換えれば、検証プロセスは、証明を構築するのに使用できる情報を明かさないでしょう。

ZKPの原理は、簡単な例を通じて理解することができます: AにBの電話番号を証明する必要がある場合、直接Bの電話番号を明らかにする必要はありません。その代わりに、直接Bの電話番号にダイヤルし、それを通過した後にBの電話番号を持っていることを証明することができます。このプロセスではBの電話番号は漏洩しません。
zk-SNARKは、次の特性でこれらの原則をさらに強化しています。

  • ゼロ知識: 検証者は証明から有用な情報を得ません。
  • 簡潔であり:証明のサイズは小さく(通常数十バイト)、検証時間は短い(通常数ミリ秒)です;
  • Non-interactive: The prover only needs to send the proof to the verifier once, without further communication required.
  • 信頼できるパラメータ:証明者とバリデーターの両方が、信頼できる第三者によって生成された共通参照文字列(CRS)を使用する必要があり、この文字列には、漏洩または改ざんされた場合にシステムのセキュリティを脅かす可能性のある機密情報が含まれている可能性があります。

Grothの論文では、非対話型ゼロ知識証明方法がペアリングに基づいて提案され、計算問題を二次算術プログラム(QAP)に変換します。この方法は楕円曲線暗号とハッシュ関数を使用して効果的な証明を構築します。その後のzk-SNARK設計には一般的に4つのステップが含まれます。

  • システムセットアップ:信頼された第三者によって実行されます。 これには、証明キー(pk)と検証キー(vk)を含むCRSの生成が含まれます。 このプロセスは1回だけ実行する必要があり、CRSは複数回再利用できます。
  • エンコーディングの問題: 計算問題 f(x) = y を QAP 形式 A(x) ・ B(x) = C(x) ・ Z(x) に変換します。ここで、A(x)、B(x)、C(x) は f の回路構造によって決定された多項式であり、Z(x) は固定の多項式です。x はランダムに選択された点、y は f の出力です。このプロセスは、証明者または検証者、あるいは事前に第三者によって行われることができます。
  • プルーフの生成:プルーバーによって実行されます。入力w、pk、x、およびfを使用して、特定の値wを明らかにせずに、f(w) = yを満たすwを知っていることを証明する証明πを生成するプロセスです。このプロセスには多項式の計算、楕円曲線の操作、ハッシュ関数の操作が含まれており、最終的にはいくつかの楕円曲線の点とハッシュ値からなるπが生成されます。
  • 証明検証: 検証者によって実行されます。これには、vk、x、y、および \pi を使用して検証し、証明者が f (w) = y を満たす w を知っているかどうかを判断することが含まれます。このプロセスには、多項式計算、楕円曲線演算、およびハッシュ関数演算も含まれます。最後に、証明が有効かどうかを示すブール値を取得します。

簡単な例で説明すると、埋蔵された宝物の正確な位置を示す宝の地図を持っていると仮定しましょう。宝の位置を知っていることを誰かに証明したいが、宝の地図の内容や宝の実際の位置を明かしたくありません。zk-SNARK技術を使用する場合、宝の地図の複雑なパズルを作成する必要があります。重要なパズルの一部(証拠)を選択して他の人に示し、その人に、宝の位置など、全体のパズルがどのように組み合わさるかを知っていると納得させますが、全体のパズルを明かさずに済みます。ただし、このためには、信頼できる印刷所から特別な印を取得する必要があります。この印は、パズルの一部の正当性を証明するために使用されます。

Exchange Reservesとzk-SNARKの組み合わせ

前回の議論で、zk-SNARKは共通の参照文字列を設定することを可能にし、これは制約を実行中の回路に設定できることを意味します。Gate.ioの準備を例に取ると、回路に5つのコア制約を設定しています。下記に示す通りです:

①ユーザーの純資産をMerkleツリーに挿入する前に、ユーザーIDに対応するノードが空である。
②ユーザーの総資産/負債を、ユーザーの資産リストと各資産の価格に基づいて計算します。総資産は総負債よりも大きくなければなりません。
③ユーザーの資産/負債を取引所の資産/負債に追加します。
④ユーザーの状態ハッシュを、ユーザーID、総資産/負債、資産リストを使用して計算します。ユーザーの状態をMerkleツリーに挿入して、新しいMerkleルートを取得します。
⑤ 前のユーザーがユーザー操作を作成する前のツリーのルートノードのハッシュ値は、後続のユーザーがユーザー操作を作成した後のハッシュ値と等しくなければなりません。
(Operation ①では、ノードデータが偽にならないようにできます。操作②では、負の残高アカウントを回避できます。操作⑤では、操作前後でユーザーデータが変更されないようにできます。)
これにより、負の残高の問題が解決されます。取引データは回路を通過するだけで、制約チェックを自動的に実行し、資産番号を取得する必要があります。ただし、この解決策には一定の計算能力とハードウェア条件が必要です。32コアのマシンに128GBのRAMを搭載して、1000万人のユーザーの資産証明を計算すると、15日かかります。Reservesの証明の計算は並列化できます。10台のマシンがあれば、1.5日しかかかりません。

結論

関連する制約を設定することで、zk-SNARKは負の値の問題の発生を回避し、ユーザーのプライバシーとセキュリティをよりよく保護することができます。Gate.ioのプルーフオブリザーブは、現在100以上のコインの準備率を証明することができ、ユーザーは簡単にクリックするだけでそれを表示できます。リンク. 次のレッスンでは、3分以内に資産のセキュリティを確認する方法を説明します。

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.