👋 ようこそ!
このプロジェクトでは、ゼロ知識証明(ZK Proof) を活用したサーバーレスなweb3アプリケーションを構築します!
具体的には、ユーザーが特定の 秘密のパスワード を知っていることを証明することで、NFTをミントできるアプリケーションを開発します。このプロセスの素晴らしい点は、ユーザーがパスワードそのものをサーバーやブロックチェーンに 一切公開する必要がない ことです。
🚀 プロジェクトの概要
このプロジェクトを通じて、あなたはフルスタックのweb3アプリケーション開発を体験します。
アプリケーションは主に3つのコンポーネントで構成されます。
-
回路(Circuit)コンポーネント 🧠:
ゼロ知識証明のロジックを実装します。
Circom
を使用して、パスワードのハッシュ値に関する知識を証明する回路を作成します。 -
バックエンド(Backend)コンポーネント 🔗:
スマートコントラクトと、それをブロックチェーンにデプロイするためのインフラストラクチャを含みます。
Solidity
とHardhat
を用いて、NFTコントラクトと検証コントラクトを開発し、Base Sepolia
テストネットにデプロイします。 -
フロントエンド(Frontend)コンポーネント 🖥️:
ユーザーが操作するインタフェースです。
Next.js
をベースに、Privy
を使ったweb3ウォレット認証、Biconomy
を使ったアカウント抽象化(ガスレス取引)を実装します。
ユーザーはフロントエンドから秘密のパスワードを入力すると、クライアント側でゼロ知識証明用のProof
が生成されます。
このProof
はブロックチェーン上のスマートコントラクトに送信され、検証が成功した場合にのみNFTがミントされる、という仕組みです。
☑️ 学習内容
このプロジェクトでは、以下の技術スタックを使用して開発を進めます。
- ゼロ知識証明:
Circom
:
ZK回路(サーキット) 用のコンパイラーです。snarkjs
:
ゼロ知識証明の生成と検証を行うためのライブラリです。
- スマートコントラクト:
Solidity
:
イーサリアム互換のスマートコントラクトを記述するためのプログラミング言語です。Hardhat
:
スマートコントラクトの開発、テスト、デプロイを効率化するフレームワークです。OpenZeppelin
:
業界でも多くのプロジェクトで採用されているスマートコントラクト用のライブラリです。
- ブロックチェーン:
Base Sepolia Testnet
:
Coinbaseが開発を主導する、イーサリアムのL2テストネットです。
- アカウント抽象化 & 認証:
Biconomy
:
Account Abstraction 用のインフラおよびSDKを提供しているweb3特化のインフラプロバイダーです。Privy
:
Eメールやソーシャルログインを使って、簡単にweb3ウォレットを生成・管理できる認証サービスです。
- フロントエンド:
Next.js
:
ReactベースのモダンなWebアプリケーションフレームワークです。TypeScript
:
JavaScriptに静的な型付けを追加し、コードの堅牢性を高めます。viem
:
スマートコントラクト との対話を簡単にするためのJavaScript/TypeScript
インタフェースです。Tailwind CSS
/Shadcn/UI
:
美しく使いやすいUIを効率的に構築するためのツールです。
🌟 完成品のイメージ
完成するアプリケーションのデモはこちらで確認できます。
ぜひ触ってみてください!
https://serverless-zk-nft-app.vercel.app/
🙋♂️ 質問する
ここまでの作業で何かわからないことがある場合は、Discordの#zk
で質問をしてください。
ヘルプをするときのフローが円滑になるので、エラーレポートには下記の3点を記載してください ✨
- 質問が関連しているセクション番号とレッスン番号
- 何をしようとしていたか
- エラー文をコピー&ペースト
- エラー画面のスクリーンショット