⛽️ Biconomyによるガスレスミントの実装
このレッスンでは、Biconomy を使用してユーザーがガス代を支払うことなくNFTをミントできる機能を実装します!
Biconomyの Smart Account と Paymaster 機能により、ユーザーはガス代を一切気にすることなく、シームレスにブロックチェーン上でトランザクションを実行できるようになります。
🚀 Biconomyとは?
Biconomy は、web3アプリケーションのユーザー体験を劇的に改善するためのインフラストラクチャです。主な機能は以下の通りです。
-
Account Abstraction (AA):
従来のEOA(Externally Owned Account)の制約を超えて、プログラマブルなスマートコントラクトウォレットを提供します。 -
Gasless Transactions:
Paymaster により、ユーザーの代わりにガス代を支払い、ユーザーは署名のみでトランザクションを実行できます。 -
Bundled Transactions:
複数のトランザクションを1つにまとめて実行し、効率性とコストを最適化します。
🛠 Biconomyのセットアップ
パッケージのイン ストール
まず、Biconomyの最新SDKをインストールします。
cd pkgs/frontend
pnpm install @biconomy/abstractjs
環境変数の設定
Biconomyを使用するために必要なAPIキーを設定します。
- Biconomy Dashboard にアクセスしてアカウントを作成
- 新しいプロジェクトを作成し、Base Sepoliaネットワークを選択
- Bundler API Key と Paymaster API Key を取得
取得したAPIキーを.env.local
に追加します:
# pkgs/frontend/.env.local
NEXT_PUBLIC_BICONOMY_BUNDLER_API_KEY="YOUR_BUNDLER_API_KEY"
NEXT_PUBLIC_BICONOMY_PAYMASTER_API_KEY="YOUR_PAYMASTER_API_KEY"
コントラクトアドレスの設定
lib/utils.ts
にスマートコントラクトのアドレスを定義します:
// pkgs/frontend/lib/utils.ts
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
export const NEXUS_IMPLEMENTATION = "0x000000004F43C49e93C970E84001853a70923B03";
export const USDC_ADDRESS = "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
// ZKNFTコントラクトのアドレス(section-3でデプロイしたもの)
export const ZKNFT_CONTRACT_ADDRESS = "YOUR_DEPLOYED_CONTRACT_ADDRESS" as const;
※ YOUR_DEPLOYED_CONTRACT_ADDRESS
は、section-3 でデプロイした実際のコントラクトアドレスに置き換えてください。