Core Programはゼロ知識証明の理論と実装の理解を促し、Ethereumエコシステムや実社会にコミットする技術者を養成する学習プログラムです。このプログラムは今年で3回目となり、主催はzk Tokyoが行います。また、Ethereum Foundationのバックアップを受けながら進めていきます。
最終的に参加者の皆さんには成果物を提出していただきます。想定される成果物としては以下のようなものが挙げられます。
- オリジナルのzk dAppsを実装する
- zkに関する既存のOSSに貢献する
- 独自ライブラリを実装する
- ブログを公開する
また、9月に開催されるETH Tokyoではハッカソンが催されます。Core Programの成果物をこのハッカソンに提出することが奨励されます。 どのような最終成果物を出すかは参加者自身が決めることができます。適宜アンケートや面談を実施し、どのようなものを作りたいか伺うので、各自で目標設定を行なってください。
なお、最終成果物は9/15までに提出していただきますので、期間中に実装できる範囲で計画してください。
このプログラムではオンライン学習をベースにオンサイトでの演習やゲストスピーカーによる公演なども予定しています。6週間と短い期間なので、事前にweek0としてゼロ知識証明の理解に必要な数学的基礎を身につけていただくために、教材を用意しております。
| オンライン | オンサイト | ゲストスピーカー | |
|---|---|---|---|
| week0(6/30~7/28) | 有限体と楕円曲線 | なし | なし |
| week1(7/28~8/2) | ゼロ知識証明入門 | ホワイトボードセッション1 | Sorasue |
| week2(8/4~8/9) | Groth16 | ホワイトボードセッション2 | なし |
| week3(8/12~8/16) | コミットメントスキーム・PLONK | ホワイトボードセッション3 | Leona |
| week4(8/18~8/23) | zk-STARK | ホワイトボードセッション4 | なし |
| week5(8/25~8/30) | zkのライブラリやアプリ実装、OSSの紹介 | Tornado-cashの実装演習 | TBD |
| week6(9/1~9/6) | 成果物の準備期間 | ハッカソンアイデアの壁打ち会 | なし |
| extra | 反省会・打ち上げ | なし |
オンラインの学習・演習は各自オンデマンドに行っていただきます。ホワイトボードセッションはオンサイトで行いますので、必ず現地にお越しください。10:00~16:00を想定していますが、その週の演習内容によって終了時間が前後することを予めご了承ください。
例えばweek1のスケジュールは以下のようになります。
- 7/28までに教材が共有される
- 7/28~8/1まで自主学習する
- 8/1までにオンライン演習を提出する
- 8/2にオンサイト演習に取り組む
- 8/8までにオンライン演習のレビューが返ってくる
ゲストスピーカによる公演は現在調整中です。日時やオンライン・オンサイトなどの決定は追って連絡いたします。なお、Core ProgramのスケジュールはGoogle Calendarで共有いたします。
6週間のうちweek 1 から week 4までは理論、week5, 6は応用にフォーカスします。
学習教材は各自がオンデマンド形式で学べるように、スライドと解説動画を用意しています。教材は作成途中であり、その週の月曜日までには共有します。
| 週 | スライド | 解説動画 | ステータス |
|---|---|---|---|
| week0 | 有限体と楕円曲線 | https://youtu.be/4KaWvuNfG6I | |
| week1 | ゼロ知識証明入門 | https://youtu.be/qG24ys5rkCU | |
| week2 | Groth16 | https://youtu.be/uYqWn0nk7IE | |
| week3 | コミットメントスキーム・PLONK | 準備中 | 🔄 作成中 |
| week4 | zk-STARK | 準備中 | 🔄 作成中 |
| week5 | zkのライブラリやアプリ実装、OSSの紹介 | 準備中 | 🔄 作成中 |
| week6 | 成果物の準備期間 | 準備中 | - |
また、より深く学びたい人や最終成果物のヒント欲しい人に向けて補助教材を作成したので、ご覧ください。
各週の理解を促進するためにスライドに演習問題が付随しています。 必ずホワイトボードセッションの前日までに提出してください。 提出された演習問題は各週の担当者が評価し、次の週の金曜日までにレビューを返します。
提出方法は以下のとおりです
- このレポジトリをcloneする
- 各週の
exercises.mdに演習問題の回答を記入する - プルリクエストを作成し、回答を提出する
Markdownでの数式やコードの記述方法はこちらを参考にしてください。 また、回答のレビューはそのPRに対して行いますので、適宜Githubの通知を確認してください。
オンサイトでも演習を行います。これはホワイトボードセッションと呼びます。
オンラインでの演習とは違い、グループでのディスカッションがメインです。議論や図示を用いて参加者どうしの理解度を高めるとともに、参加者同士の交流を促す目的があります。
ホワイトボードセッションのフローは以下のようになります。
- 15人の参加者を3グループに分ける
- 各グループはホワイトボードを使って学び合いながら演習問題を解く
- 最終的にグループとして一つの回答を作成する
- 各週の担当者がその場でレビューする
また、グループは毎週シャッフルします。
ホワイトボードセッションのために何か準備する必要ありませんが、その週の学習内容をもとに出題するので、しっかり教材を確認しておいてください。
ちなみに、ホワイトボードセッションはZK Podcastが提供しているコンテンツからインスパイアを受けたものです。もし興味があればこちらもご覧ください。
3のオンライン演習とホワイトボードセッションの課題(提出課題がある場合のみ)はすべて、以下の提出フローに沿って GitHub 上で PR を作成することで提出いただけます。
Note
最終プロジェクトの進め方・提出方法はこちらをご確認ください。
このリポジトリーの main ブランチを個人アカウントにフォークし、フォークしたリポジトリーをローカル環境にクローンしましょう。これ以降のステップ1~3では、フォークしたリポジトリーに対して変更・追加を行います。
$ git clone https://github.com/zk-tokyo/core-program.gitTip
プログラム期間中(i.e., 課題の取り組み中)に、本体のリポジトリーに変更が加わることが多々あります。ローカル環境にリモート環境を追加して、ステップ4の PR 作成前にローカル環境を最新の内容にアップデートしておくことをお勧めします。
# add remote repo as upstream
$ git remote add upstream https://github.com/zk-tokyo/core-program.git
# fetch & merge changes from remote repo
$ git pull upstream各週の課題ごとにブランチを作成いただき、各ブランチから main へ向けたPRの作成をもって提出とみなします。ブランチ名は以下のフォーマットに沿って命名してください。
- オンライン演習:
week{N}/exercises/{YOUR_NAME} - ホワイトボードセッション:
week{N}/whiteboard-sessions/{GROUP_NAME}
例えば、week 0 のオンライン個人演習を提出する際には、week0/exercises/my-name といった名前のブランチを作成します。
各週のコンテンツはディレクトリにそれぞれまとまっており、課題の提出も各週のディレクトリ内で完結します。課題の種類に応じて、ディレクトリを作成しましょう。
- オンライン演習: 各週のサブディレクトリ
exercises配下に個人名(またはユーザー名)でディレクトリを作成する (e.g.,week0/exercises/my-name) - ホワイトボードセッション: 各週のサブディレクトリ
whiteboard-sessions配下にグループ名でディレクトリを作成する (e.g.,week0/whiteboard-sessions/my-group)
上記のステップ0~2で作成したリポジトリー・ブランチ・ディレクトリ内で課題を進めましょう。
変更内容をリポジトリーに push し、main ブランチに対して PR を作成しましょう。
Important
- PR は本体のリポジトリーに対して作成してください。
- PR を作成する際にテンプレートを選択するメッセージが表示されるので、対象のテンプレートを開き、各テンプレート内の指示にしたがって PR を作成してください。
PR を作成すると、自動的にその週の担当メンターにレビュー依頼が投げられ、提出物のレビューは PR のレビューという形式で行われます。レビューには1週間前後かかることがあります。
5のレビューコメントが理解でき次第、PR をマージしましょう。コメントに対応してもしなくても問題ありませんが、対応して再びレビュー依頼をかけることで更なるフィードバックの機会が得られます。
メンターとしてCore Programを支えてくれる方々を紹介します。
| Discord名 | 役割 | 自己紹介 |
|---|---|---|
| shouki | week 0 | このプログラムのマネージャーを務めさせていただきます津田と申します。現在はUzumaki.houseを拠点に、VOLE-based ZKの研究・開発や形式検証を使ったEthereumのセキュリティ向上などを考えています。以前はゼロ知識証明を使った秘匿送金プロジェクトやzk-Rollupの開発にも携わっておりました。受講者の皆さんがCore Programの後も活躍できるように全力でサポートさせていただきます。 |
| gohan | week 1 & 3 | 私はZK Core Program 2023をきっかけにZKを学び、MPCについてEthereum Foundation PSEと共同研究、zkVMベンチマークについてZKProof7で発表といった研究成果を上げ、現在は近未来暗号研究所ZOMIAで研究と事業を進めています。ZK(SNARK)は、この信頼できない社会に突如として現れた世界を救う魔法です。一流の魔術師になって一緒に世界を救いましょう。 |
| seiya_kobayashi | weeks 2 & 4 | 持続可能性のある次世代のインターネットとそれを取り巻く社会において、ゼロ知識証明をはじめとした現代の暗号技術はその中心的役割を果たすことになると考えています。transformer をAI領域における一つの転換点と捉えると、SNARK は、暗号領域における大きな転換点といえるでしょう。このプログラムでは、主にその転換点以降の暗号学的証明技術について、理論と共にそれらが実社会でどのように応用できるのかを一緒に模索していきましょう。 |
| mameta | week 4 | 1回目のZK Core ProgramをきっかけにzkTokyoの運営に携わり、web3エンジニアとして活動をしてきました。今回は week4 の教材作成のみでの貢献となってしまいますが、少しでもみなさまの学習の助けになれれば幸いです。 |
| bati668 | week5 | はじめまして、bati668です。本プログラムでは、Week 5の実装演習パートのカリキュラムを担当させていただきました。私自身は、昨年、ゼロ知識証明を用いたプライバシートランザクションシステムの構築に仕事で携わることになり、その準備として昨年のCore Programに参加しました。ゼロ知識証明のプログラミング経験は約1年ですが、ブロックチェーン全体での実装経験は4年ほどあります。また、ブロックチェーン以外にも、Webアプリケーションやモバイルアプリの開発経験が6年ほどあり、幅広い技術領域に対して質問対応可能です。本プログラムはなかなかハードですが、一緒に乗り越えていきましょう。どうぞよろしくお願いします。 |
| yawn | week5 | yawn と申します。Week5 の circom の基礎を担当させていただきました。昨年の Core Program の参加者で、まだまだ勉強中の身ですが、皆様の学習のお役に立てることがありましたら幸いです。エンジニアコミュニティの UNCHAIN を経て、 HackDays ( DAO ツールの Toban などを開発)や、 Henkaku Community や、 Code for Japan で活動しております。 よろしくお願いいたします! |
| ラーメンニョッキ教授 | week5 | ラーメンニョッキ教授です。去年のCore Program参加者です。このプログラムをきっかけに42Tokyoというエンジニア養成機関に入学いたしました。week5,Poseidon Hashを担当しました。深堀り気質な人間なので同じ気質の人がいればdiscordで相談してください。 |
| iYusuke | week5 | yusuke と申します。Week5 の 教材作成(スライド部分)を担当させていただきました。昨年の Core Program に参加しました。金融機関でWeb3やデジタルアセットなど担当しており、このプログラムには個人的に自己研鑽として参加しています。技術の理解や実装の部分は心もとないですが、昨年から引き続き勉強を続けています。 よろしくお願いいたします! |
| sheagrief | その他 | 初めまして、sheagriefです。私は2年前のCore Programに参加し、それ以降Web3領域に携わっています。普段は大学院で数学の研究を行う傍ら、ZKやMPCに特に興味を持っており、PSEのグラントなどを通じて研究開発などもしています。教材作成は今回行っていませんが、その他の面で参加者の皆さんをサポートできればと思います。 |
教材について疑問があればDiscordの#questionにて気軽に質問してください。ただし、その週の担当者にメンションするようにお願いします。 事務的な質問はshoukiにメンションしてください。プライベートな内容以外はパブリックなチャンネルで自由に発言していただいて構いません。