@pimlico/alto 0.0.0-main.20250626T085447 → 0.0.0-main.20250627T140102
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/EIP712.sol/EIP712.json +1 -1
- package/contracts/Eip7702Support.sol/Eip7702Support.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/Exec.sol/Exec.json +1 -1
- package/contracts/IAccount.sol/IAccount.json +1 -1
- package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -1
- package/contracts/IAggregator.sol/IAggregator.json +1 -1
- package/contracts/IERC5267.sol/IERC5267.json +1 -1
- package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -1
- package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -1
- package/contracts/INonceManager.sol/INonceManager.json +1 -1
- package/contracts/IPaymaster.sol/IPaymaster.json +1 -1
- package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -1
- package/contracts/IStakeManager.sol/IStakeManager.json +1 -1
- package/contracts/Math.sol/Math.json +1 -1
- package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -1
- package/contracts/NonceManager.sol/NonceManager.json +1 -1
- package/contracts/Panic.sol/Panic.json +1 -1
- package/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
- package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -1
- package/contracts/SafeCast.sol/SafeCast.json +1 -1
- package/contracts/SenderCreator.sol/SenderCreator.json +1 -1
- package/contracts/ShortStrings.sol/ShortStrings.json +1 -1
- package/contracts/SignedMath.sol/SignedMath.json +1 -1
- package/contracts/StakeManager.sol/StakeManager.json +1 -1
- package/contracts/StorageSlot.sol/StorageSlot.json +1 -1
- package/contracts/Strings.sol/Strings.json +1 -1
- package/contracts/TransientSlot.sol/TransientSlot.json +1 -1
- package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -1
- package/contracts/build-info/004071c167bc55de.json +1 -0
- package/contracts/build-info/{257ff8e2b1124ead.json → 2f5dec90e180c3a0.json} +1 -1
- package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
- package/esm/cli/customTransport.js +3 -2
- package/esm/cli/customTransport.js.map +1 -1
- package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
- package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
- package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
- package/esm/executor/executorManager.js +1 -1
- package/esm/executor/executorManager.js.map +1 -1
- package/esm/executor/filterOpsAndEstimateGas.js +7 -7
- 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 +5 -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/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 +8 -8
- package/esm/rpc/estimation/gasEstimationHandler.js +16 -16
- package/esm/rpc/estimation/gasEstimationHandler.js.map +1 -1
- package/esm/rpc/estimation/{gasEstimationsV06.d.ts → gasEstimations06.d.ts} +5 -5
- package/esm/rpc/estimation/gasEstimations06.js +68 -0
- package/esm/rpc/estimation/gasEstimations06.js.map +1 -0
- package/esm/rpc/estimation/gasEstimations07.d.ts +89 -0
- package/esm/rpc/estimation/gasEstimations07.js +386 -0
- package/esm/rpc/estimation/gasEstimations07.js.map +1 -0
- package/esm/rpc/estimation/types.d.ts +23 -111
- package/esm/rpc/estimation/types.js +5 -121
- package/esm/rpc/estimation/types.js.map +1 -1
- package/esm/rpc/estimation/utils.d.ts +51 -0
- package/esm/rpc/estimation/utils.js +182 -0
- package/esm/rpc/estimation/utils.js.map +1 -0
- 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 +29 -32
- 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 +13 -13
- package/esm/rpc/validation/SafeValidator.js +59 -57
- 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 +19 -19
- package/esm/rpc/validation/UnsafeValidator.js +39 -33
- 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/contracts/PimlicoSimulations.d.ts +1083 -96
- package/esm/types/contracts/PimlicoSimulations.js +1357 -88
- package/esm/types/contracts/PimlicoSimulations.js.map +1 -1
- package/esm/types/contracts/index.d.ts +0 -2
- package/esm/types/contracts/index.js +0 -2
- package/esm/types/contracts/index.js.map +1 -1
- package/esm/types/interfaces.d.ts +14 -14
- package/esm/types/validation.d.ts +208 -222
- package/esm/types/validation.js +0 -8
- package/esm/types/validation.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/toViemStateOverrides.d.ts +4 -0
- package/esm/utils/toViemStateOverrides.js +44 -0
- package/esm/utils/toViemStateOverrides.js.map +1 -0
- 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
- package/contracts/build-info/10cf9b18fcc1598e.json +0 -1
- package/esm/rpc/estimation/gasEstimationsV06.js +0 -156
- package/esm/rpc/estimation/gasEstimationsV06.js.map +0 -1
- package/esm/rpc/estimation/gasEstimationsV07.d.ts +0 -101
- package/esm/rpc/estimation/gasEstimationsV07.js +0 -724
- package/esm/rpc/estimation/gasEstimationsV07.js.map +0 -1
- package/esm/types/contracts/EntryPointSimulationsV6.d.ts +0 -33
- package/esm/types/contracts/EntryPointSimulationsV6.js +0 -46
- package/esm/types/contracts/EntryPointSimulationsV6.js.map +0 -1
- package/esm/types/contracts/EntryPointSimulationsV7.d.ts +0 -2076
- package/esm/types/contracts/EntryPointSimulationsV7.js +0 -2675
- package/esm/types/contracts/EntryPointSimulationsV7.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../rpc/estimation/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../rpc/estimation/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,yEAAW,CAAA;IACX,2EAAY,CAAA;AAChB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type Hex, type StateOverride } from "viem";
|
|
2
|
+
import { type Logger } from "../../utils/index.js";
|
|
3
|
+
import type { StateOverrides, UserOperationV06, UserOperationV07 } from "../../types/index.js";
|
|
4
|
+
import type { AltoConfig } from "../../createConfig.js";
|
|
5
|
+
import type { SimulateHandleOpResult } from "../estimation/types.js";
|
|
6
|
+
export declare function parseFailedOpWithRevert(data: Hex): string;
|
|
7
|
+
export declare function prepareStateOverride({ userOps, queuedUserOps, stateOverrides, config }: {
|
|
8
|
+
userOps: (UserOperationV06 | UserOperationV07)[];
|
|
9
|
+
queuedUserOps: (UserOperationV06 | UserOperationV07)[];
|
|
10
|
+
stateOverrides?: StateOverrides;
|
|
11
|
+
config: Pick<AltoConfig, "balanceOverride" | "codeOverrideSupport">;
|
|
12
|
+
}): StateOverride | undefined;
|
|
13
|
+
export declare const simulationErrors: readonly [{
|
|
14
|
+
readonly name: "Error";
|
|
15
|
+
readonly type: "error";
|
|
16
|
+
readonly inputs: readonly [{
|
|
17
|
+
readonly type: "string";
|
|
18
|
+
}];
|
|
19
|
+
}, {
|
|
20
|
+
readonly name: "FailedOp";
|
|
21
|
+
readonly type: "error";
|
|
22
|
+
readonly inputs: readonly [{
|
|
23
|
+
readonly type: "uint256";
|
|
24
|
+
readonly name: "opIndex";
|
|
25
|
+
}, {
|
|
26
|
+
readonly type: "string";
|
|
27
|
+
readonly name: "reason";
|
|
28
|
+
}];
|
|
29
|
+
}, {
|
|
30
|
+
readonly name: "FailedOpWithRevert";
|
|
31
|
+
readonly type: "error";
|
|
32
|
+
readonly inputs: readonly [{
|
|
33
|
+
readonly type: "uint256";
|
|
34
|
+
readonly name: "opIndex";
|
|
35
|
+
}, {
|
|
36
|
+
readonly type: "string";
|
|
37
|
+
readonly name: "reason";
|
|
38
|
+
}, {
|
|
39
|
+
readonly type: "bytes";
|
|
40
|
+
readonly name: "inner";
|
|
41
|
+
}];
|
|
42
|
+
}, {
|
|
43
|
+
readonly name: "CallPhaseReverted";
|
|
44
|
+
readonly type: "error";
|
|
45
|
+
readonly inputs: readonly [{
|
|
46
|
+
readonly type: "bytes";
|
|
47
|
+
readonly name: "reason";
|
|
48
|
+
}];
|
|
49
|
+
}];
|
|
50
|
+
export declare function decodeSimulateHandleOpError(error: unknown, logger: Logger): SimulateHandleOpResult;
|
|
51
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { decodeErrorResult, parseAbi, BaseError, ContractFunctionRevertedError, ContractFunctionExecutionError, getAbiItem } from "viem";
|
|
2
|
+
import { getAuthorizationStateOverrides } from "../../utils/index.js";
|
|
3
|
+
import { toViemStateOverrides } from "../../utils/toViemStateOverrides.js";
|
|
4
|
+
import { ValidationErrors, executionResultSchema } from "../../types/index.js";
|
|
5
|
+
import { entryPoint06Abi } from "viem/account-abstraction";
|
|
6
|
+
export function parseFailedOpWithRevert(data) {
|
|
7
|
+
try {
|
|
8
|
+
const decoded = decodeErrorResult({
|
|
9
|
+
abi: parseAbi(["error Error(string)", "error Panic(uint256)"]),
|
|
10
|
+
data
|
|
11
|
+
});
|
|
12
|
+
if (decoded.errorName === "Error") {
|
|
13
|
+
return decoded.args[0];
|
|
14
|
+
}
|
|
15
|
+
if (decoded.errorName === "Panic") {
|
|
16
|
+
// from https://docs.soliditylang.org/en/v0.8.0/control-structures.html
|
|
17
|
+
const panicCodes = {
|
|
18
|
+
1: "assert(false)",
|
|
19
|
+
17: "arithmetic overflow/underflow",
|
|
20
|
+
18: "divide by zero",
|
|
21
|
+
33: "invalid enum value",
|
|
22
|
+
34: "storage byte array that is incorrectly encoded",
|
|
23
|
+
49: ".pop() on an empty array.",
|
|
24
|
+
50: "array sout-of-bounds or negative index",
|
|
25
|
+
65: "memory overflow",
|
|
26
|
+
81: "zero-initialized variable of internal function type"
|
|
27
|
+
};
|
|
28
|
+
const [code] = decoded.args;
|
|
29
|
+
return panicCodes[Number(code)] ?? `${code}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch { }
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
export function prepareStateOverride({ userOps, queuedUserOps, stateOverrides, config }) {
|
|
36
|
+
const stateOverride = getAuthorizationStateOverrides({
|
|
37
|
+
userOps: [...queuedUserOps, ...userOps],
|
|
38
|
+
stateOverrides
|
|
39
|
+
});
|
|
40
|
+
// Remove state override if not supported by network.
|
|
41
|
+
if (!config.balanceOverride && !config.codeOverrideSupport) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
return toViemStateOverrides(stateOverride);
|
|
45
|
+
}
|
|
46
|
+
export const simulationErrors = parseAbi([
|
|
47
|
+
"error Error(string)",
|
|
48
|
+
"error FailedOp(uint256 opIndex, string reason)",
|
|
49
|
+
"error FailedOpWithRevert(uint256 opIndex, string reason, bytes inner)",
|
|
50
|
+
"error CallPhaseReverted(bytes reason)"
|
|
51
|
+
]);
|
|
52
|
+
export function decodeSimulateHandleOpError(error, logger) {
|
|
53
|
+
// Check if it's a BaseError with ContractFunctionRevertedError
|
|
54
|
+
if (!(error instanceof BaseError)) {
|
|
55
|
+
logger.warn("Not a BaseError");
|
|
56
|
+
return {
|
|
57
|
+
result: "failed",
|
|
58
|
+
data: "Unknown error, could not parse simulate validation result.",
|
|
59
|
+
code: ValidationErrors.SimulateValidation
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
let errorName;
|
|
63
|
+
let args;
|
|
64
|
+
const contractFunctionRevertedError = error.walk((e) => e instanceof ContractFunctionRevertedError);
|
|
65
|
+
// Indicates that the RPC reverted with non standard format
|
|
66
|
+
// in this case we try to find raw revert bytes and manually decode
|
|
67
|
+
const contractFunctionExecutionError = error.walk((e) => e instanceof ContractFunctionExecutionError);
|
|
68
|
+
if (contractFunctionRevertedError) {
|
|
69
|
+
const error = contractFunctionRevertedError;
|
|
70
|
+
if (!error.data?.args && error.raw === "0x") {
|
|
71
|
+
return {
|
|
72
|
+
result: "failed",
|
|
73
|
+
data: "Sender has no code or factory not deployed",
|
|
74
|
+
code: ValidationErrors.SimulateValidation
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
if (!error.data?.args) {
|
|
78
|
+
logger.warn("Missing args");
|
|
79
|
+
return {
|
|
80
|
+
result: "failed",
|
|
81
|
+
data: "Unknown error, could not parse simulate validation result.",
|
|
82
|
+
code: ValidationErrors.SimulateValidation
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
errorName = error.data.errorName;
|
|
86
|
+
args = error.data.args;
|
|
87
|
+
}
|
|
88
|
+
else if (contractFunctionExecutionError) {
|
|
89
|
+
// Manually decode revert bytes
|
|
90
|
+
let rawRevertBytes;
|
|
91
|
+
error.walk((e) => {
|
|
92
|
+
if (typeof e?.data === "string") {
|
|
93
|
+
const hexMatch = e.data.match(/(0x[a-fA-F0-9]+)/);
|
|
94
|
+
if (hexMatch) {
|
|
95
|
+
rawRevertBytes = hexMatch[0];
|
|
96
|
+
return true; // Stop walking
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return false;
|
|
100
|
+
});
|
|
101
|
+
if (!rawRevertBytes) {
|
|
102
|
+
logger.warn("Failed to find raw revert bytes");
|
|
103
|
+
return {
|
|
104
|
+
result: "failed",
|
|
105
|
+
data: "Unknown error, could not parse simulate validation result.",
|
|
106
|
+
code: ValidationErrors.SimulateValidation
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const decoded = decodeErrorResult({
|
|
111
|
+
abi: [
|
|
112
|
+
getAbiItem({
|
|
113
|
+
abi: entryPoint06Abi,
|
|
114
|
+
name: "ExecutionResult"
|
|
115
|
+
}),
|
|
116
|
+
...simulationErrors
|
|
117
|
+
],
|
|
118
|
+
data: rawRevertBytes
|
|
119
|
+
});
|
|
120
|
+
errorName = decoded.errorName;
|
|
121
|
+
args = decoded.args || [];
|
|
122
|
+
}
|
|
123
|
+
catch (decodeError) {
|
|
124
|
+
logger.warn({ rawRevertBytes }, "Failed to decode raw revert bytes");
|
|
125
|
+
return {
|
|
126
|
+
result: "failed",
|
|
127
|
+
data: "Unknown error, could not parse simulate validation result.",
|
|
128
|
+
code: ValidationErrors.SimulateValidation
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
return {
|
|
134
|
+
result: "failed",
|
|
135
|
+
data: "Unknown error, could not parse simulate validation result.",
|
|
136
|
+
code: ValidationErrors.SimulateValidation
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
switch (errorName) {
|
|
140
|
+
case "FailedOp":
|
|
141
|
+
return {
|
|
142
|
+
result: "failed",
|
|
143
|
+
data: args[1],
|
|
144
|
+
code: ValidationErrors.SimulateValidation
|
|
145
|
+
};
|
|
146
|
+
case "FailedOpWithRevert":
|
|
147
|
+
return {
|
|
148
|
+
result: "failed",
|
|
149
|
+
data: `${args[1]} ${parseFailedOpWithRevert(args[2])}`,
|
|
150
|
+
code: ValidationErrors.SimulateValidation
|
|
151
|
+
};
|
|
152
|
+
case "CallPhaseReverted":
|
|
153
|
+
return {
|
|
154
|
+
result: "failed",
|
|
155
|
+
data: args[0],
|
|
156
|
+
code: ValidationErrors.SimulateValidation
|
|
157
|
+
};
|
|
158
|
+
case "Error":
|
|
159
|
+
return {
|
|
160
|
+
result: "failed",
|
|
161
|
+
data: args[0],
|
|
162
|
+
code: ValidationErrors.SimulateValidation
|
|
163
|
+
};
|
|
164
|
+
// 0.6 handleOp reverts with ExecutionResult if successful
|
|
165
|
+
case "ExecutionResult":
|
|
166
|
+
const parsedExecutionResult = executionResultSchema.parse(args);
|
|
167
|
+
return {
|
|
168
|
+
result: "execution",
|
|
169
|
+
data: {
|
|
170
|
+
executionResult: parsedExecutionResult
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
default:
|
|
174
|
+
logger.warn({ errorName }, "Unknown ContractFunctionRevertedError name");
|
|
175
|
+
return {
|
|
176
|
+
result: "failed",
|
|
177
|
+
data: "Unknown error, could not parse simulate validation result.",
|
|
178
|
+
code: ValidationErrors.SimulateValidation
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../rpc/estimation/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,17 +65,16 @@ const getGasEstimates = async ({ rpcHandler, userOperation, entryPoint, stateOve
|
|
|
67
65
|
simulationPaymasterPostOpGasLimit;
|
|
68
66
|
}
|
|
69
67
|
const executionResult = await rpcHandler.validator.getExecutionResult({
|
|
70
|
-
|
|
68
|
+
userOp: simulationUserOp,
|
|
69
|
+
queuedUserOps,
|
|
71
70
|
entryPoint,
|
|
72
|
-
queuedUserOperations,
|
|
73
71
|
stateOverrides: deepHexlify(mutableStateOverrides)
|
|
74
72
|
});
|
|
75
73
|
if (executionResult.result === "failed") {
|
|
76
|
-
const errorResult = executionResult;
|
|
77
74
|
return {
|
|
78
75
|
status: "failed",
|
|
79
|
-
error:
|
|
80
|
-
code:
|
|
76
|
+
error: executionResult.data,
|
|
77
|
+
code: executionResult.code
|
|
81
78
|
};
|
|
82
79
|
}
|
|
83
80
|
// type cast as typescript doesn't know the type
|
|
@@ -98,10 +95,10 @@ const getGasEstimates = async ({ rpcHandler, userOperation, entryPoint, stateOve
|
|
|
98
95
|
"paymasterPostOpGasLimit" in successResult.data.executionResult) {
|
|
99
96
|
paymasterPostOpGasLimit =
|
|
100
97
|
successResult.data.executionResult.paymasterPostOpGasLimit || 1n;
|
|
101
|
-
const
|
|
102
|
-
? (
|
|
98
|
+
const userOpPaymasterPostOpGasLimit = "paymasterPostOpGasLimit" in userOp
|
|
99
|
+
? (userOp.paymasterPostOpGasLimit ?? 1n)
|
|
103
100
|
: 1n;
|
|
104
|
-
paymasterPostOpGasLimit = maxBigInt(
|
|
101
|
+
paymasterPostOpGasLimit = maxBigInt(userOpPaymasterPostOpGasLimit, scaleBigIntByPercent(paymasterPostOpGasLimit, paymasterGasLimitMultiplier));
|
|
105
102
|
}
|
|
106
103
|
if (simulationUserOp.callData === "0x") {
|
|
107
104
|
callGasLimit = 0n;
|
|
@@ -124,31 +121,31 @@ const getGasEstimates = async ({ rpcHandler, userOperation, entryPoint, stateOve
|
|
|
124
121
|
paymasterVerificationGasLimit,
|
|
125
122
|
paymasterPostOpGasLimit
|
|
126
123
|
},
|
|
127
|
-
|
|
124
|
+
queuedUserOps
|
|
128
125
|
};
|
|
129
126
|
};
|
|
130
127
|
export const ethEstimateUserOperationGasHandler = createMethodHandler({
|
|
131
128
|
method: "eth_estimateUserOperationGas",
|
|
132
129
|
schema: estimateUserOperationGasSchema,
|
|
133
130
|
handler: async ({ rpcHandler, apiVersion, params }) => {
|
|
134
|
-
const [
|
|
131
|
+
const [userOp, entryPoint, stateOverrides] = params;
|
|
135
132
|
rpcHandler.ensureEntryPointIsSupported(entryPoint);
|
|
136
133
|
// Extract all config values at the beginning
|
|
137
134
|
const { supportsEip7623, v7PreVerificationGasLimitMultiplier, v6PreVerificationGasLimitMultiplier } = rpcHandler.config;
|
|
138
135
|
// Execute multiple async operations in parallel
|
|
139
136
|
let [[validEip7702Auth, validEip7702AuthError], gasEstimateResult, l2GasComponent] = await Promise.all([
|
|
140
137
|
rpcHandler.validateEip7702Auth({
|
|
141
|
-
|
|
138
|
+
userOp
|
|
142
139
|
}),
|
|
143
140
|
getGasEstimates({
|
|
144
141
|
rpcHandler,
|
|
145
|
-
|
|
142
|
+
userOp,
|
|
146
143
|
entryPoint,
|
|
147
144
|
stateOverrides
|
|
148
145
|
}),
|
|
149
146
|
calcL2PvgComponent({
|
|
150
147
|
config: rpcHandler.config,
|
|
151
|
-
|
|
148
|
+
userOp,
|
|
152
149
|
entryPoint,
|
|
153
150
|
gasPriceManager: rpcHandler.gasPriceManager,
|
|
154
151
|
validate: false
|
|
@@ -164,7 +161,7 @@ export const ethEstimateUserOperationGasHandler = createMethodHandler({
|
|
|
164
161
|
}
|
|
165
162
|
// Now calculate execution gas component with the estimated gas values
|
|
166
163
|
const userOpWithEstimatedGas = {
|
|
167
|
-
...
|
|
164
|
+
...userOp,
|
|
168
165
|
...gasEstimateResult.estimates
|
|
169
166
|
};
|
|
170
167
|
const executionGasComponent = calcExecutionPvgComponent({
|
|
@@ -175,26 +172,26 @@ export const ethEstimateUserOperationGasHandler = createMethodHandler({
|
|
|
175
172
|
// Calculate total preVerificationGas by summing both components
|
|
176
173
|
let preVerificationGas = executionGasComponent + l2GasComponent;
|
|
177
174
|
// Add multipliers to pvg
|
|
178
|
-
if (isVersion07(
|
|
175
|
+
if (isVersion07(userOp)) {
|
|
179
176
|
preVerificationGas = scaleBigIntByPercent(preVerificationGas, v7PreVerificationGasLimitMultiplier);
|
|
180
177
|
}
|
|
181
|
-
if (isVersion06(
|
|
178
|
+
if (isVersion06(userOp)) {
|
|
182
179
|
preVerificationGas = scaleBigIntByPercent(preVerificationGas, v6PreVerificationGasLimitMultiplier);
|
|
183
180
|
}
|
|
184
181
|
// Check if userOperation passes without estimation balance overrides (will throw error if it fails validation)
|
|
185
182
|
await rpcHandler.validator.validateHandleOp({
|
|
186
|
-
|
|
187
|
-
...
|
|
183
|
+
userOp: {
|
|
184
|
+
...userOp,
|
|
188
185
|
...gasEstimateResult.estimates, // use actual callGasLimit, verificationGasLimit, paymasterPostOpGasLimit, paymasterVerificationGasLimit
|
|
189
186
|
preVerificationGas
|
|
190
187
|
},
|
|
188
|
+
queuedUserOps: gasEstimateResult.queuedUserOps,
|
|
191
189
|
entryPoint,
|
|
192
|
-
queuedUserOperations: gasEstimateResult.queuedUserOperations,
|
|
193
190
|
stateOverrides: deepHexlify(stateOverrides)
|
|
194
191
|
});
|
|
195
192
|
// Extrace values for returning
|
|
196
193
|
const { verificationGasLimit, callGasLimit, paymasterVerificationGasLimit, paymasterPostOpGasLimit } = gasEstimateResult.estimates;
|
|
197
|
-
if (isVersion07(
|
|
194
|
+
if (isVersion07(userOp)) {
|
|
198
195
|
return {
|
|
199
196
|
preVerificationGas,
|
|
200
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;
|
|
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;
|