【完全保存版】ゼロ知識証明とは何か?
0 はじめに
この記事は、こちらの記事を翻訳・編集したものです。
① Web2におけるプライバシーについて
Web2プラットフォームでは、プライバシーは失われた概念です。
ユーザーの情報は、ほとんど保護されることなく、インターネット上のどこかで公開されています。
② ブロックチェーンのpseudonymity(日本語では「偽名性」ですが少しニュアンスは違います)について
その点、ブロックチェーン・ベースの分散型アプリケーション(dApps)は、比類ないユーザーデータのセキュリティとプライバシーを提供する手段として、しばしばWeb3支持者によって宣伝されます。
https://www.gemini.com/cryptopedia/anonymity-vs-pseudonymity-basic-differences
しかし、ブロックチェーンの取引はweb3のウォレットと結びついており、せいぜい偽名です。
今日では、データ分析によってオフチェーンとオンチェーンのIDを簡単に結びつけることができる高度な技術があり、ブロックチェーンの偽名性は有効ではありません。
③ ブロックチェーンのトリレンマについて
ブロックチェーンのもう一つの問題点は、スケーラビリティのトリレンマに悩まされていることです。
つまり、ブロックチェーンは、その最も重要な3つの特性であるスケーラビリティ、セキュリティ、分散化のうち2つでしか最大化できないのです。
https://inc4.net/the-future-of-scaling-on-ethereum-l2-projects-to-follow/
世界最大のスマートコントラクトネットワークであるイーサリアムは、スケーラビリティよりもセキュリティと分散化を優先しています。
しかしそのため、イーサリアム上の分散型アプリケーション(dApps)は動作が遅く、高いガス料金に対応できず、大量導入には至っていない場合があります。
ユーザはスムーズなdApp体験が必要であり、自分のデータに対するコントロールとセキュリティが必要です。
④ ゼロ知識証明(ZKP)による解決
ゼロ知識証明(ZKP) は、セキュリティや分散化を損なうことなく、 拡張性の高いブロックチェーンを実現し、オンライン上でより多くのプライバシーをユーザーに提供することができます。
しかし、
- そもそもゼロ知識証明とは何なのでしょうか?
- なぜそんなに重要なのでしょうか?
- また、ゼロ知識証明はブロックチェーン上でどのようなユースケースを可能にするのでしょうか?
このブログ記事では、ゼロ知識証明(ZKP)について知っておくべきことをすべて解明します。
1 ゼロ知識証明(ZKP)とは?
① 概要
ゼロ知識証明(ZKP) とは、ある情報の所有権や有効性を、その情報自体を明らかにすることなく証明する技術です。
ゼロ知識プロトコルは、2つの当事者が個人情報を共有したくないシステムにおいて、プライバシーを簡素化し、信頼をもたらすことができます。
② ZKPの概念の登場
ZKPの概念は、1985年に発表された数学者の研究論文で初めて紹介されました。
彼らは、定理が真であることを、追加の詳細を明かすことなく証明する方法を考案することを望んでいました。
③ ブロックチェーンにおけるZKPの利用
最近のZKPは、基本的なロジックは同じですが、今日のブロックチェーンでは、本人確認や個人取引からブロックチェーンのスケーラビリティやデータセキュリティに至るまで、多くの用途に利用されています。
ZCashは、ブロックチェーン取引を真の意味で非公開にするために、ゼロ知識証明を使用した最初のブロックチェーンでした。
その後、複数のブロックチェーン・プロジェクトがZKPを使用していますが、これらの使用例を紹介する前に、ZKPがどのように機能するかを理解しましょう。
2 ゼロ知識証明(ZKP)はどのように機能するのか?
ZKPを生成または検証するためのゼロ知識プロトコルの内部動作は、我々が議論している証明の種類によって異なります。
そして、それらのZKPの仕組みを簡単に理解していただくために、説明を3つのパートに分けます。
1- 関係する参加者
2- 信頼性の高いゼロ知識プロトコルの判断基準
3- ZKPの種類
① 関係する参加者
ZKPの主要な参加者は2人です。
証明者(Prover) と検証者(Verifier) です。
1) 証明者(Prover)
証明者とは、ある情報を所有していること、あるいは行ったと主張するタスクを、それに関連する個人的な詳細を明らかにすることなく証明したいと考える人、組織、ソフトウェアのことである。
https://towardsdatascience.com/what-are-zero-knowledge-proofs-7ef6aab955fc
2) 検証者(Verifier)
検証者は、個人情報を尋ねることなく、証明者の主張が真実かどうかを検証しなければならない人、組織、またはソフトウェアである。
https://towardsdatascience.com/what-are-zero-knowledge-proofs-7ef6aab955fc
ただし、検証者は証明者に複数の課題を設定することができ、証明者が誤った主張を検証される可能性を低くする傾向があります。
② 信頼性の高いゼロ知識プロトコルの基準
ゼロ知識プロトコルは、生成されたZKPが受け入れられることを保証するために、完全性、健全性、ゼロ知識の3つの重要な条件を遵守する必要があります。
https://twitter.com/poopmandefi/status/1630064486337101825/photo/1
1) 完全性
ゼロ知識プロトコルでの完全性とは、検証者が証明者の主張に挑戦するために使用するゼロ知識プロトコルが、その主張が実際に真実であることを疑いなく証明できるものでなければならないということである。
https://twitter.com/poopmandefi/status/1630064486337101825/photo/1
ここでの条件は、検証者が正直に、つまりプロトコルの規則に従って行動しなければならないことである。
2) 健全性
ゼロ知識プロトコルでの健全性は、その主張が実際に真である場合にのみ、検証者に真値を返すことを意味します。
https://twitter.com/poopmandefi/status/1630064486337101825/photo/1
したがって、ZKPが健全であれば、不正を働く証明者は、正直な検証者を騙して偽の主張を真と見なすことは決してできない。
3) ゼロ知識(Zero-knowledge
ゼロ知識プロトコルにおける検証者は、主張が真か偽かの他に、主張に関する追加情報を受け取ってはならない。
https://twitter.com/poopmandefi/status/1630064486337101825/photo/1
これはまた、検証者が証明をリバースエンジニアリング(解析など)して元の情報を得ることができないようにすることも意味します。
これらはゼロ知識プロトコルの基本ですが、プロトコルがどのように機能するかは、議論しているタイプに依存します。
③ ZKPの種類
ZKPには、対話型ZKPと非対話型ZKPの2つの基本的なタイプが存在します。
https://nfting.medium.com/zero-knowledge-proof-interactive-vs-non-interactive-a8ba6e2cd7c7
1) 対話型ZKP
対話型ZKPは、検証者が証明者と対話し、証明者の主張を検証する必要がある証明です。
そのために、検証者は、証明者が所有すると主張する秘密情報を所有している場合にのみ解決または正しく回答できる一連の課題または質問を、証明者に提示します。
検証者は、証明者に複数の課題を提示することができます。
そして、証明者が真の値を返すたびに、検証者は証明者の正直さに対する信頼が高まります。
しかし、検証者は100%の確実性で主張を検証することはできないが、検証者が誤った主張を検証する可能性は、証明者が返す真値の数が増えるにつれて著しく減少します。
このタイプのZKPは、証明を検証するために参加者同士が定期的に交流する必要があるため、利用が制限されます。
3) 非対話型ZKP
1988年に初めて登場した非対話型ZKPは、検証者と証明者が合意したパラメータ(共有鍵) を用いて構築された暗号アルゴリズムで相互作用を代替します。
このシステムにおける証明者は、ZKPを生成するための計算を実行するアルゴリズムに情報を送り込みます。
https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/
検証者は、そのZKPを別のアルゴリズムに入力し、証明が正しいかどうかを検証します。
https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/
これにより、証明者が検証者と通信する必要がなくなります。
しかし、暗号化されたZKPの生成と有効性の証明は、計算機集約的なプロセスであるため、非常に高価です。
しかし、検証者が数百のノードになることもあるブロックチェーンの分散性を考えると、非対話型ZKPは対話型ZKPよりもまだましな選択肢と言えます。
4) 非対話型ZKPの種類
現在、ブロックチェーンエコシステム全体で使用されている非対話型ZKPは複数の種類があり、それぞれが得意とする分野をもっています。
しかし、主なタイプは次の2つです。
1.zk-SNARK
Zero-Knowledge Succinct Non-Interactive Argument of Knowledgeの略。
zkSyncとPolygon zkEVMで使用されます。
2.zk-STARK
Zero-Knowledge Scalable Transparent Argument of Knowledgeの略。
StarkNetで使用されています。
https://www.reddit.com/r/ethtrader/comments/ky1bw0/zkstark_vs_zksnark/
zk-STARKは、zk-SNARKよりもスケーラブルで透明性が高いとされています。
3 ブロックチェーンにおけるゼロ知識証明(ZKP)のユースケースについて
ZKPはブロックチェーン上で幅広いユースケースを持っていますが、最も重要なものは、
1- プライベートトランザクション
2- zkEVMによるブロックチェーンのスケーラビリティ
3- IDおよびデータの所有権の分散化
です。それぞれについて掘り下げてみましょう。
① プライベート・トランザクション
1)合法的なブロックチェーン取引の追跡について
ブロックチェーン取引は非公開であるというやや一般的な考え方に反し、非公開ではありません。
ブロックチェーンの取引は、仮名の暗号ウォレットアドレスにリンクされており、現実世界の身元を追跡することができます。
そのため、政府当局はシルクロードのようなダークネットマーケットプレイスに関連する犯罪者を逮捕することができます。
https://www.newton-consulting.co.jp/itilnavi/column/dark_web.html
ブロックチェーン取引を追跡して犯罪者を捕まえることは、合法的なことです。
2)ユーザーによるプライベート取引について
問題は、腐敗した政府機関や民間団体が、公開台帳に保存された情報を使って一般の暗号ユーザーをスパイするのを誰が止められるか、ということです。
ZKPは、ユーザーがプライベートな取引を行う際に、取引実行の証明だけを公開するのに役立ちます。
取引金額も取引当事者も公開記録には記載されません。
以下は、プライベートな取引にZKPを使用している企業やプロジェクトです。
② zkEVMによるブロックチェーンスケーラビリティの実現
1)EVMについて
最大のスマートコントラクトブロックチェーンであるイーサリアムは、ネットワークの状態とスマートコントラクトの計算を行う仮想マシンの設定を提供しています。
https://ethereum.org/en/developers/docs/evm/?ref=blog.thirdweb.com
そして、イーサリアム仮想マシン(EVM) は、中央集権的なサーバーを使用する代わりに、これらの計算を個別に独立して実行するノードの分散ネットワークに依存しています。
ステートとコントラクトの計算の両方をオンチェーンに保つことは、イーサリアムにとって、すべてのアクションと計算がEVMのルール内で実行されたことを常に確認するために重要です。
https://traderh4.com/ja/生態系/evm(ethereum-virtual-machine)とは何ですか?evmはどのように機能しますか?/11101209
しかし、このことは、すべてのノードが個別に計算を実行し、他のノードとコンセンサスを得る必要があるため、イーサリアムの拡張能力を制限することになります。
2)zkEVMについて
EVM互換の仮想マシンであるzkEVMは、計算をオフチェーン化する仕組みを提案しています。
zkEVMが計算を処理すると、ZKPを作成してイーサリアムに送信し、EVMのルールに従って計算が行われたことを証明します。
https://blog.chain.link/zkevm/
つまり、Ethereumノードは、計算そのものを実行する代わりに、計算の簡潔なゼロ知識証明を検証するだけでよいのです。
その結果、EVMベースのアプリケーションは、高いスケーラビリティと高速トランザクションを享受することができます。
また、ZKPを同様に使用して、必ずしもイーサリアムネットワークに依存しない、あるいはイーサリアムネットワークに接続されていないスケーラブルなブロックチェーンを構築するプロジェクトも存在します。
ブロックチェーンのスケーラビリティを実現するzkEVM&ソリューションの例をいくつか紹介します。
3)アイデンティティとデータの所有権の分散化
1.現状の個人情報
今日のKYC、AML、およびその他の本人確認プロセスでは、ユーザーは自分の身元を証明するために多くの個人情報を開示する必要があります。
https://www.formica.ai/blog/kyc-and-aml-relationship
さらに、これらのデータはすべて様々な事業体の集中型サーバーに保存されており、侵害やデータ盗難のリスクに常にさらされている可能性があります。
2.現状の個人情報
ZKPは、分散型ネットワーク上に保存された分散型アイデンティティまたはDIDを作成する手段を提供します。
DIDを使用することで、ユーザーは自分のデータをよりコントロールし、信頼するプラットフォームや組織と何を共有したいかを決めることができるようになります。
また、ZKPを利用したDIDの所有者は、個人を特定できる情報を公開することなく、本人確認を行うことができます。
DIDにZKPを使用している企業には、Sovrin や Iden3があります。
4 よくある質問(FAQ)
1)ゼロ知識証明(ZKP)はブロックチェーンで何に使われるのですか?
ゼロ知識証明(ZKP) は、分散化やセキュリティに妥協することなくブロックチェーンをスケーラブルにするために不可欠な要素です。
ZKPを使用するブロックチェーンは、オフチェーンで計算を行い、オンチェーンで計算の検証可能なZKPを公開できるため、ネットワークを高負荷のアプリケーションに開放することができます。
また、ZKPはブロックチェーンのデータに優れたプライバシーをもたらすため、本人確認やプライベートな金融取引に利用されています。
2)どのブロックチェーンがゼロ知識証明(ZKP)を使っていますか?
ZKPを使用しているブロックチェーンには、Polygon zkEVM、zkSync Era、ConsenSys zkEVM、StarkNet、Scroll、およびAleoがあります。
これらのチェーンでZKPは同様のことを可能にしますが、ZKPの実装方法は各チェーンによって異なります。
3)ゼロ知識証明(ZKP)にはどのような種類がありますか?
ゼロ知識証明には、検証者が証明者から受け取った情報をどのように検証するかに基づいて、対話型ゼロ知識証明と非対話型ゼロ知識証明の2種類があります。
後者はさらに、zk-SNARKとzk-STARKの2種類に大別されます。
5 結論:ZKPの未来
ゼロ知識証明は、プライバシーを重視したインターネットアプリケーションを実現する上で重要な技術となっています。
また、現在、ブロックチェーン・ネットワークを拡張するための最も信頼性の高いソリューションの1つとなっています。
そして、私たちはZKPで何が可能なのか、まだ表面しか見ていないに過ぎないのです。
Polygon zkEVM、zkSync Era、StarkNetなど、最も有望なZK搭載ブロックチェーンは、最近ローンチされたばかりです。
今後数年間、それらがもたらすユースケースや可能性を見るのは興味深いことでしょう。
このブログ記事が、ゼロ知識証明とは何かなどについて理解を深めていただく一助になったなら幸いです。
ゼロ知識証明を使ったWeb3アプリの構築方法や、ZKPを利用したネットワークの構築方法については、Discordコミュニティで33,000人以上のビルダーに参加していただくか、チームまで直接お問い合わせください。
また、Polygon zkEVM & zkSync EraのようなZK-poweredネットワーク上で構築を開始したい場合は、thirdwebのWeb3ツール、SDK、スマートコントラクトを使用して開始しましょう!
あらゆるEVMチェーン上でデプロイ可能です。
Discussion