@pimlico/alto 0.0.0-main.20251015T151337 → 0.0.0-main.20251017T204533
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/ERC165.sol/ERC165.json +1 -1
- package/contracts/ERC20.sol/ERC20.json +1 -1
- package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -1
- package/contracts/EntryPoint.sol/EntryPoint.json +1 -1
- package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
- package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
- package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
- package/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.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/IERC165.sol/IERC165.json +1 -1
- package/contracts/IERC5267.sol/IERC5267.json +1 -1
- package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -1
- package/contracts/IEntryPointFilterOpsOverride.sol/IEntryPointFilterOpsOverride08.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/LibBytes.sol/LibBytes.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/ReentrancyGuard.sol/ReentrancyGuard.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/SimulationOverrideHelper.sol/SimulationOverrideHelper.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/UserOperation.sol/UserOperationLib.json +1 -1
- package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -1
- package/contracts/build-info/{006aa55b425148d5.json → 18c8965fdfa23caa.json} +1 -1
- package/contracts/build-info/{416ffb069999d6eb.json → 1961a9e5bee7b1e0.json} +1 -1
- package/contracts/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
- package/contracts/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
- package/contracts/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
- package/contracts/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
- package/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
- package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
- package/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
- package/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
- package/contracts/utils/Exec.sol/Exec.json +1 -1
- package/contracts/utils/StorageSlot.sol/StorageSlot.json +1 -1
- package/esm/cli/config/bundler.d.ts +18 -18
- package/esm/cli/config/bundler.js +11 -9
- package/esm/cli/config/bundler.js.map +1 -1
- package/esm/cli/config/options.js +14 -13
- package/esm/cli/config/options.js.map +1 -1
- package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
- package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
- package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
- package/esm/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +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/filterOpsAndEstimateGas.d.ts +1 -1
- package/esm/executor/filterOpsAndEstimateGas.js +20 -53
- package/esm/executor/filterOpsAndEstimateGas.js.map +1 -1
- package/esm/executor/utils.d.ts +6 -0
- package/esm/executor/utils.js +27 -1
- package/esm/executor/utils.js.map +1 -1
- package/esm/mempool/mempool.d.ts +3 -1
- package/esm/mempool/mempool.js +50 -15
- package/esm/mempool/mempool.js.map +1 -1
- package/esm/{utils/preVerificationGasCalulator.d.ts → rpc/estimation/preVerificationGasCalculator.d.ts} +20 -4
- package/esm/{utils/preVerificationGasCalulator.js → rpc/estimation/preVerificationGasCalculator.js} +82 -37
- package/esm/rpc/estimation/preVerificationGasCalculator.js.map +1 -0
- package/esm/rpc/methods/eth_estimateUserOperationGas.js +26 -21
- package/esm/rpc/methods/eth_estimateUserOperationGas.js.map +1 -1
- package/esm/rpc/methods/eth_sendUserOperation.d.ts +1 -1
- package/esm/rpc/methods/eth_sendUserOperation.js +74 -18
- package/esm/rpc/methods/eth_sendUserOperation.js.map +1 -1
- package/esm/rpc/rpcHandler.js +1 -2
- package/esm/rpc/rpcHandler.js.map +1 -1
- package/esm/types/utils.d.ts +0 -1
- package/esm/utils/eip7702.js +8 -5
- package/esm/utils/eip7702.js.map +1 -1
- package/esm/utils/index.d.ts +0 -1
- package/esm/utils/index.js +0 -1
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/userop.d.ts +2 -0
- package/esm/utils/userop.js +25 -0
- package/esm/utils/userop.js.map +1 -1
- package/package.json +1 -1
- package/esm/utils/preVerificationGasCalulator.js.map +0 -1
package/esm/{utils/preVerificationGasCalulator.js → rpc/estimation/preVerificationGasCalculator.js}
RENAMED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
|
-
import {
|
|
2
|
+
import { encodeHandleOpsCalldata, getBundleGasLimit } from "../../executor/index.js";
|
|
3
|
+
import { ArbitrumL1FeeAbi, MantleBvmGasPriceOracleAbi, OpL1FeeAbi } from "../../types/index.js";
|
|
4
|
+
import { isVersion06, isVersion07, maxBigInt, minBigInt, randomBigInt, scaleBigIntByPercent, toPackedUserOp, unscaleBigIntByPercent } from "../../utils/index.js";
|
|
3
5
|
import { bytesToHex, concat, encodeAbiParameters, getContract, maxUint64, maxUint128, maxUint256, parseEther, serializeTransaction, size, slice, toBytes, toHex } from "viem";
|
|
4
|
-
import { encodeHandleOpsCalldata } from "../executor/utils.js";
|
|
5
|
-
import { ArbitrumL1FeeAbi } from "../types/contracts/ArbitrumL1FeeAbi.js";
|
|
6
|
-
import { maxBigInt, minBigInt, randomBigInt, unscaleBigIntByPercent } from "./bigInt.js";
|
|
7
|
-
import { isVersion06, isVersion07, toPackedUserOp } from "./userop.js";
|
|
8
6
|
// Encodes a user operation into bytes for gas calculation
|
|
9
7
|
function encodeUserOp(userOp) {
|
|
10
8
|
const p = fillUserOpWithDummyData(userOp);
|
|
@@ -227,8 +225,8 @@ export function getSerializedHandleOpsTx({ userOps, entryPoint, chainId, removeZ
|
|
|
227
225
|
// Process operations based on configuration
|
|
228
226
|
let processedOps = userOps;
|
|
229
227
|
if (randomizeSignature) {
|
|
230
|
-
processedOps = userOps.map((
|
|
231
|
-
const sigLength = size(
|
|
228
|
+
processedOps = userOps.map((userOp) => {
|
|
229
|
+
const sigLength = size(userOp.signature);
|
|
232
230
|
let newSignature;
|
|
233
231
|
const randomizeBytes = (length) => toHex(crypto.randomBytes(length).toString("hex"));
|
|
234
232
|
if (sigLength < 65) {
|
|
@@ -237,19 +235,19 @@ export function getSerializedHandleOpsTx({ userOps, entryPoint, chainId, removeZ
|
|
|
237
235
|
}
|
|
238
236
|
else {
|
|
239
237
|
// For longer signatures, only randomize the last 65 bytes
|
|
240
|
-
const originalPart = slice(
|
|
238
|
+
const originalPart = slice(userOp.signature, 0, sigLength - 65);
|
|
241
239
|
const randomPart = randomizeBytes(65);
|
|
242
240
|
newSignature = concat([originalPart, randomPart]);
|
|
243
241
|
}
|
|
244
242
|
return {
|
|
245
|
-
...
|
|
243
|
+
...userOp,
|
|
246
244
|
signature: newSignature
|
|
247
245
|
};
|
|
248
246
|
});
|
|
249
247
|
}
|
|
250
248
|
// Apply removeZeros logic if needed
|
|
251
249
|
const finalOps = removeZeros
|
|
252
|
-
? processedOps.map((
|
|
250
|
+
? processedOps.map((userOp) => fillUserOpWithDummyData(userOp))
|
|
253
251
|
: processedOps;
|
|
254
252
|
const data = encodeHandleOpsCalldata({
|
|
255
253
|
userOps: finalOps,
|
|
@@ -263,9 +261,33 @@ export function getSerializedHandleOpsTx({ userOps, entryPoint, chainId, removeZ
|
|
|
263
261
|
};
|
|
264
262
|
return serializeTxWithDefaults(txParams);
|
|
265
263
|
}
|
|
266
|
-
|
|
264
|
+
// Shared utility for Arbitrum L1 gas estimation
|
|
265
|
+
export async function getArbitrumL1GasEstimate({ publicClient, userOps, entryPoint }) {
|
|
266
|
+
const precompileAddress = "0x00000000000000000000000000000000000000C8";
|
|
267
267
|
const serializedTx = getSerializedHandleOpsTx({
|
|
268
|
-
userOps
|
|
268
|
+
userOps,
|
|
269
|
+
entryPoint,
|
|
270
|
+
chainId: publicClient.chain?.id ?? 10,
|
|
271
|
+
removeZeros: false
|
|
272
|
+
});
|
|
273
|
+
const arbGasPriceOracle = getContract({
|
|
274
|
+
abi: ArbitrumL1FeeAbi,
|
|
275
|
+
address: precompileAddress,
|
|
276
|
+
client: {
|
|
277
|
+
public: publicClient
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
const { result } = await arbGasPriceOracle.simulate.gasEstimateL1Component([
|
|
281
|
+
entryPoint,
|
|
282
|
+
false,
|
|
283
|
+
serializedTx
|
|
284
|
+
]);
|
|
285
|
+
const [gasForL1, l2BaseFee, l1BaseFeeEstimate] = result;
|
|
286
|
+
return { gasForL1, l2BaseFee, l1BaseFeeEstimate };
|
|
287
|
+
}
|
|
288
|
+
async function calcEtherlinkPvg(userOp, entryPoint, gasPriceManager, verify) {
|
|
289
|
+
const serializedTx = getSerializedHandleOpsTx({
|
|
290
|
+
userOps: [userOp],
|
|
269
291
|
entryPoint,
|
|
270
292
|
chainId: 128123 // Etherlink chain ID
|
|
271
293
|
});
|
|
@@ -284,9 +306,9 @@ async function calcEtherlinkPvg(op, entryPoint, gasPriceManager, verify) {
|
|
|
284
306
|
const inclusionFeeInGas = inclusionFee / maxFeePerGas;
|
|
285
307
|
return inclusionFeeInGas;
|
|
286
308
|
}
|
|
287
|
-
async function calcMantlePvg(publicClient,
|
|
309
|
+
async function calcMantlePvg(publicClient, userOp, entryPoint, gasPriceManager, verify) {
|
|
288
310
|
const serializedTx = getSerializedHandleOpsTx({
|
|
289
|
-
userOps: [
|
|
311
|
+
userOps: [userOp],
|
|
290
312
|
entryPoint,
|
|
291
313
|
chainId: publicClient.chain.id
|
|
292
314
|
});
|
|
@@ -344,9 +366,9 @@ async function calcMantlePvg(publicClient, op, entryPoint, gasPriceManager, veri
|
|
|
344
366
|
const l2MaxFee = BigInt(maxFeePerGas);
|
|
345
367
|
return l1RollupFee / l2MaxFee;
|
|
346
368
|
}
|
|
347
|
-
async function calcOptimismPvg(publicClient,
|
|
369
|
+
async function calcOptimismPvg(publicClient, userOp, entryPoint, gasPriceManager, validate) {
|
|
348
370
|
const serializedTx = getSerializedHandleOpsTx({
|
|
349
|
-
userOps: [
|
|
371
|
+
userOps: [userOp],
|
|
350
372
|
entryPoint,
|
|
351
373
|
chainId: publicClient.chain.id,
|
|
352
374
|
removeZeros: false,
|
|
@@ -383,26 +405,12 @@ async function calcOptimismPvg(publicClient, op, entryPoint, gasPriceManager, va
|
|
|
383
405
|
const l2price = minBigInt(l2MaxFee, l2PriorityFee);
|
|
384
406
|
return l1Fee / l2price;
|
|
385
407
|
}
|
|
386
|
-
async function calcArbitrumPvg(publicClient,
|
|
387
|
-
const
|
|
388
|
-
|
|
389
|
-
userOps: [
|
|
390
|
-
entryPoint
|
|
391
|
-
chainId: publicClient.chain?.id ?? 10
|
|
408
|
+
async function calcArbitrumPvg(publicClient, userOp, entryPoint, gasPriceManager, validate) {
|
|
409
|
+
const { gasForL1, l2BaseFee, l1BaseFeeEstimate } = await getArbitrumL1GasEstimate({
|
|
410
|
+
publicClient,
|
|
411
|
+
userOps: [userOp],
|
|
412
|
+
entryPoint
|
|
392
413
|
});
|
|
393
|
-
const arbGasPriceOracle = getContract({
|
|
394
|
-
abi: ArbitrumL1FeeAbi,
|
|
395
|
-
address: precompileAddress,
|
|
396
|
-
client: {
|
|
397
|
-
public: publicClient
|
|
398
|
-
}
|
|
399
|
-
});
|
|
400
|
-
const { result } = await arbGasPriceOracle.simulate.gasEstimateL1Component([
|
|
401
|
-
entryPoint,
|
|
402
|
-
false,
|
|
403
|
-
serializedTx
|
|
404
|
-
]);
|
|
405
|
-
let [gasForL1, l2BaseFee, l1BaseFeeEstimate] = result;
|
|
406
414
|
const arbitrumManager = gasPriceManager.arbitrumManager;
|
|
407
415
|
arbitrumManager.saveL1BaseFee(l1BaseFeeEstimate);
|
|
408
416
|
arbitrumManager.saveL2BaseFee(l2BaseFee);
|
|
@@ -412,8 +420,45 @@ async function calcArbitrumPvg(publicClient, op, entryPoint, gasPriceManager, va
|
|
|
412
420
|
arbitrumManager.getMinL1BaseFee(),
|
|
413
421
|
arbitrumManager.getMaxL2BaseFee()
|
|
414
422
|
]);
|
|
415
|
-
|
|
423
|
+
return (gasForL1 * l2BaseFee * minL1Fee) / (maxL1Fee * maxL2Fee);
|
|
416
424
|
}
|
|
417
425
|
return gasForL1;
|
|
418
426
|
}
|
|
419
|
-
|
|
427
|
+
// Monad consumes the entire gasLimit set by TX. To account for this, we need to know the gasLimit
|
|
428
|
+
// the bundler sets for this userOp.
|
|
429
|
+
export async function calcMonadPvg({ userOp, config, entryPoint, validate }) {
|
|
430
|
+
const { utilityWalletAddress: beneficiary, v6CallGasLimitMultiplier, v6VerificationGasLimitMultiplier, v7VerificationGasLimitMultiplier, v7PaymasterVerificationGasLimitMultiplier, v7CallGasLimitMultiplier, v7PaymasterPostOpGasLimitMultiplier } = config;
|
|
431
|
+
const bundlerGasLimit = await getBundleGasLimit({
|
|
432
|
+
config,
|
|
433
|
+
userOps: [userOp],
|
|
434
|
+
entryPoint,
|
|
435
|
+
executorAddress: beneficiary
|
|
436
|
+
});
|
|
437
|
+
// Calculate actual gas used by removing multipliers based on version
|
|
438
|
+
let gasUsedByUserOp = 0n;
|
|
439
|
+
if (isVersion06(userOp)) {
|
|
440
|
+
const realCallGasLimit = unscaleBigIntByPercent(userOp.callGasLimit, BigInt(v6CallGasLimitMultiplier));
|
|
441
|
+
const realVerificationGasLimit = unscaleBigIntByPercent(userOp.verificationGasLimit, BigInt(v6VerificationGasLimitMultiplier));
|
|
442
|
+
gasUsedByUserOp = realCallGasLimit + realVerificationGasLimit;
|
|
443
|
+
}
|
|
444
|
+
if (isVersion07(userOp)) {
|
|
445
|
+
const realCallGasLimit = unscaleBigIntByPercent(userOp.callGasLimit, BigInt(v7CallGasLimitMultiplier));
|
|
446
|
+
const realVerificationGasLimit = unscaleBigIntByPercent(userOp.verificationGasLimit, BigInt(v7VerificationGasLimitMultiplier));
|
|
447
|
+
const realPaymasterVerificationGasLimit = unscaleBigIntByPercent(userOp.paymasterVerificationGasLimit ?? 0n, BigInt(v7PaymasterVerificationGasLimitMultiplier));
|
|
448
|
+
const realPaymasterPostOpGasLimit = unscaleBigIntByPercent(userOp.paymasterPostOpGasLimit ?? 0n, BigInt(v7PaymasterPostOpGasLimitMultiplier));
|
|
449
|
+
gasUsedByUserOp =
|
|
450
|
+
realCallGasLimit +
|
|
451
|
+
realVerificationGasLimit +
|
|
452
|
+
realPaymasterVerificationGasLimit +
|
|
453
|
+
realPaymasterPostOpGasLimit;
|
|
454
|
+
}
|
|
455
|
+
// Monad uses the entire tx.gasLimit.
|
|
456
|
+
let burnedGas = bundlerGasLimit - scaleBigIntByPercent(gasUsedByUserOp, 70n);
|
|
457
|
+
if (validate) {
|
|
458
|
+
// We scale down 10% during validation to account for the variance in
|
|
459
|
+
// dummy paymasterData and signature fields.
|
|
460
|
+
burnedGas = scaleBigIntByPercent(burnedGas, 90n);
|
|
461
|
+
}
|
|
462
|
+
return burnedGas;
|
|
463
|
+
}
|
|
464
|
+
//# sourceMappingURL=preVerificationGasCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preVerificationGasCalculator.js","sourceRoot":"","sources":["../../../rpc/estimation/preVerificationGasCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ERC7769Errors, RpcError, estimateUserOperationGasSchema } from "../../types/index.js";
|
|
2
2
|
import { parseEther, toHex } from "viem";
|
|
3
3
|
import { maxBigInt, scaleBigIntByPercent } from "../../utils/bigInt.js";
|
|
4
|
-
import { calcExecutionPvgComponent, calcL2PvgComponent } from "../../utils/preVerificationGasCalulator.js";
|
|
5
4
|
import { deepHexlify, getUserOpHash, isVersion06, isVersion07 } from "../../utils/userop.js";
|
|
6
5
|
import { createMethodHandler } from "../createMethodHandler.js";
|
|
6
|
+
import { calcExecutionPvgComponent, calcL2PvgComponent, calcMonadPvg } from "../estimation/preVerificationGasCalculator.js";
|
|
7
7
|
function calcVerificationGasAndCallGasLimit(userOp, executionResult, gasLimits) {
|
|
8
8
|
const verificationGasLimit = gasLimits?.verificationGasLimit ??
|
|
9
9
|
scaleBigIntByPercent(executionResult.preOpGas - userOp.preVerificationGas, 150n);
|
|
@@ -21,7 +21,7 @@ function calcVerificationGasAndCallGasLimit(userOp, executionResult, gasLimits)
|
|
|
21
21
|
}
|
|
22
22
|
const getGasEstimates = async ({ rpcHandler, userOp, entryPoint, stateOverrides }) => {
|
|
23
23
|
// Prepare userOperation for simulation.
|
|
24
|
-
const { simulationVerificationGasLimit, simulationCallGasLimit, simulationPaymasterVerificationGasLimit, simulationPaymasterPostOpGasLimit,
|
|
24
|
+
const { simulationVerificationGasLimit, simulationCallGasLimit, simulationPaymasterVerificationGasLimit, simulationPaymasterPostOpGasLimit, v6CallGasLimitMultiplier, v6VerificationGasLimitMultiplier, v7VerificationGasLimitMultiplier, v7PaymasterVerificationGasLimitMultiplier, v7CallGasLimitMultiplier, v7PaymasterPostOpGasLimitMultiplier, callGasLimitFloor } = rpcHandler.config;
|
|
25
25
|
// Create a deep mutable copy of stateOverrides to avoid modifying frozen objects
|
|
26
26
|
let mutableStateOverrides;
|
|
27
27
|
if (stateOverrides) {
|
|
@@ -90,24 +90,18 @@ const getGasEstimates = async ({ rpcHandler, userOp, entryPoint, stateOverrides
|
|
|
90
90
|
const successResult = executionResult;
|
|
91
91
|
let { verificationGasLimit, callGasLimit, paymasterVerificationGasLimit } = calcVerificationGasAndCallGasLimit(simulationUserOp, successResult.data.executionResult, successResult.data);
|
|
92
92
|
let paymasterPostOpGasLimit = 0n;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
1n;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
paymasterPostOpGasLimit =
|
|
106
|
-
successResult.data.executionResult.paymasterPostOpGasLimit || 1n;
|
|
107
|
-
const userOpPaymasterPostOpGasLimit = "paymasterPostOpGasLimit" in userOp
|
|
108
|
-
? (userOp.paymasterPostOpGasLimit ?? 1n)
|
|
109
|
-
: 1n;
|
|
110
|
-
paymasterPostOpGasLimit = maxBigInt(userOpPaymasterPostOpGasLimit, scaleBigIntByPercent(paymasterPostOpGasLimit, paymasterGasLimitMultiplier));
|
|
93
|
+
const hasPaymaster = isVersion07(userOp) && userOp.paymaster !== null;
|
|
94
|
+
const executionData = successResult.data.executionResult;
|
|
95
|
+
if (hasPaymaster) {
|
|
96
|
+
if (!paymasterVerificationGasLimit &&
|
|
97
|
+
"paymasterVerificationGasLimit" in executionData) {
|
|
98
|
+
paymasterVerificationGasLimit =
|
|
99
|
+
executionData.paymasterVerificationGasLimit || 1n;
|
|
100
|
+
}
|
|
101
|
+
if ("paymasterPostOpGasLimit" in executionData) {
|
|
102
|
+
paymasterPostOpGasLimit =
|
|
103
|
+
executionData.paymasterPostOpGasLimit || 1n;
|
|
104
|
+
}
|
|
111
105
|
}
|
|
112
106
|
if (simulationUserOp.callData === "0x") {
|
|
113
107
|
callGasLimit = 0n;
|
|
@@ -148,7 +142,7 @@ export const ethEstimateUserOperationGasHandler = createMethodHandler({
|
|
|
148
142
|
const [userOp, entryPoint, stateOverrides] = params;
|
|
149
143
|
rpcHandler.ensureEntryPointIsSupported(entryPoint);
|
|
150
144
|
// Extract all config values at the beginning
|
|
151
|
-
const { supportsEip7623, v7PreVerificationGasLimitMultiplier, v6PreVerificationGasLimitMultiplier } = rpcHandler.config;
|
|
145
|
+
const { supportsEip7623, v7PreVerificationGasLimitMultiplier, v6PreVerificationGasLimitMultiplier, chainType } = rpcHandler.config;
|
|
152
146
|
// Execute multiple async operations in parallel
|
|
153
147
|
const [[validEip7702Auth, validEip7702AuthError], gasEstimateResult, l2GasComponent] = await Promise.all([
|
|
154
148
|
rpcHandler.validateEip7702Auth({
|
|
@@ -207,6 +201,17 @@ export const ethEstimateUserOperationGasHandler = createMethodHandler({
|
|
|
207
201
|
});
|
|
208
202
|
// Extrace values for returning
|
|
209
203
|
const { verificationGasLimit, callGasLimit, paymasterVerificationGasLimit, paymasterPostOpGasLimit } = finalGasLimits;
|
|
204
|
+
if (chainType === "monad") {
|
|
205
|
+
preVerificationGas = await calcMonadPvg({
|
|
206
|
+
config: rpcHandler.config,
|
|
207
|
+
userOp: {
|
|
208
|
+
...userOp,
|
|
209
|
+
...finalGasLimits
|
|
210
|
+
},
|
|
211
|
+
entryPoint,
|
|
212
|
+
validate: false
|
|
213
|
+
});
|
|
214
|
+
}
|
|
210
215
|
if (isVersion07(userOp)) {
|
|
211
216
|
return {
|
|
212
217
|
preVerificationGas,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_estimateUserOperationGas.js","sourceRoot":"","sources":["../../../rpc/methods/eth_estimateUserOperationGas.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,EACb,QAAQ,EAGR,8BAA8B,EACjC,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"eth_estimateUserOperationGas.js","sourceRoot":"","sources":["../../../rpc/methods/eth_estimateUserOperationGas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Address, type ApiVersion, type UserOperation } from "../../types/index.js";
|
|
2
|
-
import type
|
|
2
|
+
import { type Hex } from "viem";
|
|
3
3
|
import type { RpcHandler } from "../rpcHandler.js";
|
|
4
4
|
export declare function addToMempoolIfValid({ rpcHandler, userOp, entryPoint, apiVersion, boost }: {
|
|
5
5
|
rpcHandler: RpcHandler;
|
|
@@ -1,25 +1,64 @@
|
|
|
1
1
|
import { ERC7769Errors, RpcError, sendUserOperationSchema } from "../../types/index.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { getAAError } from "../../utils/index.js";
|
|
3
|
+
import { formatEther } from "viem";
|
|
4
|
+
import { calculateRequiredPrefund, getNonceKeyAndSequence, getUserOpHash, hasPaymaster } from "../../utils/userop.js";
|
|
4
5
|
import { createMethodHandler } from "../createMethodHandler.js";
|
|
5
|
-
|
|
6
|
+
import { calcExecutionPvgComponent, calcL2PvgComponent, calcMonadPvg } from "../estimation/preVerificationGasCalculator.js";
|
|
7
|
+
const validateChainRules = async ({ rpcHandler, userOp, config }) => {
|
|
8
|
+
// Monad-specific validation
|
|
9
|
+
if (config.chainType === "monad") {
|
|
10
|
+
// Skip validation if userOp has a paymaster
|
|
11
|
+
if (hasPaymaster(userOp)) {
|
|
12
|
+
return [true, ""];
|
|
13
|
+
}
|
|
14
|
+
// Get sender's balance
|
|
15
|
+
const balance = await rpcHandler.config.publicClient.getBalance({
|
|
16
|
+
address: userOp.sender
|
|
17
|
+
});
|
|
18
|
+
// Calculate required prefund
|
|
19
|
+
const requiredPrefund = calculateRequiredPrefund(userOp);
|
|
20
|
+
// Check if sender balance - prefund >= monad reserve balance
|
|
21
|
+
const balanceAfterPrefund = balance - requiredPrefund;
|
|
22
|
+
if (balanceAfterPrefund < config.monadReserveBalance) {
|
|
23
|
+
return [
|
|
24
|
+
false,
|
|
25
|
+
`Sender failed reserve balance check of ${formatEther(config.monadReserveBalance)} MON`
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Add more chain-specific validations here in the future
|
|
30
|
+
return [true, ""];
|
|
31
|
+
};
|
|
32
|
+
const validatePvg = async ({ apiVersion, rpcHandler, userOp, entryPoint, config, boost = false }) => {
|
|
6
33
|
// PVG validation is skipped for v1
|
|
7
34
|
if (apiVersion === "v1" || boost) {
|
|
8
35
|
return [true, ""];
|
|
9
36
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
37
|
+
let requiredPvg;
|
|
38
|
+
if (config.chainType === "monad") {
|
|
39
|
+
// Monad consumes the entire gasLimit, so PVG is calculated differently
|
|
40
|
+
requiredPvg = await calcMonadPvg({
|
|
41
|
+
userOp,
|
|
42
|
+
config,
|
|
43
|
+
entryPoint,
|
|
44
|
+
validate: true
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const executionGasComponent = calcExecutionPvgComponent({
|
|
49
|
+
userOp,
|
|
50
|
+
supportsEip7623: rpcHandler.config.supportsEip7623,
|
|
51
|
+
config: rpcHandler.config
|
|
52
|
+
});
|
|
53
|
+
const l2GasComponent = await calcL2PvgComponent({
|
|
54
|
+
config: rpcHandler.config,
|
|
55
|
+
userOp,
|
|
56
|
+
entryPoint,
|
|
57
|
+
gasPriceManager: rpcHandler.gasPriceManager,
|
|
58
|
+
validate: true
|
|
59
|
+
});
|
|
60
|
+
requiredPvg = executionGasComponent + l2GasComponent;
|
|
61
|
+
}
|
|
23
62
|
if (requiredPvg > userOp.preVerificationGas) {
|
|
24
63
|
return [
|
|
25
64
|
false,
|
|
@@ -60,14 +99,26 @@ export async function addToMempoolIfValid({ rpcHandler, userOp, entryPoint, apiV
|
|
|
60
99
|
chainId: rpcHandler.config.chainId
|
|
61
100
|
});
|
|
62
101
|
// Execute multiple async operations in parallel
|
|
63
|
-
const [{ queuedUserOps, validationResult }, currentNonceSeq, [pvgSuccess, pvgErrorReason], [preMempoolSuccess, preMempoolError], [validEip7702Auth, validEip7702AuthError]] = await Promise.all([
|
|
102
|
+
const [{ queuedUserOps, validationResult }, currentNonceSeq, [pvgSuccess, pvgErrorReason], [preMempoolSuccess, preMempoolError], [validEip7702Auth, validEip7702AuthError], [chainRulesSuccess, chainRulesError]] = await Promise.all([
|
|
64
103
|
getUserOpValidationResult(rpcHandler, userOp, entryPoint),
|
|
65
104
|
rpcHandler.getNonceSeq(userOp, entryPoint),
|
|
66
|
-
validatePvg(
|
|
105
|
+
validatePvg({
|
|
106
|
+
apiVersion,
|
|
107
|
+
rpcHandler,
|
|
108
|
+
userOp,
|
|
109
|
+
entryPoint,
|
|
110
|
+
boost,
|
|
111
|
+
config: rpcHandler.config
|
|
112
|
+
}),
|
|
67
113
|
rpcHandler.preMempoolChecks(userOp, apiVersion, boost),
|
|
68
114
|
rpcHandler.validateEip7702Auth({
|
|
69
115
|
userOp,
|
|
70
116
|
validateSender: true
|
|
117
|
+
}),
|
|
118
|
+
validateChainRules({
|
|
119
|
+
rpcHandler,
|
|
120
|
+
userOp,
|
|
121
|
+
config: rpcHandler.config
|
|
71
122
|
})
|
|
72
123
|
]);
|
|
73
124
|
// Validate eip7702Auth
|
|
@@ -85,6 +136,11 @@ export async function addToMempoolIfValid({ rpcHandler, userOp, entryPoint, apiV
|
|
|
85
136
|
rpcHandler.eventManager.emitFailedValidation(userOpHash, pvgErrorReason);
|
|
86
137
|
throw new RpcError(pvgErrorReason, ERC7769Errors.SimulateValidation);
|
|
87
138
|
}
|
|
139
|
+
// Chain rules validation
|
|
140
|
+
if (!chainRulesSuccess) {
|
|
141
|
+
rpcHandler.eventManager.emitFailedValidation(userOpHash, chainRulesError);
|
|
142
|
+
throw new RpcError(chainRulesError, ERC7769Errors.InvalidFields);
|
|
143
|
+
}
|
|
88
144
|
// Nonce validation
|
|
89
145
|
const [, userOpNonceSeq] = getNonceKeyAndSequence(userOp.nonce);
|
|
90
146
|
if (userOpNonceSeq < currentNonceSeq) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_sendUserOperation.js","sourceRoot":"","sources":["../../../rpc/methods/eth_sendUserOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,aAAa,EAEb,QAAQ,EAER,uBAAuB,EAC1B,MAAM,aAAa,CAAA;AAEpB,OAAO,EACH,yBAAyB,EACzB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"eth_sendUserOperation.js","sourceRoot":"","sources":["../../../rpc/methods/eth_sendUserOperation.ts"],"names":[],"mappings":"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"}
|
package/esm/rpc/rpcHandler.js
CHANGED
|
@@ -2,7 +2,6 @@ import { calculateAA95GasFloor } from "../executor/index.js";
|
|
|
2
2
|
import { ERC7769Errors, EntryPointV06Abi, EntryPointV07Abi, RpcError } from "../types/index.js";
|
|
3
3
|
import { getNonceKeyAndSequence, isVersion06, isVersion07 } from "../utils/index.js";
|
|
4
4
|
import { getContract, zeroAddress } from "viem";
|
|
5
|
-
import { generatePrivateKey, privateKeyToAddress } from "viem/accounts";
|
|
6
5
|
import { recoverAuthorizationAddress } from "viem/utils";
|
|
7
6
|
import { getEip7702AuthAddress } from "../utils/eip7702.js";
|
|
8
7
|
import { registerHandlers } from "./methods/index.js";
|
|
@@ -106,7 +105,7 @@ export class RpcHandler {
|
|
|
106
105
|
}
|
|
107
106
|
const gasLimits = calculateAA95GasFloor({
|
|
108
107
|
userOps: [userOp],
|
|
109
|
-
beneficiary:
|
|
108
|
+
beneficiary: this.config.utilityWalletAddress
|
|
110
109
|
});
|
|
111
110
|
if (gasLimits > this.config.maxGasPerBundle) {
|
|
112
111
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpcHandler.js","sourceRoot":"","sources":["../../rpc/rpcHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,qBAAqB,EACxB,MAAM,gBAAgB,CAAA;AAQvB,OAAO,EAEH,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAEhB,QAAQ,EAEX,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"rpcHandler.js","sourceRoot":"","sources":["../../rpc/rpcHandler.ts"],"names":[],"mappings":"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"}
|
package/esm/types/utils.d.ts
CHANGED
|
@@ -19,5 +19,4 @@ export declare class RpcError extends Error {
|
|
|
19
19
|
}
|
|
20
20
|
export type Environment = "production" | "staging" | "development";
|
|
21
21
|
export type ApiVersion = "v1" | "v2";
|
|
22
|
-
export type ChainType = "default" | "op-stack" | "arbitrum" | "hedera" | "mantle";
|
|
23
22
|
//# sourceMappingURL=utils.d.ts.map
|
package/esm/utils/eip7702.js
CHANGED
|
@@ -5,19 +5,22 @@ export const getEip7702AuthAddress = (eip7702Auth) => {
|
|
|
5
5
|
: eip7702Auth.contractAddress;
|
|
6
6
|
};
|
|
7
7
|
export const getEip7702DelegationOverrides = (userOps) => {
|
|
8
|
-
|
|
8
|
+
// Use Map to deduplicate by sender address
|
|
9
|
+
const overrideMap = new Map();
|
|
9
10
|
for (const userOp of userOps) {
|
|
10
11
|
if (userOp.eip7702Auth) {
|
|
11
12
|
const delegate = getEip7702AuthAddress(userOp.eip7702Auth);
|
|
12
|
-
|
|
13
|
+
const code = concat(["0xef0100", delegate]);
|
|
14
|
+
// Only add if not already present, or update if present
|
|
15
|
+
overrideMap.set(userOp.sender, {
|
|
13
16
|
address: userOp.sender,
|
|
14
|
-
code
|
|
17
|
+
code
|
|
15
18
|
});
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
|
-
if (
|
|
21
|
+
if (overrideMap.size === 0) {
|
|
19
22
|
return undefined;
|
|
20
23
|
}
|
|
21
|
-
return
|
|
24
|
+
return Array.from(overrideMap.values());
|
|
22
25
|
};
|
|
23
26
|
//# sourceMappingURL=eip7702.js.map
|
package/esm/utils/eip7702.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eip7702.js","sourceRoot":"","sources":["../../utils/eip7702.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,MAAM,EAAE,MAAM,MAAM,CAAA;AAG/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,WAAsD,EAC/C,EAAE;IACT,OAAO,SAAS,IAAI,WAAW;QAC3B,CAAC,CAAC,WAAW,CAAC,OAAO;QACrB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAA;AACrC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,OAAwB,EACC,EAAE;IAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"eip7702.js","sourceRoot":"","sources":["../../utils/eip7702.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,MAAM,EAAE,MAAM,MAAM,CAAA;AAG/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,WAAsD,EAC/C,EAAE;IACT,OAAO,SAAS,IAAI,WAAW;QAC3B,CAAC,CAAC,WAAW,CAAC,OAAO;QACrB,CAAC,CAAC,WAAW,CAAC,eAAe,CAAA;AACrC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,OAAwB,EACC,EAAE;IAC3B,2CAA2C;IAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAA;IAE7D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;YAE3C,wDAAwD;YACxD,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC3B,OAAO,EAAE,MAAM,CAAC,MAAM;gBACtB,IAAI;aACP,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;AAC3C,CAAC,CAAA"}
|
package/esm/utils/index.d.ts
CHANGED
package/esm/utils/index.js
CHANGED
package/esm/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA"}
|