@pimlico/alto 0.0.0-main.20250627T074103 → 0.0.0-main.20250702T200919
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/contracts/ERC165.sol/ERC165.json +1 -1
- package/contracts/EntryPoint.sol/EntryPoint.json +1 -1
- package/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
- package/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
- package/contracts/IERC165.sol/IERC165.json +1 -1
- package/contracts/SenderCreator.sol/SenderCreator.json +1 -1
- package/contracts/build-info/{004071c167bc55de.json → a404540bf9e30752.json} +1 -1
- package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
- package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
- package/esm/executor/executorManager.js +1 -1
- package/esm/executor/executorManager.js.map +1 -1
- package/esm/executor/filterOpsAndEstimateGas.js +3 -3
- package/esm/executor/filterOpsAndEstimateGas.js.map +1 -1
- package/esm/executor/getBundleStatus.js +2 -2
- package/esm/executor/getBundleStatus.js.map +1 -1
- package/esm/executor/userOpMonitor.d.ts +1 -1
- package/esm/executor/userOpMonitor.js +17 -17
- package/esm/executor/userOpMonitor.js.map +1 -1
- package/esm/executor/utils.js +2 -2
- package/esm/executor/utils.js.map +1 -1
- package/esm/handlers/eventManager.d.ts +9 -9
- package/esm/handlers/eventManager.js +22 -22
- package/esm/handlers/eventManager.js.map +1 -1
- package/esm/handlers/gasPriceManager.js +1 -1
- package/esm/handlers/gasPriceManager.js.map +1 -1
- package/esm/mempool/mempool.js +17 -17
- package/esm/mempool/mempool.js.map +1 -1
- package/esm/mempool/monitoring.d.ts +3 -3
- package/esm/mempool/monitoring.js +11 -11
- package/esm/mempool/monitoring.js.map +1 -1
- package/esm/mempool/reputationManager.d.ts +26 -26
- package/esm/mempool/reputationManager.js +65 -65
- package/esm/mempool/reputationManager.js.map +1 -1
- package/esm/rpc/estimation/gasEstimationHandler.d.ts +12 -11
- package/esm/rpc/estimation/gasEstimationHandler.js +21 -21
- package/esm/rpc/estimation/gasEstimationHandler.js.map +1 -1
- package/esm/rpc/estimation/gasEstimations06.d.ts +3 -3
- package/esm/rpc/estimation/gasEstimations06.js +5 -5
- package/esm/rpc/estimation/gasEstimations06.js.map +1 -1
- package/esm/rpc/estimation/gasEstimations07.d.ts +13 -11
- package/esm/rpc/estimation/gasEstimations07.js +55 -36
- package/esm/rpc/estimation/gasEstimations07.js.map +1 -1
- package/esm/rpc/estimation/utils.d.ts +3 -3
- package/esm/rpc/estimation/utils.js +2 -2
- package/esm/rpc/estimation/utils.js.map +1 -1
- package/esm/rpc/methods/boost_sendUserOperation.js +14 -15
- package/esm/rpc/methods/boost_sendUserOperation.js.map +1 -1
- package/esm/rpc/methods/eth_estimateUserOperationGas.js +27 -29
- package/esm/rpc/methods/eth_estimateUserOperationGas.js.map +1 -1
- package/esm/rpc/methods/eth_getUserOperationByHash.js +6 -6
- package/esm/rpc/methods/eth_getUserOperationByHash.js.map +1 -1
- package/esm/rpc/methods/eth_getUserOperationReceipt.js +3 -3
- package/esm/rpc/methods/eth_getUserOperationReceipt.js.map +1 -1
- package/esm/rpc/methods/eth_sendUserOperation.d.ts +2 -2
- package/esm/rpc/methods/eth_sendUserOperation.js +33 -34
- package/esm/rpc/methods/eth_sendUserOperation.js.map +1 -1
- package/esm/rpc/methods/pimlico_getUserOperationStatus.js +2 -2
- package/esm/rpc/methods/pimlico_getUserOperationStatus.js.map +1 -1
- package/esm/rpc/methods/pimlico_sendUserOperationNow.js +11 -11
- package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
- package/esm/rpc/rpcHandler.d.ts +4 -4
- package/esm/rpc/rpcHandler.js +34 -36
- package/esm/rpc/rpcHandler.js.map +1 -1
- package/esm/rpc/validation/SafeValidator.d.ts +11 -11
- package/esm/rpc/validation/SafeValidator.js +35 -32
- package/esm/rpc/validation/SafeValidator.js.map +1 -1
- package/esm/rpc/validation/TracerResultParserV06.d.ts +2 -2
- package/esm/rpc/validation/TracerResultParserV06.js +4 -4
- package/esm/rpc/validation/TracerResultParserV06.js.map +1 -1
- package/esm/rpc/validation/TracerResultParserV07.d.ts +2 -2
- package/esm/rpc/validation/TracerResultParserV07.js +8 -8
- package/esm/rpc/validation/TracerResultParserV07.js.map +1 -1
- package/esm/rpc/validation/UnsafeValidator.d.ts +17 -17
- package/esm/rpc/validation/UnsafeValidator.js +40 -34
- package/esm/rpc/validation/UnsafeValidator.js.map +1 -1
- package/esm/store/createMemoryOutstandingStore.js +4 -4
- package/esm/store/createMemoryOutstandingStore.js.map +1 -1
- package/esm/store/createMempoolStore.js +2 -2
- package/esm/store/createMempoolStore.js.map +1 -1
- package/esm/store/createRedisOutstandingStore.js +4 -4
- package/esm/store/createRedisOutstandingStore.js.map +1 -1
- package/esm/types/interfaces.d.ts +12 -12
- package/esm/utils/entryPointOverrides.d.ts +0 -4
- package/esm/utils/entryPointOverrides.js +4 -11
- package/esm/utils/entryPointOverrides.js.map +1 -1
- package/esm/utils/helpers.d.ts +2 -2
- package/esm/utils/helpers.js +2 -2
- package/esm/utils/helpers.js.map +1 -1
- package/esm/utils/metrics.d.ts +9 -9
- package/esm/utils/metrics.js +18 -18
- package/esm/utils/metrics.js.map +1 -1
- package/esm/utils/preVerificationGasCalulator.d.ts +3 -3
- package/esm/utils/preVerificationGasCalulator.js +13 -13
- package/esm/utils/preVerificationGasCalulator.js.map +1 -1
- package/esm/utils/userop.d.ts +15 -15
- package/esm/utils/userop.js +77 -77
- package/esm/utils/userop.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,21 +3,20 @@ import { boostSendUserOperationSchema } from "../../types/schemas.js";
|
|
|
3
3
|
import { createMethodHandler } from "../createMethodHandler.js";
|
|
4
4
|
import { addToMempoolIfValid } from "./eth_sendUserOperation.js";
|
|
5
5
|
import { RpcError } from "../../types/index.js";
|
|
6
|
-
const
|
|
7
|
-
if (
|
|
8
|
-
userOperation.maxPriorityFeePerGas !== 0n) {
|
|
6
|
+
const validateUserOp = ({ userOp }) => {
|
|
7
|
+
if (userOp.maxFeePerGas !== 0n || userOp.maxPriorityFeePerGas !== 0n) {
|
|
9
8
|
throw new RpcError("maxFeePerGas and maxPriorityFeePerGas must be 0 for a boosted user operation");
|
|
10
9
|
}
|
|
11
|
-
if (isVersion06(
|
|
12
|
-
if (
|
|
10
|
+
if (isVersion06(userOp)) {
|
|
11
|
+
if (userOp.paymasterAndData !== "0x") {
|
|
13
12
|
throw new RpcError("Paymaster is not supported for boosted user operations. paymasterAndData must be '0x'");
|
|
14
13
|
}
|
|
15
14
|
}
|
|
16
|
-
if (isVersion07(
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
if (isVersion07(userOp)) {
|
|
16
|
+
if (userOp.paymaster ||
|
|
17
|
+
userOp.paymasterData ||
|
|
18
|
+
userOp.paymasterPostOpGasLimit ||
|
|
19
|
+
userOp.paymasterVerificationGasLimit) {
|
|
21
20
|
throw new RpcError("Paymaster is not supported for boosted user operations. All paymaster fields must be empty");
|
|
22
21
|
}
|
|
23
22
|
}
|
|
@@ -26,13 +25,13 @@ export const boostSendUserOperationHandler = createMethodHandler({
|
|
|
26
25
|
method: "boost_sendUserOperation",
|
|
27
26
|
schema: boostSendUserOperationSchema,
|
|
28
27
|
handler: async ({ rpcHandler, params, apiVersion }) => {
|
|
29
|
-
const [
|
|
30
|
-
|
|
28
|
+
const [userOp, entryPoint] = params;
|
|
29
|
+
validateUserOp({ userOp });
|
|
31
30
|
let status = "rejected";
|
|
32
31
|
try {
|
|
33
32
|
const { result, userOpHash } = await addToMempoolIfValid({
|
|
34
33
|
rpcHandler,
|
|
35
|
-
|
|
34
|
+
userOp,
|
|
36
35
|
entryPoint,
|
|
37
36
|
apiVersion,
|
|
38
37
|
boost: true
|
|
@@ -46,10 +45,10 @@ export const boostSendUserOperationHandler = createMethodHandler({
|
|
|
46
45
|
throw error;
|
|
47
46
|
}
|
|
48
47
|
finally {
|
|
49
|
-
rpcHandler.metrics.
|
|
48
|
+
rpcHandler.metrics.userOpsReceived
|
|
50
49
|
.labels({
|
|
51
50
|
status,
|
|
52
|
-
type: !!
|
|
51
|
+
type: !!userOp.eip7702Auth ? "7702" : "boost"
|
|
53
52
|
})
|
|
54
53
|
.inc();
|
|
55
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boost_sendUserOperation.js","sourceRoot":"","sources":["../../../rpc/methods/boost_sendUserOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EACH,4BAA4B,EAE/B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,
|
|
1
|
+
{"version":3,"file":"boost_sendUserOperation.js","sourceRoot":"","sources":["../../../rpc/methods/boost_sendUserOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EACH,4BAA4B,EAE/B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,cAAc,GAAG,CAAC,EAAE,MAAM,EAA6B,EAAE,EAAE;IAC7D,IAAI,MAAM,CAAC,YAAY,KAAK,EAAE,IAAI,MAAM,CAAC,oBAAoB,KAAK,EAAE,EAAE,CAAC;QACnE,MAAM,IAAI,QAAQ,CACd,8EAA8E,CACjF,CAAA;IACL,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,QAAQ,CACd,uFAAuF,CAC1F,CAAA;QACL,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,IACI,MAAM,CAAC,SAAS;YAChB,MAAM,CAAC,aAAa;YACpB,MAAM,CAAC,uBAAuB;YAC9B,MAAM,CAAC,6BAA6B,EACtC,CAAC;YACC,MAAM,IAAI,QAAQ,CACd,4FAA4F,CAC/F,CAAA;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,mBAAmB,CAAC;IAC7D,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,4BAA4B;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QAClD,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,CAAA;QAEnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QAE1B,IAAI,MAAM,GAAoC,UAAU,CAAA;QACxD,IAAI,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,mBAAmB,CAAC;gBACrD,UAAU;gBACV,MAAM;gBACN,UAAU;gBACV,UAAU;gBACV,KAAK,EAAE,IAAI;aACd,CAAC,CAAA;YAEF,MAAM,GAAG,MAAM,CAAA;YAEf,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAEhD,OAAO,UAAU,CAAA;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,UAAU,CAAA;YACnB,MAAM,KAAK,CAAA;QACf,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,OAAO,CAAC,eAAe;iBAC7B,MAAM,CAAC;gBACJ,MAAM;gBACN,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;aAChD,CAAC;iBACD,GAAG,EAAE,CAAA;QACd,CAAC;IACL,CAAC;CACJ,CAAC,CAAA"}
|
|
@@ -4,14 +4,13 @@ import { calcExecutionPvgComponent, calcL2PvgComponent } from "../../utils/preVe
|
|
|
4
4
|
import { createMethodHandler } from "../createMethodHandler.js";
|
|
5
5
|
import { RpcError, ValidationErrors, estimateUserOperationGasSchema } from "../../types/index.js";
|
|
6
6
|
import { parseEther, toHex } from "viem";
|
|
7
|
-
function calcVerificationGasAndCallGasLimit(
|
|
7
|
+
function calcVerificationGasAndCallGasLimit(userOp, executionResult, gasLimits) {
|
|
8
8
|
const verificationGasLimit = gasLimits?.verificationGasLimit ??
|
|
9
|
-
scaleBigIntByPercent(executionResult.preOpGas -
|
|
9
|
+
scaleBigIntByPercent(executionResult.preOpGas - userOp.preVerificationGas, 150n);
|
|
10
10
|
const calculatedCallGasLimit = gasLimits?.callGasLimit ??
|
|
11
|
-
executionResult.paid /
|
|
12
|
-
executionResult.preOpGas;
|
|
11
|
+
executionResult.paid / userOp.maxFeePerGas - executionResult.preOpGas;
|
|
13
12
|
let callGasLimit = maxBigInt(calculatedCallGasLimit, 9000n);
|
|
14
|
-
if (isVersion06(
|
|
13
|
+
if (isVersion06(userOp)) {
|
|
15
14
|
callGasLimit += 21000n + 50000n;
|
|
16
15
|
}
|
|
17
16
|
return {
|
|
@@ -20,7 +19,7 @@ function calcVerificationGasAndCallGasLimit(userOperation, executionResult, gasL
|
|
|
20
19
|
paymasterVerificationGasLimit: gasLimits?.paymasterVerificationGasLimit ?? 0n
|
|
21
20
|
};
|
|
22
21
|
}
|
|
23
|
-
const getGasEstimates = async ({ rpcHandler,
|
|
22
|
+
const getGasEstimates = async ({ rpcHandler, userOp, entryPoint, stateOverrides }) => {
|
|
24
23
|
// Prepare userOperation for simulation.
|
|
25
24
|
const { simulationVerificationGasLimit, simulationCallGasLimit, simulationPaymasterVerificationGasLimit, simulationPaymasterPostOpGasLimit, paymasterGasLimitMultiplier, v6CallGasLimitMultiplier, v6VerificationGasLimitMultiplier, v7VerificationGasLimitMultiplier, v7PaymasterVerificationGasLimitMultiplier, v7CallGasLimitMultiplier, v7PaymasterPostOpGasLimitMultiplier } = rpcHandler.config;
|
|
26
25
|
// Create a deep mutable copy of stateOverrides to avoid modifying frozen objects
|
|
@@ -32,12 +31,12 @@ const getGasEstimates = async ({ rpcHandler, userOperation, entryPoint, stateOve
|
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
// Get queued userOps.
|
|
35
|
-
const
|
|
36
|
-
userOp
|
|
34
|
+
const queuedUserOps = await rpcHandler.mempool.getQueuedOustandingUserOps({
|
|
35
|
+
userOp,
|
|
37
36
|
entryPoint
|
|
38
37
|
});
|
|
39
38
|
const simulationUserOp = {
|
|
40
|
-
...
|
|
39
|
+
...userOp,
|
|
41
40
|
maxFeePerGas: 1n,
|
|
42
41
|
maxPriorityFeePerGas: 1n,
|
|
43
42
|
preVerificationGas: 0n,
|
|
@@ -45,10 +44,9 @@ const getGasEstimates = async ({ rpcHandler, userOperation, entryPoint, stateOve
|
|
|
45
44
|
callGasLimit: simulationCallGasLimit
|
|
46
45
|
};
|
|
47
46
|
// Boosted userOperation must be simulated with maxFeePerGas/maxPriorityFeePerGas = 0.
|
|
48
|
-
const isBoosted =
|
|
49
|
-
userOperation.maxPriorityFeePerGas === 0n;
|
|
47
|
+
const isBoosted = userOp.maxFeePerGas === 0n && userOp.maxPriorityFeePerGas === 0n;
|
|
50
48
|
if (isBoosted) {
|
|
51
|
-
const sender =
|
|
49
|
+
const sender = userOp.sender;
|
|
52
50
|
if (mutableStateOverrides === undefined) {
|
|
53
51
|
mutableStateOverrides = {};
|
|
54
52
|
}
|
|
@@ -67,8 +65,8 @@ const getGasEstimates = async ({ rpcHandler, userOperation, entryPoint, stateOve
|
|
|
67
65
|
simulationPaymasterPostOpGasLimit;
|
|
68
66
|
}
|
|
69
67
|
const executionResult = await rpcHandler.validator.getExecutionResult({
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
userOp: simulationUserOp,
|
|
69
|
+
queuedUserOps,
|
|
72
70
|
entryPoint,
|
|
73
71
|
stateOverrides: deepHexlify(mutableStateOverrides)
|
|
74
72
|
});
|
|
@@ -97,10 +95,10 @@ const getGasEstimates = async ({ rpcHandler, userOperation, entryPoint, stateOve
|
|
|
97
95
|
"paymasterPostOpGasLimit" in successResult.data.executionResult) {
|
|
98
96
|
paymasterPostOpGasLimit =
|
|
99
97
|
successResult.data.executionResult.paymasterPostOpGasLimit || 1n;
|
|
100
|
-
const
|
|
101
|
-
? (
|
|
98
|
+
const userOpPaymasterPostOpGasLimit = "paymasterPostOpGasLimit" in userOp
|
|
99
|
+
? (userOp.paymasterPostOpGasLimit ?? 1n)
|
|
102
100
|
: 1n;
|
|
103
|
-
paymasterPostOpGasLimit = maxBigInt(
|
|
101
|
+
paymasterPostOpGasLimit = maxBigInt(userOpPaymasterPostOpGasLimit, scaleBigIntByPercent(paymasterPostOpGasLimit, paymasterGasLimitMultiplier));
|
|
104
102
|
}
|
|
105
103
|
if (simulationUserOp.callData === "0x") {
|
|
106
104
|
callGasLimit = 0n;
|
|
@@ -123,31 +121,31 @@ const getGasEstimates = async ({ rpcHandler, userOperation, entryPoint, stateOve
|
|
|
123
121
|
paymasterVerificationGasLimit,
|
|
124
122
|
paymasterPostOpGasLimit
|
|
125
123
|
},
|
|
126
|
-
|
|
124
|
+
queuedUserOps
|
|
127
125
|
};
|
|
128
126
|
};
|
|
129
127
|
export const ethEstimateUserOperationGasHandler = createMethodHandler({
|
|
130
128
|
method: "eth_estimateUserOperationGas",
|
|
131
129
|
schema: estimateUserOperationGasSchema,
|
|
132
130
|
handler: async ({ rpcHandler, apiVersion, params }) => {
|
|
133
|
-
const [
|
|
131
|
+
const [userOp, entryPoint, stateOverrides] = params;
|
|
134
132
|
rpcHandler.ensureEntryPointIsSupported(entryPoint);
|
|
135
133
|
// Extract all config values at the beginning
|
|
136
134
|
const { supportsEip7623, v7PreVerificationGasLimitMultiplier, v6PreVerificationGasLimitMultiplier } = rpcHandler.config;
|
|
137
135
|
// Execute multiple async operations in parallel
|
|
138
136
|
let [[validEip7702Auth, validEip7702AuthError], gasEstimateResult, l2GasComponent] = await Promise.all([
|
|
139
137
|
rpcHandler.validateEip7702Auth({
|
|
140
|
-
|
|
138
|
+
userOp
|
|
141
139
|
}),
|
|
142
140
|
getGasEstimates({
|
|
143
141
|
rpcHandler,
|
|
144
|
-
|
|
142
|
+
userOp,
|
|
145
143
|
entryPoint,
|
|
146
144
|
stateOverrides
|
|
147
145
|
}),
|
|
148
146
|
calcL2PvgComponent({
|
|
149
147
|
config: rpcHandler.config,
|
|
150
|
-
|
|
148
|
+
userOp,
|
|
151
149
|
entryPoint,
|
|
152
150
|
gasPriceManager: rpcHandler.gasPriceManager,
|
|
153
151
|
validate: false
|
|
@@ -163,7 +161,7 @@ export const ethEstimateUserOperationGasHandler = createMethodHandler({
|
|
|
163
161
|
}
|
|
164
162
|
// Now calculate execution gas component with the estimated gas values
|
|
165
163
|
const userOpWithEstimatedGas = {
|
|
166
|
-
...
|
|
164
|
+
...userOp,
|
|
167
165
|
...gasEstimateResult.estimates
|
|
168
166
|
};
|
|
169
167
|
const executionGasComponent = calcExecutionPvgComponent({
|
|
@@ -174,26 +172,26 @@ export const ethEstimateUserOperationGasHandler = createMethodHandler({
|
|
|
174
172
|
// Calculate total preVerificationGas by summing both components
|
|
175
173
|
let preVerificationGas = executionGasComponent + l2GasComponent;
|
|
176
174
|
// Add multipliers to pvg
|
|
177
|
-
if (isVersion07(
|
|
175
|
+
if (isVersion07(userOp)) {
|
|
178
176
|
preVerificationGas = scaleBigIntByPercent(preVerificationGas, v7PreVerificationGasLimitMultiplier);
|
|
179
177
|
}
|
|
180
|
-
if (isVersion06(
|
|
178
|
+
if (isVersion06(userOp)) {
|
|
181
179
|
preVerificationGas = scaleBigIntByPercent(preVerificationGas, v6PreVerificationGasLimitMultiplier);
|
|
182
180
|
}
|
|
183
181
|
// Check if userOperation passes without estimation balance overrides (will throw error if it fails validation)
|
|
184
182
|
await rpcHandler.validator.validateHandleOp({
|
|
185
|
-
|
|
186
|
-
...
|
|
183
|
+
userOp: {
|
|
184
|
+
...userOp,
|
|
187
185
|
...gasEstimateResult.estimates, // use actual callGasLimit, verificationGasLimit, paymasterPostOpGasLimit, paymasterVerificationGasLimit
|
|
188
186
|
preVerificationGas
|
|
189
187
|
},
|
|
190
|
-
|
|
188
|
+
queuedUserOps: gasEstimateResult.queuedUserOps,
|
|
191
189
|
entryPoint,
|
|
192
190
|
stateOverrides: deepHexlify(stateOverrides)
|
|
193
191
|
});
|
|
194
192
|
// Extrace values for returning
|
|
195
193
|
const { verificationGasLimit, callGasLimit, paymasterVerificationGasLimit, paymasterPostOpGasLimit } = gasEstimateResult.estimates;
|
|
196
|
-
if (isVersion07(
|
|
194
|
+
if (isVersion07(userOp)) {
|
|
197
195
|
return {
|
|
198
196
|
preVerificationGas,
|
|
199
197
|
verificationGasLimit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_estimateUserOperationGas.js","sourceRoot":"","sources":["../../../rpc/methods/eth_estimateUserOperationGas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EACH,yBAAyB,EACzB,kBAAkB,EACrB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAEH,QAAQ,EAGR,gBAAgB,EAChB,8BAA8B,EACjC,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAmBxC,SAAS,kCAAkC,CACvC,
|
|
1
|
+
{"version":3,"file":"eth_estimateUserOperationGas.js","sourceRoot":"","sources":["../../../rpc/methods/eth_estimateUserOperationGas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getAbiItem, TransactionNotFoundError, decodeFunctionData, toFunctionSelector, slice, getAddress } from "viem";
|
|
2
|
-
import {
|
|
2
|
+
import { toUnpackedUserOp } from "../../utils/userop.js";
|
|
3
3
|
import { createMethodHandler } from "../createMethodHandler.js";
|
|
4
4
|
import { EntryPointV06Abi, EntryPointV07Abi, getUserOperationByHashSchema } from "../../types/index.js";
|
|
5
|
-
const
|
|
5
|
+
const userOpEventAbiItem = getAbiItem({
|
|
6
6
|
abi: EntryPointV06Abi,
|
|
7
7
|
name: "UserOperationEvent"
|
|
8
8
|
});
|
|
@@ -10,7 +10,7 @@ export const ethGetUserOperationByHashHandler = createMethodHandler({
|
|
|
10
10
|
method: "eth_getUserOperationByHash",
|
|
11
11
|
schema: getUserOperationByHashSchema,
|
|
12
12
|
handler: async ({ rpcHandler, params }) => {
|
|
13
|
-
const [
|
|
13
|
+
const [userOpHash] = params;
|
|
14
14
|
let fromBlock;
|
|
15
15
|
let toBlock;
|
|
16
16
|
if (rpcHandler.config.maxBlockRange !== undefined) {
|
|
@@ -23,11 +23,11 @@ export const ethGetUserOperationByHashHandler = createMethodHandler({
|
|
|
23
23
|
}
|
|
24
24
|
const filterResult = await rpcHandler.config.publicClient.getLogs({
|
|
25
25
|
address: rpcHandler.config.entrypoints,
|
|
26
|
-
event:
|
|
26
|
+
event: userOpEventAbiItem,
|
|
27
27
|
fromBlock,
|
|
28
28
|
toBlock,
|
|
29
29
|
args: {
|
|
30
|
-
userOpHash
|
|
30
|
+
userOpHash
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
33
|
if (filterResult.length === 0) {
|
|
@@ -77,7 +77,7 @@ export const ethGetUserOperationByHashHandler = createMethodHandler({
|
|
|
77
77
|
});
|
|
78
78
|
const handleOpsV07Selector = toFunctionSelector(handleOpsV07AbiItem);
|
|
79
79
|
if (slice(tx.input, 0, 4) === handleOpsV07Selector) {
|
|
80
|
-
op =
|
|
80
|
+
op = toUnpackedUserOp(foundOp);
|
|
81
81
|
}
|
|
82
82
|
else {
|
|
83
83
|
op = foundOp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_getUserOperationByHash.js","sourceRoot":"","sources":["../../../rpc/methods/eth_getUserOperationByHash.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAEV,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,EACL,UAAU,EACb,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"eth_getUserOperationByHash.js","sourceRoot":"","sources":["../../../rpc/methods/eth_getUserOperationByHash.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,12 @@ export const ethGetUserOperationReceiptHandler = createMethodHandler({
|
|
|
4
4
|
method: "eth_getUserOperationReceipt",
|
|
5
5
|
schema: getUserOperationReceiptSchema,
|
|
6
6
|
handler: async ({ rpcHandler, params }) => {
|
|
7
|
-
const [
|
|
7
|
+
const [userOpHash] = params;
|
|
8
8
|
try {
|
|
9
|
-
return await rpcHandler.userOpMonitor.getUserOpReceipt(
|
|
9
|
+
return await rpcHandler.userOpMonitor.getUserOpReceipt(userOpHash);
|
|
10
10
|
}
|
|
11
11
|
catch (err) {
|
|
12
|
-
rpcHandler.logger.error({ err,
|
|
12
|
+
rpcHandler.logger.error({ err, userOpHash }, "Unexpected error while getting user operation receipt");
|
|
13
13
|
throw new RpcError("Failed to get user operation receipt");
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_getUserOperationReceipt.js","sourceRoot":"","sources":["../../../rpc/methods/eth_getUserOperationReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAErE,MAAM,CAAC,MAAM,iCAAiC,GAAG,mBAAmB,CAAC;IACjE,MAAM,EAAE,6BAA6B;IACrC,MAAM,EAAE,6BAA6B;IACrC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"eth_getUserOperationReceipt.js","sourceRoot":"","sources":["../../../rpc/methods/eth_getUserOperationReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAErE,MAAM,CAAC,MAAM,iCAAiC,GAAG,mBAAmB,CAAC;IACjE,MAAM,EAAE,6BAA6B;IACrC,MAAM,EAAE,6BAA6B;IACrC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC;YACD,OAAO,MAAM,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAClD,UAAU,CACb,CAAA;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,UAAU,CAAC,MAAM,CAAC,KAAK,CACnB,EAAE,GAAG,EAAE,UAAU,EAAE,EACnB,uDAAuD,CAC1D,CAAA;YACD,MAAM,IAAI,QAAQ,CAAC,sCAAsC,CAAC,CAAA;QAC9D,CAAC;IACL,CAAC;CACJ,CAAC,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type UserOperation, type Address, type ApiVersion } from "../../types/index.js";
|
|
2
2
|
import { RpcHandler } from "../rpcHandler.js";
|
|
3
3
|
import { Hex } from "viem";
|
|
4
|
-
export declare function addToMempoolIfValid({ rpcHandler,
|
|
4
|
+
export declare function addToMempoolIfValid({ rpcHandler, userOp, entryPoint, apiVersion, boost }: {
|
|
5
5
|
rpcHandler: RpcHandler;
|
|
6
|
-
|
|
6
|
+
userOp: UserOperation;
|
|
7
7
|
entryPoint: Address;
|
|
8
8
|
apiVersion: ApiVersion;
|
|
9
9
|
boost?: boolean;
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import { getNonceKeyAndSequence,
|
|
1
|
+
import { getNonceKeyAndSequence, getUserOpHash } from "../../utils/userop.js";
|
|
2
2
|
import { createMethodHandler } from "../createMethodHandler.js";
|
|
3
3
|
import { sendUserOperationSchema, RpcError, ValidationErrors } from "../../types/index.js";
|
|
4
4
|
import { calcExecutionPvgComponent, calcL2PvgComponent, getAAError } from "../../utils/index.js";
|
|
5
|
-
const validatePvg = async (apiVersion, rpcHandler,
|
|
5
|
+
const validatePvg = async (apiVersion, rpcHandler, userOp, entryPoint, boost = false) => {
|
|
6
6
|
// PVG validation is skipped for v1
|
|
7
7
|
if (apiVersion == "v1" || boost) {
|
|
8
8
|
return [true, ""];
|
|
9
9
|
}
|
|
10
10
|
const executionGasComponent = calcExecutionPvgComponent({
|
|
11
|
-
userOp
|
|
11
|
+
userOp,
|
|
12
12
|
supportsEip7623: rpcHandler.config.supportsEip7623,
|
|
13
13
|
config: rpcHandler.config
|
|
14
14
|
});
|
|
15
15
|
const l2GasComponent = await calcL2PvgComponent({
|
|
16
16
|
config: rpcHandler.config,
|
|
17
|
-
|
|
17
|
+
userOp,
|
|
18
18
|
entryPoint,
|
|
19
19
|
gasPriceManager: rpcHandler.gasPriceManager,
|
|
20
20
|
validate: true
|
|
21
21
|
});
|
|
22
22
|
const requiredPvg = executionGasComponent + l2GasComponent;
|
|
23
|
-
if (requiredPvg >
|
|
23
|
+
if (requiredPvg > userOp.preVerificationGas) {
|
|
24
24
|
return [
|
|
25
25
|
false,
|
|
26
|
-
`preVerificationGas is not enough, required: ${requiredPvg}, got: ${
|
|
26
|
+
`preVerificationGas is not enough, required: ${requiredPvg}, got: ${userOp.preVerificationGas}`
|
|
27
27
|
];
|
|
28
28
|
}
|
|
29
29
|
return [true, ""];
|
|
30
30
|
};
|
|
31
|
-
const getUserOpValidationResult = async (rpcHandler,
|
|
32
|
-
const
|
|
33
|
-
userOp
|
|
31
|
+
const getUserOpValidationResult = async (rpcHandler, userOp, entryPoint) => {
|
|
32
|
+
const queuedUserOps = await rpcHandler.mempool.getQueuedOustandingUserOps({
|
|
33
|
+
userOp,
|
|
34
34
|
entryPoint
|
|
35
35
|
});
|
|
36
|
-
const validationResult = await rpcHandler.validator.
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const validationResult = await rpcHandler.validator.validateUserOp({
|
|
37
|
+
userOp,
|
|
38
|
+
queuedUserOps,
|
|
39
39
|
entryPoint
|
|
40
40
|
});
|
|
41
41
|
return {
|
|
42
|
-
|
|
42
|
+
queuedUserOps,
|
|
43
43
|
validationResult
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
|
-
export async function addToMempoolIfValid({ rpcHandler,
|
|
46
|
+
export async function addToMempoolIfValid({ rpcHandler, userOp, entryPoint, apiVersion, boost = false }) {
|
|
47
47
|
rpcHandler.ensureEntryPointIsSupported(entryPoint);
|
|
48
48
|
// Execute multiple async operations in parallel
|
|
49
|
-
const [userOpHash, {
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
const [userOpHash, { queuedUserOps, validationResult }, currentNonceSeq, [pvgSuccess, pvgErrorReason], [preMempoolSuccess, preMempoolError], [validEip7702Auth, validEip7702AuthError]] = await Promise.all([
|
|
50
|
+
getUserOpHash({
|
|
51
|
+
userOp,
|
|
52
52
|
entryPointAddress: entryPoint,
|
|
53
53
|
chainId: rpcHandler.config.chainId,
|
|
54
54
|
publicClient: rpcHandler.config.publicClient
|
|
55
55
|
}),
|
|
56
|
-
getUserOpValidationResult(rpcHandler,
|
|
57
|
-
rpcHandler.getNonceSeq(
|
|
58
|
-
validatePvg(apiVersion, rpcHandler,
|
|
59
|
-
rpcHandler.preMempoolChecks(
|
|
56
|
+
getUserOpValidationResult(rpcHandler, userOp, entryPoint),
|
|
57
|
+
rpcHandler.getNonceSeq(userOp, entryPoint),
|
|
58
|
+
validatePvg(apiVersion, rpcHandler, userOp, entryPoint, boost),
|
|
59
|
+
rpcHandler.preMempoolChecks(userOp, apiVersion, boost),
|
|
60
60
|
rpcHandler.validateEip7702Auth({
|
|
61
|
-
|
|
61
|
+
userOp,
|
|
62
62
|
validateSender: true
|
|
63
63
|
})
|
|
64
64
|
]);
|
|
@@ -78,7 +78,7 @@ export async function addToMempoolIfValid({ rpcHandler, userOperation, entryPoin
|
|
|
78
78
|
throw new RpcError(pvgErrorReason, ValidationErrors.SimulateValidation);
|
|
79
79
|
}
|
|
80
80
|
// Nonce validation
|
|
81
|
-
const [, userOpNonceSeq] = getNonceKeyAndSequence(
|
|
81
|
+
const [, userOpNonceSeq] = getNonceKeyAndSequence(userOp.nonce);
|
|
82
82
|
if (userOpNonceSeq < currentNonceSeq) {
|
|
83
83
|
const reason = "UserOperation failed validation with reason: AA25 invalid account nonce";
|
|
84
84
|
rpcHandler.eventManager.emitFailedValidation(userOpHash, reason, "AA25");
|
|
@@ -89,15 +89,14 @@ export async function addToMempoolIfValid({ rpcHandler, userOperation, entryPoin
|
|
|
89
89
|
rpcHandler.eventManager.emitFailedValidation(userOpHash, reason, "AA25");
|
|
90
90
|
throw new RpcError(reason, ValidationErrors.InvalidFields);
|
|
91
91
|
}
|
|
92
|
-
if (userOpNonceSeq >
|
|
93
|
-
|
|
94
|
-
rpcHandler.mempool.add(userOperation, entryPoint);
|
|
92
|
+
if (userOpNonceSeq > currentNonceSeq + BigInt(queuedUserOps.length)) {
|
|
93
|
+
rpcHandler.mempool.add(userOp, entryPoint);
|
|
95
94
|
rpcHandler.eventManager.emitQueued(userOpHash);
|
|
96
95
|
return { result: "queued", userOpHash };
|
|
97
96
|
}
|
|
98
97
|
// userOp validation
|
|
99
98
|
if (rpcHandler.config.dangerousSkipUserOperationValidation) {
|
|
100
|
-
const [isMempoolAddSuccess, mempoolAddError] = await rpcHandler.mempool.add(
|
|
99
|
+
const [isMempoolAddSuccess, mempoolAddError] = await rpcHandler.mempool.add(userOp, entryPoint);
|
|
101
100
|
if (!isMempoolAddSuccess) {
|
|
102
101
|
rpcHandler.eventManager.emitFailedValidation(userOpHash, mempoolAddError, getAAError(mempoolAddError));
|
|
103
102
|
throw new RpcError(mempoolAddError, ValidationErrors.InvalidFields);
|
|
@@ -105,10 +104,10 @@ export async function addToMempoolIfValid({ rpcHandler, userOperation, entryPoin
|
|
|
105
104
|
return { result: "added", userOpHash };
|
|
106
105
|
}
|
|
107
106
|
// ERC-7562 scope rule validation
|
|
108
|
-
rpcHandler.reputationManager.checkReputation(
|
|
109
|
-
await rpcHandler.mempool.checkEntityMultipleRoleViolation(entryPoint,
|
|
107
|
+
rpcHandler.reputationManager.checkReputation(userOp, entryPoint, validationResult);
|
|
108
|
+
await rpcHandler.mempool.checkEntityMultipleRoleViolation(entryPoint, userOp);
|
|
110
109
|
// Finally, add to mempool
|
|
111
|
-
const [isMempoolAddSuccess, mempoolAddError] = await rpcHandler.mempool.add(
|
|
110
|
+
const [isMempoolAddSuccess, mempoolAddError] = await rpcHandler.mempool.add(userOp, entryPoint, validationResult.referencedContracts);
|
|
112
111
|
if (!isMempoolAddSuccess) {
|
|
113
112
|
rpcHandler.eventManager.emitFailedValidation(userOpHash, mempoolAddError, getAAError(mempoolAddError));
|
|
114
113
|
throw new RpcError(mempoolAddError, ValidationErrors.InvalidFields);
|
|
@@ -119,12 +118,12 @@ export const ethSendUserOperationHandler = createMethodHandler({
|
|
|
119
118
|
method: "eth_sendUserOperation",
|
|
120
119
|
schema: sendUserOperationSchema,
|
|
121
120
|
handler: async ({ rpcHandler, params, apiVersion }) => {
|
|
122
|
-
const [
|
|
121
|
+
const [userOp, entryPoint] = params;
|
|
123
122
|
let status = "rejected";
|
|
124
123
|
try {
|
|
125
124
|
const { result, userOpHash } = await addToMempoolIfValid({
|
|
126
125
|
rpcHandler,
|
|
127
|
-
|
|
126
|
+
userOp,
|
|
128
127
|
entryPoint,
|
|
129
128
|
apiVersion
|
|
130
129
|
});
|
|
@@ -137,10 +136,10 @@ export const ethSendUserOperationHandler = createMethodHandler({
|
|
|
137
136
|
throw error;
|
|
138
137
|
}
|
|
139
138
|
finally {
|
|
140
|
-
rpcHandler.metrics.
|
|
139
|
+
rpcHandler.metrics.userOpsReceived
|
|
141
140
|
.labels({
|
|
142
141
|
status,
|
|
143
|
-
type: !!
|
|
142
|
+
type: !!userOp.eip7702Auth ? "7702" : "regular"
|
|
144
143
|
})
|
|
145
144
|
.inc();
|
|
146
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_sendUserOperation.js","sourceRoot":"","sources":["../../../rpc/methods/eth_sendUserOperation.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"eth_sendUserOperation.js","sourceRoot":"","sources":["../../../rpc/methods/eth_sendUserOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ export const pimlicoGetUserOperationStatusHandler = createMethodHandler({
|
|
|
4
4
|
method: "pimlico_getUserOperationStatus",
|
|
5
5
|
schema: pimlicoGetUserOperationStatusSchema,
|
|
6
6
|
handler: ({ rpcHandler, params }) => {
|
|
7
|
-
const [
|
|
8
|
-
return rpcHandler.monitor.
|
|
7
|
+
const [userOpHash] = params;
|
|
8
|
+
return rpcHandler.monitor.getUserOpStatus(userOpHash);
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
//# sourceMappingURL=pimlico_getUserOperationStatus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pimlico_getUserOperationStatus.js","sourceRoot":"","sources":["../../../rpc/methods/pimlico_getUserOperationStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,mCAAmC,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,CAAC,MAAM,oCAAoC,GAAG,mBAAmB,CAAC;IACpE,MAAM,EAAE,gCAAgC;IACxC,MAAM,EAAE,mCAAmC;IAC3C,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QAChC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"pimlico_getUserOperationStatus.js","sourceRoot":"","sources":["../../../rpc/methods/pimlico_getUserOperationStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,mCAAmC,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,CAAC,MAAM,oCAAoC,GAAG,mBAAmB,CAAC;IACpE,MAAM,EAAE,gCAAgC;IACxC,MAAM,EAAE,mCAAmC;IAC3C,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QAChC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAA;QAC3B,OAAO,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;IACzD,CAAC;CACJ,CAAC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getUserOpHash, isVersion07, isVersion08, parseUserOpReceipt } from "../../utils/index.js";
|
|
2
2
|
import { createMethodHandler } from "../createMethodHandler.js";
|
|
3
3
|
import { RpcError, ValidationErrors, pimlicoSendUserOperationNowSchema } from "../../types/index.js";
|
|
4
4
|
export const pimlicoSendUserOperationNowHandler = createMethodHandler({
|
|
@@ -8,23 +8,23 @@ export const pimlicoSendUserOperationNowHandler = createMethodHandler({
|
|
|
8
8
|
if (!rpcHandler.config.enableInstantBundlingEndpoint) {
|
|
9
9
|
throw new RpcError("pimlico_sendUserOperationNow endpoint is not enabled", ValidationErrors.InvalidFields);
|
|
10
10
|
}
|
|
11
|
-
const [
|
|
11
|
+
const [userOp, entryPoint] = params;
|
|
12
12
|
rpcHandler.ensureEntryPointIsSupported(entryPoint);
|
|
13
|
-
const opHash = await
|
|
14
|
-
|
|
13
|
+
const opHash = await getUserOpHash({
|
|
14
|
+
userOp,
|
|
15
15
|
entryPointAddress: entryPoint,
|
|
16
16
|
chainId: rpcHandler.config.chainId,
|
|
17
17
|
publicClient: rpcHandler.config.publicClient
|
|
18
18
|
});
|
|
19
|
-
const [preMempoolValid, preMempoolError] = await rpcHandler.preMempoolChecks(
|
|
19
|
+
const [preMempoolValid, preMempoolError] = await rpcHandler.preMempoolChecks(userOp, apiVersion);
|
|
20
20
|
if (!preMempoolValid) {
|
|
21
21
|
throw new RpcError(preMempoolError);
|
|
22
22
|
}
|
|
23
23
|
// Prepare bundle
|
|
24
24
|
const userOpInfo = {
|
|
25
|
-
userOp
|
|
26
|
-
userOpHash: await
|
|
27
|
-
|
|
25
|
+
userOp,
|
|
26
|
+
userOpHash: await getUserOpHash({
|
|
27
|
+
userOp,
|
|
28
28
|
entryPointAddress: entryPoint,
|
|
29
29
|
chainId: rpcHandler.config.chainId,
|
|
30
30
|
publicClient: rpcHandler.config.publicClient
|
|
@@ -34,10 +34,10 @@ export const pimlicoSendUserOperationNowHandler = createMethodHandler({
|
|
|
34
34
|
};
|
|
35
35
|
// Derive version
|
|
36
36
|
let version;
|
|
37
|
-
if (isVersion08(
|
|
37
|
+
if (isVersion08(userOp, entryPoint)) {
|
|
38
38
|
version = "0.8";
|
|
39
39
|
}
|
|
40
|
-
else if (isVersion07(
|
|
40
|
+
else if (isVersion07(userOp)) {
|
|
41
41
|
version = "0.7";
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
@@ -59,7 +59,7 @@ export const pimlicoSendUserOperationNowHandler = createMethodHandler({
|
|
|
59
59
|
hash: result,
|
|
60
60
|
pollingInterval: 100
|
|
61
61
|
});
|
|
62
|
-
return
|
|
62
|
+
return parseUserOpReceipt(opHash, receipt);
|
|
63
63
|
}
|
|
64
64
|
});
|
|
65
65
|
//# sourceMappingURL=pimlico_sendUserOperationNow.js.map
|