Skip to content

Commit 5aa1718

Browse files
committed
fix(mock-paymaster): sign sponsoredUserOp rather than input userOp
1 parent 5b62b6f commit 5aa1718

2 files changed

Lines changed: 25 additions & 17 deletions

File tree

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
services:
22
anvil:
3-
image: ghcr.io/foundry-rs/foundry:nightly-776897b169e17117be345bf4a226e093ca768c17
3+
image: ghcr.io/foundry-rs/foundry
44
ports: [ "8545:8545" ]
55
entrypoint: [ "anvil", "--host", "0.0.0.0", "--block-time", "0.1", "--silent", "--hardfork", "prague"]
66
# Uncomment this if you want to use a fork
@@ -29,7 +29,7 @@ services:
2929
condition: service_completed_successfully
3030

3131
alto:
32-
build: https://github.com/pimlicolabs/alto.git
32+
image: ghcr.io/pimlicolabs/alto:latest
3333
ports: [ "4337:4337" ]
3434
environment:
3535
- ANVIL_RPC=http://anvil:8545

mock-verifying-paymaster/src/relay.ts

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,34 +69,38 @@ const handlePmSponsor = async ({
6969
}) => {
7070
const is06 = entryPoint === entryPoint06Address;
7171

72-
let op = {
72+
let sponsoredUserOp = {
7373
...userOperation,
7474
...getDummyPaymasterData({ is06, paymaster, paymasterMode }),
7575
} as UserOperation;
7676

77+
// User provided gasLimits
7778
const callGasLimit = userOperation.callGasLimit;
7879
const verificationGasLimit = userOperation.verificationGasLimit;
7980
const preVerificationGas = userOperation.preVerificationGas;
8081

8182
if (estimateGas) {
8283
try {
8384
const gasEstimates = await bundler.estimateUserOperationGas({
84-
...op,
85+
...sponsoredUserOp,
8586
entryPointAddress: entryPoint,
8687
});
8788

88-
op = {
89-
...op,
89+
sponsoredUserOp = {
90+
...sponsoredUserOp,
9091
...gasEstimates,
9192
} as UserOperation;
9293

93-
op.callGasLimit = maxBigInt(op.callGasLimit, callGasLimit);
94-
op.preVerificationGas = maxBigInt(
95-
op.preVerificationGas,
94+
sponsoredUserOp.callGasLimit = maxBigInt(
95+
gasEstimates.callGasLimit,
96+
callGasLimit,
97+
);
98+
sponsoredUserOp.preVerificationGas = maxBigInt(
99+
gasEstimates.preVerificationGas,
96100
preVerificationGas,
97101
);
98-
op.verificationGasLimit = maxBigInt(
99-
op.verificationGasLimit,
102+
sponsoredUserOp.verificationGasLimit = maxBigInt(
103+
gasEstimates.verificationGasLimit,
100104
verificationGasLimit,
101105
);
102106
} catch (e: unknown) {
@@ -116,15 +120,19 @@ const handlePmSponsor = async ({
116120
}
117121

118122
const result = {
119-
preVerificationGas: toHex(op.preVerificationGas),
120-
callGasLimit: toHex(op.callGasLimit),
121-
paymasterVerificationGasLimit: toHex(op.paymasterVerificationGasLimit || 0),
122-
paymasterPostOpGasLimit: toHex(op.paymasterPostOpGasLimit || 0),
123-
verificationGasLimit: toHex(op.verificationGasLimit || 0),
123+
preVerificationGas: toHex(sponsoredUserOp.preVerificationGas),
124+
callGasLimit: toHex(sponsoredUserOp.callGasLimit),
125+
paymasterVerificationGasLimit: toHex(
126+
sponsoredUserOp.paymasterVerificationGasLimit || 0,
127+
),
128+
paymasterPostOpGasLimit: toHex(
129+
sponsoredUserOp.paymasterPostOpGasLimit || 0,
130+
),
131+
verificationGasLimit: toHex(sponsoredUserOp.verificationGasLimit || 0),
124132
...(await getSignedPaymasterData({
125133
publicClient,
126134
signer: paymasterSigner,
127-
userOp: userOperation,
135+
userOp: sponsoredUserOp,
128136
paymaster,
129137
paymasterMode,
130138
})),

0 commit comments

Comments
 (0)