こんにちは、Habr! ZCashのブログ記事の翻訳を紹介します。この記事では、ZCash暗号通貨で使用されるゼロ開示証拠システムSNARKの動作メカニズムについて説明しています(これだけではありません)。
ソース:
https :
//z.cash/blog/snark-explain5.html前の記事:
パート1:
SNARKの説明。 準同型隠蔽とブラインド多項式計算(翻訳)パート2:
SNARKの説明。 採用された係数の知識と信頼できる多項式のブラインド計算(翻訳)翻訳者からの紹介
翻訳の最後の部分から始めて、私たちは本当に素晴らしい時間に住んでいると言いたいです。 高度な数学がソフトウェア開発にほとんどすぐに関与する機会があり、ブロックチェーンとデータ交換に基づいた高度なもので、技術機関の数学者の仕事の結果を「実際に」観察することができます。
さて、私はあなたの注意をこれ以上遅らせません、最も興味深いものに移りましょう...
計算から多項式へ
以前の記事では、多項式を扱うための特定のメカニズムを開発しました。 このパートでは、証明し、検証したいステートメントを多項式の言語で変換する方法を学びます。 このように多項式を使用するというアイデアは
、1991年のルンド、フォートウォン、カルロフ、およびニサン(カールステンルンド、ランスフォートノウ、ハワードカルロフ-シカゴ大学およびノアムニサン-ヘブライ大学)
による画期的な作業から始まります。
2013年には、ジェンナロ、ジェントリー、パルノ、ライコバ(ロサリオジェンナロ、クレイグジェントリー、ブライアンパルノ、マリアナレイコバ)によって、
さらに別の画期的な作品が発表されました。 この研究により、計算から2次算術プログラム(QAP)と呼ばれる多項式への非常に便利な変換が特定されました。 KAPはzk-SNARKの最新の設計、特にZCash暗号通貨で使用される設計の基礎となっています。
記事の最初の部分では、例を使用してCAPでの計算の変換について説明します。 一般的な定義ではなく小さな例に焦点を合わせたとしても、最初にそれを理解するには十分な時間を費やす必要があります。 精神的な努力に備えてください:)
アリスがボブに知っていることを証明したいとします
そのような
。 最初のステップは、計算を表示することです
算術図の形で。
算術図
算術スキームは、加算や乗算などの遷移と呼ばれる計算演算と、それらの間の接続で構成されます。 この場合、スキームは次のようになります。

下部のコネクタは入力パラメータであり、上部の出力接続はこれらの入力パラメータの回路全体を計算した結果です。
図からわかるように、回路のコネクタと遷移は特定の方法で示されています。 これらのルールは、次のステップ、つまりスキームをCAPに転送するために必要になります。
- 同じ発信コネクタが複数の遷移に入る場合、それは同じコネクタであると見なされます-たとえば、 例では。
- 乗算ブロックには、左右のコネクタと呼ばれる2つの入力があります。
- 加算から乗算または加算に進むコネクターはマークされません。 加算遷移の入力パラメーターは乗算遷移に直接進むと考えられています。 この例では、 そして 入力です
回路の
有効な割り当てセットは、ラベル付き遷移の値の割り当てです。各乗算遷移の出力値は、対応する入力の積の結果です。
したがって、このスキームでは、有効な割り当てのセットの形式は次のとおりです。
どこで
そして
この用語に従って、アリスは有効な割り当てセットを知っていることを証明したい
そのような
。 次のステップは、CAPを使用してこのステートメントを多項式に変換することです。
CAPにキャスト
乗算の各遷移は、フィールドの要素と相関する必要があります。
と相関します
そして
と
。 ポイント
{1、2}を ターゲットポイントと呼びます。 次に、「左接続多項式」のセットを定義する必要があります
、「右接続多項式」
および「出力接続多項式」
。
このアクションの主な考え方は、多項式の値は、それらが関与する乗算のターゲット遷移点を除き、すべてのターゲット点でゼロに等しいということです。
具体的には、
それぞれ、左、右、および出力コネクタ
決定できる
多項式
対応するポイント
1で1に等しい
対応するポイント
2でゼロに等しい
。
に注意してください
そして
どちらも正しい入力です
。 したがって、同様に定義します
以来
対応するターゲットポイント
2の 1に等しい
別のターゲットポイントでゼロ。
他のすべての多項式をゼロ多項式として示します。
固定値の場合
これらは、左、右、および出力「合計」多項式を決定するための係数として使用されます。 つまり、以下を決定できます。
$インライン$ L:=Σ^ 5_ {i = 1}c_i⋅L_i、R:=Σ^ 5_ {i = 1}c_i⋅R_i、O:=Σ^ 5_ {i = 1}c_i⋅O_i$ inline $
次に、多項式を定義します
さて、これらすべての定義の後、中心的な定義を定式化できます。
Pがすべてのターゲットポイントでゼロの値をとる場合にのみ、有効なスキーム割り当てセットです。
この例を使用して、これを確認しましょう。 定義されたとします
上記のように
。 これらすべての多項式をターゲットポイント
1で計算してみましょう。
すべての
のみ
ポイント
1で非ゼロ。 だから
。 同様に、以下を取得します
そして
。
だから
。 あなたは同様のものを得ることができます
。
言い換えれば、
Pは、以下の場合にのみ、ターゲットポイントで消滅します。
有効な割り当てセットです。
ここで、次の代数的事実を使用します。多項式
Pと点
、私たちは持っています
多項式の場合
Pを剰余なしで除算する、すなわち
多項式
Hについてこの方法でターゲット多項式を定義すると:
、次の場合にのみ
Tが
Pを分割することがわかります。
有効な割り当てセットです。
上記に基づいて、KAPを次のように定義します。
次数
dおよびサイズ
mの2次算術プログラム
Qは、多項式
で構成されます
および次数
dのターゲット多項式
T。割り当てセット
Qを 満たす場合、定義
$インライン$ L:=Σ^ m_ {i = 1} c_i⋅L_i、R:=Σ^ m_ {i = 1}c_i⋅R_i、O:=Σ^ m_ {i = 1}c_i⋅O_i $ inline $ そして
、剰余
Pなしで分割する
Tが存在します
。この用語に従って、アリスは割り当てセットを知っていることを証明したい
上記で定義されたCAPを満たします。
、
この部分を要約します。 「知ってるよ
そのような
»KAPを使用して、多項式に関する同等のステートメントに変換できます。 次に、KAPの有効な割り当てセットの知識を確認するための効果的なプロトコルを検討します。
上記では、KAPにキャストするかなり短い例を示しました。 プログラムをKAPに変換する方法の詳細については、 Vitalik Buterinの優れた投稿もお勧めします。
ピノキオプロトコル
アリスがボブに証明したいステートメントは、二次算術プログラム(CAP)と呼ばれる「多項式言語」の同等の形式に変換できることを以前に示しました。
このパートでは、Aliceがかなり短い証明をBobに送信し、KAPに有効な割り当てセットがあることを示す方法を説明します。 パルノ、ハウエル、ジェントリー、ライコバが開発し
たピノキオプロトコル (ブライアンパルノ、ジョンハウエル、クレイグジェントリー、マリアナレイコバ)を使用します。
上記のように、アリスは、追加の制限がある有効な割り当てセットがあることを証明したいと考えています。たとえば、
。 ただし、ここではこれを考慮せず、簡単にするために、許容される割り当てのセットの知識を証明することがいかに簡単かを示します。
Aliceに有効な割り当てセットがある場合、つまり、定義する場合
上記のように、次のような多項式
Hが存在します。
。 特に、
私たちは持っています
。
ここで、アリスには有効な割り当てセットがありませんが、彼女は
無効なセットから
。 そうすれば、
Tが
Pを分割しないことが確実になります
。 これは、最大で
d 、
Pおよび
異なる多項式になります。
Pと
ここに高次の順序はありません
。
これを証明するために、
よく知られた Schwarz-Zippel補題を使用し
ます。 以下と交差することはできません
ポイント
。 したがって、
pがはるかに大きい場合
その可能性
ランダム選択用
取るに足らない。
これに基づいて、次のプロトコルスケッチを作成して、アリスに有効な割り当てセットがあるかどうかを確認できます。
- アリスは多項式を選ぶ d以下の次数
- ボブはランダムなポイントを選びます そして非表示を計算します 。
- アリスは、ポイントsでこれらの多項式の非表示をボブに送信します。 。
- ボブは、必要な平等がsで保持されるかどうかを確認します。 つまり、彼はチェックします
繰り返しますが、アリスが有効な割り当てセットを持っていない場合、最終的には、ほとんどのランダムに選択された
sに必要な等式が成り立たない多項式を使用します。 したがって、ボブは、選択された
sに関係なく、アリスの応答を拒否する可能性があります。
このスケッチを実装するツールはありますか? 重要な点は、アリスが
sを知らなくても使用する多項式の選択です。 しかし、これはまさに、
前の記事で説明した多項式の信頼できるブラインド計算で解決した問題です。
これを考えると、このスケッチをzk-SNARKに変えるために解決する必要がある4つのキーポイントがあります。 この記事のフレームワークで最初の2つを検討し、最後の記事で他の2つを検討します。
アリスが割り当てセットに従って多項式を選択するという確信
重要な点:アリスに有効な割り当てセットがない場合、これは彼女が多項式を見つけられないという意味ではありません
d以下の次数
。 それは、彼女がそのような多項式を見つけることができないことを意味します
そして
「割り当てセットから派生した」; つまり
$インライン$ L:=Σ^ m_ {i = 1}c_i⋅L_i、R:=Σ^ m_ {i = 1}c_i⋅R_i、O:=Σ^ m_ {i = 1}c_i⋅O_i $ inline $ ダイヤル用
。
上記のプロトコルは、いくつかの多項式を使用することのみを保証します
望ましい順序ですが、有効な割り当てセットから作成されたことを保証するものではありません。 正式な証明には多少注意が必要なので、おおよその解決策を示します。
互換性のある多項式をみましょう
次のように1つの多項式
Fに :
Rに乗算する意味
そして、
O 比率を混ぜない
fで 。 オッズ
Fでは
Lに対応し、次の
係数
Rに対応し、後者
係数は
Oに対応します
。同様にCAPの定義内の多項式を組み合わせ、それぞれに対して定義します
多項式
その最初の
係数は係数です
そしてオッズ
そして
。 つまり、それぞれの
多項式を定義します:
2つを合計すると
それから
そして
「個別に要約されています。」 例えば
。
より一般的には、
いくつかのセット
。 それからまた私達は得る
$インライン$ L =Σ^ m_ {i = 1}c_i⋅L_i、R =Σ^ m_ {i = 1}c_i⋅R_i、O =Σ^ m_ {i = 1}c_i⋅O_i $ inline $ 同じ比率で
。 つまり、
Fが線形結合の場合
つまり
実際にセットから作成されました。
したがって、ボブはアリスに、
Fが次の線形結合であることを証明するように依頼します。
。 これは、信頼できる計算のためのプロトコルと同様に行われます。
ボブはランダムに選ぶ
、およびアリスに非表示を送信します
$インライン$ E(β⋅F_1(s))、...、E(β⋅F_m(s))$ inline $ 。 それから彼はアリスに彼に皮を送るよう頼む
。 彼女が成功した場合、受け入れられたオッズに関する知識の
高度なバージョンは、彼女が
Fの作成方法を知っていると仮定します。
。
「ゼロディスクロージャー」パーツの追加-割り当てセットの非表示
zk-SNARKでは、アリスは自分の割り当てセットに関するすべての情報を非表示にしたいと考えています。 しかし隠れている
いくつかのセット情報を提供します。
たとえば、他の満足のいく割り当てセットがある場合
ボブは適切な
隠れている
。 それらがアリスの答えと異なる場合、彼はそれを理解することができます
アリスの割り当てセットではありません。
このようなセットに関する情報の漏洩を回避するために、アリスは各多項式に「ランダム
Tシフト」を追加することでセットを隠します。 ランダムを選択します
$インライン$δ_1、δ_2、δ_3∈F ^ * _ p $インライン$ 、および定義
$インライン$ L_z:= L +δ_1⋅T、R_z:= R +δ_2⋅T、O_z:= O +δ_3⋅T $ inline $ 。
と仮定する
満足できる割り当てセットから取得されました。 だから
多項式
Hについて どこでも
Tの倍数を追加したので、
Tも分割します
。 これを確認しましょう:
$インライン$L_z⋅R_z- O_z =(L +δ_1⋅T)(R +δ_2⋅T)-(O +δ_3⋅T)$インライン$
$ inline $ =(L⋅R-O)+ L⋅δ_2⋅T +δ_1⋅T⋅R +δ_1δ_2⋅T ^ 2-δ_3⋅T $ inline $
$インライン$ =T⋅(H + L⋅δ_2+δ_1⋅R +δ_1δ_2⋅T-δ_3)$インライン$
したがって、定義
$インライン$ H_z = H + Lδδ_2+δ_1⋅R +δ_1δ_2⋅T-δ_3$インライン$ 私たちは得る
。 したがって、アリスが多項式を使用する場合
の代わりに
ボブは常に答えを受け入れます。
一方、これらの多項式は
を提供する
(ほとんどすべての
dおよび
sに当てはまります )、有効な割り当てセットに関する情報を含めないでください。 例えば
ゼロとは異なり、
ランダムです。 それから
ランダムな値なので、
についての情報は含まれません
このランダムな値によって「マスク」されているためです。
最後の部分で考慮すべきことは何ですか?
アリスがボブにKAPの有効な割り当てセットを持っていることを説得し、このセットに関する情報を公開することなくピノキオプロトコルスキームを大まかに示しました。 しかし、zk-SNARKを取得するために解決する必要がある2つの重要な問題があります。
- このスキームでは、ボブは多項式Hを必要とします。これは「乗算をサポートします」。 たとえば、彼は非表示を計算する必要があります から そして 。 ただし、これを可能にするHの例はまだ検討していません。 加算と線形結合をサポートするHのみを考慮しました。
- また、アリスとボブの間のインタラクティブプロトコルについても説明しました。 ただし、最終的な目標は、アリスが1つのメッセージで非インタラクティブな証拠を送信できるようにすることです。 これらのメッセージは公開されています。 これは、この「メッセージは証拠である」とわかる人は誰でも、ボブ(以前にアリスとやり取りした)だけでなく、その信頼性も確信できることを意味します。
これらの問題は両方とも、楕円曲線のペアを使用して解決できます。これについては、最終パートで説明します。
次の記事:
SNARKの説明。 楕円曲線のペアリング(翻訳)