Skip to content

Commit afcbae4

Browse files
committed
add balance override to v0.7 simulations as well
1 parent ff3d9e4 commit afcbae4

File tree

2 files changed

+22
-47
lines changed

2 files changed

+22
-47
lines changed

src/rpc/estimation/gasEstimationHandler.ts

+8-31
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,6 @@ import { GasEstimatorV07 } from "./gasEstimationsV07"
88
import type { SimulateHandleOpResult } from "./types"
99
import type { AltoConfig } from "../../createConfig"
1010

11-
function getStateOverrides({
12-
addSenderBalanceOverride,
13-
userOperation,
14-
stateOverrides = {}
15-
}: {
16-
addSenderBalanceOverride: boolean
17-
stateOverrides: StateOverrides
18-
userOperation: UserOperation
19-
}) {
20-
const result: StateOverrides = { ...stateOverrides }
21-
22-
if (addSenderBalanceOverride) {
23-
result[userOperation.sender] = {
24-
...deepHexlify(stateOverrides?.[userOperation.sender] || {}),
25-
balance: toHex(parseEther("1000000"))
26-
}
27-
}
28-
29-
return result
30-
}
31-
3211
export class GasEstimationHandler {
3312
gasEstimatorV06: GasEstimatorV06
3413
gasEstimatorV07: GasEstimatorV07
@@ -58,15 +37,13 @@ export class GasEstimationHandler {
5837
targetCallData: Hex
5938
stateOverrides?: StateOverrides
6039
}): Promise<SimulateHandleOpResult> {
61-
let finalStateOverride = undefined
62-
63-
// Add balance override only for v0.6 userOperations (so that prefund check during simulation passes).
64-
if (balanceOverrideEnabled && isVersion06(userOperation)) {
65-
finalStateOverride = getStateOverrides({
66-
userOperation,
67-
addSenderBalanceOverride,
68-
stateOverrides
69-
})
40+
// Add balance override (so that prefund check during simulation passes).
41+
if (balanceOverrideEnabled && addSenderBalanceOverride) {
42+
const sender = userOperation.sender
43+
stateOverrides[sender] = {
44+
...deepHexlify(stateOverrides?.[sender] || {}),
45+
balance: toHex(parseEther("1000000"))
46+
}
7047
}
7148

7249
if (isVersion06(userOperation)) {
@@ -75,7 +52,7 @@ export class GasEstimationHandler {
7552
entryPoint,
7653
targetAddress,
7754
targetCallData,
78-
stateOverrides: finalStateOverride
55+
stateOverrides
7956
})
8057
}
8158

src/rpc/rpcHandler.ts

+14-16
Original file line numberDiff line numberDiff line change
@@ -605,22 +605,20 @@ export class RpcHandler {
605605
preVerificationGas = scaleBigIntByPercent(preVerificationGas, 110n)
606606

607607
// Check if userOperation passes without estimation balance overrides
608-
if (isVersion06(simulationUserOperation)) {
609-
await this.validator.getExecutionResult({
610-
userOperation: {
611-
...simulationUserOperation,
612-
preVerificationGas,
613-
verificationGasLimit,
614-
callGasLimit,
615-
paymasterVerificationGasLimit,
616-
paymasterPostOpGasLimit
617-
},
618-
entryPoint,
619-
queuedUserOperations,
620-
addSenderBalanceOverride: false,
621-
stateOverrides: deepHexlify(stateOverrides)
622-
})
623-
}
608+
await this.validator.getExecutionResult({
609+
userOperation: {
610+
...simulationUserOperation,
611+
preVerificationGas,
612+
verificationGasLimit,
613+
callGasLimit,
614+
paymasterVerificationGasLimit,
615+
paymasterPostOpGasLimit
616+
},
617+
entryPoint,
618+
queuedUserOperations,
619+
addSenderBalanceOverride: false,
620+
stateOverrides: deepHexlify(stateOverrides)
621+
})
624622

625623
if (isVersion07(simulationUserOperation)) {
626624
return {

0 commit comments

Comments
 (0)