出典: Vaish Puri @TheTieLabs
「私が知っていることはただ一つ、それは私が何も知らないということだ」 - ソクラテス
最近、L2 スケーリング ソリューションに関して明らかな熱意が高まっていますが、それは当然のことです。 Optimismのガバナンストークンのリリース、 ETHメインネットでのガス料金の引き下げの必要性、そして連続ハッカソンで次々と新しいアイデアが生まれていることから、2022年にはL2が本格化すると言って間違いないでしょう。
今日の投稿では、これまでに作成された暗号化ツールの中で最も強力であるものの、誤解されがちなツールの 1 つであるゼロ知識証明について詳しく解説します。さらに、ユースケースと将来の実装に関する推奨事項に焦点を当て、ゼロ知識証明が暗号通貨の将来の鍵となる理由を示します。
ゼロ知識証明が重要な理由
簡単に言えば、ゼロ知識証明は、証明者が実際に情報を明らかにすることなく、何かが真実であると検証者に納得させる方法です。これを例えで説明してみましょう。アリスとボブという 2 人の人がいると仮定します。アリスは 52 枚のトランプの封印されたデッキを持っています。アリスはこっそりレッドカードを出し、自分がレッドカードを持っていることをボブに証明しようとしましたが、実際には見せませんでした。これを行うには、アリスは山からすべての黒いカードを分離し、ボブに見せる必要があります。ボブは 26 枚の黒いカードをすべて数え、その存在を確認し、アリスが所有するカードは赤でなければならないと判断します。したがって、アリスはボブにレッドカードを実際に見せることなく、自分がレッドカードを持っていることを証明することができます。この比喩は非常に単純化されており、全体像を描いているわけではありませんが、テクノロジーの背後にある中心的な考え方は同じです。
ゼロ知識証明は、ここ 10 年、さらには数千年にわたって新しいものではありません。実際、このアイデアは 1980 年代に抽象数学の研究者によって最初に提案されました。解決策は、証明者と検証者の間の理論システム、つまり対話型証明に関連する当時の問題を解決することでした。
しかし、検証者が悪意のあるものであることが判明した場合はどうなるでしょうか?プルーバーは声明の真実性を検証する以外に、どの程度の追加情報を明らかにしましたか?パスワードのハッシュがどのように集中サーバーに保存されるかを見てみましょう。従来、サーバーと通信する場合、サーバーはパスワードを平文で取得します。これは「身元証明」を行うには不適切な方法であるため、研究者らは無関係な情報を明らかにすることなく主張を証明できるシステムに目を向けました。
より具体的には、2 つの入力 C(x,y) を持つ関数 C があるとします。 x を公開入力、y を秘密証人、関数の出力を true または false とします。特定の公開入力 x が与えられた場合、証明者は、C(x,y) == true となる秘密証人 y を知っていることを証明しなければなりません。証明者の観点から見ると、知識をゼロにするにはランダム性が必要です。検証者側では、証明者へのクエリを生成するためにランダム性が必要です。最初に広く実証されたアプリケーションは NP で、グラフの 3 色問題と呼ばれる複雑なクラスを完成させました。このアプリケーションは NP クラスのあらゆる問題に適用できるため、これは大きな進歩でした。これは複数の目的に役立ちます。
ブロックチェーン空間では、スケーラビリティとプライバシー モデルでの有用性を提供する能力により、ゼロ知識証明の実装が数多く行われています。具体的には、検証者が実行する計算作業は、ゼロ知識証明システムがない場合に比べて飛躍的に少なくなります。一方、証明者は証明を実行するためにかなりの計算オーバーヘッドを必要とします。これについては後ほど詳しく説明します。
ZKプロトコル
現在、多数の zk プロトコルが存在しますが、この投稿では SNARK と STARK に焦点を当て、他のプロトコルについては後の投稿で詳しく説明します。
SNARK (Succinct Non-Interactive Argument of Knowledge) は、2011 年に初めて導入されたゼロ知識証明を組み込んだ一般的な証明メカニズムです。内部では、zk-SNARK はセキュリティのために楕円曲線を使用し、信頼できる設定に依存しています。最初に、トランザクションに必要な証明を作成し、その証明を検証するためにキーが作成されます。これらのキーには、認証キーとプライベート メッセージを送信するためのキーをリンクする参照文字列が含まれています。これを行うには、キーを作成するメソッドを削除する必要があり、キーの作成者が信頼されている必要があります (そのため、信頼されたセットアップという名前が付けられています)。この作成段階での信頼への依存は、依然として zk-SNARK に対する大きな批判となっています。また、参照文字列はアップグレードできません。つまり、プログラムを更新する必要がある場合は、信頼できるセットアップ フェーズを再実行する必要があります。
ただし、実際には、zk-SNARK を単独で実装するのは困難です。計算には調査すべきステップが多数ありますが、各ステップの作業に費やされた時間を個別に調査することは現実的ではありません。解は多項式の形で得られます。計算を多項式としてコーディングすると、多くの情報と時間を節約できます。数値の間に方程式を無限に持つ代わりに、それらを「置換」する多項式に置き換えることができます。
しかし、待ってください、まだあります!通常、多項式を使用して各係数をチェックすることで方程式を検証しますが、これも時間がかかりすぎます。ここでは多項式のコミットメントが関係します。多項式コミットメントは、多項式を「ハッシュ」する独自の方法と考えることができます。これにより、多項式がどれほど大きくても、より短い時間で検証が可能になります。さらに、証明が多項式自体よりもはるかに小さいため、多項式コミットメントは本質的にプライバシーを保護します。ランダム性を追加することはできますが、多項式の約束では多項式に関する少量の情報は明らかにされません。
多項式コミットメントでは、Bulletproof、KZG、FRI (Fast Reed-Solomon Interactive Oracle Proof of Proximity) という 3 つの主要なプロトコルのいずれかを使用します。それぞれを独自に詳細に検討する価値があるため、それらの比較と対照についてはこの記事の範囲を超えています。
2018年、研究者のグループはzkシステムに透明性を加えようと試みました。透明性とは、初期設定を信頼できる関係者に依存する必要がないことを意味し、バックドアが開かれる脅威を排除します。これは、スケーラブルで透明な知識の議論、つまり STARK の作成につながります。 STARK は、セキュリティのソースとしてハッシュ関数を使用します。これは、SNARK で使用されるバイリニア実装とは異なります。スケーラビリティの側面とは、次の 2 つのことを指します。
1. SNARK と比較すると、証明者の実行時間は複雑さが大幅に短くなります。
2. 検証時間のサイズは多対数です。 STARK は FRI を使用して、情報ストレージ容量とパフォーマンスを向上させます。
現在のアプリケーション
Zcash のような zk-SNARK の先駆者はしばらく存在していましたが、zk-STARK の作成は爆発的に増加しました。 zk プロトコルでの作業はロールアップに限定されません。実際、一部の L1 は、新進気鋭のゲーム プロジェクトと同様に、zk 証明の上にすでに構築されています。
StarkWare は zk-STARK の先駆者であり、許可のない分散型 zk ロールアップである StarkNet と独立した zk ロールアップ SaaS である StarkEx の 2 つのコア製品を開発しています。さらに、StarkWare は、Cairo と呼ばれる実稼働グレードの zk 仮想マシン (zkVM) を開発しました。カイロはチューリング完全フォン・ノイマン構造を実装していると主張しています。各プログラムは、処理するデータとともに VM のメモリに常駐します。現在、誰でも Cairo にアクセスでき、現在 dydx、Immutable、DeversiFi などの著名な StarkEx クライアントによって使用されています。独自のバージョンの zkVM を使用する他の新しいアプリケーションには、 Polygon Miden や、一般的な zkVM を構築しようとしている RiscZero などがあります。
zkVM イデオロギーの反対は zkEVM です。 zkVM は、zk に最適化された、または単に Solidity ツールと互換性に適合した新しいブロックチェーン VM としてゼロから開始されます。一方、zkEVM は EVM オペコードの完全なセットを実装します。 EVM オペコードを使用すると、次のような利点があります。
当然のことながら、zkVM 陣営と zkEVM 陣営の間には大きな隔たりがあるようです。
zkVM に対する zkEVM の最大の利点は、EVM と同等であることです。低ガス料金のインセンティブと開発者にとって簡単な開発エクスペリエンスを備えた大規模な既存の dApp コミュニティをターゲットにすることは実りがあることが証明されており、zkEVM ビルダーはそれを期待しています。
現在最も人気のある zkEVM プロジェクトは zkSync で、検証とスケーリングのためのレイヤー 2 ソリューションとして zk-SNARK を使用します。さらに、zkSync は、データの可用性をオフチェーンに維持し、zkSync トークンのステーカーが Proof of Stake (zkPorter) を使用して保護することを選択しました (エアドロップが差し迫っている可能性があることを意味します)。この実装の設計は、StarkWare によって開発された Volition と呼ばれるソリューションに基づいています。
最後に、かなり新しいプレーヤーである Scroll は、汎用 L2 zkEVM を開発しています。 Scroll は、GPU パワーを使用してオフチェーンで zk プルーフを生成する新しいアプローチを採用しています。ポセイドン ハッシュ、Plookup、PLONK などの zk 証明における最近の画期的な進歩により、zkEVM を現実にするのに十分なコストが削減されました。さらに、GPU と ASIC/FPGA アクセラレータの進歩により、ハードウェアの状態が改善され、コストがさらに削減されています。 Scroll はまだ開発中であり、今後数か月以内に zkEVM テストネットを開始する予定です。
今後の応用
Zk Proof はもともとプライバシーを維持するために開発されました。一般的なメディアは現在のユースケースを「より優れた TPS 許可」に焦点を当てているかもしれませんが、zk Proof にはより広い範囲のアプリケーションがあるという事実に変わりはありません。
このようなアプリケーションの 1 つは、zk-ID ツールです。これは、ウォレット内の資産や zk 回線を介したオンチェーン トランザクションを匿名でチェックすることでユーザーの身元を確認します。
Zk ID には、非常に強力な可能性があり、すぐに現実世界で使用できるケースがあります。たとえば、私が債務者であり、銀行情報と取引内容を非公開にしながら、自分の信用力を証明しようとしているとします。私は信頼できるさまざまな銀行から多額の融資を返済したことを証明しますが、銀行や融資の詳細については開示しません。
将来の zk-identity をサポートする 4 つの主要コンポーネント
zk スペースにおけるもう 1 つの主要な発展は、zk-SNARK 証明者の効率的な民間委任です。前述したように、証明時間はかなり遅いです。 SHA2 を使用して 10kb をハッシュするには、必要なミリ秒ではなく、140 秒かかります。この問題の解決策は、校正をアウトソーシングすることです。残念ながら、これは別のジレンマを引き起こします。秘密は常に暴露されるということです。必要なもの: プライバシーを外部委託していることの証明。慎重に実装すると、ローカル計算よりも最大 26 倍速く証明を携帯電話などのデバイスに委任できます。この斬新なフレームワークは、2022 年 4 月の zkSummit で Pratyush Mishra によって初めて発表されました。
エピローグ
私たちはアプリケーションベースの zk 証明の開発の非常に初期段階にいます。それでも進歩のペースは速い。キャンプが形成され、意見が政治化されているため、コミュニティ間には依然として多くの紛争が存在します。どちらの側が正しいかは時間が経てばわかります。確かに、歴史家が振り返るとき、この ZK 実装の時期は、仮想通貨の素晴らしい歴史の独創的な部分であると見なされるでしょう。