zk-SNARKとは?
zk-SNARKは、ある当事者が、主張の背景にある非公開情報を明かさずに、その主張が真であることを証明できる暗号学的証明システムです。zk-SNARKは、Zero-Knowledge Succinct Non-Interactive Argument of Knowledgeの略です。暗号資産では、zk-SNARKはプライベートトランザクション、ブロックチェーンのスケーリング、検証可能な計算、IDシステム、証明ベースのアプリケーションを支えるために使われます。zk-SNARKは、トランザクションの詳細をすべて公開せずに、トランザクションがプロトコルのルールに従っていることを証明できます。多くのブロックチェーンはデフォルトで透明性を持つため、ウォレット活動、残高、トランザクションパターンはブロックチェーンエクスプローラーを使う誰にでも見える可能性があります。そのため、これは重要です。Ethereum公式のゼロ知識証明の解説では、zk-SNARKは情報自体を公開せずに情報を検証できる証明システムと説明されています。
Zcashも、zk-SNARKのガイドで、この技術により、ある情報を保有していることをその情報を公開せずに証明できると説明しています。
暗号資産ユーザーにとって簡単に言えば、zk-SNARKは、不要なデータを公開することなく、ブロックチェーンが真実性を確認するのに役立ちます。zk-SNARKが暗号資産で重要な理由
zk-SNARKが重要なのは、暗号資産ネットワークにはプライバシー、スケーラビリティ、信頼最小化された検証が必要だからです。パブリックブロックチェーンが有用なのは、誰でもルールが守られていることを検証できるためです。しかし、完全な透明性は、ユーザー、企業、トレーダー、寄付者、給与システム、分散型アプリケーションにプライバシー上の問題をもたらす可能性があります。すべてのウォレット残高とトランザクション経路が永久に可視であれば、不正行為をしていないユーザーであっても金融プライバシーを失う可能性があります。zk-SNARKは、すべての機密詳細を明かさずにネットワークが正しさを検証できるようにすることで、この問題の一部を解決します。また、ブロックチェーンが大量の計算を再実行する代わりにコンパクトな証明を検証できるため、スケーリングにも有用です。Ethereumのゼロ知識ロールアップに関するドキュメントでは、有効性証明はEthereumが各トランザクションを再実行せずに、オフチェーン状態遷移の正しさを確認すると説明されています。
このため、zk-SNARKはLayer 2ネットワーク、分散型金融、決済、ゲーム、トークン化資産、その他の高取引量の暗号資産アプリケーションにとって重要です。つまり、zk-SNARKは強力な検証を維持しつつ、暗号資産システムをよりプライベートかつ効率的にします。zk-SNARKの名称の内訳
「zk」はゼロ知識を意味します。ゼロ知識とは、何かが真であることを、その証明に使用した秘密データを明かさずに示せることです。「S」はSuccinct(簡潔)を意味します。簡潔とは、証明対象の完全な計算と比べて、証明が小さく素早く検証できることです。「N」はNon-Interactive(非対話型)を意味します。非対話型とは、証明者が作成した証明を、検証者が長い往復のやり取りなしに確認できることを意味します。「ARK」はArgument of Knowledge(知識の議論)を意味します。Argumentは、計算上の前提のもとで証明が安全であることを意味します。Knowledgeは、証明者が主張を真にする隠された情報、しばしばwitnessと呼ばれる情報を知っていなければならないことを意味します。これらを組み合わせると、zk-SNARKは、非公開情報を明かさずに素早く確認できるコンパクトな証明となります。この組み合わせにより、検証コスト、公開データへの露出、ユーザーのプライバシーがいずれも重要となるブロックチェーンシステムで、zk-SNARKは強力な技術となります。zk-SNARKの仕組み
zk-SNARKには通常、証明者、検証者、公開ステートメント、非公開witnessが関わります。証明者は証明を作成する当事者です。検証者は証明を確認する当事者です。公開ステートメントは、誰もが見ることを許可される主張です。非公開witnessは、その主張が真であることを証明する隠された情報です。例えばユーザーは、送信者、受信者、金額を公開せずに、プライベートトランザクションが有効であることを証明したい場合があります。zk-SNARKにより、ユーザーは選択した詳細を公開せずに、そのトランザクションがプロトコルのルールに従うことを証明できます。多くのシステムでは、計算をまず回路または数学的制約システムとして表現する必要があります。回路は、証明が満たすべきルールを定義します。非公開witnessが回路を満たす場合、証明者は有効な証明を作成できます。検証者はその後、検証キーまたは検証者アルゴリズムを使用して証明を確認します。証明が有効であれば、検証者は主張を真として受け入れます。証明が無効であれば、検証者は拒否します。このプロセスにより、ブロックチェーンはユーザーの非公開データのすべてを知ることなくルールを適用できます。zk-SNARKの簡潔性とは?
簡潔性は、zk-SNARKの主な利点の1つです。簡潔な証明は、効率的に保存、送信、検証できるほど小さい証明です。ブロックチェーンでは、データの1バイトごと、検証の各ステップごとにコストが発生する可能性があるため、これは重要です。証明が非常に大きい、または検証に時間がかかる場合、オンチェーンでの利用には高コストすぎる可能性があります。zk-SNARKは、元の計算よりはるかに低コストで検証できるコンパクトな証明を生成できることが多いため価値があります。これが、スケーリングシステムで利用される理由です。Layer 2システムは、多数のトランザクションをオフチェーンで処理し、証明を生成してベースブロックチェーンに提出できます。ベースブロックチェーンは、各トランザクションを個別に処理する代わりに、証明だけを検証すれば済みます。これにより混雑を軽減し、ユーザーにとってトランザクションをより手頃にできる可能性があります。コンパクトな証明は、プライベートなトランザクション詳細を開示せずにルール遵守を証明できるため、プライバシーシステムにも役立ちます。zk-SNARKの非対話性とは?
非対話性とは、証明者が1つの証明を作成し、検証者が後からそれを確認できることです。スマートコントラクトはすべてのユーザーと長い非公開の会話を続けられないため、これはブロックチェーンにとって重要です。ブロックチェーンには、データとして提出され、自動的に検証できる証明が必要です。以前の対話型証明システムでは、証明者と検証者が複数回の通信を必要とする場合があります。ブロックチェーントランザクションは最終的なものであり、公開され、ノードが容易に検証できるべきであるため、その設計は多くの暗号資産アプリケーションに実用的ではありません。非対話型証明は、スマートコントラクトと分散型ネットワークにより適しています。証明者はオフチェーンで証明を作成します。証明はブロックチェーンまたは別の検証者に提出されます。検証者は1回の検証プロセスで確認します。この構造により、zk-SNARKはプライベート決済、ロールアップ、ブリッジ、ID証明、オンチェーン検証システムに有用です。zk-SNARKとプライバシー
zk-SNARKは、機密情報を隠しながらトランザクションが有効であることを証明できるため、プライバシーと関連付けられることが多いです。プライバシー重視の暗号資産決済では、zk-SNARKにより、送信者が十分な資金を保有していること、資金が二重支払いされていないこと、トランザクションがルールに従うことを証明できる場合があります。パブリックブロックチェーンは、すべてのトランザクション詳細を公開せずにトランザクションを受け入れられます。Zcashのドキュメントは、Zcash基本ガイドで、Zcashがシールドアドレスとzk-SNARKを使用し、プライバシーを保持するトランザクションをサポートしていると説明しています。
これは、すべてのzk-SNARKアプリケーションがデフォルトでプライベートであることを意味しません。一部のシステムは、プライバシーではなく主にスケーラビリティのためにzk-SNARKを使用しています。そのようなシステムではトランザクションデータは公開されたままでも、証明により正しさをより効率的に検証できます。ユーザーは常に、何の情報が隠され、何の情報が公開され、どのメタデータが依然として見える可能性があるかを確認すべきです。zk-SNARKはプライバシーツールですが、プライバシーはツールの実装方法に依存します。zk-SNARKとブロックチェーンのスケーリング
zk-SNARKはブロックチェーンのスケーリングにとっても重要です。スケーリングとは、ネットワークを過度に高コストまたは検証困難にすることなく、より多くのユーザーとトランザクションをブロックチェーンがサポートできるようにすることです。zkRollupでは、多数のトランザクションがオフチェーンで処理され、その後、有効性証明で証明されます。ベースチェーンは証明を確認し、証明が有効であれば更新後の状態を受け入れます。ベースチェーンは各トランザクションを再実行する必要がないため、この手法はブロックスペースを節約できます。Ethereumのzk-rollupガイドでは、これらのシステムは計算と状態保存をオフチェーンに移し、証明と選択されたデータをベースレイヤーに投稿すると説明されています。
zk-SNARKは、この種のスケーリング設計で使用可能な証明システムの1つです。手数料削減、スループット向上、分散型アプリケーションの使いやすさ向上に役立つ可能性があります。これは、ゲーム、決済、スワップ、レンディング、オンチェーンソーシャルツールなど、頻繁なトランザクションを必要とするアプリケーションで特に有用です。ブロックチェーンの採用が拡大するにつれ、ユーザーはセキュリティを犠牲にせず高速なアプリケーションを求めるため、zk-SNARKはさらに重要になる可能性があります。zk-SNARKと信頼できるセットアップ
信頼できるセットアップは、一部のzk-SNARKシステムに関連して最も議論されるリスクの1つです。信頼できるセットアップとは、証明の生成と検証に用いる暗号学的パラメーターを作成するプロセスです。セットアップの秘密資料が正しく破棄されなければ、一部のシステムでは攻撃者が偽の証明を作成できる可能性があります。この秘密資料は「toxic waste」と呼ばれることがあります。旧来のzk-SNARK設計には信頼できるセットアップが必要なものが多く、ユーザーに追加の信頼前提をもたらしていました。一部のシステムでは、多数の参加者がランダム性を提供するマルチパーティセレモニーによってこのリスクを軽減しています。少なくとも1人の誠実な参加者が自身の秘密の寄与を破棄すれば、セットアップの安全性が維持されるという考え方です。より新しい証明システムでも、信頼できるセットアップの要件を軽減または排除する取り組みが進められています。Electric Coin Companyは、Halo 2が信頼できるセットアップの必要性を排除する高性能zk-SNARK実装として設計されたと説明しています。
ZcashのNU5アップグレードページでも、このアップグレードによりZcashがHalo証明システムへ移行し、信頼できるセットアップの必要性を排除したと述べられています。
これは、zk-SNARK技術が進化を続けていることを示すため重要です。ユーザーは、すべてのzk-SNARKが同じセットアップモデルを持つと想定すべきではありません。正確なセキュリティ前提は、証明システム、実装、プロトコル設計に依存します。zk-SNARKとzk-STARKの比較
zk-SNARKとzk-STARKはいずれもゼロ知識証明システムですが、異なるトレードオフがあります。zk-SNARKは通常、小さな証明サイズと効率的な検証で知られています。zk-STARKは通常、透明性、大規模な計算に対するスケーラビリティ、信頼できるセットアップの回避で知られています。Ethereumのゼロ知識証明ドキュメントでは、zk-STARKは一般にzk-SNARKより大きな証明を生成するため、検証オーバーヘッドが高くなる可能性があるとされています。
これは、証明サイズとオンチェーン検証コストが非常に重要な場合に、zk-SNARKが魅力的となり得ることを意味します。ただし、多くのzk-SNARKシステムは、ハッシュベースのシステムよりも強力な量子コンピューターに対して将来の耐性が低い可能性がある暗号学的前提に依存しています。zk-STARKは通常、衝突耐性ハッシュ関数に依存するため、より量子耐性が高いと説明されることが多いです。これは、どちらか一方のシステムが常に優れていることを意味しません。開発者は、コンパクトな証明と成熟したツールのためにzk-SNARKを選ぶ場合があります。透明なセットアップと異なる長期的セキュリティ前提のためにzk-STARKを選ぶ場合があります。最適な証明システムは、アプリケーションの要件、コスト制限、セキュリティモデル、ユーザー体験の目標によって異なります。プライベートトランザクションにおけるzk-SNARK
プライベートトランザクションは、zk-SNARKの最も有名なユースケースの1つです。パブリックブロックチェーンは、コインが無から作られていないことや、ユーザーが二重支払いを行っていないことを検証できます。同時に、zk-SNARKは選択されたトランザクションの詳細を公開ビューから隠すことができます。これにより、検証と機密性のバランスが生まれます。例えば、シールドトランザクションは、送信者が特定の資金を使う権利を持つことを、どの資金を使っているか正確に公開せずに証明できます。プロトコル設計によっては、受信者と金額も隠せます。これは、金融監視、標的型攻撃、ビジネスインテリジェンスの漏洩、望まない公開露出からユーザーを保護するのに役立つ場合があります。プライバシーは、システムにルールがないことを意味しません。適切に設計されたzk-SNARKシステムは、不必要な開示を減らしながらルールを適用できます。このため、多くのプライバシー擁護者は、ゼロ知識証明を通常の金融活動で暗号資産をより有用にする実用的な方法と考えています。分散型IDにおけるzk-SNARK
zk-SNARKは分散型IDも支えられます。IDシステムでは、ユーザーはすべての個人情報を明かさずに、自身に関する何かを証明する必要があることがよくあります。例えば、ユーザーは完全な身元を明かさずに、一定の年齢を超えていること、特定のグループに属すること、または要件を満たすことを証明する必要がある場合があります。zk-SNARKは、余分なデータを非公開にしたまま、必要な事実を証明できます。これにより、アプリケーションが必要以上の個人情報を収集する必要がなくなり、データ漏洩を減らすのに役立つ可能性があります。暗号資産では、プライバシーを保持するアクセス制御、コンプライアンス確認、投票システム、評判ツール、エアドロップの参加資格システムを支えられます。また、すべてのオンチェーン操作を同じ公開IDに関連付けることをユーザーが避けるのにも役立つ場合があります。重要な考え方は、選択的開示です。ユーザーは、すべてを明かさずに必要なことを証明できます。準備金証明と監査におけるzk-SNARK
zk-SNARKは、準備金証明および監査システムで使用できます。企業またはプロトコルは、すべてのウォレット、顧客残高、内部記録を明かさずに、財務条件を満たしていることを証明したい場合があります。ゼロ知識証明は、機密の詳細を非公開にしながら、選択した事実を証明するのに役立ちます。例えば、すべてのユーザーアカウントを公開せずに、総資産が総負債を上回っていることをシステムが証明できる場合があります。このアプローチは、プライバシーリスクを減らしながら透明性を高める可能性があります。ただし、ゼロ知識証明だけではすべての監査問題を解決できません。証明は正しいデータに基づく必要があります。負債は完全でなければなりません。資産は、その主張を行う主体が管理していなければなりません。証明回路は、行われる主張と一致していなければなりません。これは、zk-SNARKベースの監査にも、強力なデータ管理、明確な手法、独立したレビューが必要であることを意味します。証明の信頼性は、それが証明する主張の信頼性に左右されます。zk-SNARKのメリット
zk-SNARKの1つ目の大きなメリットはプライバシーです。すべての非公開情報を明かさずに、トランザクションまたは主張が有効であることを証明できます。2つ目のメリットは、小さな証明サイズです。より小さな証明は、オンチェーンのストレージおよび検証コストを抑える可能性があります。3つ目のメリットは、高速な検証です。検証者は、完全な計算を繰り返すよりもはるかに速く証明を確認できます。4つ目のメリットはスケーラビリティです。zk-SNARKは、Layer 2システムが多数のトランザクションをバッチ化し、効率的に証明するのに役立ちます。5つ目のメリットは、柔軟なアプリケーション設計です。決済、ID、ゲーム、金融、ガバナンス、ブリッジ、プライベート計算を支えられます。6つ目のメリットは、ユーザーによるデータ管理の向上です。ユーザーはアプリケーションに機密情報への完全なアクセスを与える代わりに、必要な事項だけを証明できます。zk-SNARKの制限
1つ目の制限は複雑さです。zk-SNARKは、設計、実装、監査、説明が難しい技術です。2つ目の制限は、一部の証明システムにおける信頼できるセットアップのリスクです。セットアップが必要で不適切に扱われた場合、システムは重大なセキュリティ問題に直面する可能性があります。3つ目の制限は回路リスクです。回路が誤っていれば、証明は誤ったルールを正しく証明する可能性があります。4つ目の制限は実装リスクです。証明者ソフトウェア、検証者コントラクト、ウォレット、ブリッジ、暗号ライブラリのバグは、実際の損失につながる可能性があります。5つ目の制限は証明生成コストです。証明の生成には、大きな計算能力、メモリ、専門的なエンジニアリングが必要になる場合があります。6つ目の制限はユーザーの誤解です。多くのユーザーは「zk」が常に完全なプライバシーを意味すると考えますが、一部のzkシステムは主にスケーリングのために証明を使用しています。7つ目の制限はメタデータ漏洩です。証明が中核データを隠しても、ウォレット行動、タイミング、ネットワーク情報、入金、出金、アプリケーションパターンが依然として手がかりを明らかにする可能性があります。zk-SNARKシステムについて確認すべきセキュリティ事項
ユーザーは、証明システムに信頼できるセットアップが必要かを確認すべきです。セットアップがユニバーサル、更新可能、回路固有、または完全に不要かを確認すべきです。スマートコントラクトが監査されているかを確認すべきです。証明回路が独立した専門家によるレビューを受けているかを確認すべきです。システムがトランザクションデータを隠すのか、それとも実行の正しさだけを証明するのかを確認すべきです。出金がブリッジ、シーケンサー、管理者キー、または緊急委員会に依存するかを確認すべきです。運営者がオフラインになった場合にユーザーが安全に退出できるかを確認すべきです。データ可用性がどのように扱われるかを確認すべきです。プロジェクトがリスクモデルを明確に説明しているかを確認すべきです。これらの質問は、zk-SNARKが強力であっても、暗号資産システムからすべてのリスクを取り除くものではないため重要です。zk-SNARKアプリケーション全体の安全性は、暗号技術、ソフトウェア、ガバナンス、データ可用性、カストディ設計、ユーザー行動に依存します。zk-SNARKに関するよくある誤解
1つ目の誤解は、zk-SNARKがすべてのトランザクションを自動的にプライベートにするというものです。実際には、プライバシーはアプリケーション設計と公開されるデータに依存します。2つ目の誤解は、zk-SNARKが信頼の必要性を完全に排除するというものです。zk-SNARKは一部の信頼前提を軽減しますが、ユーザーは依然としてコード品質、セットアップ設計、ブリッジのセキュリティ、ガバナンス管理、ウォレットソフトウェアを信頼する必要がある場合があります。3つ目の誤解は、zk-SNARKがプライバシーコインにしか役立たないというものです。zk-SNARKは、スケーリング、ID、ゲーム、監査、検証可能な計算にも有用です。4つ目の誤解は、証明が小さいほど常に優れたシステムになるというものです。小さな証明は有用ですが、セキュリティ前提、証明者コスト、データ可用性、分散化も重要です。5つ目の誤解は、ゼロ知識技術が専門家だけのものだということです。ユーザーはzk-SNARKを使用するアプリケーションの恩恵を受けるために、すべての数学的詳細を理解する必要はありませんが、基本的なリスクは理解すべきです。zk-SNARKと開発者
開発者は、アプリケーションロジックを証明に適した形式へ変換することでzk-SNARKを利用します。これは多くの場合、証明すべき内容を定義する回路またはプログラムを書くことを意味します。回路は、残高、署名、Merkleツリーのメンバーシップ、トランザクション有効性、IDの主張、またはゲームルールを確認する場合があります。その後、証明者は回路が満たされたことを示す証明を作成します。検証者は、オンチェーンまたはオフチェーンで証明を確認します。開発者ツールは改善されていますが、zk-SNARK開発は通常のスマートコントラクト開発より依然として複雑です。開発者は、制約、witness生成、証明システム、検証者コスト、セキュリティ前提を慎重に考慮する必要があります。小さなミスでもプライベートシステムを安全でなくしたり、スケーリングシステムを不正確にしたりする可能性があるため、エッジケースもテストする必要があります。ZKProof initiativeは、業界全体におけるゼロ知識証明の標準化、相互運用性、セキュリティプラクティスを支援するために存在します。
zk-SNARKは多額の暗号資産価値を保護する可能性があるため、この種の標準化は重要です。zk-SNARKを簡単に言うと
zk-SNARKは、パズルの答え自体を見せずに、その答えを知っていることを証明するようなものです。証明を確認する人は、あなたが答えを知っていることを確信できます。答えを見る必要はありません。また、最初からパズルを解く様子を見る必要もありません。暗号資産において、そのパズルはトランザクション、残高確認、プライベートなIDの主張、またはLayer 2活動のバッチである場合があります。zk-SNARKは、ルールが守られたことを証明します。ブロックチェーンは証明を素早く確認できます。このため、zk-SNARKはプライバシーとスケーラビリティの両方に有用です。より少ない情報開示で、ブロックチェーンがより多くを検証できるようにします。FAQ
zk-SNARKとは何の略ですか?
zk-SNARKは、Zero-Knowledge Succinct Non-Interactive Argument of Knowledgeの略です。zk-SNARKは暗号資産で何に使われますか?
zk-SNARKは、基礎となるすべての情報を公開せずに、トランザクション、計算、または非公開の主張が有効であることを証明するために使用されます。zk-SNARKはプライバシー専用ですか?
いいえ。zk-SNARKはプライバシーに使用されますが、スケーリング、ID、監査、ゲーム、検証可能な計算にも使用されます。zk-SNARK証明が簡潔と呼ばれるのはなぜですか?
完全な計算と比べて証明が小さく、素早く検証できるため、簡潔と呼ばれます。zk-SNARKにおける非対話型とは何ですか?
非対話型とは、証明者が、多数回の通信を行わずに検証者が確認できる証明を作成できることを意味します。すべてのzk-SNARKに信頼できるセットアップが必要ですか?
いいえ。一部のzk-SNARKシステムには信頼できるセットアップが必要ですが、新しい設計や実装ではその要件を軽減または排除する場合があります。zk-SNARKとzk-STARKの違いは何ですか?
zk-SNARKは通常、より小さな証明と高速な検証を持ち、zk-STARKは通常、信頼できるセットアップを回避し、異なるセキュリティ前提を使用します。zk-SNARKはブロックチェーン手数料を削減できますか?
はい。zk-SNARKは、ベースチェーンでトランザクションを1件ずつ実行する代わりに、多数のトランザクションをまとめて証明できるため、スケーリングシステムで手数料を削減できる場合があります。zk-SNARKは安全ですか?
証明システム、回路、実装、セットアップ、スマートコントラクト、ガバナンスモデルが慎重に設計・監査されている場合、zk-SNARKは安全となる可能性があります。zk-SNARKはウォレットアドレスを隠しますか?
一部のプライバシー重視システムではウォレットアドレスを隠せますが、これはプロトコル設計とオンチェーンで公開されるデータに依存します。初心者でもzk-SNARKベースのアプリケーションを利用できますか?
はい。初心者でもzk-SNARKベースのアプリケーションを利用できますが、ブリッジリスク、スマートコントラクトリスク、メタデータ漏洩などの基本的なリスクは理解すべきです。zk-SNARKがWeb3にとって重要なのはなぜですか?
zk-SNARKは、アプリケーションが真実性を検証し、ユーザーデータを保護し、ブロックチェーン活動をより効率的にスケールさせるのに役立つため、Web3にとって重要です。結論
zk-SNARKは、現代の暗号資産において最も重要な暗号学的ツールの1つです。ユーザー、アプリケーション、またはネットワークは、証明の背景にあるすべての非公開情報を明かさずに、何かが真であることを証明できます。このため、zk-SNARKはプライベートトランザクション、Layer 2のスケーリング、分散型ID、準備金証明、ゲーム、ガバナンス、検証可能な計算に有用です。zk-SNARKの主な強みは、コンパクトな証明サイズ、高速な検証、プライバシー保護、ブロックチェーンのスケーリングに対する高い有用性です。主なリスクには、一部のシステムにおける信頼できるセットアップの前提、回路のバグ、実装エラー、証明生成コスト、メタデータ漏洩、ユーザーの誤解が含まれます。暗号資産ユーザーにとって重要な点は、zk-SNARKはブロックチェーンをよりプライベートかつ効率的にできる一方、すべてのアプリケーションを自動的に安全または匿名にするものではないことです。zk-SNARKシステム全体のセキュリティは、証明設計、データ可用性、スマートコントラクト、ガバナンス、ウォレット、ブリッジ、監査に依存します。暗号資産アプリケーションがより高度になるにつれ、zk-SNARKは、スケーラブルかつプライバシーを保持するブロックチェーンインフラの将来において中心的な役割を担い続ける可能性があります。関連コンテンツ
ZK-Rollup
ZK-Rollup-as-a-Service
zk-STARK
ホット
現在、市場で大きな注目を集めているトレンドの暗号資産
トップ取引高
取引高が最も多い暗号資産

