見出し画像

ゼロ知識証明とWeb3

こんにちは、HIRAC FUNDの檜山です。
多くの皆さんは2021年のDeFiブームからWeb3という言葉を頻繁に耳にすることが増えたかと思います。今回は多忙な起業家や投資家、ビジネスパーソンなどの方々に向けてWeb3で2022年から特に熱を増して注目をされているゼロ知識証明について解説noteを執筆しました。(本来は昨年のZKPが盛り上がっていた際に取り上げたかったのですが、非常に遅くなりました。コンスタントにnote執筆されてる方を尊敬します・・。その分、なるべく多くの事例を盛り込んでおりますのでご参考になれば幸いです。)
是非、本noteが既存のプロジェクトを理解する一助になればと考えています。少しでも多くの方のお役に立ち、有益なディスカッションを生むことができれば幸いです。

ZKPーゼロ知識証明とは

  • ZKPとはーコンセプト説明

まずはゼロ知識証明(Zero-Knowledge Proofs、以下ZKP)について簡単に記載します。ZKPとは、「ある人が特定の事柄を証明したいときに、機密情報を明かさずにそれを証明する技術」(DMM Bitcoin、zk-SNARKs、zk-STARKsとは?、https://bitcoin.dmm.com/column/0251)のことを指します。ゼロ知識証明のゼロとは情報の中身なしでも証明ができるという意味となります。

ZKPには満たすべき条件が3つ存在します。

完全性:真であることを確認する検証者側は、証明者のもっている命題が真であるならば真であることが必ずわかること

健全性:証明者の持つ命題が偽であるなら、検証者は高い確率でそれが偽であると見抜けること

ゼロ知識性:証明者の持つ命題が真であるなら、検証者が不正して証明者から知識を盗んだとしても「命題が真である」こと以外の知識が得られずに秘密が守られること

DMM Bitcoin『zk-SNARKs、zk-STARKsとは?』https://bitcoin.dmm.com/column/0251

文字だけでの説明だと非常に難解かと思いますので、ここでZKPを簡単に理解するために一つ有名な例をご紹介します。ベルギーの暗号学者ジャン=ジャック・キスケタが提案した「洞窟の問題」です。

Jean-Jacques Quisquater, Myriam Quisquater, Muriel Quisquater, Michaël Quisquater, Louis Guillou,Marie Annick Guillou, Gaïd Guillou, Anna Guillou, Gwenolé Guillou & Soazig Guillou 『How to Explain Zero-Knowledge Protocols to Your Children』https://pages.cs.wisc.edu/~mkowalcz/628.pdfを参考に作成

この例では、緑色の服を着たPさん(証明者)が、紫色の服を着たVさん(検証者)に、洞窟の奥にある扉を開けるパスワードを知っていることを証明します。

  1. Pさんは洞窟の奥に到達するルートAまたはBをランダムに選択し、進む(今回はAを選択したと仮定)

  2. 洞窟の外で待機しているVさんは、ルートAまたはBのいずれかから帰ってくるよう指示する

  3. ルートAとBを仕切る扉のパスワードを知っているPさんは、ルートAを指定された場合はそのまま引き返し、ルートBを指定された場合は扉を開けて戻って来ることができる(=完全性の証明)

  4. この試行を何度か繰り返して、Pさんが毎回正しいルートから戻ってくれば、Pさんがパスワードを知っているという事実をパスワード自体を知ることなく確認できる(=健全性の証明)

  5. 仮にVさんがPさんに対してAから入ってBから出てきて欲しいと指示した場合、1回の指示でPさんが扉のパスワードを知っていることを証明できるが、VさんがPさんの後ろからパスワードを入力するところを盗み見た場合、パスワードがバレてしまう。(=ゼロ知識性の条件を満たしていない)

このようにゼロ知識証明は、PさんとVさん、すなわち証明者と検証者による幾度かの対話を繰り返すことでその証明を行うことができる仕組みです。

ちなみに、ゼロ知識対話証明(Zero Knowledge Interractive Proof、ZKIP)と呼ばれることもあります。

また、近年はZKPを対話せずに実行する、つまり証明者が「証明」を作成して一方的に検証者に送るだけで完了するような証明方法として、非対話ゼロ知識証明(Non-Interactive Zero-Knowlede Proof、NIZK)と呼ばれる応用例も出てきました。まさに進化を続けている領域といえます。

  • ZKPの分類

ZKPの分類は、主に以下の2つの方法があります。

①対話型ZKP
対話型ZKPは、証明者と検証者の間で複数回に渡ってやりとりを行います。証明者は、検証者に対して情報が正しいことを確認させるための応対をする必要があります。これにより、検証者は具体的な情報内容を知ることなく、情報の正当性を確認できます。「このインタラクティブな証明アプローチは、特定の大きな問題に対しては可能ですが、時間と計算コストの問題が生じ、すべてのプレイヤーからのコミュニケーションが必要になります。」Harold氏(『Types Of Zero-Knowledge Proofs: The Advantages And Disadvantages』https://coincu.com/174901-types-of-zero-knowledge-proofs/)

②非対話型ZKP
非対話型ZKPでは、自己完結型の証明を生成することにより証明者が情報を一度送信するだけでその情報の正当性を確認できるようになります。そのため、証明者と検証者の間で複数回の応対を行う必要がなくなります。「非対話型証明は対話型証明よりも高速であり、処理と通信の量が少なくなります。ただし、証明に追加の情報が必要な場合や、非常に複雑な命題を証明する場合など、時にはこのアプローチが実行不可能な場合もあります。」Harold氏(『Types Of Zero-Knowledge Proofs: The Advantages And Disadvantages』https://coincu.com/174901-types-of-zero-knowledge-proofs/)

  • ZKPの課題解決〜zk-SNARKsとは〜

ここで、ZKPがより広く使われるために、言い換えるとZKPに実用性をもたらした技術をご紹介します。前述の非対話型ZKPの欠点を補うために欠点を補うために開発されたのがzk-SNARKsです。(Nir Bitansky, Ran Canetti, Alessandro Chiesa, Eran Tromer『From Extractable Collision Resistance to Succinct Non-Interactive Arguments of Knowledge, and Back Again∗』)ここで解決されたのは、証明のサイズを小さくし一定時間で検証が可能になることで一気に実用性が増したのです。ちなみに、zk-SNARKsのSはSuccinct(簡潔さ)でNはNon-Interactiveを示しており、証明に簡潔性をもたらすことを目指していると言えます。

以下は金融庁と株式会社三菱総合研究所による、図を用いたzk-SNARKsの解説です。

1. 信頼できる第三者が、証明に用いる関数C(出力は真
偽値のみのブール値関数)およびパラメータrから、証明
鍵pKey、検証鍵vKeyを生成する。pKeyおよび
vKeyは暗号化されており、広く公開される。

2. 証明者は、証明鍵pKey、公開される情報Xと秘密情
報sから証明データprfを生成する。

3. 検証者は、証明データprfを、検証鍵vKeyと公開され
る情報Xを用いて検証し、真偽値の判断をする。

金融庁,株式会社三菱総合研究所『ブロックチェーンを用いた金融取引のプライバシー保護と追跡可能性に関する調査研究』https://www.fsa.go.jp/policy/bgin/ResearchPaper_MRI_ja.pdf
金融庁,株式会社三菱総合研究所『ブロックチェーンを用いた金融取引のプライバシー保護と追跡可能性に関する調査研究』https://www.fsa.go.jp/policy/bgin/ResearchPaper_MRI_ja.pdf

実は、zk-SNARKsの他に、zk-STARKという証明の検証メカニズムも有名ですが、より著名なzk-STARKに本稿はフォーカスします。

  • zk-SNARKs

    • zk-SNARKsはイーサリアムにおいてAZTEC protocol(ゼロ知識トークン)のような技術にも応用され、イーサリアム上のプライバシーの課題解決に役立っています。

zk-SNARKsはイーサリアムの他にZcashにも活用されています。
Zcashといえば匿名性の高い仮想通貨としてご存知の方も多いかと思いますが、匿名性が高く保てている理由はこのzk-SNARKsのおかげです。
Zcashのアドレスには、2種類)あります。
①プライベート型(z-addresses)
②透明型(t-addresses)
z-adresses同士の取引では、取引自体はパブリックブロックチェーンに記録されますが、その内容はすべて暗号化されており、公開されません。
このような暗号化を、zk-SNARKsを用いて可能にしています。

  • ZKPの歴史

ZKPという概念の歴史は以下のようになります。

1982年に論文自体がGoldwasser, Micali and Rackoffにより完成される

1985年3回のリジェクトを経て上記の3人がSTOCで発表
「The Knowledge Complexity of Interactive Proof-Systems」

2002年に誕生20周年を記念してGoldwasserがチュートリアル論文を発表
「A Short Tutorial of Zero-Knowledge」

(Kentaro Mihara『暗号解説シリーズ「ゼロ知識証明」について解説!!』https://qiita.com/kenmaro/items/d968375793fe754575fe)

2016年あたりまでは、ZKPは数多く存在するブロックチェーンに関する議論の一つといった立ち位置でしたが、「Zcashネットワークにおいてシールドされた、プライベート決済をサポートするために開発され、その後他のネットワークに拡張」(Mohamed Fouda and Qiao Wang、Web 3におけるZKP:現状と将来、https://blockchainjapan.hatenablog.jp/entry/2022/11/29/062837)され、現在はイーサリアムにも実装がなされています。

特に近年ではZKPの活用は目立ってきており、zk-rollupが大きな例でしょう。

zk-rollupとは、「複数のトランザクションをひとつのバッチにまとめて(ロールアップする)、このバッチをオフチェーンで実行する」技術です。(イーサリアム公式HP、「ゼロ知識ロールアップ」https://ethereum.org/ja/developers/docs/scaling/zk-rollups/)

そもそもブロックチェーン上に置けるロールアップは「optimistic-rollup」「zk-rollup」の2種類存在しており、トランザクションの正当性の証明方法に大きな違いがあります。

optimistic-rollupは、「正当性の検証方法を、レイヤー1に提出されるデータはすべて正当なものであるという楽観的な前提」に基づいて検証を行います。(DMMBitcoin「イーサリアムで導入が検討されているロールアップ(Rollups)とは?応用技術についても解説」https://bitcoin.dmm.com/column/0253)

トランザクションの正当性の検証方法として、「Fraud Proof」という手法が採用されています。
取引が記録されてから1週間程度「チャレンジ期間」と呼ばれるものを設け、その期間中に不正の取引を検証します。不正な取引だと発覚した場合はその取引が無効化されてしまいます。
上記プロセスを経てからの出金となるため、L1からの出金は概ね1週間程度かかります。

zk-rollupは「レイヤー1に提出するトランザクションデータはすべて正当なものであるということをzk-SNARKsと呼ばれるゼロ知識証明を使い、ゼロ知識証明の証明結果とともにデータを提出」することで正当性の検証を行います。(DMMBitcoin「イーサリアムで導入が検討されているロールアップ(Rollups)とは?応用技術についても解説」https://bitcoin.dmm.com/column/0253)
optimistic-rollupのようなチャレンジ期間が必要ないため、L1への出金が即時実行可能となります。

ただ、zk-rollupはゼロ知識証明を生成するためのzkEVMの実装が非常に困難といわれており、2022年まではoptimistic-rollupが優先されることが多かったでしょう。https://www.immutable.com/

zkEVMとは「ゼロ知識証明(ZK)ロールアップの一種のことを指します。イーサリアム上で運営されるレイヤー2ネットワークで、取引を処理し、それらをまとめてイーサリアムのレイヤー1メインネットに送り返すもの」(Coin Desk Japan、イーサリアムのロールアップ競争:「真の」zkEVMとは?、https://www.coindeskjapan.com/155653/)です。
取引が1つにまとまることでコストの削減、処理能力を向上させることができます。

zk-rollupのプロジェクトとしては、以下が代表例と言えるでしょう。

①zkSync
zkSyncはMatter Labsが開発するEVM互換のzk-rollupであり、前述のzkEVMを活用しています。2020年に決済用途に特化したzk-rollupとしてzkSync1.0(zkSync Lite)がリリースされました。

2023年3月にはその後継であるzkSync2.0(zkSync Era)がリリースされ、1か月弱で約45万近いユニークアドレス数、15万ETH以上の流入を記録するなど、注目を集めているロールアップのひとつとなっています。2023年6月では、「約536億7000万円相当の22万イーサリアム(ETH)、約29億8000万円相当のUSDコイン(USDC)、約10億7000万円相当の1443万MUTEがzkSyncにロック」(Omkar Godbole、Ethereum Layer 2 Network zkSync Era's Locked Value Surpasses $500M、https://www.coindeskjapan.com/190332/)されており、活気を見せています。

ここ数年間では日本国内でもZKPを活用したプロジェクトの動きが活発になってきています。
2022年10月にdouble jump.tokyo株式会社が提供するブロックチェーンの秘密鍵共有サービス「N Suite」がzkSyncとの提携を発表しました。「zkSyncを用いてアプリケーションを開発する企業に向けて、N Suiteのソリューションを提供することで、秘密鍵の管理を始めとしたオペレーションの負担を軽減し、企業がzkSyncのポテンシャルを最大限に発揮したアプリケーション開発に注力できる環境構築を推進」(PR TIMES、秘密鍵の共有管理サービス「N Suite」がゼロ知識証明プロジェクト「zkSync」と提携、https://prtimes.jp/main/html/rd/p/000000097.000034671.html)することを目的としています。

また、2023年2月には株式会社インバースが展開するZKPを用いたスマートコントラクトのスケーリング技術であるzkWasmのプロジェクトがWeb3財団によって採択されました。「スケーリングをサポートすることによりプライバシーとスケーリングを両立し、よりWeb2.0の世界観に近い形でブロックチェーン技術を利用できること」(PR TIMES、日本発ブロックチェーンKogarashi | Web3 FoundationよりzkWasmの助成金獲得、
https://prtimes.jp/main/html/rd/p/000000003.000112462.html)を目指すプロジェクトとなっています。

②Polygonへの応用

2023年3月には、暗号資産ポリゴンのネットワークを開発するPolygon  Labから、「Polygon zkEVM」が発表されました。Polygonは、ブロックチェーンの時価総額5位のLayer2スケーリングソリューションとして最も大きなネットワークの一つと言えます。尚、Polygon zkEVMは、イーサリアムのレイヤー2スケーリングソリューションです。

Polygon zkEVMの特徴としては、以下の通りです。

① Permissionless and public
②EVM-equivalent
③Fast finality
④Open-source

polygon「polygon zkEVM The MAINNET-BETA Machine NOWLIVE」https://polygon.technology/blog/polygon-zkevm-mainnet-beta-is-live

つまり、イーサリアム上で動作するあらゆるツールを、低コストかつ高速で誰でも利用できるということです。

直近では2023年3月に、PolygonとImmutableが共同で開発した「Immutable zkEVM」が発表されました。
同プロダクトについて、「本パートナーシップにより、Polygonの次世代スケーリング技術に基づいて、Immutableゲームインフラを利用可能になることで、ゲームデベロッパーによるWeb3対応ゲームの開発をさらに促進することが期待」」(COINPOST 「ポリゴンとImmutable、ゲーム特化型ネットワーク「Immutable zkEVM」を発表」https://coinpost.jp/?p=444868)されており、2023年8月にはテストネットワークがリリースされるなど、着実に実装に向けて動き出しています。

  • ZKPのプライバシー確保への応用

    • パブリックブロックチェーンでのプライバシーの課題

ビットコインやイーサリアムはパブリックブロックチェーンと呼ばれ、その特徴としては「取引がすべて公開され、透明性が高い」(DMMBitcoin、パブリックブロックチェーン、https://bitcoin.dmm.com/glossary/public_block_chain)ことが挙げられます。中央集権者的存在がいないため、ネットワークに参加するすべてのユーザーがデータの監視役となることでデータの改ざんを防ぐという仕組みを取っています。
この仕組みのおかげで、一部のシステムが停止したとしても全体の機能を維持できたり、改ざんが非常に困難というメリットが享受できます。

しかしこれは裏を返せばデメリットともなり得ます。パブリックブロックチェーン上では、取引の透明性を担保するべく、取引の情報がすべて公開されてしまうため、ユーザーのプライバシーを保護できないという問題に発展してしまいます。例えば、AさんからBさんへ10ETHの送金を行う場合、送信者「Aさん」、受信者「Bさん」、残高の変化「10ETH」のすべてがネットワークの参加者にバレてしまいます。

  • ZKPではどのようにプライバシーを改善できるのか

ZKPはブロックチェーン上のプライバシーとセキュリティを強化するために必要不可欠なツールとなりつつあります。ZKPを利用すると、ユーザーは自分のトランザクションに対する所有権と制御を強化できるため、プライバシーと安全性が確保されます。すなわち、上記のような世間に流出させたくない送金取引の情報を秘匿することもできるのです。Blockchain Web3 InfrastructureであるChain(Chain、「How Zero-Knowledge Proofs Can Enhance Blockchain’s Privacy and Scalability」、https://medium.com/@chaininc/chain-insights-how-zero-knowledge-proofs-can-enhance-blockchains-privacy-and-scalability-8b72dad4f230)によると
送金取引以外にも、ZKPのプライバシー確保技術を活用することで以下のような課題に対してソリューションを提供することができるようになります。

①認証情報の安全な確認
個人の実際の情報を公開することなく、その認証情報が有効であることを確認できる。
例)銀行の認証(現金を出金する際パスワードや口座番号を公開することなく口座情報が正当であることを証明できる)

②プライバシー保護の匿名性
特定の情報や属性を持っていることを証明する際、個人のアイデンティティを公開せず、証明できる。
例)ユーザーの年齢確認(運転免許証の提示や生年月日を公開することなく年齢制限が満たされていること証明できる)

③ブロックチェーンにおける匿名性の確保
トランザクションの内容を公開せずに、その正当性や信頼性を確認できる。
例)サプライチェーン管理(原材料から最終製品に至るまで、サプライチェーン全体で商品の信頼性と完全性を検証することができ、不正行為を防止し、製品が品質基準を満たしている確認ができる)

④データ収集におけるプライバシーの保護
個人情報を含むデータ収集が必要な場合、ZKPを利用してデータの収集を行い、個人情報を公開せずに統計情報や特定の条件を確認できる。
例)投票システム(オンライン投票の場合ZKPを利用して個人の選択を匿名のまま投票結果を参照できる)

  • 総論

近年、ブロックチェーンにおけるゼロ知識証明は非常に大きな注目を集めており、様々なプロジェクトがZKPを活用しています。このnoteでは、特に取引スピードの向上や情報の匿名化に貢献することをいくつかの例をもって説明しました。今後も同領域で各Layer2のプレイヤーやプライバシー保護基盤を提供するプレイヤーなどが様々の工夫を重ねてイノベーションを起こしていくことは筆者としては個人的にも大きな期待を寄せています。

また、本稿はHIRAC FUNDにLP出資をしてくださっている原さんと沖島さんに筆者のディレクションの元でリサーチをしてくださいました。Web3文脈で起業をされている方やWeb3投資をされている事業会社やVCの方々と是非情報交換をさせていただきたいと考えています。
HIRACメンバーや檜山へは是非お気軽にご連絡ください。

この記事が気に入ったらサポートをしてみませんか?