👋 ようこそ!
このプロジェクトでは、ゼロ知識証明(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/
