👋 ようこそ!
このプロジェクトでは、ゼロ知識証明(ZK Proof) を活用したサーバーレスなweb3アプリケーションを構築します!
具体的には、ユーザーが特定の 秘密のパスワード を知っていることを証明することで、NFTをミントできるアプリケーションを開発します。このプロセスの素晴らしい点は、ユーザーがパスワードそのものをサーバーやブロックチェーンに 一切公開する必要がない ことです。
🚀 プロジェクトの概要
このプロジェクトを通じて、あなたはフルスタックのweb3アプリケーション開発を体験します。
アプリケーションは主に3つのコンポーネントで構成されます。
-
回路(Circuit)コンポーネント 🧠:
ゼロ知識証明のロジックを実装します。
Circom
を使用して、パスワードのハッシュ値に関する知識を証明する回路を作成します。 -
バックエンド(Backend)コンポーネント 🔗:
スマートコントラクトと、それをブロックチェーンにデプロイするためのインフラストラクチャを含みます。
Solidity
とHardhat
を用いて、NFTコントラクトと検証コントラクトを開発し、Base Sepolia
テストネットにデプロイします。 -
フロントエンド(Frontend)コンポーネント 🖥️:
ユーザーが操作するインタフェースです。
Next.js
をベースに、Privy
を使ったweb3ウォレット認証、Biconomy
を使ったアカウント抽象化(ガスレス取引)を実装します。
ユーザーはフロントエンドから秘密のパスワードを入力すると、クライアント側でゼロ知識証明用のProof
が生成されます。
このProof
はブロックチェーン上のスマートコントラクトに送信され、検証が成功した場合にのみNFTがミントされる、という仕組みです。