このニュースレターでは、Web3関連のプロジェクトや話題のトピックをやさしく解説していきます。毎週水曜日定期更新(週1本以上)、朝6時に配信しておりますので、情報収集の効率化にぜひお役立てください。クリプトを楽しみながら一緒に学習していきましょう。
今回は「ゼロ知識証明」を取り上げます。ややむずかしい技術なのですが、本記事では基礎理解から一つずつ紹介して行きます。ゼロ知識証明は、DeFi、NFT、メタバースなど、どのような領域にも関わる重要技術だと考えています。
Web3では、パブリック・オープンという特徴がゆえに、他人に伝えたくない情報もオープンにせざるを得ません。例えば自分のウォレット残高や送信履歴、どんなNFTを持っているかといった情報は、公開したいという意思とは無関係に他人が閲覧できます。
また、将来的に仮想空間上でさまざまな情報をやりとりするようになれば「プライバシー」の問題が必ず現れるでしょう。さらに、スケーラビリティの課題は、ユーザーに実害がある深刻な問題であり、高度で複雑な処理をすればするほど、ブロックに記録する情報量が増えるのでスリム化をしていかなければいけません。
このように、現在のパブリックブロックチェーンで課題となっているのが「プライバシー保護の課題」と「スケーラビリティの課題」なのですが、これら両方の解決策に関わる技術として注目されているのが「ゼロ知識証明」なのです。
今回は概要と仕組みを数学や暗号学的な用語をなるべく使わずできるだけやさしく解説していきます。
以下、本日のSummaryです。お急ぎの方はこちらだけどうぞ。
Summary
ゼロ知識証明とは「明かしたくない情報を隠したまま自分が証明したい情報を相手に証明できる技術」のこと
zk-SNARK = コンピュータがゼロ知識証明を応用して高速にある事象を検証できるよう構築された技術のこと
SNARKの承認プロセスではセットされる情報をユーザーが信頼することを前提としており、共謀されると承認結果を操作できてしまうなどの課題がある
zk-STRAK = zk-SNARK の課題を一部改善した技術のこと
それでは、本日もよろしくお願いします。
1.Main Topic:【前編】「ゼロ知識証明」の基礎理解:プライバシー保護とスケーラビリティ向上
ゼロ知識証明(Zero Knowledge Proofs - ZKPs)とは
ゼロ知識証明とは「明かしたくない情報を隠したまま自分が証明したい情報を相手に証明できる技術」です。
少し抽象的なので、よく扱われる「洞窟問題」をみていきましょう。
🪨洞窟問題
ジャン=ジャック・キスケータらの論文「我が子にゼロ知識証明をどう教えるか」で紹介されているのが、この洞窟問題です。
☑️登場人物
洞窟の入り口で「A・B」どちらかの通路から出るよう指示するのがVerifier(検証者)=図の男性
洞窟の中で指示された通りの出口から出てくる人Prover(証明者)=図の女性
☑️洞窟問題の概要
Proverが洞窟の中にある扉を開ける「合言葉」を知っていることを「合言葉」自体を伝えずに証明したいという事例
Verifierは合言葉を知っているかどうか調べるためにAもしくはBの通路から出てくるようProverに指示する
Proverはがもし合言葉を知っている場合、指示された出口から出るのは簡単。しかし、合言葉を知らない場合、入ってきた方からしか出られない
VerifierはProverがどちらの入口から入ったかは知らない。Proverが指示に応えられるのは50%の確立ということになる
これを20回繰り返せば、Proverが全てに応えられる可能性は0.0001%となる
こうしたロジックでProverが合言葉を知っていることを合言葉を知らせることなく証明するというわけです。
※補足(数学的な部分に興味がない方は読み飛ばしてOK)
限りなく確立が低いというだけであり、数学的に真であることはありません。つまり、偽の命題を持っていたとしても真という結果を返せてしまうものです。つまりゼロ知識証明はあくまで「確率的証明」にすぎません。
具体例をみてきましたがまとめると、ゼロ知識証明の条件は以下のとおりです。
✍️ゼロ知識証明の条件まとめ
完全性:ある情報が真であるならば、検証者(Verifier)は証明者(Prover)から必ず真と認められること
健全性:ある情報が偽なら、ProverはVerifierを一方的に納得させることができないこと
ゼロ知識性:ある情報が真であれば、Verifierはその情報が真であること以外、Proverから情報を得ることはできないこと
以上、ゼロ知識証明についてご紹介させていただきました。
つぎに、ゼロ知識証明を学ぶなら押さえておくべき2つの応用技術について基礎的な部分を解説します。
ゼロ知識証明の2つの応用技術:zk-SNARKとzk-STARK
これら2つの技術は、要するに以下のようなイメージです。
zk-SNARK = コンピュータがゼロ知識証明を応用して高速にある事象を検証できるよう構築された技術
zk-STRAK = zk-SNARK の課題を改善した技術
詳しくは以下でかんたんに解説してします。
⛑zk-SNARKとは
zk-SNARKとは、「Zero Knowledge – Succinct Non-interactive Argument of Knowledge」の略です。
言葉を分解すると仕組みが見えて来ます。
Zero Knowledge:ゼロ知識証明を用いて
Succinct:大きな情報でも数百バイトの証明メッセージ長で、数ミリ秒で検証でき
Non-Interacvive:ProverとVerifierがリアルタイムにやりとりする必要がない
Argument of knowledge:計算による知識の証明
以上のような特徴があるのが、zk-SNARKです。
かんたんにいうと、Verifierが楽に承認作業ができ、短時間で少ないデータ量で承認ができる技術ということになります。
もしzk-SNARKがなければ、ProverはVerifyされるまで証明作業がおわらず、Verifierも検証作業に長時間拘束され、膨大な検証データを記録しなければいけないので、ブロックサイズを圧迫することになってしまいます。
zk-SNARKの検証アルゴリズムの参考画像はこちらです。
zk-SNARKは、以下の3つのアルゴリズムから成っています。
G:鍵を生成するアルゴリズム(ある秘密の値RとプログラムCから証明鍵(pk)と承認鍵(vk)を生成する。(pk, vk) = G(R,C) )
P:証明者が証明をするアルゴリズム(証明鍵(pk)と証明する情報(X)とプログラムCへのインプット(h)から証明(prf)を生成する。prf = P(pk, X, h) )V:承認者が証明を正当かどうか承認するアルゴリズム(承認鍵(vk)とプログラムCへのインプット(h)と証明(prf)から「正当か不正か」を返す。 V(vk, h, prf) = True or False )
引用元:https://zoom-blc.com/what-is-ethereum-zk-snark
ざっくりと要約すると、以下のとおりです。
ある値「R」から証明用と承認用のキーをつくる
証明キーと機密情報XとXのハッシュ値から証明値をつくる
承認者が承認キー、証明値、機密情報Xのハッシュ値を検証アルゴリズムにインプット
この結果が「真」であれば、Xの内容を知らせずに承認者は情報の正否を検証できます。1と2のアルゴリズムはオフチェーンで実行され、3のアルゴリズムはスマートコントラクト内で実行され、その結果(真or偽)に応じて、オンチェーンコントラクトが実行するように仕組むことが可能です。
しかし、zk-SNARKの仕組みをみてみると以下のような課題があるといえます。
「ある値R」がバレてしまうと、証明キーも承認キーも割り出せてしまう
1回の情報のセットで1つの情報しかゼロ知識証明できないし、計算量が多い
キーの生成Gと証明値の生成アルゴリズムPの実行者が共謀していると検証結果を「真」に操作できる(Trusted setup)
以上のようにzk-SNARKには課題があり、これを解決しつつ効率化したものが「zk-STARK」と呼ばれます。
🌟zk-STARKとは
zk-STARKは、Trusted setupを必要としません。つまり、政府や企業がzk-SNARKのセットアップに何らかのインセンティブをあたえ、アルゴリズムの実行を共謀したとしても、セットアップの信頼を担保できます。
これは仕組み上、セットアップに関するすべてを信頼する必要があるzk-SNARKと異なり、zk-STARKではセットアップにランダム性を組み込んでいるからです。さらにパブリックに検証できるので信頼できるというわけです。
上記の図をみるとSNARKとSTARKの比較ができますが、STARKだからといってもそこまで処理が早いわけでもなく、承認時間はSNARKの方が早いです。
zk-STARKは、現在もStarkWare社などが開発している技術であり、スケーラビリティの課題に焦点をあてながら改善されています。zk-STARKを取り入れたソリューションはいくつか現れています。
以上、ゼロ知識証明の2つの応用技術を紹介しました。
前編は以上です。
後編では、ゼロ知識証明が解決する課題とユースケースを深掘りしていきます。特にレイヤー2との関連はかなり面白い部分なのでぜひ楽しみにしていただければ幸いです。
2.Web3 Topics
本日までに気になったWeb3関連のニュースや記事を紹介します。
人口800人の限界集落が「NFT」を発行したその後 |山古志住民会議|note
限界集落❎NFTの事例。地域振興の文脈でNFTが語られるのは好意的に捉えています。こうした実需と紐づいたNFTが今後増えるのを望みます。
Oasysはマルチバース時代のHubとなります!
Oasysはゲームに特化したブロックチェーンプロジェクトです。独自に開発されたアーキテクチャ(※)により、プレイヤーは高速かつガス代無料でストレスなくゲームをプレイすることが可能になります。トランザクション手数料とトランザクションの実行待ち時間のハードルをなくす事で、これまでNFTやブロックチェーンゲームに触れてこなかったIPファンにもコンテンツを届けやすくなります。また、ゲーム開発面では、ブロックチェーンを活用したゲーム内決済やNFTアイテムに関わるマルチチェーン対応、及び他ゲームとの連携が容易になります。
ゲーム特化の日本発のパブリックブロックチェーンOasysがローンチされました。マイクリプトヒーローの開発元です。
DEVプロトコルがソーシャルトークン発行ツールの先行ユーザーを募集開始
ソーシャルトークン発行ツール「Niwa」は、DEVプロトコルを利用したDapp(Web3アプリ)で、ソーシャルトークンの発行・管理を行えるクリエイター向けツール、とのことです。
Dev ProtocolがYouTubeにも対応したことで、YouTubeクリエイターのマネタイズやプロジェクトをトークン化できるようになりました。サポーターNFTの発行もできるのでWeb3のコミュニティを拡大して行くプラットフォームとしても利用できそうです。
3.Weekly Podcasts
Web3関連のポッドキャストのエピソードを紹介します。興味のあるエピソードはタイトルをクリックすると再生ページヘ飛びます。
#407 Web3を腹落ちするまで考えてみよう - #スタートアップクリプトチャンネル | stand.fm
Web3.0って正直どういう意味なのか、よく分からないけど便利だから使ってしまう…。
そんなもやもやを少しでも払拭すべく、自分なりにWeb3を言語化してみました。
#408 Crypto Universityについて - #スタートアップクリプトチャンネル | stand.fm
Cryptoに関わり始めた時に相談できる人がいたら、学習していくときに誰かと一緒に学べたら楽しいな、という思いで始めたDiscordのコミュニティについて紹介させていただきました。
興味のある方はぜひご参加ください。詳しくは音声で解説しています。
#409 DeFi・NFTにおいてコンポーザビリティは何がすごいのか - #スタートアップクリプトチャンネル | stand.fm
DeFiやNFTにおいてコンポーザビリティってなに?ということでわかりやすく解説してみました。キーワードは「レゴブロック」です。
4.読者のコーナー
Vote Escrowed Tokenというかなりマニアックな内容であるにもかかわらずツイートでシェアしていだきました。
ヤスヤスオンファイヤーさんのいうとおりでして、実践が1番の学習の近道であると感じます。ありがとうございます!
最後までお読みいただきありがとうございました。
長文のニュースレターとなってしまい、Main Topicを前編、後編に分けることになりました。当初は1万文字を余裕で超えてしまう文章量でしたので、なんとかスパムメールボックス入りは免れたかもしれません。
後編もぜひお楽しみください。
それでは、また。
以下の「Subscribe」をクリックすると毎週1本以上朝6時にメールが届きます。情報収集にお役立てください⚡️🎧
「いいね」と思っていただいた方は、ぜひ♡のクリック、コメント、Twitterでのシェアをお願いします!通知を確認したらリツイートさせていだきます。
バックナンバーはこちらからご覧いただけます。
⚡️Twitter:@LawrenceTokyo
🎧Podcast:Start-up Crypto Channel
🚀Discord:Crypto University