abi abi : readonly [ { inputs : readonly [ { internalType : "uint256" ; name : "preOpGas" ; type : "uint256" } , { internalType : "uint256" ; name : "paid" ; type : "uint256" } , { internalType : "uint48" ; name : "validAfter" ; type : "uint48" } , { internalType : "uint48" ; name : "validUntil" ; type : "uint48" } , { internalType : "bool" ; name : "targetSuccess" ; type : "bool" } , { internalType : "bytes" ; name : "targetResult" ; type : "bytes" } , ] ; name : "ExecutionResult" ; type : "error" ; } , { inputs : readonly [ { internalType : "uint256" ; name : "opIndex" ; type : "uint256" } , { internalType : "string" ; name : "reason" ; type : "string" } , ] ; name : "FailedOp" ; type : "error" ; } , { inputs : readonly [ { internalType : "address" ; name : "sender" ; type : "address" } , ] ; name : "SenderAddressResult" ; type : "error" ; } , { inputs : readonly [ { internalType : "address" ; name : "aggregator" ; type : "address" } , ] ; name : "SignatureValidationFailed" ; type : "error" ; } , { inputs : readonly [ { components : readonly [ { internalType : "uint256" ; name : "preOpGas" ; type : "uint256" } , { internalType : "uint256" ; name : "prefund" ; type : "uint256" } , { internalType : "bool" ; name : "sigFailed" ; type : "bool" } , { internalType : "uint48" ; name : "validAfter" ; type : "uint48" } , { internalType : "uint48" ; name : "validUntil" ; type : "uint48" } , { internalType : "bytes" ; name : "paymasterContext" ; type : "bytes" } , ] ; internalType : "struct IEntryPoint.ReturnInfo" ; name : "returnInfo" ; type : "tuple" ; } , { components : readonly [ { internalType : "uint256" ; name : "stake" ; type : "uint256" } , { internalType : "uint256" ; name : "unstakeDelaySec" ; type : "uint256" } , ] ; internalType : "struct IStakeManager.StakeInfo" ; name : "senderInfo" ; type : "tuple" ; } , { components : readonly [ { internalType : "uint256" ; name : "stake" ; type : "uint256" } , { internalType : "uint256" ; name : "unstakeDelaySec" ; type : "uint256" } , ] ; internalType : "struct IStakeManager.StakeInfo" ; name : "factoryInfo" ; type : "tuple" ; } , { components : readonly [ { internalType : "uint256" ; name : "stake" ; type : "uint256" } , { internalType : "uint256" ; name : "unstakeDelaySec" ; type : "uint256" } , ] ; internalType : "struct IStakeManager.StakeInfo" ; name : "paymasterInfo" ; type : "tuple" ; } , ] ; name : "ValidationResult" ; type : "error" ; } , { inputs : readonly [ { components : readonly [ { internalType : "uint256" ; name : "preOpGas" ; type : "uint256" } , { internalType : "uint256" ; name : "prefund" ; type : "uint256" } , { internalType : "bool" ; name : "sigFailed" ; type : "bool" } , { internalType : "uint48" ; name : "validAfter" ; type : "uint48" } , { internalType : "uint48" ; name : "validUntil" ; type : "uint48" } , { internalType : "bytes" ; name : "paymasterContext" ; type : "bytes" } , ] ; internalType : "struct IEntryPoint.ReturnInfo" ; name : "returnInfo" ; type : "tuple" ; } , { components : readonly [ { internalType : "uint256" ; name : "stake" ; type : "uint256" } , { internalType : "uint256" ; name : "unstakeDelaySec" ; type : "uint256" } , ] ; internalType : "struct IStakeManager.StakeInfo" ; name : "senderInfo" ; type : "tuple" ; } , { components : readonly [ { internalType : "uint256" ; name : "stake" ; type : "uint256" } , { internalType : "uint256" ; name : "unstakeDelaySec" ; type : "uint256" } , ] ; internalType : "struct IStakeManager.StakeInfo" ; name : "factoryInfo" ; type : "tuple" ; } , { components : readonly [ { internalType : "uint256" ; name : "stake" ; type : "uint256" } , { internalType : "uint256" ; name : "unstakeDelaySec" ; type : "uint256" } , ] ; internalType : "struct IStakeManager.StakeInfo" ; name : "paymasterInfo" ; type : "tuple" ; } , { components : readonly [ { internalType : "address" ; name : "aggregator" ; type : "address" } , { components : readonly [ { internalType : "uint256" ; name : "stake" ; type : "uint256" } , { internalType : "uint256" ; name : "unstakeDelaySec" ; type : "uint256" } , ] ; internalType : "struct IStakeManager.StakeInfo" ; name : "stakeInfo" ; type : "tuple" ; } , ] ; internalType : "struct IEntryPoint.AggregatorStakeInfo" ; name : "aggregatorInfo" ; type : "tuple" ; } , ] ; name : "ValidationResultWithAggregation" ; type : "error" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "bytes32" ; name : "userOpHash" ; type : "bytes32" ; } , { indexed : true ; internalType : "address" ; name : "sender" ; type : "address" ; } , { indexed : false ; internalType : "address" ; name : "factory" ; type : "address" ; } , { indexed : false ; internalType : "address" ; name : "paymaster" ; type : "address" ; } , ] ; name : "AccountDeployed" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ ] ; name : "BeforeExecution" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "address" ; name : "account" ; type : "address" ; } , { indexed : false ; internalType : "uint256" ; name : "totalDeposit" ; type : "uint256" ; } , ] ; name : "Deposited" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "address" ; name : "aggregator" ; type : "address" ; } , ] ; name : "SignatureAggregatorChanged" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "address" ; name : "account" ; type : "address" ; } , { indexed : false ; internalType : "uint256" ; name : "totalStaked" ; type : "uint256" ; } , { indexed : false ; internalType : "uint256" ; name : "unstakeDelaySec" ; type : "uint256" ; } , ] ; name : "StakeLocked" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "address" ; name : "account" ; type : "address" ; } , { indexed : false ; internalType : "uint256" ; name : "withdrawTime" ; type : "uint256" ; } , ] ; name : "StakeUnlocked" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "address" ; name : "account" ; type : "address" ; } , { indexed : false ; internalType : "address" ; name : "withdrawAddress" ; type : "address" ; } , { indexed : false ; internalType : "uint256" ; name : "amount" ; type : "uint256" ; } , ] ; name : "StakeWithdrawn" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "bytes32" ; name : "userOpHash" ; type : "bytes32" ; } , { indexed : true ; internalType : "address" ; name : "sender" ; type : "address" ; } , { indexed : true ; internalType : "address" ; name : "paymaster" ; type : "address" ; } , { indexed : false ; internalType : "uint256" ; name : "nonce" ; type : "uint256" ; } , { indexed : false ; internalType : "bool" ; name : "success" ; type : "bool" } , { indexed : false ; internalType : "uint256" ; name : "actualGasCost" ; type : "uint256" ; } , { indexed : false ; internalType : "uint256" ; name : "actualGasUsed" ; type : "uint256" ; } , ] ; name : "UserOperationEvent" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "bytes32" ; name : "userOpHash" ; type : "bytes32" ; } , { indexed : true ; internalType : "address" ; name : "sender" ; type : "address" ; } , { indexed : false ; internalType : "uint256" ; name : "nonce" ; type : "uint256" ; } , { indexed : false ; internalType : "bytes" ; name : "revertReason" ; type : "bytes" ; } , ] ; name : "UserOperationRevertReason" ; type : "event" ; } , { anonymous : false ; inputs : readonly [ { indexed : true ; internalType : "address" ; name : "account" ; type : "address" ; } , { indexed : false ; internalType : "address" ; name : "withdrawAddress" ; type : "address" ; } , { indexed : false ; internalType : "uint256" ; name : "amount" ; type : "uint256" ; } , ] ; name : "Withdrawn" ; type : "event" ; } , { inputs : readonly [ ] ; name : "SIG_VALIDATION_FAILED" ; outputs : readonly [ { internalType : "uint256" ; name : "" ; type : "uint256" } ] ; stateMutability : "view" ; type : "function" ; } , { inputs : readonly [ { internalType : "bytes" ; name : "initCode" ; type : "bytes" } , { internalType : "address" ; name : "sender" ; type : "address" } , { internalType : "bytes" ; name : "paymasterAndData" ; type : "bytes" } , ] ; name : "_validateSenderAndPaymaster" ; outputs : readonly [ ] ; stateMutability : "view" ; type : "function" ; } , { inputs : readonly [ { internalType : "uint32" ; name : "unstakeDelaySec" ; type : "uint32" } , ] ; name : "addStake" ; outputs : readonly [ ] ; stateMutability : "payable" ; type : "function" ; } , { inputs : readonly [ { internalType : "address" ; name : "account" ; type : "address" } , ] ; name : "balanceOf" ; outputs : readonly [ { internalType : "uint256" ; name : "" ; type : "uint256" } ] ; stateMutability : "view" ; type : "function" ; } , { inputs : readonly [ { internalType : "address" ; name : "account" ; type : "address" } , ] ; name : "depositTo" ; outputs : readonly [ ] ; stateMutability : "payable" ; type : "function" ; } , { inputs : readonly [ { internalType : "address" ; name : "" ; type : "address" } , ] ; name : "deposits" ; outputs : readonly [ { internalType : "uint112" ; name : "deposit" ; type : "uint112" } , { internalType : "bool" ; name : "staked" ; type : "bool" } , { internalType : "uint112" ; name : "stake" ; type : "uint112" } , { internalType : "uint32" ; name : "unstakeDelaySec" ; type : "uint32" } , { internalType : "uint48" ; name : "withdrawTime" ; type : "uint48" } , ] ; stateMutability : "view" ; type : "function" ; } , { inputs : readonly [ { internalType : "address" ; name : "account" ; type : "address" } , ] ; name : "getDepositInfo" ; outputs : readonly [ { components : readonly [ { internalType : "uint112" ; name : "deposit" ; type : "uint112" } , { internalType : "bool" ; name : "staked" ; type : "bool" } , { internalType : "uint112" ; name : "stake" ; type : "uint112" } , { internalType : "uint32" ; name : "unstakeDelaySec" ; type : "uint32" } , { internalType : "uint48" ; name : "withdrawTime" ; type : "uint48" } , ] ; internalType : "struct IStakeManager.DepositInfo" ; name : "info" ; type : "tuple" ; } , ] ; stateMutability : "view" ; type : "function" ; } , { inputs : readonly [ { internalType : "address" ; name : "sender" ; type : "address" } , { internalType : "uint192" ; name : "key" ; type : "uint192" } , ] ; name : "getNonce" ; outputs : readonly [ { internalType : "uint256" ; name : "nonce" ; type : "uint256" } , ] ; stateMutability : "view" ; type : "function" ; } , { inputs : readonly [ { internalType : "bytes" ; name : "initCode" ; type : "bytes" } , ] ; name : "getSenderAddress" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ { components : readonly [ { internalType : "address" ; name : "sender" ; type : "address" } , { internalType : "uint256" ; name : "nonce" ; type : "uint256" } , { internalType : "bytes" ; name : "initCode" ; type : "bytes" } , { internalType : "bytes" ; name : "callData" ; type : "bytes" } , { internalType : "uint256" ; name : "callGasLimit" ; type : "uint256" } , { internalType : "uint256" ; name : "verificationGasLimit" ; type : "uint256" ; } , { internalType : "uint256" ; name : "preVerificationGas" ; type : "uint256" ; } , { internalType : "uint256" ; name : "maxFeePerGas" ; type : "uint256" } , { internalType : "uint256" ; name : "maxPriorityFeePerGas" ; type : "uint256" ; } , { internalType : "bytes" ; name : "paymasterAndData" ; type : "bytes" } , { internalType : "bytes" ; name : "signature" ; type : "bytes" } , ] ; internalType : "struct UserOperation" ; name : "userOp" ; type : "tuple" ; } , ] ; name : "getUserOpHash" ; outputs : readonly [ { internalType : "bytes32" ; name : "" ; type : "bytes32" } ] ; stateMutability : "view" ; type : "function" ; } , { inputs : readonly [ { components : readonly [ { components : readonly [ { internalType : "address" ; name : "sender" ; type : "address" } , { internalType : "uint256" ; name : "nonce" ; type : "uint256" } , { internalType : "bytes" ; name : "initCode" ; type : "bytes" } , { internalType : "bytes" ; name : "callData" ; type : "bytes" } , { internalType : "uint256" ; name : "callGasLimit" ; type : "uint256" } , { internalType : "uint256" ; name : "verificationGasLimit" ; type : "uint256" ; } , { internalType : "uint256" ; name : "preVerificationGas" ; type : "uint256" ; } , { internalType : "uint256" ; name : "maxFeePerGas" ; type : "uint256" } , { internalType : "uint256" ; name : "maxPriorityFeePerGas" ; type : "uint256" ; } , { internalType : "bytes" ; name : "paymasterAndData" ; type : "bytes" } , { internalType : "bytes" ; name : "signature" ; type : "bytes" } , ] ; internalType : "struct UserOperation[]" ; name : "userOps" ; type : "tuple[]" ; } , { internalType : "contract IAggregator" ; name : "aggregator" ; type : "address" ; } , { internalType : "bytes" ; name : "signature" ; type : "bytes" } , ] ; internalType : "struct IEntryPoint.UserOpsPerAggregator[]" ; name : "opsPerAggregator" ; type : "tuple[]" ; } , { internalType : "address payable" ; name : "beneficiary" ; type : "address" } , ] ; name : "handleAggregatedOps" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ { components : readonly [ { internalType : "address" ; name : "sender" ; type : "address" } , { internalType : "uint256" ; name : "nonce" ; type : "uint256" } , { internalType : "bytes" ; name : "initCode" ; type : "bytes" } , { internalType : "bytes" ; name : "callData" ; type : "bytes" } , { internalType : "uint256" ; name : "callGasLimit" ; type : "uint256" } , { internalType : "uint256" ; name : "verificationGasLimit" ; type : "uint256" ; } , { internalType : "uint256" ; name : "preVerificationGas" ; type : "uint256" ; } , { internalType : "uint256" ; name : "maxFeePerGas" ; type : "uint256" } , { internalType : "uint256" ; name : "maxPriorityFeePerGas" ; type : "uint256" ; } , { internalType : "bytes" ; name : "paymasterAndData" ; type : "bytes" } , { internalType : "bytes" ; name : "signature" ; type : "bytes" } , ] ; internalType : "struct UserOperation[]" ; name : "ops" ; type : "tuple[]" ; } , { internalType : "address payable" ; name : "beneficiary" ; type : "address" } , ] ; name : "handleOps" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ { internalType : "uint192" ; name : "key" ; type : "uint192" } , ] ; name : "incrementNonce" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ { internalType : "bytes" ; name : "callData" ; type : "bytes" } , { components : readonly [ { components : readonly [ { internalType : "address" ; name : "sender" ; type : "address" } , { internalType : "uint256" ; name : "nonce" ; type : "uint256" } , { internalType : "uint256" ; name : "callGasLimit" ; type : "uint256" } , { internalType : "uint256" ; name : "verificationGasLimit" ; type : "uint256" ; } , { internalType : "uint256" ; name : "preVerificationGas" ; type : "uint256" ; } , { internalType : "address" ; name : "paymaster" ; type : "address" } , { internalType : "uint256" ; name : "maxFeePerGas" ; type : "uint256" } , { internalType : "uint256" ; name : "maxPriorityFeePerGas" ; type : "uint256" ; } , ] ; internalType : "struct EntryPoint.MemoryUserOp" ; name : "mUserOp" ; type : "tuple" ; } , { internalType : "bytes32" ; name : "userOpHash" ; type : "bytes32" } , { internalType : "uint256" ; name : "prefund" ; type : "uint256" } , { internalType : "uint256" ; name : "contextOffset" ; type : "uint256" } , { internalType : "uint256" ; name : "preOpGas" ; type : "uint256" } , ] ; internalType : "struct EntryPoint.UserOpInfo" ; name : "opInfo" ; type : "tuple" ; } , { internalType : "bytes" ; name : "context" ; type : "bytes" } , ] ; name : "innerHandleOp" ; outputs : readonly [ { internalType : "uint256" ; name : "actualGasCost" ; type : "uint256" } , ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ { internalType : "address" ; name : "" ; type : "address" } , { internalType : "uint192" ; name : "" ; type : "uint192" } , ] ; name : "nonceSequenceNumber" ; outputs : readonly [ { internalType : "uint256" ; name : "" ; type : "uint256" } ] ; stateMutability : "view" ; type : "function" ; } , { inputs : readonly [ { components : readonly [ { internalType : "address" ; name : "sender" ; type : "address" } , { internalType : "uint256" ; name : "nonce" ; type : "uint256" } , { internalType : "bytes" ; name : "initCode" ; type : "bytes" } , { internalType : "bytes" ; name : "callData" ; type : "bytes" } , { internalType : "uint256" ; name : "callGasLimit" ; type : "uint256" } , { internalType : "uint256" ; name : "verificationGasLimit" ; type : "uint256" ; } , { internalType : "uint256" ; name : "preVerificationGas" ; type : "uint256" ; } , { internalType : "uint256" ; name : "maxFeePerGas" ; type : "uint256" } , { internalType : "uint256" ; name : "maxPriorityFeePerGas" ; type : "uint256" ; } , { internalType : "bytes" ; name : "paymasterAndData" ; type : "bytes" } , { internalType : "bytes" ; name : "signature" ; type : "bytes" } , ] ; internalType : "struct UserOperation" ; name : "op" ; type : "tuple" ; } , { internalType : "address" ; name : "target" ; type : "address" } , { internalType : "bytes" ; name : "targetCallData" ; type : "bytes" } , ] ; name : "simulateHandleOp" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ { components : readonly [ { internalType : "address" ; name : "sender" ; type : "address" } , { internalType : "uint256" ; name : "nonce" ; type : "uint256" } , { internalType : "bytes" ; name : "initCode" ; type : "bytes" } , { internalType : "bytes" ; name : "callData" ; type : "bytes" } , { internalType : "uint256" ; name : "callGasLimit" ; type : "uint256" } , { internalType : "uint256" ; name : "verificationGasLimit" ; type : "uint256" ; } , { internalType : "uint256" ; name : "preVerificationGas" ; type : "uint256" ; } , { internalType : "uint256" ; name : "maxFeePerGas" ; type : "uint256" } , { internalType : "uint256" ; name : "maxPriorityFeePerGas" ; type : "uint256" ; } , { internalType : "bytes" ; name : "paymasterAndData" ; type : "bytes" } , { internalType : "bytes" ; name : "signature" ; type : "bytes" } , ] ; internalType : "struct UserOperation" ; name : "userOp" ; type : "tuple" ; } , ] ; name : "simulateValidation" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ ] ; name : "unlockStake" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ { internalType : "address payable" ; name : "withdrawAddress" ; type : "address" ; } , ] ; name : "withdrawStake" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { inputs : readonly [ { internalType : "address payable" ; name : "withdrawAddress" ; type : "address" ; } , { internalType : "uint256" ; name : "withdrawAmount" ; type : "uint256" } , ] ; name : "withdrawTo" ; outputs : readonly [ ] ; stateMutability : "nonpayable" ; type : "function" ; } , { stateMutability : "payable" ; type : "receive" } , ] = ENTRYPOINT_V6_ABI
Extension of EntryPointV6 that provides gas estimation simulations for user operations. Implements binary search algorithms for estimating verification and call gas limits.
Example