cover image
🔏

ZKUを退学しました

Tags
2022
Engineering
挫折
ZKU
Published
2022/6/13
 
表題の通り、2ヶ月間かけてきたZKUを辞めることになりました。
このエントリーでは思考の過程や学びについてまとめていきます。
ZKUを検討している人にはぜひ読んでいただきたく、また、そうでない人にもこのような事例があることを知ってもらえれば幸いです。
ZKUを責める意図は全くなく、not for meだったと言う話なので誤解なきようお願いいたします。
恥も外聞も無く、赤裸々にしていますので、ご笑覧くださいませ。
 

ZKUとは

ZKUはZero-Knowledge University(ゼロ知識大学)の略称であり、約2ヶ月間にわたり、ゼロ知識証明について学ぶオンラインコースです。
 

ゼロ知識証明とは?という人は、このnoteが前提知識がなくても理解しやすいと思います。

 
ZKUを受講する際にお金を払う必要はなく、さらに言えば「Learn To Earn」という学んで稼げる形態なのでコース終了時には成績に応じてサポートを受け取ることができます。
例えば、最低限プロジェクトをやり切れば$1500相当のステーブルコインを、同期に対して最も協力的な人や毎週の課題レポートが最も優れていた人には+αが支給されます。
 
卒業生のプロジェクト制作過程、制作物について詳細にまとめられていますのでより詳しい概要は下記を読むことをお勧めします。
ゼロ知識証明を学ぶ ZKUniversity を修了しました - tomoima525's blog
3 月から参加していたゼロ知識証明を学ぶプログラム ZKUniversity を先日修了し、卒業生の NFT も貰ったので、感想や最終プロジェクトについて書き残します。 "Onboarding 1000 Developers for Applied Zero-Knowledge Product Building By 2024"(2024 年までにゼロ知識証明を使ったプロダクトを作る開発者を 1000 人創出する)という目的のもと作られたオンラ インコース です。Harmony network によって $1M のグラントを得ている zkDAO が母体となっています。 ゼロ知識証明ってそもそもなに?という人はこの一連のツイートを御覧ください。 ゼロ知識証明の学びを 言語化するべく、たまに #ゼロ知識証明 タグをつけてつぶやくことにします。間違ってることも多分あるので、やさしく教えて下さい。ゼロ知識証明は暗号学でのやりとりの手順( プロトコル)のひとつで、証明者がある知識を持つことを実際に手法を示すことなく検証者に示す方法です。- Tomoaki Imai (@tomoaki_imai) March 2, 2022 参加している人のバックグラウンドは学生、リサーチャー、開発者と幅広く、また世界中の国から参加者がいます。Cohort2 では 150 人、Cohort3 は 450 人ほどが参加しているようです。 大きな特徴として挙げられるのが、ZKUniversity が Learn to
 
やめた分際で言うのも矛盾していますが、ゼロ知識証明に興味のある人には本当にお勧めします。
ゼロ知識証明のためのコードを書き、利用されている周辺知識のキャッチアップや、いかにプロダクトとして落とし込むのか、最終的に自分でプロダクトを作るという経験が得られます。
7, 8月の第4期を募集しているようなので、ぜひ応募してみてください。
 

なぜ辞めたのか?

程よく言えば「戦略的撤退」ですが、諦めました。諦めざるを得ませんでした。
上記で記した「自分でプロダクトを作る」という課題において、アイデアを自分で考えていくわけですが、既存のサービスやアイデアと似通っていたり、既存の課題をゼロ知識証明によってクリティカルに解決していなければ、そのアイデアは卒業に値するとは認められません。
要は早い者勝ちなので受講が後になればなるほど受講者にとってしんどくなるだろうなと容易に想像がつきます。
 
2週目から最終プロジェクトについての課題が設けられ、どんなアイデアを考えられるか、実装デザインなどを自主的に考えられるように設計されています。また、Discord上でも#final-projectのチャンネルが設けられいつでも相談、質問ができる体制が整えられています。そんな中で、他の課題に追われ自分のアイデアは大丈夫だろうとたかを括っていた部分もあり特に相談せず6週目を迎えました。
5週目の課題で提出したアイデアでは卒業に値しないとレビューをもらい、急いで他のアイデアを考え提案してみたのですが、どれも不十分だったようで、それ以上はどうすることもできず、このエントリーを書くに至ります。
技術的に分からなくて辞める可能性は考えていましたが、まさかこのような形で諦めるとは想像だにせずとても悔しいです。相談するタイミングが遅かったのと、最終プロジェクトに対する要件を甘くみていたのは本当に大きな反省です。
 

卒業生がどんなプロジェクトを作ったのかは下記で確認できます。

 

プロジェクトアイデア

このセクションでは自分がとんなアイデアを考え、どんなレビューを受けたかを記述していきます。
 

NFT保有者のためのアンケートシステム

まず最初に思いついたのは、特定のNFTを持っている人向けのアンケートシステムです。
例えばDAO運営者がNFT保有者に対して匿名のアンケートを取りたいとした場合、Google Formsを使うなどしますが、記入者が本当にNFTを持っているかどうかわかりません。また、NFTを保持しているアドレスを記入してモラことも可能ですが、匿名性が失われてしまいます。
そこで、ゼロ知識証明を用いて、記入者は自分のNFTを見せることなく自身がNFT保持者であることを証明し、アンケート作成者は記入者がNFTを所持していることを記入者のNFTを確認する必要なく保証できるというサービスです。
既存のDAOやNFTクリエイターにとってNFT保有者に対して匿名でアンケートを取れるサービスはこの世になく、有用であると考えていましたが、このアイデアはありふれており、アンケートサービスとして優位性を出すのが難しいというレビューをもらいました。
たくさんの既存事例があります。
 

NFT保有者限定のAPI

上記を踏まえ、もっと包括的なサービスへと拡大しようと考えました。
NFTを保持していることをNFTを見せずに証明できるAPIを作成し、上記のようなアンケートや投票、掲示板アプリを作成できるAPIを思いつきました。
こちらもたくさんの選考事例があり、特にAletheiaという卒業生が作成しているプロジェクトと「NFTを評価の対象として利用する」点において同一であり、それ以上のバリューがなかったためゴーサインをもらえませんでした。
それをいうならSismoSealcredとも似通っていると思いましたが。。
 
 

zk passport

文句を言っている暇はないので、趣向を変えてクラシックなアイデアであるパスポート情報の一部をパスポート自体を見せることなく証明できないかと考えました。
 
例えば、仮想通貨取引所のようなサービスでは、ユーザが18歳以上であること担保したかったり、法律的な問題で、特定の国出身のユーザの利用を制限したいという事例を聞き思いついたわけです。
そこで、ユーザはzk passportを利用し、自身が持つパスポート情報に基づき自分の年齢や国籍をパスポートを見せずに証明できるのではと考えました。パスポート情報の取得にはOCRを利用し、パスポートが偽物ではないのかという保証には外部APIであるiDenfyを利用しようとしていました。
 
しかし、APIを利用したデータは適切な対処をしなければ悪意のあるユーザにより改竄され、偽の証明が生成される可能性があります。いかにゼロ知識証明に組み込むかという部分に課題を抱え、解決策を思いつくことができなかったので、諦めざるを得ませんでした。
また、zk passportはバックグラウンドチェックサービスであり、下記サービスと類似しています。
 

経験

ZKUを通して、Web3エンジニアとしての第一歩を踏もうと考えていたのですが、上記の通り自分の考えるアイデアは甘く、簡単に事は運びませんでした。私はConsumer向けの自分で使えるようなサービスアイデアしか持ち合わせておらず、ゲームやブロックチェーンそのものの技術貢献に対して創作意欲もなかったため、思考の浅さが露呈した形となります。
 

技術的学び

もちろん、この期間で大量の技術的学びを得ることができました。フロントエンド開発やハッシュ関数やマークル木などこれまであまり触れてこなかった知識に加え、Solidityによるスマートコントラクトや、そのテストを書いたり、Circom というゼロ知識証明のために開発された言語を書いたりと毎週コーディングに追われつつも充実していました。
一方で、ゼロ知識証明にまつわるサービスなどには一通り目を通しました。Tornado Cash, ZK RollUpsをはじめとし、Semaphoreやzk-SNARK, zk-STARKの違いなど周辺知識を徐々に埋めていき補強していくことでインプットの質が高まっていくのを感じました。
 

モチベーション

ゼロ知識証明を利用する必然性が自分には足りませんでした。過去の経験からセキュリティやプライバシーに関して大きな関心を寄せており、ゼロ知識証明を利用したプロダクト制作を通してより良いWeb3サービスの開発を目論んでいました。
しかし、自分のアイデアが卒業要件に満たない(過去に類似サービスがある)という事実に対し複数回の提案の結果、満足するものが得られず、何が目的だったかを見直すに至りました。
要件を満たすアイデアを思いついたとして、興味のないサービスを作ることに意味はるのか?という疑問が頭をよぎり、考えを巡らすことになりました。
Learn To Earnなのでお金は目的の一つで何週間も頑張ってきたサンクコストがありつつも、知識を会得できただけでも自分にとって大きな財産です。と、自分を納得させました。
また、余暇の時間を減らし勉強してきましたがこの生活を続けられるのは2ヶ月が限度だなと自分のキャパシティを知る良い機会となりました。
 

終わりに

週末の全てと平日夜のほとんどを課題に捧げてきて、もう少しで修了できるというタイミングで悔しい気持ちはあります。しかし、やれるだけのことはやったつもりですし、その結果がこれなら仕方ないかなと感じています。
視野・視座が圧倒的に足りておらず、アイデアを思いつくことができませんでした。
アイデアがあったとしても、技術的にみて明らかに見劣りしているので(backendの知識、zkに対する知見)、短期間で完成できたか?というと疑問に思います。
単にZKUの要求に応えることができなかっただけですが、この経験を通して得た学びを開発者としての糧として活かしていく所存です。
再三しますが、ZKUが提供するコンテンツの充実度や学習環境はとても高いので、我こそはという方に強くお勧めします。
 
最後までお読みいただきありがとうございました。