🎉 まとめと今後の展望
お疲れ様でした!
これで、ゼロ知識証明を利用した Serverless ZK NFT App のすべての実装が完了しました。
本当におめでとうございます!
このプロジェクトを通して、あなたは最先端のweb3技術を巧みに組み合わせ、プライバシーを保護しながらユニークなユーザー体験を提供する、非常に価値のあるdAppを構築するスキルを習得しました。
📚 学んだことの振り返り
このプロジェクトで、私たちは以下の技術スタックとコンセプトを学び、実践しました。
一つ一つが、現代のweb3開発における重要なピースです。
-
ゼロ知識証明 (Zero-Knowledge Proofs) 🧠.
-
Circom
を使って算術回路を設計し、特定の知識(このプロジェクトでは秘密のパスワード)を持っていることを、その知識自体を明かすことなく証明するロジックを定義しました。 -
snarkjs
を使い、ユーザーのプライバシーを守りながら クライアントサイド(ブラウザ) で安全にZK証明を生成しました。
-
-
スマートコントラクト開発 🔗.
-
Hardhat
開発環境で、Solidity
を使って堅牢なNFTコントラクト(ZKNFT.sol
)を開発しました。 -
自動生成された検証コントラクト(
PasswordHashVerifier.sol
)を利用し、オンチェーンでZK証明を検証するという、web3ならではの仕組みを実装しました。
-
-
モダンなフロントエンド開発 🖥️
-
Next.js
とTypeScript
をベースに、高速でインタラクティブなUIを構築しました。 -
shadcn/ui
とTailwind CSS
を駆使して、美しくレスポンシブなデザインを効率的に実装しました。
-
-
先進的なweb3 UX (ユーザー体験) ✨.
-
Privy
:
Eメールやソーシャルログイン、外部ウォレット接続を驚くほど簡単に実装し、web3に不慣れな ユーザーにも優しいシームレスなオンボーディングを実現しました。 -
Biconomy
:
アカウント抽象化(Account Abstraction)とPaymasterを利用し、ユーザーがガス代を一切支払う必要のない、革命的な「ガスレス」トランザクション体験を提供しました。
-
これらの技術を組み合わせることで、私たちは「サーバーレス」かつ「ガスレス」で、ユーザーのプライバシーを最大限に尊重した、次世代のdAppを構築することができたのです。
🚀 プロジェクトをアップグレードする
このプロジェクトは、あなたの学びをさらに深めるための素晴らしい出発点です。
以下に、このdAppをさらに進化させるためのアイデアをいくつかご紹介します。ぜひ挑戦してみてください!
-
一人で複数のNFTをミント可能にする
- 現在の
ZKNFT.sol
は、学習のために一人1つしかミントできないように制限しています。
この制限を解除し、ユーザーがコレクションできるようにしてみましょう。
- 現在の
-
異なるパスワードで、異なるNFTをミントする
-
スマートコントラクトに、複数の公開ハッシュ値を登録できるように改良します。
-
ユーザーが入力したパスワードに応じて、異なる画像やプロパティを持つNFTをミントできるようにしてみましょう(例:「gold-password」で金のNFT、「silver-password」で銀のNFT)
-
-
証明生成のパフォーマンス向上
-
現在、証明生成はクライアントのブラウザで行っていますが、より複雑な回路では時間がかかることがあります。
-
バックエンドサーバーやサーバーレス関数(例: AWS Lambda, Vercel Functions)で証明を生成するアーキテクチャを検討してみましょう(⚠️ ただし、その場合はパスワードをサーバーに送信する必要があるため、プライバシーに関するトレードオフを慎重に考慮する必要があります)。
-
-
他のブロックチェーンへの展開
-
このプロジェクトはEVM互換の
Base Sepolia
で構築されています。ほんの少しの設定変更で、
Polygon
、Avalanche
、Arbitrum
など、他の多くのEVM互換チェーンにデプロイできます。マルチチェーン展開に挑戦してみましょう!
-
最後に
このプロジェクトで得た知識と経験は、あなたのweb3開発者としてのキャリアにおいて、間違いなく強力な武器となります。ゼロ知識証明やアカウント抽象化は、これからのweb3業界の発展を牽引する、間違いなく最も重要な技術分野です。
ぜひ、ここで学んだことを活かして、あなた自身のユニークなアイデアを形にしてみてください。
あなたの創造性が、次の素晴らしいdAppを生み出すことを楽しみにしています!
🌍 プロジェクトをアップグレードする
UNCHAIN のプロジェクトは UNCHAIN License により運用されています。
プロジェクトに参加していて、「こうすればもっと分かりやすいのに!」「これは間違っている!」と思ったら、ぜひpull request
を送ってください。
🙋♂️ 質問する
ここまでの作業で何かわからないことがある場合は、Discordの#zk
で質問をしてください。
ヘルプをするときのフローが円滑になるので、エラーレポートには下記の3点を記載してください ✨
- 質問が関連しているセクション番号とレッスン番号
- 何をしようとしていたか
- エラー文をコピー&ペースト
- エラー画面のスクリーンショット