UNPKG

@owlprotocol/contracts-account-abstraction

Version:

ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.

20 lines (19 loc) 924 B
import * as chains from "viem/chains"; function calcVerificationGasAndCallGasLimit(userOperation, executionResult, chainId, callDataResult) { const verificationGasLimit = (executionResult.preOpGas - userOperation.preVerificationGas) * 3n / 2n; let gasPrice; if (userOperation.maxPriorityFeePerGas === userOperation.maxFeePerGas) { gasPrice = userOperation.maxFeePerGas; } else { gasPrice = userOperation.maxFeePerGas; } const calculatedCallGasLimit = callDataResult?.gasUsed ?? executionResult.paid / gasPrice - executionResult.preOpGas; let callGasLimit = (calculatedCallGasLimit > 9000n ? calculatedCallGasLimit : 9000n) + 21000n + 50000n; if (chainId === chains.baseGoerli.id || chainId === chains.baseSepolia.id || chainId === chains.base.id) { callGasLimit = 110n * callGasLimit / 100n; } return { verificationGasLimit, callGasLimit }; } export { calcVerificationGasAndCallGasLimit };