ZKPを通じてWeb3製品を構築するには?
出典:《How to Leverage ZKPs as a Web3 Builder》
著者:Mohamed Fouda、Qiao Wang
編訳:深潮 TechFlow
ゼロ知識証明(ZKP)は、今後10年間の根本的な変革をもたらす技術として注目されています。ZKPはWeb3内外での応用があります。
Web3において、ZKPは2つの主要なボトルネック、すなわちスケーラビリティとプライバシーを解決しています:
スケーラビリティの面では、いくつかのZKロールアップ、別名バリディティロールアップが導入されており、イーサリアムを10-100倍拡張し、取引コストを削減することでユーザー体験を向上させています。
プライバシーの面では、ZKPはプライベートトランザクションやトランザクションミキシングの時代から、プライベートチェーン上の取引、アイデンティティ、検証済みの資格証明など、より複雑で有用な領域に拡張しています。
ZKPに関する情報は豊富であり、私たち自身のZKP空間の未来に対するビジョンや、その実現に必要なスタートアップについても触れています。しかし、ビルダーがZKPからどのように利益を得るか、またどこから始めるべきかについては、依然として教育のギャップがあります。
この記事は、重要なリソースを集めることでこのギャップを埋め、開発者がZKPが実際にどのように機能するか、またその応用においてZKPをどのように使用するかを理解する手助けをすることを目的としています。
ZKPは実際にどのように機能するのか?
ZKPは、証明者が特定の情報を知っていることを、情報を漏らすことなく検証者に証明する技術です。
実際には、少なくともWeb3において、ZKPの使用方法は通常異なります。ほとんどのアプリケーションは、ZKPを使用して専有データの所有権を表示することはありません。むしろ、ZKPは検証可能性を通じて信頼を高めるために使用されます。私たちは、ZKPが将来のエンティティ間の標準的な信頼モデルになると予測しています。その理由は、ZKPの2つの主要な構成要素、すなわち証明と検証が、信頼を求めるエンティティとそのユーザーとの間に独自の相互作用のスキームを持つように分離されているからです。
ZKPの主要な構成要素は、証明生成と証明検証です。
証明生成は、実行プロセスの証明を生成するために大量の計算を実行することを含み、この証明は証明者への信頼の必要性を排除するために使用されます。
逆に、誰でも証明の上で簡単なプロセスを実行して、証明者がプロセスを実行したことの完全性を検証できます。
この心理モデルにより、企業はプロセス(通常は複雑なプロセス)を実行し、顧客はそのプロセスの実行を信頼できるようになります。
例を挙げてみましょう:
あなたがOpenAIの有料プランに加入し、彼らの大規模言語モデル(LLMs)の1つ、例えばchatGPTを使用しているとします。あなたは、OpenAIが実際にあなたがリクエストした特定のモデルを実行していると信じなければなりません。もしOpenAIが少量のデータを送信し、実際にあなたがリクエストした特定のモデルを実行していることを証明できるとしたらどうでしょうか?さらに、もしすべての専有SaaS製品がその消費者にこのような保証を提供できるとしたら、何が起こるでしょうか?
この信頼の最小化はZKPの約束です。例えば、Web2では、ZKPはすべての顧客が同じアルゴリズムを使用することを保証することで、公平な信用評価や公平な保険請求処理を保証できます。ZK技術はまだそのレベルには達していませんが、ZKPプロセスを実行することは依然として比較的高価です。しかし、Modulus Labsのような企業がZKPを使用してAI推論を証明する技術を構築しているのを見ています。
ZKPの技術要件
技術的な観点から、高効率のZKPシステムは以下の目標を同時に達成する必要があります:
証明システムの計算複雑度と遅延を低下させること、つまり証明者が効率的に証明を生成し、最短時間で検証者に伝達できるようにすること。
小型の証明サイズを実現すること。
効率的な検証を実現し、検証コストを最小化すること。
これらの主要な目標に加えて、ユースケースに応じていくつかの副次的な目標が必要になる場合があります。例えば:
プライバシー重視のアプリケーションでデータのプライバシーを保護すること、つまり証明システムが生成された証明に漏れないプライベート入力を処理できること。
セキュリティ仮定を簡素化するために、可能な限り信頼設定を避けること。
検証コストをさらに削減するために証明の再帰を実現すること、つまり単一の検証が複数の証明を検証でき、異なる証明間でコストを分担できること。
これらの目標をすべて同時に達成することは挑戦的です。ユースケースに応じて、ZKPシステムはこれらの目標のいくつかを優先します。例えば、SNARK証明システムは簡潔な証明を生成できますが、証明の複雑度が増加します。一方、STRAKは効率的な証明者を持っていますが、証明サイズはSNARKの100倍になる可能性があります。zkの研究者たちは、技術の最前線を推進し、新しい証明メカニズムを発明することで、3つの指標を同時に向上させるために努力しています。
異なる証明システムの比較
ZKP関連製品を構築する開発者にとって考慮すべき重要な問題の1つは、どの基盤となる証明システムを選択するかです。いくつかのZKP証明実装があり、さらに多くが研究開発段階にあります。
ZKPバックエンドの選択は、技術的な側面だけでなく、目標製品にも依存します。ロールアップの証明システムの選択を例に挙げると、ロールアップの重要な特徴、例えば引き出し時間、取引コスト、さらには分散化の程度は、主にZKP証明アーキテクチャによって決まります。
ロールアップでは、証明はビジネス側、すなわちロールアップオペレーターを通じて行われます。既存のZKロールアップ(zkRUs)、例えばStarknetやZksyncは、現在集中型の証明者を使用しています。そのため、彼らは証明者の性能を向上させるために、専門の証明者、すなわち証明をサービスとして提供する会社に証明を委託できます。専門化と最適化されたソフトウェア/ハードウェアを活用することで、イーサリアム互換のzkEVMにおいて、証明時間は数分に短縮できます。例えば、Polygon zkEVMの証明時間は現在約2分です。数分の証明時間、すなわち引き出し遅延は、ロールアップにとっては許容範囲です。
一方で、一部のユースケースでは、証明がユーザー側で発生し、プライベートトランザクションを生成する必要があります。例えば、Tornado Cashの取引です。合理的なユーザー体験を確保するために、証明時間は数秒を超えてはなりません。さらに、ユーザーがウォレットを使用したり、リソースが制限されたデバイスでブラウザ内でこれらの計算を実行するため、迅速な証明者を持つ証明システムを選択することが非常に重要です。良い例として、Zcashは2018年のSaplingアップグレードで証明システムをGroth16に変更し、これがシールドトランザクションの速度向上の主要な要因となりました。
証明システムの比較
通常、異なる証明システムの性能を正確に比較することは難しいです。特に証明と検証の速度は、ライブラリの実装、選択された暗号曲線、使用されるハードウェアに依存します。
Minaチームはこの記事で良い高レベルの比較を提供しています。また、異なるZKシステムのためのベンチマークツールを作成する努力もいくつかあります。
この表はSNARK実装の良い比較を提供し、速度の面でGroth16からPlonk、さらにHaloへの進展を示しています。進展は見られるものの、STARKは依然として証明速度の面で優れていますが、その代償として証明サイズが大きくなります。この表は、証明システムの2つの重要な特徴、すなわち設定の無信任性と回路のプログラマビリティについても議論しています。
無信任性の設定部分では、回路作成の前処理段階について議論します。一部の証明技術は、複数の参加者による計算を通じて、前処理段階で秘密のランダム数を生成する必要があります。もし単一の参加者が誠実であれば、生成されたランダム数は確かに秘密であり、前処理部分は安全です。このプロセスは「信頼設定」と呼ばれ、少なくとも1人の前処理段階の参加者が誠実であることを信頼します。信頼設定が必要であることは弱点と見なされます。この意味で、STARKと新しいSNARKシステム(例えばHalo 2)は優位性を持っています。しかし、一部のプロジェクトは、信頼設定をコミュニティの参加を促すツールとして利用しています。例えば、AztecやMantaなどです。
プログラマビリティの部分では、証明システムが任意の計算を証明できるかどうかを議論します。SNARKは通常、任意の計算にプログラム可能です。しかし、証明の効率は実行される計算の種類に依存します。特定のタイプのSTARKシステムにとっては、異なるタイプの計算に適応することは容易ではありません。
あなたの製品にZKPを活用するには?
ZKP技術から利益を得ることができる製品を構築することは容易ではなく、正しい心理モデルを構築する必要があります。
このセクションでは、開発者がZKPを製品に統合するための最適な方法を選択するためのフレームワークを提供しようとしています。製品のニーズ、エコシステムの整合性、性能要件に応じて、開発者が選択できるいくつかのツールがあります。一部の開発者は既存のコードを再利用できる一方で、他の開発者は新しいドメイン固有言語(DSL)を学ぶ必要があります。
性能重視のzkアプリケーション
開発者は、ZKPを使用してアプリケーションの計算の大部分をオフチェーンに移行し、チェーン上で証明のみを公開することで、より高いスループット(TPS)や低コストを実現できます。この場合、選択できるフレームワークは複数あります。各フレームワークは、アプリケーションコードをコンパイルし、ZK回路を生成し、ZK証明者を実装し、ターゲットエコシステムの検証器コードを生成するためのツールセットを提供します。これらのフレームワークは、EVM中心と非EVM中心の2つの主要なカテゴリに分けることができます。
EVM中心のZKフレームワーク
このZKフレームワーク群は、イーサリアムと整合性を保ち、ロールアップの上に構築されています。取引とアプリケーションは、ロールアップのZK仮想マシン(zkVM)上で実行されます。証明は専門の証明者によって生成され、L1に公開され、スマートコントラクトによって検証されます。
このグループの最初のサブセットは、EVM互換のzkVMを実装しており、したがってzkEVMと呼ばれています。これらの目標は、イーサリアム開発者がSolidityやHardhat、Foundryなどの馴染みのあるツールを使用できるようにすることで摩擦を最小化することです。これらは、EVMに適した回路と証明者を作成することでZKの複雑さを抽象化します。Polygon zkEVMやScrollがこのカテゴリに含まれます。
このグループの2番目のサブセットは、EVMにネイティブに互換性のないzkVMです。互換性がないにもかかわらず、このグループは中間層を作成することで開発者がSolidityを使用できるようにし、摩擦を軽減します。Vitalikはこのタイプをtype-4 zkEVMと呼んでいます。zkSync EraやStarknetはこのグループの良い例です。Type-4 zkEVMを使用する利点は、EVM互換タイプよりも高いスループットと低コストを提供できることです。これにより、オンチェーンゲームや高性能金融製品(例えばオーダーブックDEX)など、高スループットのアプリケーションを構築するのに適しています。
Type-4 zkEVM向けのアプリケーションを構築するには、開発者の努力がより多く必要です。なぜなら、使用できるSolidityコードに制限があるからです。あるいは、開発者はCairoのような別の言語を学ぶことを決定し、これらのフレームワークに対してネイティブアプリケーションを開発することができます。
プライバシー重視のZKアプリケーション
ZKPを使用してプライバシー重視のアプリケーションを開発することは、通常、開発者にとってより挑戦的なタスクです。スケーラビリティ重視のソリューションと比較して、ZKPを使用してプライバシー重視のソリューションを開発する作業は少なく、学習曲線がより急になります。既存のプライバシーアプリケーションは主に支払いのプライバシーに焦点を当てており、あまり多くのプログラマビリティを許可していません。プライバシーとプログラマビリティを組み合わせることは挑戦的なタスクです。プライバシー重視のアプリケーションは、以下の2つの実装オプションのいずれかに従います:
1.汎用L1の上に構築する
L1上でプライバシー支払いアプリケーションを有効にするためには、ZKPロジックをスマートコントラクトとして構築する必要があります。このアプリケーションは、ZKPを使用してプライベートキャピタルプールを作成することがよくあります。ユーザーはこれらのプライベートプールをミキサーとして使用し、元のウォレットに関連付けられていない新しいウォレットに資金を提供します。有名な例としてはTornado Cashがあります。これらのアプリケーションでは、証明はユーザーによって実行され、検証はチェーン上で行われます。したがって、迅速な証明、簡単な検証計算、ユーザー情報を漏らさないZKPシステムを使用することが重要です。
汎用チェーンは高価な暗号計算に最適化されていないため、検証コストは通常、主流のユーザーにとって高価であり、これらのアプリケーションの採用を制限しています。プライベートトランザクションアプリケーションをロールアップに移動してガス費用を削減するという直感的な解決策は、課題をもたらす可能性があります。この場合、プライベートトランザクションの証明はロールアップ証明に含める必要があり、すなわち証明の再帰が必要ですが、現在のEthereum上の汎用zkロールアップでは証明の再帰を実現できません。
2.プライバシー重視の新しいL1/L2を構築する
プライベートトランザクションやアプリケーションのコストを削減するために、開発者はプライバシーを中心にした新しいL1(例えばManta NetworkやPenumbra)または専用のロールアップ(例えばAztec)を構築する必要があります。ほとんどのプライバシー重視のチェーンは依然として汎用計算をサポートしておらず、専門的な用途に焦点を当てています。例えば、PenumbraやRenegadeはプライベートトランザクションに特化しています。Aleoは、高級言語で書かれたプログラムをコンパイルして対応するZK回路を生成するために専用言語Leoを作成することで、プライベートアプリケーション用のフレームワークを構築しています。アプリケーションの相互作用はオフチェーンで行われ、証明のみがプライベートトランザクションとしてチェーン上に公開されます。Aztecも同様の方向に進んでいますが、Ethereum L2としてです。彼らは最近、Noirをデフォルトのスマートコントラクト言語として使用する広義のプライベートロールアップの作成に焦点を当てることを発表しました。
ZK加速
開発者がアプリケーションに適した正しいZK開発フレームワークを選択し、基盤となる証明システムを選択した後、次のステップはアプリケーションの性能を最適化し、ユーザー体験を改善する方法を探すことです。これは通常、証明者の性能と遅延を向上させることに帰着します。前述のように、ロールアップにおいて証明時間を短縮することは、L1への証明提出の遅延を短くし、したがって引き出し遅延も短くなることを意味します。ユーザー生成の証明、すなわちプライバシーアプリケーションにおいては、より迅速な証明は取引生成時間を短縮し、より良いユーザー体験を提供します。
前回の記事で議論したように、証明プロセスを加速するには通常、ソフトウェアの最適化と専用ハードウェアが必要です。過去数ヶ月間、専用ハードウェアの競争が激化し、多くの企業がこの競争に参入しています。このセクションでは、ZK加速の現状と、開発者がこの競争からどのように利益を得ることができるかについて議論します。
証明即サービス
これまでのところ、ZK証明作業を実行する標準モデルは、マルチコアCPUおよび/またはGPUを備えた強力なサーバーを使用し、最適化されたオープンソースライブラリ(例えばFilecoinのBellperson)を利用して証明性能を向上させることです。このモデルは、開発者が証明インフラを維持する必要がある運用の複雑さを増加させます。この複雑さを解決し、より良い専門化を可能にするモデルが証明即サービスモデルです。このモデルでは、特定のZK回路または特定のユースケースのために証明を生成する必要があるエンティティが、専用ソフトウェアを実行して証明計算を行うプロバイダーに接続されます。いくつかの企業は、特定のユースケースのために証明を専門に生成できます。例えば、Axiomは、Ethereum上でHalo 2証明の歴史データを生成するためのシステムを構築しました。他の参加者は、PlonkやHalo 2などの特定のZKPバックエンドに焦点を当て、より迅速で効率的な証明計算を実現するための専用の最適化を構築しています。=nil Foundationは、この概念をさらに推進し、ZKP計算市場を構築しています。このProof Marketでは、証明の買い手が生成するZKPの入札を提出し、証明生成者がマッチングと履行を行います。MinaにもSnarketplaceという類似の概念がありますが、これはMinaネットワークに必要なSNARK証明に限られています。
ハードウェア加速
効率的にzk証明を生成する必要があるいくつかのL1やロールアップが登場する中で、これらの証明を生成し、相応の報酬を得る競争はますます激化するでしょう。これらのチェーンやL2が大量のユーザーを引き付けることに成功すれば、証明生成はビットコインのマイニング競争に似た軍拡競争に発展する可能性があります。ZKP加速方法には、GPU、FPGA、ASICなどの異なる選択肢があります。Amber Groupのこの記事は、これらの異なる選択肢と、それぞれの実装オプションが直面する課題について良い議論を提供しています。しかし、長期的には、証明生成のために最も効果的なASICを生産する企業が、zkを重視したチェーン上で顕著な経済的優位性を持つことになるでしょう。
ZK証明競争とビットコインマイニングの間には、強調すべき重要な違いがあります。ビットコインでは、マイニングプロセスは単純な計算、すなわちSHA256ハッシュに基づいています。この計算は固定されており、変更が難しいため、チップ設計の革新と最先端の半導体ノードへのアクセスの機会に重点が置かれています。ZKPの分野では、異なる証明プロトコル間に顕著な分裂があります。同じ証明バックエンド(例えばPlonk)を使用しても、ターゲット回路のサイズがASICの性能の違いを引き起こす可能性があります。このビットコインマイニングとZKP生成の違いは、異なるZKバックエンドに特化した複数の勝者を生む可能性があります。
ZK特定のチップ分野には複数の参加者が参入しています。各参加者は、証明生成の2つの主要な操作のいずれかを改善することに焦点を当てています:多スカラー乗法(MSMs)と数論変換(NTT)。最近、ETH Denverの期間中に600万ドルのシードラウンド資金調達を発表したCysicが、秘密の状態から抜け出しました。CysicはFPGAを使用してMSMsを加速することに焦点を当てています。FPGAの柔軟性により、異なるZKシステムをサポートできます。このアプローチは、1月に1500万ドルのシードラウンド資金調達を発表したUlventannaに似ています。ZKチップ開発スペースの他の参加者には、MSMとNTT計算をGPU上で加速するためのIcicleというライブラリを発表したIngonyama、Accseal、Snarkify、Supranationalなどがあります。このリストに加えて、Web3スペースには他の多くの著名な参加者や研究努力があります。後者の例としては、Jump CryptoのCycloneMSM実装があり、FPGAを使用してMSM計算を加速し、Jane StreetのFPGA実装がMSMとNTTを加速します。
ZKP加速の重要性が高まる中で、異なる実装の競争を公平に評価する必要性(例えばZPrize)は、この分野を前進させる重要な場となっています。2022年のコンペティションの賞金は400万ドルを超えました。
有用な教育リソース
このセクションでは、開発者がZKP空間を理解するのに役立ついくつかの教育リソースをまとめました。これは決して包括的なリストではなく、このテーマに関しては多くの優れたコンテンツがあります。ここやここで、すべてのzkリソースを含む包括的なリストを見つけることができます。これは、開発者がこの分野を理解するための友好的な方法を構築することを目的としています。
ZKPの基本とその機能を理解したい人にとって、最初にチェックすべきリソースの1つはZK HackのZKホワイトボードセッションです。特にDan Bonehの3つの入門セッションは、ある程度の数学的理解を持つ人にとっては高レベルです。シリーズの残りの部分は、この分野の特定のテーマに関するものです。
ZKツールを直接使用したい開発者にとって、この優れた初心者ガイドは非常に実用的です。その後、Poseidon Labsは、CircomとHardhatを使用してZKアプリケーションを構築するためのZKワークショップを作成しました。他のZK言語やフレームワークに関するワークショップには、Noirを使用したこのワークショップや、Risc Zeroを使用したこのワークショップが含まれます。
結論
ZKPの可能性を信じる者として、Allianceはより多くのビルダーがこの分野に参入し、資金と指導のサポートを提供する努力をしています。Web3において、ZKPは主流の採用を妨げるスケーラビリティとプライバシーの痛点を解決しています。Web2において、ZKPはSaaS、保険、信用評価を含む広範なビジネス範囲に信頼の最小化の精神をもたらすことができます。この記事は、ビルダーがZKPを製品に統合する手助けをすることを目的としています。この記事は、ビルダーがZKP統合のさまざまな計画段階を通じて、実装オプションやデプロイ後の性能改善をカバーすることを導いています。