@pimlico/alto 0.0.0-main.20250430T222110 → 0.0.0-main.20250502T111711
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.
- package/esm/cli/config/bundler.d.ts +12 -6
- package/esm/cli/config/bundler.js +7 -2
- package/esm/cli/config/bundler.js.map +1 -1
- package/esm/cli/config/options.js +12 -5
- package/esm/cli/config/options.js.map +1 -1
- package/esm/executor/executorManager.d.ts +5 -4
- package/esm/executor/executorManager.js +22 -21
- package/esm/executor/executorManager.js.map +1 -1
- package/esm/handlers/gasPriceManager.d.ts +4 -1
- package/esm/handlers/gasPriceManager.js +5 -7
- package/esm/handlers/gasPriceManager.js.map +1 -1
- package/esm/mempool/reputationManager.d.ts +3 -3
- package/esm/mempool/reputationManager.js +1 -2
- package/esm/mempool/reputationManager.js.map +1 -1
- package/esm/rpc/estimation/gasEstimationsV06.js +6 -2
- package/esm/rpc/estimation/gasEstimationsV06.js.map +1 -1
- package/esm/rpc/methods/eth_estimateUserOperationGas.d.ts +2 -1
- package/esm/rpc/methods/eth_estimateUserOperationGas.js +164 -11
- package/esm/rpc/methods/eth_estimateUserOperationGas.js.map +1 -1
- package/esm/rpc/methods/eth_sendUserOperation.d.ts +9 -2
- package/esm/rpc/methods/eth_sendUserOperation.js +114 -17
- package/esm/rpc/methods/eth_sendUserOperation.js.map +1 -1
- package/esm/rpc/methods/pimlico_sendUserOperationNow.js +4 -1
- package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
- package/esm/rpc/rpcHandler.d.ts +7 -33
- package/esm/rpc/rpcHandler.js +96 -263
- package/esm/rpc/rpcHandler.js.map +1 -1
- package/esm/rpc/validation/UnsafeValidator.d.ts +1 -5
- package/esm/rpc/validation/UnsafeValidator.js +11 -14
- package/esm/rpc/validation/UnsafeValidator.js.map +1 -1
- package/esm/types/interfaces.d.ts +1 -5
- package/esm/utils/bigInt.d.ts +4 -0
- package/esm/utils/bigInt.js +9 -0
- package/esm/utils/bigInt.js.map +1 -1
- package/esm/utils/validation.js +26 -5
- package/esm/utils/validation.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,7 +16,10 @@ export const pimlicoSendUserOperationNowHandler = createMethodHandler({
|
|
|
16
16
|
chainId: rpcHandler.config.chainId,
|
|
17
17
|
publicClient: rpcHandler.config.publicClient
|
|
18
18
|
});
|
|
19
|
-
await rpcHandler.preMempoolChecks(
|
|
19
|
+
const [preMempoolValid, preMempoolError] = await rpcHandler.preMempoolChecks(userOperation, apiVersion);
|
|
20
|
+
if (!preMempoolValid) {
|
|
21
|
+
throw new RpcError(preMempoolError);
|
|
22
|
+
}
|
|
20
23
|
// Prepare bundle
|
|
21
24
|
const userOpInfo = {
|
|
22
25
|
userOp: userOperation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pimlico_sendUserOperationNow.js","sourceRoot":"","sources":["../../../rpc/methods/pimlico_sendUserOperationNow.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,WAAW,EACX,yBAAyB,EAC5B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EACH,QAAQ,EAGR,gBAAgB,EAChB,iCAAiC,EACpC,MAAM,aAAa,CAAA;AAEpB,MAAM,CAAC,MAAM,kCAAkC,GAAG,mBAAmB,CAAC;IAClE,MAAM,EAAE,8BAA8B;IACtC,MAAM,EAAE,iCAAiC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QAClD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,6BAA6B,EAAE,CAAC;YACnD,MAAM,IAAI,QAAQ,CACd,sDAAsD,EACtD,gBAAgB,CAAC,aAAa,CACjC,CAAA;QACL,CAAC;QAED,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"pimlico_sendUserOperationNow.js","sourceRoot":"","sources":["../../../rpc/methods/pimlico_sendUserOperationNow.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,WAAW,EACX,yBAAyB,EAC5B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EACH,QAAQ,EAGR,gBAAgB,EAChB,iCAAiC,EACpC,MAAM,aAAa,CAAA;AAEpB,MAAM,CAAC,MAAM,kCAAkC,GAAG,mBAAmB,CAAC;IAClE,MAAM,EAAE,8BAA8B;IACtC,MAAM,EAAE,iCAAiC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QAClD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,6BAA6B,EAAE,CAAC;YACnD,MAAM,IAAI,QAAQ,CACd,sDAAsD,EACtD,gBAAgB,CAAC,aAAa,CACjC,CAAA;QACL,CAAC;QAED,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,MAAM,CAAA;QAC1C,UAAU,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAA;QAElD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;YACtC,aAAa,EAAE,aAAa;YAC5B,iBAAiB,EAAE,UAAU;YAC7B,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;YAClC,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;SAC/C,CAAC,CAAA;QAEF,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GACpC,MAAM,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;QAEhE,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,MAAM,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAA;QACvC,CAAC;QAED,iBAAiB;QACjB,MAAM,UAAU,GAAe;YAC3B,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,MAAM,oBAAoB,CAAC;gBACnC,aAAa,EAAE,aAAa;gBAC5B,iBAAiB,EAAE,UAAU;gBAC7B,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;gBAClC,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;aAC/C,CAAC;YACF,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;YAC1B,kBAAkB,EAAE,CAAC;SACxB,CAAA;QACD,MAAM,MAAM,GAAwB;YAChC,UAAU;YACV,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC;gBAC/B,CAAC,CAAE,KAAe;gBAClB,CAAC,CAAE,KAAe;SACzB,CAAA;QACD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAA;QAClE,MAAM,MAAM,GACR,MAAM,UAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAEjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,QAAQ,CACd,0CAA0C,EAC1C,gBAAgB,CAAC,aAAa,CACjC,CAAA;QACL,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GACT,MAAM,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,yBAAyB,CAAC;YAC3D,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,GAAG;SACvB,CAAC,CAAA;QAEN,OAAO,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrD,CAAC;CACJ,CAAC,CAAA"}
|
package/esm/rpc/rpcHandler.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { type Executor, type ExecutorManager } from "../executor/index.js";
|
|
2
2
|
import type { EventManager, GasPriceManager } from "../handlers/index.js";
|
|
3
3
|
import type { InterfaceReputationManager, Mempool, Monitor } from "../mempool/index.js";
|
|
4
|
-
import type { ApiVersion, BundlerRequest
|
|
4
|
+
import type { ApiVersion, BundlerRequest } from "../types/index.js";
|
|
5
5
|
import { type Address, type InterfaceValidator, type UserOperation } from "../types/index.js";
|
|
6
6
|
import type { Logger, Metrics } from "../utils/index.js";
|
|
7
|
-
import { type Hex } from "viem";
|
|
8
7
|
import type { AltoConfig } from "../createConfig.js";
|
|
9
8
|
import type { MethodHandler } from "./createMethodHandler.js";
|
|
10
9
|
export declare class RpcHandler {
|
|
@@ -37,39 +36,14 @@ export declare class RpcHandler {
|
|
|
37
36
|
handleMethod(request: BundlerRequest, apiVersion: ApiVersion): Promise<any>;
|
|
38
37
|
ensureEntryPointIsSupported(entryPoint: Address): void;
|
|
39
38
|
ensureDebugEndpointsAreEnabled(methodName: string): void;
|
|
40
|
-
preMempoolChecks(
|
|
41
|
-
addToMempoolIfValid(userOperation: UserOperation, entryPoint: Address, apiVersion: ApiVersion): Promise<"added" | "queued">;
|
|
39
|
+
preMempoolChecks(userOperation: UserOperation, apiVersion: ApiVersion): Promise<[boolean, string]>;
|
|
42
40
|
validateEip7702Auth({ userOperation, validateSender }: {
|
|
43
41
|
userOperation: UserOperation;
|
|
44
42
|
validateSender?: boolean;
|
|
45
|
-
}): Promise<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
entryPoint: Address;
|
|
51
|
-
stateOverrides?: StateOverrides;
|
|
52
|
-
}): Promise<{
|
|
53
|
-
preVerificationGas: bigint;
|
|
54
|
-
verificationGasLimit: bigint;
|
|
55
|
-
callGasLimit: bigint;
|
|
56
|
-
paymasterVerificationGasLimit: bigint;
|
|
57
|
-
paymasterPostOpGasLimit: bigint;
|
|
58
|
-
verificationGas?: undefined;
|
|
59
|
-
} | {
|
|
60
|
-
preVerificationGas: bigint;
|
|
61
|
-
verificationGasLimit: bigint;
|
|
62
|
-
callGasLimit: bigint;
|
|
63
|
-
paymasterVerificationGasLimit?: undefined;
|
|
64
|
-
paymasterPostOpGasLimit?: undefined;
|
|
65
|
-
verificationGas?: undefined;
|
|
66
|
-
} | {
|
|
67
|
-
preVerificationGas: bigint;
|
|
68
|
-
verificationGas: bigint;
|
|
69
|
-
verificationGasLimit: bigint;
|
|
70
|
-
callGasLimit: bigint;
|
|
71
|
-
paymasterVerificationGasLimit?: undefined;
|
|
72
|
-
paymasterPostOpGasLimit?: undefined;
|
|
73
|
-
}>;
|
|
43
|
+
}): Promise<[
|
|
44
|
+
boolean,
|
|
45
|
+
string
|
|
46
|
+
]>;
|
|
47
|
+
getNonceSeq(userOperation: UserOperation, entryPoint: Address): Promise<bigint>;
|
|
74
48
|
}
|
|
75
49
|
//# sourceMappingURL=rpcHandler.d.ts.map
|
package/esm/rpc/rpcHandler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { calculateAA95GasFloor } from "../executor/index.js";
|
|
2
2
|
import { EntryPointV06Abi, EntryPointV07Abi, RpcError, ValidationErrors } from "../types/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { getNonceKeyAndSequence, isVersion06, isVersion07 } from "../utils/index.js";
|
|
4
4
|
import { getContract, zeroAddress } from "viem";
|
|
5
5
|
import { registerHandlers } from "./methods/index.js";
|
|
6
6
|
import { recoverAuthorizationAddress } from "viem/utils";
|
|
@@ -53,7 +53,7 @@ export class RpcHandler {
|
|
|
53
53
|
}
|
|
54
54
|
ensureEntryPointIsSupported(entryPoint) {
|
|
55
55
|
if (!this.config.entrypoints.includes(entryPoint)) {
|
|
56
|
-
throw new
|
|
56
|
+
throw new RpcError(`EntryPoint ${entryPoint} not supported, supported EntryPoints: ${this.config.entrypoints.join(", ")}`, ValidationErrors.InvalidFields);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
ensureDebugEndpointsAreEnabled(methodName) {
|
|
@@ -61,168 +61,145 @@ export class RpcHandler {
|
|
|
61
61
|
throw new RpcError(`${methodName} is only available in development environment`);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
async preMempoolChecks(
|
|
64
|
+
async preMempoolChecks(userOperation, apiVersion) {
|
|
65
65
|
if (this.config.legacyTransactions &&
|
|
66
66
|
userOperation.maxFeePerGas !== userOperation.maxPriorityFeePerGas) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
return [
|
|
68
|
+
false,
|
|
69
|
+
"maxPriorityFeePerGas must equal maxFeePerGas on chains that don't support EIP-1559"
|
|
70
|
+
];
|
|
70
71
|
}
|
|
71
72
|
if (apiVersion !== "v1" && !this.config.safeMode) {
|
|
72
|
-
await this.gasPriceManager.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
const { lowestMaxFeePerGas, lowestMaxPriorityFeePerGas } = await this.gasPriceManager.getLowestValidGasPrices();
|
|
74
|
+
const maxFeePerGas = userOperation.maxFeePerGas;
|
|
75
|
+
const maxPriorityFeePerGas = userOperation.maxPriorityFeePerGas;
|
|
76
|
+
if (maxFeePerGas < lowestMaxFeePerGas) {
|
|
77
|
+
return [
|
|
78
|
+
false,
|
|
79
|
+
`maxFeePerGas must be at least ${lowestMaxFeePerGas} (current maxFeePerGas: ${maxFeePerGas}) - use pimlico_getUserOperationGasPrice to get the current gas price`
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
if (maxPriorityFeePerGas < lowestMaxPriorityFeePerGas) {
|
|
83
|
+
return [
|
|
84
|
+
false,
|
|
85
|
+
`maxPriorityFeePerGas must be at least ${lowestMaxPriorityFeePerGas} (current maxPriorityFeePerGas: ${maxPriorityFeePerGas}) - use pimlico_getUserOperationGasPrice to get the current gas price`
|
|
86
|
+
];
|
|
87
|
+
}
|
|
76
88
|
}
|
|
77
89
|
if (userOperation.verificationGasLimit < 10000n) {
|
|
78
|
-
|
|
79
|
-
this.eventManager.emitFailedValidation(opHash, reason);
|
|
80
|
-
throw new RpcError(reason);
|
|
90
|
+
return [false, "verificationGasLimit must be at least 10000"];
|
|
81
91
|
}
|
|
82
|
-
this.logger.trace({ userOperation, entryPoint }, "beginning validation");
|
|
83
92
|
if (userOperation.preVerificationGas === 0n ||
|
|
84
93
|
userOperation.verificationGasLimit === 0n) {
|
|
85
|
-
|
|
86
|
-
this.eventManager.emitFailedValidation(opHash, reason);
|
|
87
|
-
throw new RpcError(reason);
|
|
94
|
+
return [false, "user operation gas limits must be larger than 0"];
|
|
88
95
|
}
|
|
89
|
-
const beneficiary = this.config.utilityPrivateKey?.address ||
|
|
90
|
-
privateKeyToAddress(generatePrivateKey());
|
|
91
96
|
const gasLimits = calculateAA95GasFloor({
|
|
92
97
|
userOps: [userOperation],
|
|
93
|
-
beneficiary
|
|
98
|
+
beneficiary: privateKeyToAddress(generatePrivateKey())
|
|
94
99
|
});
|
|
95
100
|
if (gasLimits > this.config.maxGasPerBundle) {
|
|
96
|
-
|
|
101
|
+
return [
|
|
102
|
+
false,
|
|
103
|
+
`User operation gas limits exceed the max gas per bundle: ${gasLimits} > ${this.config.maxGasPerBundle}`
|
|
104
|
+
];
|
|
97
105
|
}
|
|
98
|
-
|
|
99
|
-
// check if we want to bundle userOperation. If yes, add to mempool
|
|
100
|
-
async addToMempoolIfValid(userOperation, entryPoint, apiVersion) {
|
|
101
|
-
this.ensureEntryPointIsSupported(entryPoint);
|
|
102
|
-
const opHash = await getUserOperationHash({
|
|
103
|
-
userOperation: userOperation,
|
|
104
|
-
entryPointAddress: entryPoint,
|
|
105
|
-
chainId: this.config.chainId,
|
|
106
|
-
publicClient: this.config.publicClient
|
|
107
|
-
});
|
|
108
|
-
await this.preMempoolChecks(opHash, userOperation, apiVersion, entryPoint);
|
|
109
|
-
const currentNonceValue = await this.getNonceValue(userOperation, entryPoint);
|
|
110
|
-
const [, userOperationNonceValue] = getNonceKeyAndSequence(userOperation.nonce);
|
|
111
|
-
if (userOperationNonceValue < currentNonceValue) {
|
|
112
|
-
const reason = "UserOperation failed validation with reason: AA25 invalid account nonce";
|
|
113
|
-
this.eventManager.emitFailedValidation(opHash, reason, "AA25");
|
|
114
|
-
throw new RpcError(reason, ValidationErrors.InvalidFields);
|
|
115
|
-
}
|
|
116
|
-
if (userOperationNonceValue > currentNonceValue + 10n) {
|
|
117
|
-
const reason = "UserOperation failed validaiton with reason: AA25 invalid account nonce";
|
|
118
|
-
this.eventManager.emitFailedValidation(opHash, reason, "AA25");
|
|
119
|
-
throw new RpcError(reason, ValidationErrors.InvalidFields);
|
|
120
|
-
}
|
|
121
|
-
const queuedUserOperations = await this.mempool.getQueuedOustandingUserOps({
|
|
122
|
-
userOp: userOperation,
|
|
123
|
-
entryPoint
|
|
124
|
-
});
|
|
125
|
-
if (userOperationNonceValue >
|
|
126
|
-
currentNonceValue + BigInt(queuedUserOperations.length)) {
|
|
127
|
-
this.mempool.add(userOperation, entryPoint);
|
|
128
|
-
this.eventManager.emitQueued(opHash);
|
|
129
|
-
return "queued";
|
|
130
|
-
}
|
|
131
|
-
if (this.config.dangerousSkipUserOperationValidation) {
|
|
132
|
-
const [success, errorReason] = await this.mempool.add(userOperation, entryPoint);
|
|
133
|
-
if (!success) {
|
|
134
|
-
this.eventManager.emitFailedValidation(opHash, errorReason, getAAError(errorReason));
|
|
135
|
-
throw new RpcError(errorReason, ValidationErrors.InvalidFields);
|
|
136
|
-
}
|
|
137
|
-
return "added";
|
|
138
|
-
}
|
|
139
|
-
if (apiVersion !== "v1") {
|
|
140
|
-
await this.validator.validatePreVerificationGas({
|
|
141
|
-
userOperation,
|
|
142
|
-
entryPoint
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
await this.mempool.checkEntityMultipleRoleViolation(entryPoint, userOperation);
|
|
146
|
-
const validationResult = await this.validator.validateUserOperation({
|
|
147
|
-
userOperation,
|
|
148
|
-
queuedUserOperations,
|
|
149
|
-
entryPoint
|
|
150
|
-
});
|
|
151
|
-
await this.reputationManager.checkReputation(userOperation, entryPoint, validationResult);
|
|
152
|
-
await this.mempool.checkEntityMultipleRoleViolation(entryPoint, userOperation);
|
|
153
|
-
const [success, errorReason] = await this.mempool.add(userOperation, entryPoint, validationResult.referencedContracts);
|
|
154
|
-
if (!success) {
|
|
155
|
-
this.eventManager.emitFailedValidation(opHash, errorReason, getAAError(errorReason));
|
|
156
|
-
throw new RpcError(errorReason, ValidationErrors.InvalidFields);
|
|
157
|
-
}
|
|
158
|
-
return "added";
|
|
106
|
+
return [true, ""];
|
|
159
107
|
}
|
|
160
108
|
async validateEip7702Auth({ userOperation, validateSender = false }) {
|
|
161
109
|
if (!userOperation.eip7702Auth) {
|
|
162
|
-
|
|
110
|
+
return [true, ""];
|
|
163
111
|
}
|
|
164
112
|
if (!this.config.codeOverrideSupport) {
|
|
165
|
-
|
|
113
|
+
return [false, "eip7702Auth is not supported on this chain"];
|
|
166
114
|
}
|
|
167
115
|
// Check that auth is valid.
|
|
168
|
-
const
|
|
169
|
-
?
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
116
|
+
const delegationDesignator = "address" in userOperation.eip7702Auth
|
|
117
|
+
? userOperation.eip7702Auth.address
|
|
118
|
+
: userOperation.eip7702Auth.contractAddress;
|
|
119
|
+
// Fetch onchain data in parallel
|
|
120
|
+
const [sender, nonceOnChain, delegateCode] = await Promise.all([
|
|
121
|
+
validateSender
|
|
122
|
+
? recoverAuthorizationAddress({
|
|
123
|
+
authorization: {
|
|
124
|
+
address: delegationDesignator,
|
|
125
|
+
chainId: userOperation.eip7702Auth.chainId,
|
|
126
|
+
nonce: userOperation.eip7702Auth.nonce,
|
|
127
|
+
r: userOperation.eip7702Auth.r,
|
|
128
|
+
s: userOperation.eip7702Auth.s,
|
|
129
|
+
v: userOperation.eip7702Auth.v,
|
|
130
|
+
yParity: userOperation.eip7702Auth.yParity
|
|
131
|
+
}
|
|
132
|
+
})
|
|
133
|
+
: Promise.resolve(userOperation.sender),
|
|
134
|
+
this.config.publicClient.getTransactionCount({
|
|
135
|
+
address: userOperation.sender
|
|
136
|
+
}),
|
|
137
|
+
this.eip7702CodeCache.has(delegationDesignator)
|
|
138
|
+
? Promise.resolve("has-code")
|
|
139
|
+
: this.config.publicClient.getCode({
|
|
140
|
+
address: delegationDesignator
|
|
141
|
+
})
|
|
142
|
+
]);
|
|
186
143
|
if (userOperation.eip7702Auth.chainId !== this.config.chainId &&
|
|
187
144
|
userOperation.eip7702Auth.chainId !== 0) {
|
|
188
|
-
|
|
145
|
+
return [
|
|
146
|
+
false,
|
|
147
|
+
"Invalid EIP-7702 authorization: The chainId does not match the userOperation sender address"
|
|
148
|
+
];
|
|
189
149
|
}
|
|
190
150
|
if (![0, 1].includes(userOperation.eip7702Auth.yParity)) {
|
|
191
|
-
|
|
151
|
+
return [
|
|
152
|
+
false,
|
|
153
|
+
"Invalid EIP-7702 authorization: The yParity value must be either 0 or 1"
|
|
154
|
+
];
|
|
192
155
|
}
|
|
193
156
|
if (nonceOnChain !== userOperation.eip7702Auth.nonce) {
|
|
194
|
-
|
|
157
|
+
return [
|
|
158
|
+
false,
|
|
159
|
+
"Invalid EIP-7702 authorization: The nonce does not match the userOperation sender address"
|
|
160
|
+
];
|
|
195
161
|
}
|
|
196
162
|
if (sender !== userOperation.sender) {
|
|
197
|
-
|
|
163
|
+
return [
|
|
164
|
+
false,
|
|
165
|
+
"Invalid EIP-7702 authorization: The recovered signer address does not match the userOperation sender address"
|
|
166
|
+
];
|
|
198
167
|
}
|
|
199
168
|
if (isVersion06(userOperation) && userOperation.initCode !== "0x") {
|
|
200
|
-
|
|
169
|
+
return [
|
|
170
|
+
false,
|
|
171
|
+
"Invalid EIP-7702 authorization: UserOperation cannot contain initCode."
|
|
172
|
+
];
|
|
201
173
|
}
|
|
202
174
|
if (isVersion07(userOperation) &&
|
|
203
175
|
userOperation.factory !== "0x7702" &&
|
|
204
176
|
userOperation.factory !== null) {
|
|
205
|
-
|
|
177
|
+
return [
|
|
178
|
+
false,
|
|
179
|
+
"Invalid EIP-7702 authorization: UserOperation cannot contain factory that is neither null or 0x7702."
|
|
180
|
+
];
|
|
206
181
|
}
|
|
207
182
|
// Check delegation designator
|
|
208
|
-
const delegationDesignator = "address" in userOperation.eip7702Auth
|
|
209
|
-
? userOperation.eip7702Auth.address
|
|
210
|
-
: userOperation.eip7702Auth.contractAddress;
|
|
211
183
|
if (delegationDesignator === zeroAddress) {
|
|
212
|
-
|
|
184
|
+
return [
|
|
185
|
+
false,
|
|
186
|
+
"Invalid EIP-7702 authorization: Cannot delegate to the zero address."
|
|
187
|
+
];
|
|
213
188
|
}
|
|
189
|
+
// Use the delegateCode we already got from Promise.all
|
|
214
190
|
const hasCode = this.eip7702CodeCache.has(delegationDesignator);
|
|
215
191
|
if (!hasCode) {
|
|
216
|
-
const delegateCode = await this.config.publicClient.getCode({
|
|
217
|
-
address: delegationDesignator
|
|
218
|
-
});
|
|
219
192
|
if (delegateCode === undefined || delegateCode === "0x") {
|
|
220
|
-
|
|
193
|
+
return [
|
|
194
|
+
false,
|
|
195
|
+
`Invalid EIP-7702 authorization: Delegate ${delegationDesignator} has no code.`
|
|
196
|
+
];
|
|
221
197
|
}
|
|
222
198
|
this.eip7702CodeCache.set(delegationDesignator, true);
|
|
223
199
|
}
|
|
200
|
+
return [true, ""];
|
|
224
201
|
}
|
|
225
|
-
async
|
|
202
|
+
async getNonceSeq(userOperation, entryPoint) {
|
|
226
203
|
const entryPointContract = getContract({
|
|
227
204
|
address: entryPoint,
|
|
228
205
|
abi: isVersion06(userOperation)
|
|
@@ -236,152 +213,8 @@ export class RpcHandler {
|
|
|
236
213
|
const getNonceResult = await entryPointContract.read.getNonce([userOperation.sender, nonceKey], {
|
|
237
214
|
blockTag: "latest"
|
|
238
215
|
});
|
|
239
|
-
const [_,
|
|
240
|
-
return
|
|
241
|
-
}
|
|
242
|
-
async estimateGas({ apiVersion, userOperation, entryPoint, stateOverrides }) {
|
|
243
|
-
this.ensureEntryPointIsSupported(entryPoint);
|
|
244
|
-
if (userOperation.maxFeePerGas === 0n && !this.config.isGasFreeChain) {
|
|
245
|
-
throw new RpcError("user operation max fee per gas must be larger than 0 during gas estimation");
|
|
246
|
-
}
|
|
247
|
-
// Check if the nonce is valid
|
|
248
|
-
// If the nonce is less than the current nonce, the user operation has already been executed
|
|
249
|
-
// If the nonce is greater than the current nonce, we may have missing user operations in the mempool
|
|
250
|
-
const currentNonceValue = await this.getNonceValue(userOperation, entryPoint);
|
|
251
|
-
const [, userOperationNonceValue] = getNonceKeyAndSequence(userOperation.nonce);
|
|
252
|
-
let queuedUserOperations = [];
|
|
253
|
-
if (userOperationNonceValue < currentNonceValue) {
|
|
254
|
-
throw new RpcError("UserOperation reverted during simulation with reason: AA25 invalid account nonce", ValidationErrors.InvalidFields);
|
|
255
|
-
}
|
|
256
|
-
if (userOperationNonceValue > currentNonceValue) {
|
|
257
|
-
// Nonce queues are supported only for v7 user operations
|
|
258
|
-
if (isVersion06(userOperation)) {
|
|
259
|
-
throw new RpcError("UserOperation reverted during simulation with reason: AA25 invalid account nonce", ValidationErrors.InvalidFields);
|
|
260
|
-
}
|
|
261
|
-
queuedUserOperations =
|
|
262
|
-
await this.mempool.getQueuedOustandingUserOps({
|
|
263
|
-
userOp: userOperation,
|
|
264
|
-
entryPoint
|
|
265
|
-
});
|
|
266
|
-
if (userOperationNonceValue >
|
|
267
|
-
currentNonceValue + BigInt(queuedUserOperations.length)) {
|
|
268
|
-
throw new RpcError("UserOperation reverted during simulation with reason: AA25 invalid account nonce", ValidationErrors.InvalidFields);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
// Prepare userOperation for simulation
|
|
272
|
-
const { simulationVerificationGasLimit, simulationCallGasLimit, simulationPaymasterVerificationGasLimit, simulationPaymasterPostOpGasLimit } = this.config;
|
|
273
|
-
const simulationUserOperation = {
|
|
274
|
-
...userOperation,
|
|
275
|
-
maxFeePerGas: 1n,
|
|
276
|
-
maxPriorityFeePerGas: 1n,
|
|
277
|
-
preVerificationGas: 0n,
|
|
278
|
-
verificationGasLimit: simulationVerificationGasLimit,
|
|
279
|
-
callGasLimit: simulationCallGasLimit
|
|
280
|
-
};
|
|
281
|
-
if (isVersion07(simulationUserOperation)) {
|
|
282
|
-
simulationUserOperation.paymasterVerificationGasLimit =
|
|
283
|
-
simulationPaymasterVerificationGasLimit;
|
|
284
|
-
simulationUserOperation.paymasterPostOpGasLimit =
|
|
285
|
-
simulationPaymasterPostOpGasLimit;
|
|
286
|
-
}
|
|
287
|
-
// This is necessary because entryPoint pays
|
|
288
|
-
// min(maxFeePerGas, baseFee + maxPriorityFeePerGas) for the verification
|
|
289
|
-
// Since we don't want our estimations to depend upon baseFee, we set
|
|
290
|
-
// maxFeePerGas to maxPriorityFeePerGas
|
|
291
|
-
simulationUserOperation.maxPriorityFeePerGas =
|
|
292
|
-
simulationUserOperation.maxFeePerGas;
|
|
293
|
-
const executionResult = await this.validator.getExecutionResult({
|
|
294
|
-
userOperation: simulationUserOperation,
|
|
295
|
-
entryPoint,
|
|
296
|
-
queuedUserOperations,
|
|
297
|
-
stateOverrides: deepHexlify(stateOverrides)
|
|
298
|
-
});
|
|
299
|
-
let { verificationGasLimit, callGasLimit, paymasterVerificationGasLimit } = calcVerificationGasAndCallGasLimit(simulationUserOperation, executionResult.data.executionResult, executionResult.data);
|
|
300
|
-
let paymasterPostOpGasLimit = 0n;
|
|
301
|
-
if (!paymasterVerificationGasLimit &&
|
|
302
|
-
isVersion07(simulationUserOperation) &&
|
|
303
|
-
simulationUserOperation.paymaster !== null &&
|
|
304
|
-
"paymasterVerificationGasLimit" in
|
|
305
|
-
executionResult.data.executionResult) {
|
|
306
|
-
paymasterVerificationGasLimit =
|
|
307
|
-
executionResult.data.executionResult
|
|
308
|
-
.paymasterVerificationGasLimit || 1n;
|
|
309
|
-
paymasterVerificationGasLimit = scaleBigIntByPercent(paymasterVerificationGasLimit, this.config.paymasterGasLimitMultiplier);
|
|
310
|
-
}
|
|
311
|
-
if (isVersion07(simulationUserOperation) &&
|
|
312
|
-
simulationUserOperation.paymaster !== null &&
|
|
313
|
-
"paymasterPostOpGasLimit" in executionResult.data.executionResult) {
|
|
314
|
-
paymasterPostOpGasLimit =
|
|
315
|
-
executionResult.data.executionResult.paymasterPostOpGasLimit ||
|
|
316
|
-
1n;
|
|
317
|
-
const userOperationPaymasterPostOpGasLimit = "paymasterPostOpGasLimit" in userOperation
|
|
318
|
-
? userOperation.paymasterPostOpGasLimit ?? 1n
|
|
319
|
-
: 1n;
|
|
320
|
-
paymasterPostOpGasLimit = maxBigInt(userOperationPaymasterPostOpGasLimit, scaleBigIntByPercent(paymasterPostOpGasLimit, this.config.paymasterGasLimitMultiplier));
|
|
321
|
-
}
|
|
322
|
-
if (simulationUserOperation.callData === "0x") {
|
|
323
|
-
callGasLimit = 0n;
|
|
324
|
-
}
|
|
325
|
-
if (isVersion06(simulationUserOperation)) {
|
|
326
|
-
callGasLimit = scaleBigIntByPercent(callGasLimit, this.config.v6CallGasLimitMultiplier);
|
|
327
|
-
verificationGasLimit = scaleBigIntByPercent(verificationGasLimit, this.config.v6VerificationGasLimitMultiplier);
|
|
328
|
-
}
|
|
329
|
-
if (isVersion07(simulationUserOperation)) {
|
|
330
|
-
verificationGasLimit = scaleBigIntByPercent(verificationGasLimit, this.config.v7VerificationGasLimitMultiplier);
|
|
331
|
-
paymasterVerificationGasLimit = scaleBigIntByPercent(paymasterVerificationGasLimit, this.config.v7PaymasterVerificationGasLimitMultiplier);
|
|
332
|
-
callGasLimit = scaleBigIntByPercent(callGasLimit, this.config.v7CallGasLimitMultiplier);
|
|
333
|
-
paymasterPostOpGasLimit = scaleBigIntByPercent(paymasterPostOpGasLimit, this.config.v7PaymasterPostOpGasLimitMultiplier);
|
|
334
|
-
}
|
|
335
|
-
let preVerificationGas = await calcPreVerificationGas({
|
|
336
|
-
config: this.config,
|
|
337
|
-
userOperation: {
|
|
338
|
-
...userOperation,
|
|
339
|
-
callGasLimit, // use actual callGasLimit
|
|
340
|
-
verificationGasLimit, // use actual verificationGasLimit
|
|
341
|
-
paymasterPostOpGasLimit, // use actual paymasterPostOpGasLimit
|
|
342
|
-
paymasterVerificationGasLimit // use actual paymasterVerificationGasLimit
|
|
343
|
-
},
|
|
344
|
-
entryPoint,
|
|
345
|
-
gasPriceManager: this.gasPriceManager,
|
|
346
|
-
validate: false
|
|
347
|
-
});
|
|
348
|
-
preVerificationGas = scaleBigIntByPercent(preVerificationGas, 110n);
|
|
349
|
-
// Check if userOperation passes without estimation balance overrides
|
|
350
|
-
await this.validator.validateHandleOp({
|
|
351
|
-
userOperation: {
|
|
352
|
-
...userOperation,
|
|
353
|
-
preVerificationGas,
|
|
354
|
-
verificationGasLimit,
|
|
355
|
-
callGasLimit,
|
|
356
|
-
paymasterVerificationGasLimit,
|
|
357
|
-
paymasterPostOpGasLimit
|
|
358
|
-
},
|
|
359
|
-
entryPoint,
|
|
360
|
-
queuedUserOperations,
|
|
361
|
-
stateOverrides: deepHexlify(stateOverrides)
|
|
362
|
-
});
|
|
363
|
-
if (isVersion07(simulationUserOperation)) {
|
|
364
|
-
return {
|
|
365
|
-
preVerificationGas,
|
|
366
|
-
verificationGasLimit,
|
|
367
|
-
callGasLimit,
|
|
368
|
-
paymasterVerificationGasLimit,
|
|
369
|
-
paymasterPostOpGasLimit
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
if (apiVersion === "v2") {
|
|
373
|
-
return {
|
|
374
|
-
preVerificationGas,
|
|
375
|
-
verificationGasLimit,
|
|
376
|
-
callGasLimit
|
|
377
|
-
};
|
|
378
|
-
}
|
|
379
|
-
return {
|
|
380
|
-
preVerificationGas,
|
|
381
|
-
verificationGas: verificationGasLimit,
|
|
382
|
-
verificationGasLimit,
|
|
383
|
-
callGasLimit
|
|
384
|
-
};
|
|
216
|
+
const [_, currentNonceSeq] = getNonceKeyAndSequence(getNonceResult);
|
|
217
|
+
return currentNonceSeq;
|
|
385
218
|
}
|
|
386
219
|
}
|
|
387
220
|
//# sourceMappingURL=rpcHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpcHandler.js","sourceRoot":"","sources":["../../rpc/rpcHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpcHandler.js","sourceRoot":"","sources":["../../rpc/rpcHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ export declare class UnsafeValidator implements InterfaceValidator {
|
|
|
28
28
|
entryPoint: Address;
|
|
29
29
|
queuedUserOperations: UserOperation[];
|
|
30
30
|
stateOverrides?: StateOverrides;
|
|
31
|
-
}): Promise<SimulateHandleOpResult<"execution">>;
|
|
31
|
+
}): Promise<SimulateHandleOpResult<"execution" | "failed">>;
|
|
32
32
|
getValidationResultV06({ userOperation, entryPoint }: {
|
|
33
33
|
userOperation: UserOperationV06;
|
|
34
34
|
entryPoint: Address;
|
|
@@ -80,10 +80,6 @@ export declare class UnsafeValidator implements InterfaceValidator {
|
|
|
80
80
|
storageMap: StorageMap;
|
|
81
81
|
referencedContracts?: ReferencedCodeHashes;
|
|
82
82
|
}>;
|
|
83
|
-
validatePreVerificationGas({ userOperation, entryPoint }: {
|
|
84
|
-
userOperation: UserOperation;
|
|
85
|
-
entryPoint: Address;
|
|
86
|
-
}): Promise<void>;
|
|
87
83
|
validateUserOperation({ userOperation, queuedUserOperations, entryPoint }: {
|
|
88
84
|
userOperation: UserOperation;
|
|
89
85
|
queuedUserOperations: UserOperation[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EntryPointV06Abi, ExecutionErrors, RpcError, ValidationErrors, entryPointExecutionErrorSchemaV06, entryPointExecutionErrorSchemaV07 } from "../../types/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { isVersion06 } from "../../utils/index.js";
|
|
3
3
|
import * as sentry from "@sentry/node";
|
|
4
4
|
import { BaseError, ContractFunctionExecutionError, getContract, pad, slice, toHex, zeroAddress } from "viem";
|
|
5
5
|
import { fromZodError } from "zod-validation-error";
|
|
@@ -91,8 +91,17 @@ export class UnsafeValidator {
|
|
|
91
91
|
let errorCode = ExecutionErrors.UserOperationReverted;
|
|
92
92
|
if (error.data.toString().includes("AA23")) {
|
|
93
93
|
errorCode = ValidationErrors.SimulateValidation;
|
|
94
|
+
return {
|
|
95
|
+
result: "failed",
|
|
96
|
+
data: error.data,
|
|
97
|
+
code: errorCode
|
|
98
|
+
};
|
|
94
99
|
}
|
|
95
|
-
|
|
100
|
+
return {
|
|
101
|
+
result: "failed",
|
|
102
|
+
data: `UserOperation reverted during simulation with reason: ${error.data}`,
|
|
103
|
+
code: errorCode
|
|
104
|
+
};
|
|
96
105
|
}
|
|
97
106
|
return error;
|
|
98
107
|
}
|
|
@@ -244,18 +253,6 @@ export class UnsafeValidator {
|
|
|
244
253
|
entryPoint
|
|
245
254
|
});
|
|
246
255
|
}
|
|
247
|
-
async validatePreVerificationGas({ userOperation, entryPoint }) {
|
|
248
|
-
const preVerificationGas = await calcPreVerificationGas({
|
|
249
|
-
config: this.config,
|
|
250
|
-
userOperation,
|
|
251
|
-
entryPoint,
|
|
252
|
-
gasPriceManager: this.gasPriceManager,
|
|
253
|
-
validate: true
|
|
254
|
-
});
|
|
255
|
-
if (preVerificationGas > userOperation.preVerificationGas) {
|
|
256
|
-
throw new RpcError(`preVerificationGas is not enough, required: ${preVerificationGas}, got: ${userOperation.preVerificationGas}`, ValidationErrors.SimulateValidation);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
256
|
async validateUserOperation({ userOperation, queuedUserOperations, entryPoint }) {
|
|
260
257
|
try {
|
|
261
258
|
const validationResult = await this.getValidationResult({
|