@owlprotocol/contracts-account-abstraction
Version:
ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.
20 lines (19 loc) • 924 B
JavaScript
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
};