@pimlico/alto 0.0.0-main.20250325T180358 → 0.0.0-main.20250326T205022

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/esm/cli/config/bundler.d.ts +12 -6
  2. package/esm/cli/config/bundler.js +2 -1
  3. package/esm/cli/config/bundler.js.map +1 -1
  4. package/esm/cli/config/options.js +8 -2
  5. package/esm/cli/config/options.js.map +1 -1
  6. package/esm/cli/deploySimulationsContract.d.ts +7 -2
  7. package/esm/cli/deploySimulationsContract.js +56 -19
  8. package/esm/cli/deploySimulationsContract.js.map +1 -1
  9. package/esm/cli/handler.js +21 -5
  10. package/esm/cli/handler.js.map +1 -1
  11. package/esm/executor/executor.js +1 -1
  12. package/esm/executor/executor.js.map +1 -1
  13. package/esm/executor/executorManager.js.map +1 -1
  14. package/esm/executor/utils.d.ts +1 -1
  15. package/esm/executor/utils.js +24 -2
  16. package/esm/executor/utils.js.map +1 -1
  17. package/esm/mempool/mempool.d.ts +38 -4
  18. package/esm/mempool/mempool.js +29 -4
  19. package/esm/mempool/mempool.js.map +1 -1
  20. package/esm/rpc/createMethodHandler.d.ts +1 -1
  21. package/esm/rpc/estimation/gasEstimationsV07.d.ts +5 -4
  22. package/esm/rpc/estimation/gasEstimationsV07.js +78 -31
  23. package/esm/rpc/estimation/gasEstimationsV07.js.map +1 -1
  24. package/esm/rpc/methods/debug_bundler_dumpMempool.d.ts +373 -44
  25. package/esm/rpc/methods/debug_bundler_getStakeStatus.js +11 -3
  26. package/esm/rpc/methods/debug_bundler_getStakeStatus.js.map +1 -1
  27. package/esm/rpc/methods/eth_estimateUserOperationGas.d.ts +686 -94
  28. package/esm/rpc/methods/eth_getUserOperationByHash.d.ts +671 -78
  29. package/esm/rpc/methods/eth_sendUserOperation.d.ts +336 -40
  30. package/esm/rpc/methods/eth_sendUserOperation.js +6 -1
  31. package/esm/rpc/methods/eth_sendUserOperation.js.map +1 -1
  32. package/esm/rpc/methods/pimlico_sendUserOperationNow.d.ts +336 -40
  33. package/esm/rpc/methods/pimlico_sendUserOperationNow.js +12 -2
  34. package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
  35. package/esm/rpc/rpcHandler.js +20 -4
  36. package/esm/rpc/rpcHandler.js.map +1 -1
  37. package/esm/rpc/validation/SafeValidator.js +5 -2
  38. package/esm/rpc/validation/SafeValidator.js.map +1 -1
  39. package/esm/rpc/validation/TracerResultParserV07.js +42 -20
  40. package/esm/rpc/validation/TracerResultParserV07.js.map +1 -1
  41. package/esm/store/createMemoryOutstandingStore.js +12 -2
  42. package/esm/store/createMemoryOutstandingStore.js.map +1 -1
  43. package/esm/store/createMempoolStore.js +10 -8
  44. package/esm/store/createMempoolStore.js.map +1 -1
  45. package/esm/types/contracts/PimlicoEntryPointSimulations.d.ts +2 -1
  46. package/esm/types/contracts/PimlicoEntryPointSimulations.js +2 -1
  47. package/esm/types/contracts/PimlicoEntryPointSimulations.js.map +1 -1
  48. package/esm/types/schemas.d.ts +11240 -5385
  49. package/esm/types/schemas.js +90 -8
  50. package/esm/types/schemas.js.map +1 -1
  51. package/esm/utils/userop.d.ts +23 -3
  52. package/esm/utils/userop.js +85 -7
  53. package/esm/utils/userop.js.map +1 -1
  54. package/lib/cli/config/bundler.d.ts +12 -6
  55. package/lib/cli/config/bundler.js +2 -1
  56. package/lib/cli/config/bundler.js.map +1 -1
  57. package/lib/cli/config/options.js +8 -2
  58. package/lib/cli/config/options.js.map +1 -1
  59. package/lib/cli/deploySimulationsContract.d.ts +7 -2
  60. package/lib/cli/deploySimulationsContract.js +55 -18
  61. package/lib/cli/deploySimulationsContract.js.map +1 -1
  62. package/lib/cli/handler.js +21 -5
  63. package/lib/cli/handler.js.map +1 -1
  64. package/lib/executor/executor.js +1 -1
  65. package/lib/executor/executor.js.map +1 -1
  66. package/lib/executor/executorManager.js.map +1 -1
  67. package/lib/executor/utils.d.ts +1 -1
  68. package/lib/executor/utils.js +23 -1
  69. package/lib/executor/utils.js.map +1 -1
  70. package/lib/mempool/mempool.d.ts +38 -4
  71. package/lib/mempool/mempool.js +29 -4
  72. package/lib/mempool/mempool.js.map +1 -1
  73. package/lib/rpc/createMethodHandler.d.ts +1 -1
  74. package/lib/rpc/estimation/gasEstimationsV07.d.ts +5 -4
  75. package/lib/rpc/estimation/gasEstimationsV07.js +77 -30
  76. package/lib/rpc/estimation/gasEstimationsV07.js.map +1 -1
  77. package/lib/rpc/methods/debug_bundler_dumpMempool.d.ts +373 -44
  78. package/lib/rpc/methods/debug_bundler_getStakeStatus.js +10 -2
  79. package/lib/rpc/methods/debug_bundler_getStakeStatus.js.map +1 -1
  80. package/lib/rpc/methods/eth_estimateUserOperationGas.d.ts +686 -94
  81. package/lib/rpc/methods/eth_getUserOperationByHash.d.ts +671 -78
  82. package/lib/rpc/methods/eth_sendUserOperation.d.ts +336 -40
  83. package/lib/rpc/methods/eth_sendUserOperation.js +6 -1
  84. package/lib/rpc/methods/eth_sendUserOperation.js.map +1 -1
  85. package/lib/rpc/methods/pimlico_sendUserOperationNow.d.ts +336 -40
  86. package/lib/rpc/methods/pimlico_sendUserOperationNow.js +12 -2
  87. package/lib/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
  88. package/lib/rpc/rpcHandler.js +20 -4
  89. package/lib/rpc/rpcHandler.js.map +1 -1
  90. package/lib/rpc/validation/SafeValidator.js +4 -1
  91. package/lib/rpc/validation/SafeValidator.js.map +1 -1
  92. package/lib/rpc/validation/TracerResultParserV07.js +41 -19
  93. package/lib/rpc/validation/TracerResultParserV07.js.map +1 -1
  94. package/lib/store/createMemoryOutstandingStore.js +12 -2
  95. package/lib/store/createMemoryOutstandingStore.js.map +1 -1
  96. package/lib/store/createMempoolStore.js +10 -8
  97. package/lib/store/createMempoolStore.js.map +1 -1
  98. package/lib/types/contracts/PimlicoEntryPointSimulations.d.ts +2 -1
  99. package/lib/types/contracts/PimlicoEntryPointSimulations.js +3 -2
  100. package/lib/types/contracts/PimlicoEntryPointSimulations.js.map +1 -1
  101. package/lib/types/schemas.d.ts +11240 -5385
  102. package/lib/types/schemas.js +90 -8
  103. package/lib/types/schemas.js.map +1 -1
  104. package/lib/utils/userop.d.ts +23 -3
  105. package/lib/utils/userop.js +87 -7
  106. package/lib/utils/userop.js.map +1 -1
  107. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import { EntryPointV06Abi, EntryPointV07Abi } from "../types/index.js";
2
2
  import { isVersion06, toPackedUserOperation, isVersion07 } from "../utils/index.js";
3
3
  import * as sentry from "@sentry/node";
4
- import { encodeFunctionData } from "viem";
4
+ import { encodeFunctionData, toBytes } from "viem";
5
5
  export const isTransactionUnderpricedError = (e) => {
6
6
  const transactionUnderPriceError = e.walk((e) => e?.message
7
7
  ?.toLowerCase()
@@ -10,7 +10,7 @@ export const isTransactionUnderpricedError = (e) => {
10
10
  };
11
11
  // V7 source: https://github.com/eth-infinitism/account-abstraction/blob/releases/v0.7/contracts/core/EntryPoint.sol
12
12
  // V6 source: https://github.com/eth-infinitism/account-abstraction/blob/fa61290d37d079e928d92d53a122efcc63822214/contracts/core/EntryPoint.sol#L236
13
- export function calculateAA95GasFloor(userOps) {
13
+ export function calculateAA95GasFloor(userOps, beneficiary) {
14
14
  let gasFloor = 0n;
15
15
  for (const userOpInfo of userOps) {
16
16
  const { userOp } = userOpInfo;
@@ -23,12 +23,34 @@ export function calculateAA95GasFloor(userOps) {
23
23
  gasFloor +=
24
24
  userOp.verificationGasLimit +
25
25
  (userOp.paymasterVerificationGasLimit || 0n);
26
+ // There is a ~27,170 gas overhead for EntryPoint's re-entrency check
27
+ gasFloor += 30000n;
28
+ // There is a variable gas overhead for calldata gas when calling handleOps
29
+ const calldata = encodeHandleOpsCalldata({
30
+ userOps: userOps,
31
+ beneficiary
32
+ });
33
+ const handleOpsCalldataCost = toBytes(calldata)
34
+ .map((x) => (x === 0 ? 4 : 16))
35
+ .reduce((sum, x) => sum + x);
36
+ gasFloor += BigInt(handleOpsCalldataCost);
26
37
  }
27
38
  else {
28
39
  gasFloor +=
29
40
  userOp.callGasLimit + userOp.verificationGasLimit + 5000n;
30
41
  // AA95 check happens after verification + paymaster verification
31
42
  gasFloor += userOp.verificationGasLimit;
43
+ // There is a ~27,179 gas overhead for EntryPoint's re-entrency check
44
+ gasFloor += 30000n;
45
+ // There is a variable gas overhead for calldata gas when calling handleOps
46
+ const calldata = encodeHandleOpsCalldata({
47
+ userOps: userOps,
48
+ beneficiary
49
+ });
50
+ const handleOpsCalldataCost = toBytes(calldata)
51
+ .map((x) => (x === 0 ? 4 : 16))
52
+ .reduce((sum, x) => sum + x);
53
+ gasFloor += BigInt(handleOpsCalldataCost);
32
54
  }
33
55
  }
34
56
  return gasFloor;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../executor/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../executor/utils.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,7 @@ export declare class Mempool {
65
65
  entryPoint: Address;
66
66
  }): Promise<{
67
67
  skip: boolean;
68
+ removeOutstanding?: boolean;
68
69
  paymasterDeposit: {
69
70
  [paymaster: string]: bigint;
70
71
  };
@@ -108,16 +109,16 @@ export declare class Mempool {
108
109
  chainId: number;
109
110
  r: `0x${string}`;
110
111
  s: `0x${string}`;
111
- v: bigint;
112
112
  yParity: number;
113
+ v?: bigint | undefined;
113
114
  } | {
114
115
  address: `0x${string}`;
115
116
  nonce: number;
116
117
  chainId: number;
117
118
  r: `0x${string}`;
118
119
  s: `0x${string}`;
119
- v: bigint;
120
120
  yParity: number;
121
+ v?: bigint | undefined;
121
122
  } | null | undefined;
122
123
  } | {
123
124
  sender: `0x${string}`;
@@ -141,16 +142,49 @@ export declare class Mempool {
141
142
  chainId: number;
142
143
  r: `0x${string}`;
143
144
  s: `0x${string}`;
144
- v: bigint;
145
145
  yParity: number;
146
+ v?: bigint | undefined;
146
147
  } | {
147
148
  address: `0x${string}`;
148
149
  nonce: number;
149
150
  chainId: number;
150
151
  r: `0x${string}`;
151
152
  s: `0x${string}`;
152
- v: bigint;
153
153
  yParity: number;
154
+ v?: bigint | undefined;
155
+ } | null | undefined;
156
+ } | {
157
+ sender: `0x${string}`;
158
+ factory: `0x${string}` | null;
159
+ paymaster: `0x${string}` | null;
160
+ nonce: bigint;
161
+ callData: `0x${string}`;
162
+ callGasLimit: bigint;
163
+ verificationGasLimit: bigint;
164
+ preVerificationGas: bigint;
165
+ maxFeePerGas: bigint;
166
+ maxPriorityFeePerGas: bigint;
167
+ signature: `0x${string}`;
168
+ paymasterVerificationGasLimit: bigint | null;
169
+ paymasterPostOpGasLimit: bigint | null;
170
+ factoryData: `0x${string}` | null;
171
+ paymasterData: `0x${string}` | null;
172
+ eip7702Auth?: {
173
+ nonce: number;
174
+ contractAddress: `0x${string}`;
175
+ chainId: number;
176
+ r: `0x${string}`;
177
+ s: `0x${string}`;
178
+ yParity: number;
179
+ v?: bigint | undefined;
180
+ } | {
181
+ address: `0x${string}`;
182
+ nonce: number;
183
+ chainId: number;
184
+ r: `0x${string}`;
185
+ s: `0x${string}`;
186
+ yParity: number;
187
+ v?: bigint | undefined;
154
188
  } | null | undefined;
155
189
  })[]>;
156
190
  }
@@ -132,7 +132,12 @@ export class Mempool {
132
132
  return entities;
133
133
  }
134
134
  async add(userOp, entryPoint, referencedContracts) {
135
- const userOpHash = getUserOperationHash(userOp, entryPoint, this.config.chainId);
135
+ const userOpHash = await getUserOperationHash({
136
+ userOperation: userOp,
137
+ entryPointAddress: entryPoint,
138
+ chainId: this.config.chainId,
139
+ publicClient: this.config.publicClient
140
+ });
136
141
  // Check if the exact same userOperation is already in the mempool.
137
142
  if (await this.store.isInMempool({ userOpHash, entryPoint })) {
138
143
  return [false, "Already known"];
@@ -212,9 +217,9 @@ export class Mempool {
212
217
  const factoryStatus = this.reputationManager.getStatus(entryPoint, factory);
213
218
  if (paymasterStatus === ReputationStatuses.banned ||
214
219
  factoryStatus === ReputationStatuses.banned) {
215
- await this.store.removeOutstanding({ entryPoint, userOpHash });
216
220
  return {
217
221
  skip: true,
222
+ removeOutstanding: true,
218
223
  paymasterDeposit,
219
224
  stakedEntityCount,
220
225
  knownEntities,
@@ -387,6 +392,8 @@ export class Mempool {
387
392
  // Get EntryPoint version
388
393
  const isV6 = isVersion06(firstOp.userOp);
389
394
  const bundles = [];
395
+ const seenOps = new Set();
396
+ let breakLoop = false;
390
397
  // Process operations until no more are available or we hit maxBundleCount
391
398
  while (await this.store.peekOutstanding(entryPoint)) {
392
399
  // If maxBundles is set and we reached the limit, break
@@ -405,11 +412,24 @@ export class Mempool {
405
412
  let senders = new Set();
406
413
  let knownEntities = await this.getKnownEntities(entryPoint);
407
414
  let storageMap = {};
415
+ if (breakLoop) {
416
+ break;
417
+ }
408
418
  // Keep adding ops to current bundle
409
419
  while (await this.store.peekOutstanding(entryPoint)) {
410
420
  const userOpInfo = await this.store.popOutstanding(entryPoint);
411
- if (!userOpInfo)
421
+ if (!userOpInfo) {
422
+ break;
423
+ }
424
+ if (seenOps.has(userOpInfo.userOpHash)) {
425
+ breakLoop = true;
426
+ await this.store.addOutstanding({
427
+ entryPoint,
428
+ userOpInfo
429
+ });
412
430
  break;
431
+ }
432
+ seenOps.add(userOpInfo.userOpHash);
413
433
  const { userOp } = userOpInfo;
414
434
  // Check if we should skip this operation
415
435
  const skipResult = await this.shouldSkip({
@@ -423,7 +443,12 @@ export class Mempool {
423
443
  });
424
444
  if (skipResult.skip) {
425
445
  // Re-add to outstanding
426
- await this.store.addOutstanding({ entryPoint, userOpInfo });
446
+ if (!skipResult.removeOutstanding) {
447
+ await this.store.addOutstanding({
448
+ entryPoint,
449
+ userOpInfo
450
+ });
451
+ }
427
452
  continue;
428
453
  }
429
454
  gasUsed +=
@@ -1 +1 @@
1
- {"version":3,"file":"mempool.js","sourceRoot":"","sources":["../../mempool/mempool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mempool.js","sourceRoot":"","sources":["../../mempool/mempool.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { z } from "zod";
2
2
  import type { RpcHandler } from "./rpcHandler.js";
3
3
  import type { ApiVersion } from "../types/index.js";
4
- import { ReadonlyDeep } from "type-fest";
4
+ import type { ReadonlyDeep } from "type-fest";
5
5
  export type MethodHandler<T extends z.ZodType = z.ZodType> = {
6
6
  schema: T;
7
7
  method: z.infer<T>["method"];
@@ -47,12 +47,12 @@ export declare class GasEstimatorV07 {
47
47
  encodeUserOperationCalldata({ op, entryPoint }: {
48
48
  op: UserOperationV07;
49
49
  entryPoint: Address;
50
- }): `0x${string}`;
50
+ }): Promise<`0x${string}`>;
51
51
  encodeSimulateHandleOpLast({ userOperation, queuedUserOperations, entryPoint }: {
52
52
  userOperation: UserOperationV07;
53
53
  queuedUserOperations: UserOperationV07[];
54
54
  entryPoint: Address;
55
- }): Hex;
55
+ }): Promise<Hex>;
56
56
  encodeBinarySearchGasLimit({ entryPoint, userOperation, queuedUserOperations, target, targetCallData, gasAllowance, initialMinGas, functionName }: {
57
57
  entryPoint: Address;
58
58
  userOperation: UserOperationV07;
@@ -62,7 +62,7 @@ export declare class GasEstimatorV07 {
62
62
  gasAllowance?: bigint;
63
63
  initialMinGas?: bigint;
64
64
  functionName: "binarySearchPaymasterVerificationGasLimit" | "binarySearchVerificationGasLimit" | "binarySearchCallGasLimit";
65
- }): Hex;
65
+ }): Promise<Hex>;
66
66
  retryBinarySearch({ entryPoint, optimalGas, minGas, targetOp, target, targetCallData, functionName, queuedOps, stateOverrides }: {
67
67
  entryPoint: Address;
68
68
  optimalGas: bigint;
@@ -86,10 +86,11 @@ export declare class GasEstimatorV07 {
86
86
  queuedUserOperations: UserOperationV07[];
87
87
  stateOverrides?: StateOverrides | undefined;
88
88
  }): Promise<SimulateHandleOpResult>;
89
- callPimlicoEntryPointSimulations({ entryPoint, entryPointSimulationsCallData, stateOverrides }: {
89
+ callPimlicoEntryPointSimulations({ entryPoint, entryPointSimulationsCallData, stateOverrides, entryPointSimulationsAddress }: {
90
90
  entryPoint: Address;
91
91
  entryPointSimulationsCallData: Hex[];
92
92
  stateOverrides?: StateOverrides;
93
+ entryPointSimulationsAddress: Address;
93
94
  }): Promise<readonly `0x${string}`[]>;
94
95
  }
95
96
  export declare function parseFailedOpWithRevert(data: Hex): string;
@@ -1,5 +1,5 @@
1
1
  import { EntryPointV07Abi, EntryPointV07SimulationsAbi, ExecutionErrors, PimlicoEntryPointSimulationsAbi, RpcError, ValidationErrors, binarySearchCallResultSchema } from "../../types/index.js";
2
- import { getAuthorizationStateOverrides, getUserOperationHash, toPackedUserOperation } from "../../utils/index.js";
2
+ import { getAuthorizationStateOverrides, getUserOperationHash, isVersion08, toPackedUserOperation } from "../../utils/index.js";
3
3
  import { decodeAbiParameters, decodeErrorResult, decodeFunctionResult, encodeFunctionData, slice, toFunctionSelector, toHex, zeroAddress } from "viem";
4
4
  import { AccountExecuteAbi } from "../../types/contracts/IAccountExecute.js";
5
5
  import { simulationValidationResultStruct } from "./types.js";
@@ -26,16 +26,24 @@ export class GasEstimatorV07 {
26
26
  userOperations: [...queuedUserOperations, userOperation],
27
27
  publicClient: this.config.publicClient
28
28
  });
29
+ const isV8 = isVersion08(userOperation, entryPoint);
30
+ const entryPointSimulationsAddress = isV8
31
+ ? this.config.entrypointSimulationContractV8
32
+ : this.config.entrypointSimulationContractV7;
33
+ if (!entryPointSimulationsAddress) {
34
+ throw new Error(`Cannot find entryPointSimulationsAddress for version ${isV8 ? "08" : "07"}`);
35
+ }
29
36
  const errorResult = await this.callPimlicoEntryPointSimulations({
30
37
  entryPoint,
31
38
  entryPointSimulationsCallData: [simulateValidationLast],
32
- stateOverrides
39
+ stateOverrides,
40
+ entryPointSimulationsAddress
33
41
  });
34
42
  return {
35
43
  simulateValidationResult: getSimulateValidationResult(errorResult[0])
36
44
  };
37
45
  }
38
- encodeUserOperationCalldata({ op, entryPoint }) {
46
+ async encodeUserOperationCalldata({ op, entryPoint }) {
39
47
  const packedOp = toPackedUserOperation(op);
40
48
  const executeUserOpMethodSig = toFunctionSelector(AccountExecuteAbi[0]);
41
49
  const callDataMethodSig = slice(packedOp.callData, 0, 4);
@@ -45,19 +53,29 @@ export class GasEstimatorV07 {
45
53
  functionName: "executeUserOp",
46
54
  args: [
47
55
  packedOp,
48
- getUserOperationHash(op, entryPoint, this.config.chainId)
56
+ await getUserOperationHash({
57
+ userOperation: op,
58
+ entryPointAddress: entryPoint,
59
+ chainId: this.config.chainId,
60
+ publicClient: this.config.publicClient
61
+ })
49
62
  ]
50
63
  });
51
64
  }
52
65
  return packedOp.callData;
53
66
  }
54
- encodeSimulateHandleOpLast({ userOperation, queuedUserOperations, entryPoint }) {
67
+ async encodeSimulateHandleOpLast({ userOperation, queuedUserOperations, entryPoint }) {
55
68
  const userOperations = [...queuedUserOperations, userOperation];
56
- const packedUserOperations = userOperations.map((uop) => ({
69
+ const packedUserOperations = await Promise.all(userOperations.map(async (uop) => ({
57
70
  packedUserOperation: toPackedUserOperation(uop),
58
71
  userOperation: uop,
59
- userOperationHash: getUserOperationHash(uop, entryPoint, this.config.chainId)
60
- }));
72
+ userOperationHash: await getUserOperationHash({
73
+ userOperation: uop,
74
+ entryPointAddress: entryPoint,
75
+ chainId: this.config.chainId,
76
+ publicClient: this.config.publicClient
77
+ })
78
+ })));
61
79
  const simulateHandleOpCallData = encodeFunctionData({
62
80
  abi: EntryPointV07SimulationsAbi,
63
81
  functionName: "simulateHandleOpLast",
@@ -65,15 +83,15 @@ export class GasEstimatorV07 {
65
83
  });
66
84
  return simulateHandleOpCallData;
67
85
  }
68
- encodeBinarySearchGasLimit({ entryPoint, userOperation, queuedUserOperations, target, targetCallData, gasAllowance = this.config.binarySearchGasAllowance, initialMinGas = 0n, functionName }) {
69
- const queuedOps = queuedUserOperations.map((op) => ({
86
+ async encodeBinarySearchGasLimit({ entryPoint, userOperation, queuedUserOperations, target, targetCallData, gasAllowance = this.config.binarySearchGasAllowance, initialMinGas = 0n, functionName }) {
87
+ const queuedOps = await Promise.all(queuedUserOperations.map(async (op) => ({
70
88
  op: toPackedUserOperation(op),
71
89
  target: op.sender,
72
- targetCallData: this.encodeUserOperationCalldata({
90
+ targetCallData: await this.encodeUserOperationCalldata({
73
91
  op,
74
92
  entryPoint
75
93
  })
76
- }));
94
+ })));
77
95
  const targetOp = {
78
96
  op: toPackedUserOperation(userOperation),
79
97
  target,
@@ -102,7 +120,7 @@ export class GasEstimatorV07 {
102
120
  while (retryCount < maxRetries) {
103
121
  // OptimalGas represents the current lowest gasLimit, so we set the gasAllowance to search range minGas <-> optimalGas
104
122
  const gasAllowance = currentOptimalGas - currentMinGas;
105
- const binarySearchCallGasLimit = this.encodeBinarySearchGasLimit({
123
+ const binarySearchCallGasLimit = await this.encodeBinarySearchGasLimit({
106
124
  entryPoint,
107
125
  userOperation: targetOp,
108
126
  target,
@@ -117,10 +135,18 @@ export class GasEstimatorV07 {
117
135
  publicClient: this.config.publicClient,
118
136
  stateOverrides
119
137
  });
138
+ const isV8 = isVersion08(targetOp, entryPoint);
139
+ const entryPointSimulationsAddress = isV8
140
+ ? this.config.entrypointSimulationContractV8
141
+ : this.config.entrypointSimulationContractV7;
142
+ if (!entryPointSimulationsAddress) {
143
+ throw new Error(`Cannot find entryPointSimulationsAddress for version ${isV8 ? "08" : "07"}`);
144
+ }
120
145
  let cause = await this.callPimlicoEntryPointSimulations({
121
146
  entryPoint,
122
147
  entryPointSimulationsCallData: [binarySearchCallGasLimit],
123
- stateOverrides
148
+ stateOverrides,
149
+ entryPointSimulationsAddress
124
150
  });
125
151
  cause = cause.map((data) => {
126
152
  const decodedDelegateAndError = decodeErrorResult({
@@ -156,7 +182,7 @@ export class GasEstimatorV07 {
156
182
  };
157
183
  }
158
184
  async validateHandleOpV07({ entryPoint, userOperation, queuedUserOperations, stateOverrides = {} }) {
159
- const simulateHandleOpLast = this.encodeSimulateHandleOpLast({
185
+ const simulateHandleOpLast = await this.encodeSimulateHandleOpLast({
160
186
  entryPoint,
161
187
  userOperation,
162
188
  queuedUserOperations
@@ -166,11 +192,19 @@ export class GasEstimatorV07 {
166
192
  publicClient: this.config.publicClient,
167
193
  stateOverrides
168
194
  });
195
+ const isV8 = isVersion08(userOperation, entryPoint);
196
+ const entryPointSimulationsAddress = isV8
197
+ ? this.config.entrypointSimulationContractV8
198
+ : this.config.entrypointSimulationContractV7;
199
+ if (!entryPointSimulationsAddress) {
200
+ throw new Error(`Cannot find entryPointSimulationsAddress for version ${isV8 ? "08" : "07"}`);
201
+ }
169
202
  let cause = [
170
203
  (await this.callPimlicoEntryPointSimulations({
171
204
  entryPoint,
172
205
  entryPointSimulationsCallData: [simulateHandleOpLast],
173
- stateOverrides
206
+ stateOverrides,
207
+ entryPointSimulationsAddress
174
208
  }))[0]
175
209
  ];
176
210
  cause = cause.map((data) => {
@@ -209,12 +243,12 @@ export class GasEstimatorV07 {
209
243
  }
210
244
  }
211
245
  async simulateHandleOpV07({ entryPoint, userOperation, queuedUserOperations, stateOverrides = {} }) {
212
- const simulateHandleOpLast = this.encodeSimulateHandleOpLast({
246
+ const simulateHandleOpLast = await this.encodeSimulateHandleOpLast({
213
247
  entryPoint,
214
248
  userOperation,
215
249
  queuedUserOperations
216
250
  });
217
- const binarySearchVerificationGasLimit = this.encodeBinarySearchGasLimit({
251
+ const binarySearchVerificationGasLimit = await this.encodeBinarySearchGasLimit({
218
252
  initialMinGas: 9000n,
219
253
  entryPoint,
220
254
  userOperation,
@@ -224,7 +258,7 @@ export class GasEstimatorV07 {
224
258
  functionName: "binarySearchVerificationGasLimit"
225
259
  });
226
260
  const binarySearchPaymasterVerificationGasLimit = userOperation.paymaster
227
- ? this.encodeBinarySearchGasLimit({
261
+ ? await this.encodeBinarySearchGasLimit({
228
262
  initialMinGas: 9000n,
229
263
  entryPoint,
230
264
  userOperation,
@@ -234,13 +268,13 @@ export class GasEstimatorV07 {
234
268
  functionName: "binarySearchPaymasterVerificationGasLimit"
235
269
  })
236
270
  : null;
237
- const binarySearchCallGasLimit = this.encodeBinarySearchGasLimit({
271
+ const binarySearchCallGasLimit = await this.encodeBinarySearchGasLimit({
238
272
  initialMinGas: 9000n,
239
273
  entryPoint,
240
274
  userOperation,
241
275
  queuedUserOperations,
242
276
  target: userOperation.sender,
243
- targetCallData: this.encodeUserOperationCalldata({
277
+ targetCallData: await this.encodeUserOperationCalldata({
244
278
  op: userOperation,
245
279
  entryPoint
246
280
  }),
@@ -252,20 +286,29 @@ export class GasEstimatorV07 {
252
286
  stateOverrides
253
287
  });
254
288
  let cause;
289
+ const isV8 = isVersion08(userOperation, entryPoint);
290
+ const entryPointSimulationsAddress = isV8
291
+ ? this.config.entrypointSimulationContractV8
292
+ : this.config.entrypointSimulationContractV7;
293
+ if (!entryPointSimulationsAddress) {
294
+ throw new Error(`Cannot find entryPointSimulationsAddress for version ${isV8 ? "08" : "07"}`);
295
+ }
255
296
  if (this.config.splitSimulationCalls) {
256
297
  // due to Hedera specific restrictions, we can't combine these two calls.
257
298
  const [simulateHandleOpLastCause, binarySearchVerificationGasLimitCause, binarySearchPaymasterVerificationGasLimitCause, binarySearchCallGasLimitCause] = await Promise.all([
258
299
  this.callPimlicoEntryPointSimulations({
259
300
  entryPoint,
260
301
  entryPointSimulationsCallData: [simulateHandleOpLast],
261
- stateOverrides
302
+ stateOverrides,
303
+ entryPointSimulationsAddress
262
304
  }),
263
305
  this.callPimlicoEntryPointSimulations({
264
306
  entryPoint,
265
307
  entryPointSimulationsCallData: [
266
308
  binarySearchVerificationGasLimit
267
309
  ],
268
- stateOverrides
310
+ stateOverrides,
311
+ entryPointSimulationsAddress
269
312
  }),
270
313
  binarySearchPaymasterVerificationGasLimit
271
314
  ? this.callPimlicoEntryPointSimulations({
@@ -273,13 +316,15 @@ export class GasEstimatorV07 {
273
316
  entryPointSimulationsCallData: [
274
317
  binarySearchPaymasterVerificationGasLimit
275
318
  ],
276
- stateOverrides
319
+ stateOverrides,
320
+ entryPointSimulationsAddress
277
321
  })
278
322
  : null,
279
323
  this.callPimlicoEntryPointSimulations({
280
324
  entryPoint,
281
325
  entryPointSimulationsCallData: [binarySearchCallGasLimit],
282
- stateOverrides
326
+ stateOverrides,
327
+ entryPointSimulationsAddress
283
328
  })
284
329
  ]);
285
330
  cause = [
@@ -299,7 +344,8 @@ export class GasEstimatorV07 {
299
344
  binarySearchVerificationGasLimit,
300
345
  binarySearchPaymasterVerificationGasLimit
301
346
  ],
302
- stateOverrides
347
+ stateOverrides,
348
+ entryPointSimulationsAddress
303
349
  })
304
350
  : await this.callPimlicoEntryPointSimulations({
305
351
  entryPoint,
@@ -307,12 +353,14 @@ export class GasEstimatorV07 {
307
353
  simulateHandleOpLast,
308
354
  binarySearchVerificationGasLimit
309
355
  ],
310
- stateOverrides
356
+ stateOverrides,
357
+ entryPointSimulationsAddress
311
358
  }),
312
359
  await this.callPimlicoEntryPointSimulations({
313
360
  entryPoint,
314
361
  entryPointSimulationsCallData: [binarySearchCallGasLimit],
315
- stateOverrides
362
+ stateOverrides,
363
+ entryPointSimulationsAddress
316
364
  })
317
365
  ]);
318
366
  cause = [
@@ -422,7 +470,7 @@ export class GasEstimatorV07 {
422
470
  minGas,
423
471
  targetOp: userOperation,
424
472
  target: userOperation.sender,
425
- targetCallData: this.encodeUserOperationCalldata({
473
+ targetCallData: await this.encodeUserOperationCalldata({
426
474
  op: userOperation,
427
475
  entryPoint
428
476
  }),
@@ -453,12 +501,11 @@ export class GasEstimatorV07 {
453
501
  };
454
502
  }
455
503
  }
456
- async callPimlicoEntryPointSimulations({ entryPoint, entryPointSimulationsCallData, stateOverrides }) {
504
+ async callPimlicoEntryPointSimulations({ entryPoint, entryPointSimulationsCallData, stateOverrides, entryPointSimulationsAddress }) {
457
505
  const publicClient = this.config.publicClient;
458
506
  const blockTagSupport = this.config.blockTagSupport;
459
507
  const utilityWalletAddress = this.config.utilityPrivateKey?.address ??
460
508
  "0x4337000c2828F5260d8921fD25829F606b9E8680";
461
- const entryPointSimulationsAddress = this.config.entrypointSimulationContract;
462
509
  const fixedGasLimitForEstimation = this.config.fixedGasLimitForEstimation;
463
510
  if (!entryPointSimulationsAddress) {
464
511
  throw new RpcError("entryPointSimulationsAddress must be provided for V07 UserOperation", ValidationErrors.InvalidFields);