NEROChainコミュニティに参加して、今後の情報をお待ちください!

EntryPoint エラーコード ドキュメント

このドキュメントは、EntryPointコントラクトで使用されるすべてのエラーコードの包括的なリファレンスを提供します。エラーコードは AAmn というパターンに従います。ここで:

  • m はカテゴリを示します:

    • 1 = Factory/InitCodeの問題

    • 2 = アカウントの問題

    • 3 = Paymasterの問題

    • 4 = ガス/検証の問題

    • 5 = PostOpの問題

    • 9 = その他/内部の問題

  • n はそのカテゴリ内の特定のエラー番号です

エラーコード リファレンス表

コードカテゴリエラーメッセージ説明場所一般的な原因解決方法
AA10Factory"AA10 sender already constructed"指定されたアドレスに送信者アカウントコントラクトが既に存在_createSenderIfNeeded()UserOperationにinitCodeが含まれているが、アカウントが既にデプロイ済みinitCodeを削除するか、異なる送信者アドレスを使用
AA13Factory"AA13 initCode failed or OOG"initCodeによるアカウント作成が失敗_createSenderIfNeeded()Factoryがリバート、ガス不足、またはaddress(0)を返すFactoryコントラクトを確認し、十分なverificationGasLimitを確保
AA14Factory"AA14 initCode must return sender"Factoryが返したアドレスが期待される送信者と一致しない_createSenderIfNeeded()Factoryが計算されたものとは異なるアドレスを返すFactoryが正しいアドレス計算方法を使用していることを確認
AA15Factory"AA15 initCode must create sender"initCode実行後、送信者アドレスにコードがデプロイされていない_createSenderIfNeeded()Factory実行は完了したが、コントラクトコードが存在しないFactoryがアカウントコントラクトを適切にデプロイしていることを確認
AA20Account"AA20 account not deployed"アカウントコントラクトが存在せず、initCodeも提供されていない_validateSenderAndPaymaster() (シミュレーションのみ)アカウントがデプロイされておらず、initCodeがないinitCodeを提供するか、アカウントがデプロイされていることを確認
AA21Account"AA21 didn't pay prefund"アカウントのデポジットが必要なprefundをカバーするのに不十分_validateAccountPrepayment()アカウントのデポジット < 必要なprefundEntryPointにアカウント用の十分な資金をデポジット
AA22Account"AA22 expired or not due"UserOperationが有効な時間範囲外_validateAccountAndPaymasterValidationData()ブロックタイムスタンプがvalidUntilより後、またはvalidAfterより前有効な時間ウィンドウ内で送信
AA23Account"AA23 reverted: <reason>" または "AA23 reverted (or OOG)"アカウントのvalidateUserOpがリバート_validateAccountPrepayment()署名検証の失敗、カスタム検証ロジック、またはOOGリバート理由を確認、署名を検証、十分なガスを確保
AA24Account"AA24 signature error"署名アグリゲーターの不一致が署名検証の失敗を示す_validateAccountAndPaymasterValidationData()アカウント検証が期待とは異なるアグリゲーターを返す署名が正しいことを確認、アグリゲーター設定を確認
AA25Account"AA25 invalid account nonce"UserOperationのnonceがアカウントの期待されるnonceと一致しない_validatePrepayment()Nonceが既に使用されているか、順序が乱れている正しいnonce値を使用し、アカウントの現在のnonceをクエリ
AA30Paymaster"AA30 paymaster not deployed"Paymasterコントラクトが存在しない_validateSenderAndPaymaster() (シミュレーションのみ)PaymasterアドレスにコードがないPaymasterコントラクトをデプロイするか、有効なアドレスを使用
AA31Paymaster"AA31 paymaster deposit too low"Paymasterのデポジットが必要なprefundをカバーするのに不十分_validatePaymasterPrepayment()Paymasterのデポジット < 必要なprefundEntryPointにPaymaster用の十分な資金をデポジット
AA32Paymaster"AA32 paymaster expired or not due"UserOperationがPaymasterの有効な時間範囲外_validateAccountAndPaymasterValidationData()ブロックタイムスタンプがPaymasterのvalidUntilより後、またはvalidAfterより前有効な時間ウィンドウ内で送信
AA33Paymaster"AA33 reverted: <reason>" または "AA33 reverted (or OOG)"PaymasterのvalidatePaymasterUserOpがリバート_validatePaymasterPrepayment()検証ロジックの失敗、残高不足、またはOOGリバート理由を確認、Paymasterの残高を確認、十分なガスを確保
AA34Paymaster"AA34 signature error"Paymasterの署名検証が失敗_validateAccountAndPaymasterValidationData()Paymaster検証が非ゼロのアグリゲーターを返すPaymasterの署名を確認、paymasterAndDataの署名データを確認
AA40Gas"AA40 over verificationGasLimit"検証中に使用された実際のガスがverificationGasLimitを超える_validatePrepayment()アカウントまたはPaymasterの検証が制限を超えるガスを使用verificationGasLimitを増やす、検証ロジックを最適化
AA41Gas"AA41 too little verificationGas"アカウント検証後の残りガスがPaymasterに不十分_validatePaymasterPrepayment()アカウント検証がガスを使いすぎたverificationGasLimitを増やす、アカウント検証を最適化
AA50PostOp"AA50 postOp reverted: <reason>" または "AA50 postOp revert"PaymasterのpostOp関数がリバート_handlePostOp()PostOpロジックが失敗(トークン転送、会計など)リバート理由を確認、Paymasterの残高を確認、postOp実装を確認
AA51PostOp"AA51 prefund below actualGasCost"Prefund額が実際のガスコストより少ない_handlePostOp()実際のガスがprefundを超える、ガス価格が上昇内部エラー - ガス価格の安定性を確認、prefund計算を確認
AA90Other"AA90 invalid beneficiary"受益者アドレスがゼロアドレス_compensate()受益者としてゼロアドレスが渡された有効な非ゼロの受益者アドレスを提供
AA91Other"AA91 failed send to beneficiary"収集された手数料の受益者への転送が失敗_compensate()受益者コントラクトが受信時にリバートETHを受信できる有効な受益者アドレスを使用
AA92Other"AA92 internal call only"innerHandleOpが内部的ではなく外部的に呼び出されたinnerHandleOp()innerHandleOpへの外部呼び出し関数はEntryPointによって内部的にのみ呼び出されるべき
AA93Other"AA93 invalid paymasterAndData"paymasterAndDataの長さが無効(0または≥20バイトでなければならない)_copyUserOpToMemory()paymasterAndDataの長さが1-19バイトの間空のバイトを使用するか、有効なPaymasterアドレスで≥20バイトを確保
AA94Other"AA94 gas values overflow"ガス値がuint120.maxを超える_validatePrepayment()1つ以上のガス値 > uint120.maxガス値をuint120.max以内に減らす
AA95Other"AA95 out of gas"handleOpsトランザクションが不十分なガス制限で呼び出された_executeUserOp()バンドル全体がガス不足handleOpsのガス制限を増やす、バンドルサイズを減らす
AA96Other"AA96 invalid aggregator"アグリゲーターアドレスがaddress(1)(署名エラーマーカー)handleAggregatedOps()アグリゲーターが署名エラーマーカーに設定されている署名集約ロジックを確認、アグリゲーター設定を確認

注意事項

  • すべてのエラーコードは、EntryPointコントラクトのFailedOpエラータイプを通じて返されます

  • “AA”で始まるエラーコードは、アカウント抽象化(EIP-4337)に固有です

  • シミュレーション(simulateValidation)中、エラーAA20とAA30は、ウォーム/コールドストレージの区別を防ぐために使用されます

  • ほとんどのエラーはオフチェーンシミュレーション中にキャッチされるべきであり、オンチェーン実行中に発生すべきではありません

  • エラーコードは、どのエンティティ(factory、アカウント、またはPaymaster)が失敗の責任があるかを識別するのに役立ちます

カテゴリ別クイックリファレンス

Factory/InitCodeエラー (AA1x)

  • AA10: 送信者が既に構築済み

  • AA13: InitCodeが失敗またはOOG

  • AA14: InitCodeは送信者を返す必要がある

  • AA15: InitCodeは送信者を作成する必要がある

アカウントエラー (AA2x)

  • AA20: アカウントがデプロイされていない

  • AA21: Prefundを支払わなかった

  • AA22: 期限切れまたは期限前

  • AA23: アカウントがリバート

  • AA24: 署名エラー

  • AA25: 無効なアカウントnonce

Paymasterエラー (AA3x)

  • AA30: Paymasterがデプロイされていない

  • AA31: Paymasterのデポジットが低すぎる

  • AA32: Paymasterが期限切れまたは期限前

  • AA33: Paymasterがリバート

  • AA34: Paymaster署名エラー

ガス/検証エラー (AA4x)

  • AA40: verificationGasLimitを超過

  • AA41: verificationGasが少なすぎる

PostOpエラー (AA5x)

  • AA50: PostOpがリバート

  • AA51: PrefundがactualGasCostより低い

その他/内部エラー (AA9x)

  • AA90: 無効な受益者

  • AA91: 受益者への送信に失敗

  • AA92: 内部呼び出しのみ

  • AA93: 無効なpaymasterAndData

  • AA94: ガス値のオーバーフロー

  • AA95: ガス不足

  • AA96: 無効なアグリゲーター