ベストプラクティス
本番アプリケーションでUserOpSDKの使用を最適化するために、これらのベストプラクティスに従ってください。
1. AAウォレットアドレスをキャッシュする
冗長な計算を避けるために、AAウォレットアドレスを計算して保存します:
// 一度計算してデータベースやローカルストレージに保存
const aaWalletAddress = await builder.getSender();2. 包括的なエラー処理を実装する
ユーザーエクスペリエンスを向上させるために、すべての潜在的なエラーを適切に処理します:
try {
const result = await client.sendUserOperation(builder);
// 成功パス
} catch (error) {
// 異なるエラータイプを分類して処理
if (error.message.includes('AA21')) {
// 資金不足を処理
} else if (error.message.includes('AA31')) {
// ペイマスター検証エラーを処理
} else {
// 一般的なエラー処理
}
}3. ガス見積もり
複雑な操作では、十分なガスを確保するためにガス見積もり関数を使用します:
// 送信前にガスを見積もる
const gasEstimation = await client.estimateUserOperationGas(builder);
builder.setCallGasLimit(gasEstimation.callGasLimit);
builder.setVerificationGasLimit(gasEstimation.verificationGasLimit);
builder.setPreVerificationGas(gasEstimation.preVerificationGas);4. テストネットでテストする
メインネットにデプロイする前に、必ずNERO Chainのテストネットで実装をテストしてください:
// テストネット設定
const NERO_TESTNET_RPC_URL = "https://rpc-testnet.nerochain.io";
const TESTNET_BUNDLER_URL = "https://bundler-testnet.nerochain.io";
const TESTNET_PAYMASTER_URL = "https://paymaster-testnet.nerochain.io";5. セキュリティ
秘密鍵やAPIキーをクライアントサイドコードに保存しないでください:
// 悪い例:ハードコードされたAPIキー
const PAYMASTER_API_KEY = "your-api-key"; // これはしないでください!
// 良い例:サーバー上で環境変数から読み込む
const PAYMASTER_API_KEY = process.env.PAYMASTER_API_KEY;追加リソース
詳細と高度なユースケースについては、以下のリソースを参照してください: