to: upperLimitPreVerificationGas | upperLimitMaxFeePerGas | upperLimitMaxPriorityFeePerGas | k signatures
If the upperLimitPreVerificationGas, upperLimitMaxFeePerGas or upperLimitMaxPriorityFeePerGas differs from preVerificationGas, userop.maxFeePerGas or userop.maxPriorityFeePerGas, we expect at least 1 sig on the actual gas values used in the userop. This verification prevents a bundler or front runner manually running entryPoint.handleOps with any gas values
We use the v value to switch between signatures on the userOpHashes with upper limit gas values or the actual gas values:
v = 0 refers to contract sigs on upper limit values
v = 32 refers to contract sigs on actual values
v = 27/28 refers to EOA sigs on upper limit values
v = 59/60 refers to EOA sigs on actual values
notes:
requires via-ir to compile (else stack too deep)
dummy sig should use variable gas by default. else it can potentially be underpriced on the order of a few hundred to thousands of gas
userOp.signature format changes from:
k signatures
upperLimitPreVerificationGas
|upperLimitMaxFeePerGas
|upperLimitMaxPriorityFeePerGas
|k signatures
If the upperLimitPreVerificationGas, upperLimitMaxFeePerGas or upperLimitMaxPriorityFeePerGas differs from preVerificationGas, userop.maxFeePerGas or userop.maxPriorityFeePerGas, we expect at least 1 sig on the actual gas values used in the userop. This verification prevents a bundler or front runner manually running
entryPoint.handleOps
with any gas valuesWe use the v value to switch between signatures on the userOpHashes with upper limit gas values or the actual gas values:
notes: