@pimlico/alto 0.0.19 → 0.0.20
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/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
- 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/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
- 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 -0
- package/contracts/IEntryPointFilterOpsOverride.sol/IEntryPointFilterOpsOverride09.json +1 -0
- 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 -0
- 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/account-abstraction-v9/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -0
- package/contracts/account-abstraction-v9/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
- package/contracts/account-abstraction-v9/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -0
- package/contracts/account-abstraction-v9/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -0
- package/contracts/build-info/338795fc743ca612.json +1 -0
- package/contracts/build-info/44a9648cfe32a468.json +1 -0
- package/contracts/build-info/{880955d5786bfdae.json → 8dbf8a4ad39019b5.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/core/Eip7702Support.sol/Eip7702Support.json +1 -0
- package/contracts/core/NonceManager.sol/NonceManager.json +1 -0
- package/contracts/core/SenderCreator.sol/SenderCreator.json +1 -0
- package/contracts/core/StakeManager.sol/StakeManager.json +1 -0
- package/contracts/core/UserOperationLib.sol/UserOperationLib.json +1 -0
- package/contracts/interfaces/IAccount.sol/IAccount.json +1 -0
- package/contracts/interfaces/IAccountExecute.sol/IAccountExecute.json +1 -0
- 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/IPaymaster.sol/IPaymaster.json +1 -0
- package/contracts/interfaces/ISenderCreator.sol/ISenderCreator.json +1 -0
- package/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
- package/contracts/overrides/Eip7702Support.sol/Eip7702Support.json +1 -0
- package/contracts/overrides/NonceManager.sol/NonceManager.json +1 -0
- package/contracts/overrides/SenderCreator.sol/SenderCreator.json +1 -0
- package/contracts/overrides/StakeManager.sol/StakeManager.json +1 -0
- package/contracts/overrides/UserOperationLib.sol/UserOperationLib.json +1 -0
- package/contracts/utils/Exec.sol/Exec.json +1 -1
- package/contracts/utils/StorageSlot.sol/StorageSlot.json +1 -0
- package/contracts/v09/EntryPoint.sol/EntryPoint.json +1 -0
- package/esm/cli/alto.js +13 -6
- package/esm/cli/alto.js.map +1 -1
- package/esm/cli/config/bundler.d.ts +190 -148
- package/esm/cli/config/bundler.js +72 -83
- package/esm/cli/config/bundler.js.map +1 -1
- package/esm/cli/config/options.d.ts +2 -1
- package/esm/cli/config/options.js +105 -68
- package/esm/cli/config/options.js.map +1 -1
- package/esm/cli/customTransport.d.ts +3 -3
- package/esm/cli/deploySimulationsContract.d.ts +1 -0
- package/esm/cli/deploySimulationsContract.js +41 -5
- package/esm/cli/deploySimulationsContract.js.map +1 -1
- package/esm/cli/handler.js +48 -52
- package/esm/cli/handler.js.map +1 -1
- package/esm/cli/setupServer.js +46 -47
- package/esm/cli/setupServer.js.map +1 -1
- package/esm/cli/shutDown.d.ts +20 -0
- package/esm/cli/shutDown.js +260 -0
- package/esm/cli/shutDown.js.map +1 -0
- 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/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
- 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/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
- package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
- package/esm/createConfig.d.ts +9 -2
- package/esm/createConfig.js.map +1 -1
- package/esm/executor/{userOpMonitor.d.ts → bundleManager.d.ts} +38 -32
- package/esm/executor/{userOpMonitor.js → bundleManager.js} +127 -99
- package/esm/executor/bundleManager.js.map +1 -0
- package/esm/executor/executor.d.ts +4 -3
- package/esm/executor/executor.js +33 -20
- package/esm/executor/executor.js.map +1 -1
- package/esm/executor/executorManager.d.ts +17 -15
- package/esm/executor/executorManager.js +130 -55
- package/esm/executor/executorManager.js.map +1 -1
- package/esm/executor/filterOpsAndEstimateGas.d.ts +17 -2
- package/esm/executor/filterOpsAndEstimateGas.js +100 -77
- package/esm/executor/filterOpsAndEstimateGas.js.map +1 -1
- package/esm/executor/index.d.ts +1 -0
- package/esm/executor/index.js +1 -0
- package/esm/executor/index.js.map +1 -1
- package/esm/executor/senderManager/createMemorySenderManager.js +13 -0
- package/esm/executor/senderManager/createMemorySenderManager.js.map +1 -1
- package/esm/executor/senderManager/createRedisSenderManager.d.ts +2 -1
- package/esm/executor/senderManager/createRedisSenderManager.js +3 -6
- package/esm/executor/senderManager/createRedisSenderManager.js.map +1 -1
- package/esm/executor/senderManager/flushOnStartUp.js +4 -4
- package/esm/executor/senderManager/flushOnStartUp.js.map +1 -1
- package/esm/executor/senderManager/index.d.ts +1 -0
- package/esm/executor/senderManager/index.js +6 -2
- package/esm/executor/senderManager/index.js.map +1 -1
- package/esm/executor/senderManager/validateAndRefill.js +2 -2
- package/esm/executor/senderManager/validateAndRefill.js.map +1 -1
- package/esm/executor/utilityWalletMonitor.d.ts +4 -4
- package/esm/executor/utilityWalletMonitor.js +1 -1
- package/esm/executor/utilityWalletMonitor.js.map +1 -1
- package/esm/executor/utils.d.ts +7 -2
- package/esm/executor/utils.js +57 -26
- package/esm/executor/utils.js.map +1 -1
- package/esm/handlers/arbitrumGasPriceManager.d.ts +3 -2
- package/esm/handlers/arbitrumGasPriceManager.js +6 -2
- package/esm/handlers/arbitrumGasPriceManager.js.map +1 -1
- package/esm/handlers/eventManager.d.ts +9 -9
- package/esm/handlers/eventManager.js +59 -60
- package/esm/handlers/eventManager.js.map +1 -1
- package/esm/handlers/gasPriceManager.d.ts +8 -9
- package/esm/handlers/gasPriceManager.js +68 -80
- package/esm/handlers/gasPriceManager.js.map +1 -1
- package/esm/handlers/mantleGasPriceManager.d.ts +4 -4
- package/esm/handlers/mantleGasPriceManager.js +4 -4
- package/esm/handlers/mantleGasPriceManager.js.map +1 -1
- package/esm/handlers/optimismManager.d.ts +1 -1
- package/esm/handlers/optimismManager.js +1 -1
- package/esm/handlers/optimismManager.js.map +1 -1
- package/esm/mempool/index.d.ts +1 -1
- package/esm/mempool/index.js +1 -1
- package/esm/mempool/index.js.map +1 -1
- package/esm/mempool/mempool.d.ts +57 -22
- package/esm/mempool/mempool.js +180 -134
- package/esm/mempool/mempool.js.map +1 -1
- package/esm/mempool/reputationManager.d.ts +14 -14
- package/esm/mempool/reputationManager.js +36 -39
- package/esm/mempool/reputationManager.js.map +1 -1
- package/esm/mempool/statusManager.d.ts +20 -0
- package/esm/mempool/statusManager.js +143 -0
- package/esm/mempool/statusManager.js.map +1 -0
- package/esm/receiptCache/createMemoryReceiptCache.d.ts +3 -0
- package/esm/receiptCache/createMemoryReceiptCache.js +30 -0
- package/esm/receiptCache/createMemoryReceiptCache.js.map +1 -0
- package/esm/receiptCache/createRedisReceiptCache.d.ts +10 -0
- package/esm/receiptCache/createRedisReceiptCache.js +56 -0
- package/esm/receiptCache/createRedisReceiptCache.js.map +1 -0
- package/esm/receiptCache/index.d.ts +11 -0
- package/esm/receiptCache/index.js +21 -0
- package/esm/receiptCache/index.js.map +1 -0
- package/esm/rpc/createMethodHandler.js.map +1 -1
- package/esm/rpc/estimation/gasEstimationHandler.d.ts +2 -4
- package/esm/rpc/estimation/gasEstimationHandler.js.map +1 -1
- package/esm/rpc/estimation/gasEstimations06.d.ts +6 -7
- package/esm/rpc/estimation/gasEstimations06.js +1 -5
- package/esm/rpc/estimation/gasEstimations06.js.map +1 -1
- package/esm/rpc/estimation/gasEstimations07.d.ts +13 -41
- package/esm/rpc/estimation/gasEstimations07.js +27 -34
- package/esm/rpc/estimation/gasEstimations07.js.map +1 -1
- package/esm/{utils/preVerificationGasCalulator.d.ts → rpc/estimation/preVerificationGasCalculator.d.ts} +20 -6
- package/esm/{utils/preVerificationGasCalulator.js → rpc/estimation/preVerificationGasCalculator.js} +95 -47
- package/esm/rpc/estimation/preVerificationGasCalculator.js.map +1 -0
- package/esm/rpc/estimation/types.d.ts +4 -2
- package/esm/rpc/estimation/utils.d.ts +10 -8
- package/esm/rpc/estimation/utils.js +54 -48
- package/esm/rpc/estimation/utils.js.map +1 -1
- package/esm/rpc/methods/boost_sendUserOperation.d.ts +304 -0
- package/esm/rpc/methods/debug_bundler_clearReputation.js +1 -1
- package/esm/rpc/methods/debug_bundler_clearReputation.js.map +1 -1
- package/esm/rpc/methods/debug_bundler_clearState.js +1 -1
- package/esm/rpc/methods/debug_bundler_clearState.js.map +1 -1
- package/esm/rpc/methods/debug_bundler_dumpMempool.d.ts +338 -0
- package/esm/rpc/methods/debug_bundler_dumpReputation.js +1 -1
- package/esm/rpc/methods/debug_bundler_dumpReputation.js.map +1 -1
- package/esm/rpc/methods/eth_estimateUserOperationGas.d.ts +622 -14
- package/esm/rpc/methods/eth_estimateUserOperationGas.js +50 -29
- package/esm/rpc/methods/eth_estimateUserOperationGas.js.map +1 -1
- package/esm/rpc/methods/eth_getUserOperationByHash.d.ts +621 -11
- package/esm/rpc/methods/eth_getUserOperationByHash.js.map +1 -1
- package/esm/rpc/methods/eth_getUserOperationReceipt.d.ts +26 -26
- package/esm/rpc/methods/eth_getUserOperationReceipt.js +1 -1
- package/esm/rpc/methods/eth_sendUserOperation.d.ts +305 -1
- package/esm/rpc/methods/eth_sendUserOperation.js +132 -36
- package/esm/rpc/methods/eth_sendUserOperation.js.map +1 -1
- package/esm/rpc/methods/pimlico_getUserOperationStatus.js +1 -1
- package/esm/rpc/methods/pimlico_getUserOperationStatus.js.map +1 -1
- package/esm/rpc/methods/pimlico_sendUserOperationNow.d.ts +330 -26
- package/esm/rpc/methods/pimlico_sendUserOperationNow.js +15 -27
- package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
- package/esm/rpc/methods/pimlico_simulateAssetChange.d.ts +620 -12
- package/esm/rpc/methods/pimlico_simulateAssetChange.js +14 -19
- package/esm/rpc/methods/pimlico_simulateAssetChange.js.map +1 -1
- package/esm/rpc/rpcHandler.d.ts +21 -22
- package/esm/rpc/rpcHandler.js +15 -17
- package/esm/rpc/rpcHandler.js.map +1 -1
- package/esm/rpc/server.d.ts +5 -5
- package/esm/rpc/server.js +15 -11
- package/esm/rpc/server.js.map +1 -1
- package/esm/rpc/validation/BundlerCollectorTracerV06.js +1 -1
- package/esm/rpc/validation/BundlerCollectorTracerV06.js.map +1 -1
- package/esm/rpc/validation/BundlerCollectorTracerV07.js +1 -1
- package/esm/rpc/validation/BundlerCollectorTracerV07.js.map +1 -1
- package/esm/rpc/validation/SafeValidator.d.ts +13 -14
- package/esm/rpc/validation/SafeValidator.js +24 -24
- package/esm/rpc/validation/SafeValidator.js.map +1 -1
- package/esm/rpc/validation/TracerResultParserV06.d.ts +2 -2
- package/esm/rpc/validation/TracerResultParserV06.js +11 -11
- package/esm/rpc/validation/TracerResultParserV06.js.map +1 -1
- package/esm/rpc/validation/TracerResultParserV07.d.ts +2 -2
- package/esm/rpc/validation/TracerResultParserV07.js +13 -13
- package/esm/rpc/validation/TracerResultParserV07.js.map +1 -1
- package/esm/rpc/validation/UnsafeValidator.d.ts +18 -14
- package/esm/rpc/validation/UnsafeValidator.js +71 -40
- package/esm/rpc/validation/UnsafeValidator.js.map +1 -1
- package/esm/store/createMempoolStore.d.ts +1 -1
- package/esm/store/createMempoolStore.js +63 -139
- package/esm/store/createMempoolStore.js.map +1 -1
- package/esm/store/index.d.ts +4 -75
- package/esm/store/index.js +4 -1
- package/esm/store/index.js.map +1 -1
- package/esm/store/outstanding/index.d.ts +13 -0
- package/esm/store/outstanding/index.js +16 -0
- package/esm/store/outstanding/index.js.map +1 -0
- package/esm/store/{createMemoryOutstandingStore.d.ts → outstanding/memory.d.ts} +14 -13
- package/esm/store/outstanding/memory.js +263 -0
- package/esm/store/outstanding/memory.js.map +1 -0
- package/esm/store/outstanding/redis.d.ts +11 -0
- package/esm/store/outstanding/redis.js +229 -0
- package/esm/store/outstanding/redis.js.map +1 -0
- package/esm/store/outstanding/types.d.ts +19 -0
- package/esm/store/outstanding/types.js +2 -0
- package/esm/store/outstanding/types.js.map +1 -0
- package/esm/store/processing/index.d.ts +11 -0
- package/esm/store/processing/index.js +17 -0
- package/esm/store/processing/index.js.map +1 -0
- package/esm/store/processing/memory.d.ts +16 -0
- package/esm/store/processing/memory.js +58 -0
- package/esm/store/processing/memory.js.map +1 -0
- package/esm/store/processing/redis.d.ts +23 -0
- package/esm/store/processing/redis.js +85 -0
- package/esm/store/processing/redis.js.map +1 -0
- package/esm/store/processing/types.d.ts +10 -0
- package/esm/store/processing/types.js +2 -0
- package/esm/store/processing/types.js.map +1 -0
- package/esm/store/types.d.ts +50 -0
- package/esm/store/types.js +2 -0
- package/esm/store/types.js.map +1 -0
- package/esm/types/contracts/PimlicoSimulations.d.ts +81 -0
- package/esm/types/contracts/PimlicoSimulations.js +105 -0
- package/esm/types/contracts/PimlicoSimulations.js.map +1 -1
- package/esm/types/gasPrice.js +0 -18
- package/esm/types/gasPrice.js.map +1 -1
- package/esm/types/interfaces.d.ts +15 -10
- package/esm/types/mempool.d.ts +3 -0
- package/esm/types/schemas.d.ts +13174 -4732
- package/esm/types/schemas.js +113 -25
- package/esm/types/schemas.js.map +1 -1
- package/esm/types/utils.d.ts +2 -5
- package/esm/types/utils.js +16 -18
- package/esm/types/utils.js.map +1 -1
- package/esm/types/validation.d.ts +7646 -6912
- package/esm/types/validation.js +122 -152
- package/esm/types/validation.js.map +1 -1
- package/esm/utils/eip7702.d.ts +2 -1
- package/esm/utils/eip7702.js +14 -8
- package/esm/utils/eip7702.js.map +1 -1
- package/esm/utils/entryPointOverrides.js +18 -4
- package/esm/utils/entryPointOverrides.js.map +1 -1
- package/esm/utils/helpers.d.ts +2 -1
- package/esm/utils/helpers.js +30 -11
- package/esm/utils/helpers.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/metrics.d.ts +2 -1
- package/esm/utils/metrics.js +15 -8
- package/esm/utils/metrics.js.map +1 -1
- package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.js +8 -9
- package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +1 -1
- package/esm/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +24 -2
- package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js +85 -64
- package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js.map +1 -1
- package/esm/utils/minMaxQueue/index.d.ts +2 -2
- package/esm/utils/minMaxQueue/index.js +4 -3
- package/esm/utils/minMaxQueue/index.js.map +1 -1
- package/esm/utils/rpc-reply.d.ts +3 -3
- package/esm/utils/rpc-reply.js.map +1 -1
- package/esm/utils/toViemStateOverrides.js +7 -7
- package/esm/utils/toViemStateOverrides.js.map +1 -1
- package/esm/utils/userop.d.ts +87 -55
- package/esm/utils/userop.js +138 -248
- package/esm/utils/userop.js.map +1 -1
- package/package.json +4 -2
- package/contracts/build-info/7710b5a048396e70.json +0 -1
- package/esm/executor/userOpMonitor.js.map +0 -1
- package/esm/mempool/monitoring.d.ts +0 -15
- package/esm/mempool/monitoring.js +0 -118
- package/esm/mempool/monitoring.js.map +0 -1
- package/esm/store/createMemoryOutstandingStore.js +0 -240
- package/esm/store/createMemoryOutstandingStore.js.map +0 -1
- package/esm/store/createRedisOutstandingStore.d.ts +0 -27
- package/esm/store/createRedisOutstandingStore.js +0 -344
- package/esm/store/createRedisOutstandingStore.js.map +0 -1
- package/esm/store/createRedisStore.d.ts +0 -9
- package/esm/store/createRedisStore.js +0 -131
- package/esm/store/createRedisStore.js.map +0 -1
- package/esm/store/createStore.d.ts +0 -6
- package/esm/store/createStore.js +0 -66
- package/esm/store/createStore.js.map +0 -1
- package/esm/utils/preVerificationGasCalulator.js.map +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { GasPriceManager } from "../../handlers/index.js";
|
|
2
|
-
import type
|
|
3
|
-
import { type
|
|
4
|
-
import type { Logger, Metrics } from "../../utils/index.js";
|
|
2
|
+
import { type Address, type ExecutionResult, type InterfaceValidator, type ReferencedCodeHashes, type StateOverrides, type StorageMap, type UserOperation, type UserOperation06, type UserOperation07, type ValidationResult, type ValidationResult06, type ValidationResult07 } from "../../types/index.js";
|
|
3
|
+
import { type Logger, type Metrics } from "../../utils/index.js";
|
|
5
4
|
import type { AltoConfig } from "../../createConfig.js";
|
|
6
5
|
import { GasEstimationHandler } from "../estimation/gasEstimationHandler.js";
|
|
7
6
|
import type { SimulateHandleOpResult } from "../estimation/types.js";
|
|
@@ -16,24 +15,29 @@ export declare class UnsafeValidator implements InterfaceValidator {
|
|
|
16
15
|
metrics: Metrics;
|
|
17
16
|
gasPriceManager: GasPriceManager;
|
|
18
17
|
});
|
|
19
|
-
|
|
18
|
+
getSimulationResult06(errorResult: unknown, logger: Logger, simulationType: "validation" | "execution"): Promise<ValidationResult | ExecutionResult>;
|
|
20
19
|
validateHandleOp(args: {
|
|
21
20
|
userOp: UserOperation;
|
|
22
21
|
entryPoint: Address;
|
|
23
22
|
queuedUserOps: UserOperation[];
|
|
24
23
|
stateOverrides?: StateOverrides;
|
|
25
|
-
}): Promise<
|
|
24
|
+
}): Promise<{
|
|
25
|
+
callGasLimit: bigint;
|
|
26
|
+
verificationGasLimit: bigint;
|
|
27
|
+
paymasterVerificationGasLimit: bigint | null;
|
|
28
|
+
paymasterPostOpGasLimit: bigint | null;
|
|
29
|
+
}>;
|
|
26
30
|
getExecutionResult(args: {
|
|
27
31
|
userOp: UserOperation;
|
|
28
32
|
entryPoint: Address;
|
|
29
33
|
queuedUserOps: UserOperation[];
|
|
30
34
|
stateOverrides?: StateOverrides;
|
|
31
35
|
}): Promise<SimulateHandleOpResult>;
|
|
32
|
-
|
|
33
|
-
userOp:
|
|
36
|
+
getValidationResult06(args: {
|
|
37
|
+
userOp: UserOperation06;
|
|
34
38
|
entryPoint: Address;
|
|
35
39
|
codeHashes?: ReferencedCodeHashes;
|
|
36
|
-
}): Promise<
|
|
40
|
+
}): Promise<ValidationResult06 & {
|
|
37
41
|
storageMap: StorageMap;
|
|
38
42
|
referencedContracts?: ReferencedCodeHashes;
|
|
39
43
|
}>;
|
|
@@ -62,12 +66,12 @@ export declare class UnsafeValidator implements InterfaceValidator {
|
|
|
62
66
|
validAfter: number;
|
|
63
67
|
validUntil: number;
|
|
64
68
|
};
|
|
65
|
-
|
|
66
|
-
userOp:
|
|
67
|
-
queuedUserOps:
|
|
69
|
+
getValidationResult07(args: {
|
|
70
|
+
userOp: UserOperation07;
|
|
71
|
+
queuedUserOps: UserOperation07[];
|
|
68
72
|
entryPoint: Address;
|
|
69
73
|
codeHashes?: ReferencedCodeHashes;
|
|
70
|
-
}): Promise<
|
|
74
|
+
}): Promise<ValidationResult07 & {
|
|
71
75
|
storageMap: StorageMap;
|
|
72
76
|
referencedContracts?: ReferencedCodeHashes;
|
|
73
77
|
}>;
|
|
@@ -76,7 +80,7 @@ export declare class UnsafeValidator implements InterfaceValidator {
|
|
|
76
80
|
queuedUserOps: UserOperation[];
|
|
77
81
|
entryPoint: Address;
|
|
78
82
|
codeHashes?: ReferencedCodeHashes;
|
|
79
|
-
}): Promise<
|
|
83
|
+
}): Promise<ValidationResult & {
|
|
80
84
|
storageMap: StorageMap;
|
|
81
85
|
referencedContracts?: ReferencedCodeHashes;
|
|
82
86
|
}>;
|
|
@@ -85,7 +89,7 @@ export declare class UnsafeValidator implements InterfaceValidator {
|
|
|
85
89
|
queuedUserOps: UserOperation[];
|
|
86
90
|
entryPoint: Address;
|
|
87
91
|
_referencedContracts?: ReferencedCodeHashes;
|
|
88
|
-
}): Promise<
|
|
92
|
+
}): Promise<ValidationResult & {
|
|
89
93
|
storageMap: StorageMap;
|
|
90
94
|
referencedContracts?: ReferencedCodeHashes;
|
|
91
95
|
}>;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ERC7769Errors, EntryPointV06Abi, RpcError, entryPointExecutionErrorSchema06 } from "../../types/index.js";
|
|
2
2
|
import { isVersion06 } from "../../utils/index.js";
|
|
3
3
|
import * as sentry from "@sentry/node";
|
|
4
4
|
import { BaseError, ContractFunctionExecutionError, getContract, pad, slice, toHex, zeroAddress } from "viem";
|
|
5
5
|
import { fromZodError } from "zod-validation-error";
|
|
6
6
|
import { getEip7702DelegationOverrides } from "../../utils/eip7702.js";
|
|
7
7
|
import { GasEstimationHandler } from "../estimation/gasEstimationHandler.js";
|
|
8
|
+
import { toErc7769Code } from "../estimation/utils.js";
|
|
8
9
|
export class UnsafeValidator {
|
|
9
10
|
config;
|
|
10
11
|
metrics;
|
|
@@ -20,14 +21,11 @@ export class UnsafeValidator {
|
|
|
20
21
|
});
|
|
21
22
|
this.gasEstimationHandler = new GasEstimationHandler(config, gasPriceManager);
|
|
22
23
|
}
|
|
23
|
-
async
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
: entryPointExecutionErrorSchemaV07;
|
|
27
|
-
const entryPointErrorSchemaParsing = entryPointExecutionErrorSchema.safeParse(errorResult);
|
|
28
|
-
if (!entryPointErrorSchemaParsing.success) {
|
|
24
|
+
async getSimulationResult06(errorResult, logger, simulationType) {
|
|
25
|
+
const parsingResult = entryPointExecutionErrorSchema06.safeParse(errorResult);
|
|
26
|
+
if (!parsingResult.success) {
|
|
29
27
|
try {
|
|
30
|
-
const err = fromZodError(
|
|
28
|
+
const err = fromZodError(parsingResult.error);
|
|
31
29
|
logger.error({ error: err.message }, "unexpected error during valiation");
|
|
32
30
|
logger.error(JSON.stringify(errorResult));
|
|
33
31
|
err.message = `User Operation simulation returned unexpected invalid response: ${err.message}`;
|
|
@@ -38,16 +36,16 @@ export class UnsafeValidator {
|
|
|
38
36
|
const revertError = errorResult.walk((err) => err instanceof ContractFunctionExecutionError);
|
|
39
37
|
throw new RpcError(`UserOperation reverted during simulation with reason: ${
|
|
40
38
|
// biome-ignore lint/suspicious/noExplicitAny: it's a generic type
|
|
41
|
-
revertError?.cause?.reason}`,
|
|
39
|
+
revertError?.cause?.reason}`, ERC7769Errors.SimulateValidation);
|
|
42
40
|
}
|
|
43
41
|
sentry.captureException(errorResult);
|
|
44
42
|
throw new Error(`User Operation simulation returned unexpected invalid response: ${JSON.stringify(errorResult)}`);
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
|
-
const errorData =
|
|
45
|
+
const errorData = parsingResult.data;
|
|
48
46
|
if (errorData.errorName === "FailedOp") {
|
|
49
47
|
const reason = errorData.args.reason;
|
|
50
|
-
throw new RpcError(`UserOperation reverted during simulation with reason: ${reason}`,
|
|
48
|
+
throw new RpcError(`UserOperation reverted during simulation with reason: ${reason}`, toErc7769Code(reason));
|
|
51
49
|
}
|
|
52
50
|
if (simulationType === "validation") {
|
|
53
51
|
if (errorData.errorName !== "ValidationResult" &&
|
|
@@ -71,14 +69,55 @@ export class UnsafeValidator {
|
|
|
71
69
|
targetCallData: "0x",
|
|
72
70
|
stateOverrides
|
|
73
71
|
});
|
|
72
|
+
let { callGasLimit, verificationGasLimit } = userOp;
|
|
73
|
+
let paymasterVerificationGasLimit = "paymasterVerificationGasLimit" in userOp
|
|
74
|
+
? userOp.paymasterVerificationGasLimit
|
|
75
|
+
: null;
|
|
76
|
+
// Check if userOperation passes without estimation balance overrides (will throw error if it fails validation)
|
|
77
|
+
// the errors we are looking for are:
|
|
78
|
+
// 1. AA31 paymaster deposit too low
|
|
79
|
+
// 2. AA21 didn't pay prefund
|
|
74
80
|
if (error.result === "failed") {
|
|
75
|
-
|
|
76
|
-
if (
|
|
77
|
-
|
|
81
|
+
const data = error.data.toString();
|
|
82
|
+
if (data.includes("AA31") ||
|
|
83
|
+
data.includes("AA21") ||
|
|
84
|
+
data.includes("AA50")) {
|
|
85
|
+
const errorMessage = data;
|
|
86
|
+
throw new RpcError(`UserOperation reverted during simulation with reason: ${errorMessage}`, toErc7769Code(errorMessage));
|
|
87
|
+
}
|
|
88
|
+
this.metrics.altoSecondValidationFailed.inc();
|
|
89
|
+
this.logger.warn({ data }, "Second validation during eth_estimateUserOperationGas led to a failure");
|
|
90
|
+
// we always have to double the call gas limits as other gas limits happen
|
|
91
|
+
// before we even get to callGasLimit
|
|
92
|
+
callGasLimit *= 2n;
|
|
93
|
+
const isPaymasterError = data.includes("AA33") || data.includes("AA36");
|
|
94
|
+
const isVerificationError = data.includes("AA23") ||
|
|
95
|
+
data.includes("AA13") ||
|
|
96
|
+
data.includes("AA26") ||
|
|
97
|
+
data.includes("AA40") ||
|
|
98
|
+
data.includes("AA41");
|
|
99
|
+
if (isPaymasterError && paymasterVerificationGasLimit) {
|
|
100
|
+
// paymasterVerificationGasLimit out of gas errors
|
|
101
|
+
paymasterVerificationGasLimit *= 2n;
|
|
102
|
+
}
|
|
103
|
+
else if (isVerificationError) {
|
|
104
|
+
// verificationGasLimit out of gas errors
|
|
105
|
+
verificationGasLimit *= 2n;
|
|
106
|
+
// we need to increase paymaster fields because they will be
|
|
107
|
+
// caught after verification gas limit errors
|
|
108
|
+
if (paymasterVerificationGasLimit) {
|
|
109
|
+
paymasterVerificationGasLimit *= 2n;
|
|
110
|
+
}
|
|
78
111
|
}
|
|
79
|
-
throw new RpcError(`UserOperation reverted during simulation with reason: ${error.data}`, errorCode);
|
|
80
112
|
}
|
|
81
|
-
return
|
|
113
|
+
return {
|
|
114
|
+
callGasLimit: callGasLimit,
|
|
115
|
+
verificationGasLimit: verificationGasLimit,
|
|
116
|
+
paymasterVerificationGasLimit: paymasterVerificationGasLimit,
|
|
117
|
+
paymasterPostOpGasLimit: "paymasterPostOpGasLimit" in userOp
|
|
118
|
+
? userOp.paymasterPostOpGasLimit
|
|
119
|
+
: null
|
|
120
|
+
};
|
|
82
121
|
}
|
|
83
122
|
async getExecutionResult(args) {
|
|
84
123
|
const { userOp, entryPoint, queuedUserOps, stateOverrides } = args;
|
|
@@ -91,24 +130,15 @@ export class UnsafeValidator {
|
|
|
91
130
|
stateOverrides
|
|
92
131
|
});
|
|
93
132
|
if (error.result === "failed") {
|
|
94
|
-
let errorCode = ExecutionErrors.UserOperationReverted;
|
|
95
|
-
if (error.data.toString().includes("AA23")) {
|
|
96
|
-
errorCode = ValidationErrors.SimulateValidation;
|
|
97
|
-
return {
|
|
98
|
-
result: "failed",
|
|
99
|
-
data: error.data,
|
|
100
|
-
code: errorCode
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
133
|
return {
|
|
104
134
|
result: "failed",
|
|
105
135
|
data: `UserOperation reverted during simulation with reason: ${error.data}`,
|
|
106
|
-
code:
|
|
136
|
+
code: error.code
|
|
107
137
|
};
|
|
108
138
|
}
|
|
109
139
|
return error;
|
|
110
140
|
}
|
|
111
|
-
async
|
|
141
|
+
async getValidationResult06(args) {
|
|
112
142
|
const { userOp, entryPoint } = args;
|
|
113
143
|
const entryPointContract = getContract({
|
|
114
144
|
address: entryPoint,
|
|
@@ -138,11 +168,11 @@ export class UnsafeValidator {
|
|
|
138
168
|
});
|
|
139
169
|
const [simulateValidationResult, runtimeValidation] = await Promise.all([simulateValidationPromise, runtimeValidationPromise]);
|
|
140
170
|
const validationResult = {
|
|
141
|
-
...(await this.
|
|
171
|
+
...(await this.getSimulationResult06(simulateValidationResult, this.logger, "validation")),
|
|
142
172
|
storageMap: {}
|
|
143
173
|
};
|
|
144
174
|
if (validationResult.returnInfo.sigFailed) {
|
|
145
|
-
throw new RpcError("Invalid UserOperation signature or paymaster signature",
|
|
175
|
+
throw new RpcError("Invalid UserOperation signature or paymaster signature", ERC7769Errors.InvalidSignature);
|
|
146
176
|
}
|
|
147
177
|
const now = Date.now() / 1000;
|
|
148
178
|
this.logger.debug({
|
|
@@ -152,15 +182,15 @@ export class UnsafeValidator {
|
|
|
152
182
|
});
|
|
153
183
|
if (validationResult.returnInfo.validAfter > now &&
|
|
154
184
|
this.config.expirationCheck) {
|
|
155
|
-
throw new RpcError("User operation is not valid yet",
|
|
185
|
+
throw new RpcError("User operation is not valid yet", ERC7769Errors.ExpiresShortly);
|
|
156
186
|
}
|
|
157
187
|
if (this.config.expirationCheck &&
|
|
158
188
|
validationResult.returnInfo.validUntil < now + 5) {
|
|
159
|
-
throw new RpcError("expires too soon",
|
|
189
|
+
throw new RpcError("expires too soon", ERC7769Errors.ExpiresShortly);
|
|
160
190
|
}
|
|
161
191
|
// validate runtime
|
|
162
192
|
if (runtimeValidation.result === "failed") {
|
|
163
|
-
throw new RpcError(`UserOperation reverted during simulation with reason: ${runtimeValidation.data}`,
|
|
193
|
+
throw new RpcError(`UserOperation reverted during simulation with reason: ${runtimeValidation.data}`, ERC7769Errors.SimulateValidation);
|
|
164
194
|
}
|
|
165
195
|
return validationResult;
|
|
166
196
|
}
|
|
@@ -191,7 +221,7 @@ export class UnsafeValidator {
|
|
|
191
221
|
mergeValidationDataValues(accountValidationData, paymasterValidationData) {
|
|
192
222
|
return this.mergeValidationData(this.parseValidationData(accountValidationData), this.parseValidationData(paymasterValidationData));
|
|
193
223
|
}
|
|
194
|
-
async
|
|
224
|
+
async getValidationResult07(args) {
|
|
195
225
|
const { userOp, queuedUserOps, entryPoint } = args;
|
|
196
226
|
const simulateValidationResult = await this.gasEstimationHandler.gasEstimator07.simulateValidation({
|
|
197
227
|
entryPoint,
|
|
@@ -199,7 +229,8 @@ export class UnsafeValidator {
|
|
|
199
229
|
queuedUserOps
|
|
200
230
|
});
|
|
201
231
|
if (simulateValidationResult.result === "failed") {
|
|
202
|
-
|
|
232
|
+
const failedResult = simulateValidationResult;
|
|
233
|
+
throw new RpcError(`UserOperation reverted with reason: ${failedResult.data}`, failedResult.code);
|
|
203
234
|
}
|
|
204
235
|
const validationResult = simulateValidationResult.data;
|
|
205
236
|
const mergedValidation = this.mergeValidationDataValues(validationResult.returnInfo.accountValidationData, validationResult.returnInfo.paymasterValidationData);
|
|
@@ -232,32 +263,32 @@ export class UnsafeValidator {
|
|
|
232
263
|
};
|
|
233
264
|
// this.validateStorageAccessList(userOp, res, accessList)
|
|
234
265
|
if (res.returnInfo.accountSigFailed) {
|
|
235
|
-
throw new RpcError("Invalid UserOp signature",
|
|
266
|
+
throw new RpcError("Invalid UserOp signature", ERC7769Errors.InvalidSignature);
|
|
236
267
|
}
|
|
237
268
|
if (res.returnInfo.paymasterSigFailed) {
|
|
238
|
-
throw new RpcError("Invalid UserOp paymasterData",
|
|
269
|
+
throw new RpcError("Invalid UserOp paymasterData", ERC7769Errors.InvalidSignature);
|
|
239
270
|
}
|
|
240
271
|
const now = Math.floor(Date.now() / 1000);
|
|
241
272
|
if (res.returnInfo.validAfter > now) {
|
|
242
|
-
throw new RpcError(`User operation is not valid yet, validAfter=${res.returnInfo.validAfter}, now=${now}`,
|
|
273
|
+
throw new RpcError(`User operation is not valid yet, validAfter=${res.returnInfo.validAfter}, now=${now}`, ERC7769Errors.ExpiresShortly);
|
|
243
274
|
}
|
|
244
275
|
if (this.config.expirationCheck &&
|
|
245
276
|
(res.returnInfo.validUntil == null ||
|
|
246
277
|
res.returnInfo.validUntil < now + 5)) {
|
|
247
|
-
throw new RpcError(`UserOperation expires too soon, validUntil=${res.returnInfo.validUntil}, now=${now}`,
|
|
278
|
+
throw new RpcError(`UserOperation expires too soon, validUntil=${res.returnInfo.validUntil}, now=${now}`, ERC7769Errors.ExpiresShortly);
|
|
248
279
|
}
|
|
249
280
|
return res;
|
|
250
281
|
}
|
|
251
282
|
getValidationResult(args) {
|
|
252
283
|
const { userOp, queuedUserOps, entryPoint, codeHashes } = args;
|
|
253
284
|
if (isVersion06(userOp)) {
|
|
254
|
-
return this.
|
|
285
|
+
return this.getValidationResult06({
|
|
255
286
|
userOp,
|
|
256
287
|
entryPoint,
|
|
257
288
|
codeHashes
|
|
258
289
|
});
|
|
259
290
|
}
|
|
260
|
-
return this.
|
|
291
|
+
return this.getValidationResult07({
|
|
261
292
|
userOp,
|
|
262
293
|
queuedUserOps: queuedUserOps,
|
|
263
294
|
entryPoint
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnsafeValidator.js","sourceRoot":"","sources":["../../../rpc/validation/UnsafeValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UnsafeValidator.js","sourceRoot":"","sources":["../../../rpc/validation/UnsafeValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { type MempoolStore } from "./index.js";
|
|
1
2
|
import type { Metrics } from "../utils/index.js";
|
|
2
|
-
import type { MempoolStore } from "./index.js";
|
|
3
3
|
import type { AltoConfig } from "../createConfig.js";
|
|
4
4
|
export declare const createMempoolStore: ({ config, metrics }: {
|
|
5
5
|
config: AltoConfig;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
+
import { createOutstandingQueue, createProcessingStore } from "./index.js";
|
|
1
2
|
import * as sentry from "@sentry/node";
|
|
2
|
-
import { createMemoryOutstandingQueue } from "./createMemoryOutstandingStore.js";
|
|
3
|
-
import { createRedisOutstandingQueue } from "./createRedisOutstandingStore.js";
|
|
4
|
-
import { createRedisStore } from "./createRedisStore.js";
|
|
5
|
-
import { createMemoryStore } from "./createStore.js";
|
|
6
3
|
export const createMempoolStore = ({ config, metrics }) => {
|
|
7
4
|
const logger = config.getLogger({ module: "mempool-store" }, {
|
|
8
5
|
level: config.logLevel
|
|
@@ -17,48 +14,20 @@ export const createMempoolStore = ({ config, metrics }) => {
|
|
|
17
14
|
return handlers;
|
|
18
15
|
};
|
|
19
16
|
for (const entryPoint of config.entrypoints) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
config,
|
|
30
|
-
entryPoint,
|
|
31
|
-
storeType: "processing"
|
|
32
|
-
});
|
|
33
|
-
submitted = createRedisStore({
|
|
34
|
-
config,
|
|
35
|
-
entryPoint,
|
|
36
|
-
storeType: "submitted"
|
|
37
|
-
});
|
|
38
|
-
logger.info("Using redis for outstanding, processing, submitted mempools");
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
outstanding = createMemoryOutstandingQueue({
|
|
42
|
-
config
|
|
43
|
-
});
|
|
44
|
-
processing = createMemoryStore({
|
|
45
|
-
config
|
|
46
|
-
});
|
|
47
|
-
submitted = createMemoryStore({
|
|
48
|
-
config
|
|
49
|
-
});
|
|
50
|
-
logger.info("Using memory for outstanding, processing, submitted mempools");
|
|
51
|
-
}
|
|
17
|
+
const outstanding = createOutstandingQueue({
|
|
18
|
+
config,
|
|
19
|
+
entryPoint,
|
|
20
|
+
logger
|
|
21
|
+
});
|
|
22
|
+
const processing = createProcessingStore({
|
|
23
|
+
config,
|
|
24
|
+
entryPoint
|
|
25
|
+
});
|
|
52
26
|
storeHandlers.set(entryPoint, {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
outstanding
|
|
27
|
+
outstanding,
|
|
28
|
+
processing
|
|
56
29
|
});
|
|
57
30
|
}
|
|
58
|
-
const logAddOperation = (userOpHash, storeType) => {
|
|
59
|
-
logger.debug({ userOpHash, store: storeType }, `added user op to ${storeType} mempool`);
|
|
60
|
-
metrics.userOpsInMempool.labels({ status: storeType }).inc();
|
|
61
|
-
};
|
|
62
31
|
const logRemoveOperation = (userOpHash, storeType, removed) => {
|
|
63
32
|
if (!removed) {
|
|
64
33
|
logger.warn({ userOpHash, store: storeType }, "tried to remove non-existent user op from mempool");
|
|
@@ -74,146 +43,101 @@ export const createMempoolStore = ({ config, metrics }) => {
|
|
|
74
43
|
};
|
|
75
44
|
return {
|
|
76
45
|
// Methods used for bundling
|
|
77
|
-
popOutstanding: async (entryPoint) => {
|
|
78
|
-
try {
|
|
79
|
-
const { outstanding } = getStoreHandlers(entryPoint);
|
|
80
|
-
return await outstanding.pop();
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
logger.error({ err }, "Failed to pop from outstanding mempool, defaulting to undefined");
|
|
84
|
-
sentry.captureException(err);
|
|
85
|
-
return undefined;
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
peekOutstanding: async (entryPoint) => {
|
|
46
|
+
popOutstanding: async (entryPoint, count) => {
|
|
89
47
|
try {
|
|
90
48
|
const { outstanding } = getStoreHandlers(entryPoint);
|
|
91
|
-
return await outstanding.
|
|
49
|
+
return await outstanding.pop(count);
|
|
92
50
|
}
|
|
93
51
|
catch (err) {
|
|
94
|
-
logger.error({ err }, "Failed to
|
|
52
|
+
logger.error({ err }, "Failed to pop from outstanding mempool, defaulting to empty array");
|
|
95
53
|
sentry.captureException(err);
|
|
96
|
-
return
|
|
54
|
+
return [];
|
|
97
55
|
}
|
|
98
56
|
},
|
|
99
57
|
// State handling
|
|
100
|
-
addOutstanding: async ({ entryPoint,
|
|
58
|
+
addOutstanding: async ({ entryPoint, userOpInfos }) => {
|
|
101
59
|
const { outstanding } = getStoreHandlers(entryPoint);
|
|
102
|
-
|
|
60
|
+
metrics.userOpsInMempool
|
|
61
|
+
.labels({ status: "outstanding" })
|
|
62
|
+
.inc(userOpInfos.length);
|
|
103
63
|
try {
|
|
104
|
-
await outstanding.add(
|
|
64
|
+
await outstanding.add(userOpInfos);
|
|
105
65
|
}
|
|
106
66
|
catch (err) {
|
|
107
67
|
logger.error({ err }, "Failed to add to outstanding mempool");
|
|
108
68
|
sentry.captureException(err);
|
|
109
69
|
}
|
|
110
70
|
},
|
|
111
|
-
addProcessing: ({ entryPoint, userOpInfo }) => {
|
|
112
|
-
try {
|
|
113
|
-
const { processing } = getStoreHandlers(entryPoint);
|
|
114
|
-
logAddOperation(userOpInfo.userOpHash, "processing");
|
|
115
|
-
processing.add(userOpInfo);
|
|
116
|
-
return Promise.resolve();
|
|
117
|
-
}
|
|
118
|
-
catch (err) {
|
|
119
|
-
logger.error({ err }, "Failed to add to processing mempool");
|
|
120
|
-
sentry.captureException(err);
|
|
121
|
-
return Promise.resolve();
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
addSubmitted: ({ entryPoint, userOpInfo }) => {
|
|
125
|
-
try {
|
|
126
|
-
const { submitted } = getStoreHandlers(entryPoint);
|
|
127
|
-
logAddOperation(userOpInfo.userOpHash, "submitted");
|
|
128
|
-
submitted.add(userOpInfo);
|
|
129
|
-
return Promise.resolve();
|
|
130
|
-
}
|
|
131
|
-
catch (err) {
|
|
132
|
-
logger.error({ err }, "Failed to add to submitted mempool");
|
|
133
|
-
sentry.captureException(err);
|
|
134
|
-
return Promise.resolve();
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
71
|
removeOutstanding: async ({ entryPoint, userOpHash }) => {
|
|
138
72
|
try {
|
|
139
73
|
const { outstanding } = getStoreHandlers(entryPoint);
|
|
140
|
-
const removed = await outstanding.remove(userOpHash);
|
|
141
|
-
logRemoveOperation(userOpHash, "outstanding", removed);
|
|
74
|
+
const removed = await outstanding.remove([userOpHash]);
|
|
75
|
+
logRemoveOperation(userOpHash, "outstanding", removed.length > 0);
|
|
142
76
|
}
|
|
143
77
|
catch (err) {
|
|
144
78
|
logger.error({ err }, "Failed to remove from outstanding mempool");
|
|
145
79
|
sentry.captureException(err);
|
|
146
|
-
return Promise.resolve();
|
|
147
80
|
}
|
|
148
81
|
},
|
|
149
|
-
|
|
82
|
+
dumpOutstanding: async (entryPoint) => {
|
|
83
|
+
const { outstanding } = getStoreHandlers(entryPoint);
|
|
84
|
+
logDumpOperation("outstanding");
|
|
85
|
+
return await outstanding.dumpLocal();
|
|
86
|
+
},
|
|
87
|
+
// Methods to mark/unmark userOps that are being processed.
|
|
88
|
+
addProcessing: async ({ entryPoint, userOpInfo }) => {
|
|
150
89
|
try {
|
|
151
90
|
const { processing } = getStoreHandlers(entryPoint);
|
|
152
|
-
|
|
153
|
-
logRemoveOperation(userOpHash, "processing", removed);
|
|
91
|
+
await processing.addProcessing(userOpInfo);
|
|
154
92
|
}
|
|
155
93
|
catch (err) {
|
|
156
|
-
logger.error({ err }, "Failed to
|
|
94
|
+
logger.error({ err }, "Failed to track active userOp");
|
|
157
95
|
sentry.captureException(err);
|
|
158
|
-
return Promise.resolve();
|
|
159
96
|
}
|
|
160
97
|
},
|
|
161
|
-
|
|
98
|
+
removeProcessing: async ({ entryPoint, userOpInfo }) => {
|
|
162
99
|
try {
|
|
163
|
-
const {
|
|
164
|
-
|
|
165
|
-
logRemoveOperation(userOpHash, "submitted", removed);
|
|
100
|
+
const { processing } = getStoreHandlers(entryPoint);
|
|
101
|
+
await processing.removeProcessing(userOpInfo);
|
|
166
102
|
}
|
|
167
103
|
catch (err) {
|
|
168
|
-
logger.error({ err }, "Failed to
|
|
104
|
+
logger.error({ err }, "Failed to untrack active userOp");
|
|
169
105
|
sentry.captureException(err);
|
|
170
|
-
return Promise.resolve();
|
|
171
106
|
}
|
|
172
107
|
},
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
},
|
|
178
|
-
dumpProcessing: async (entryPoint) => {
|
|
179
|
-
const { processing } = getStoreHandlers(entryPoint);
|
|
180
|
-
logDumpOperation("processing");
|
|
181
|
-
return await processing.dumpLocal();
|
|
182
|
-
},
|
|
183
|
-
dumpSubmitted: async (entryPoint) => {
|
|
184
|
-
const { submitted } = getStoreHandlers(entryPoint);
|
|
185
|
-
logDumpOperation("submitted");
|
|
186
|
-
return await submitted.dumpLocal();
|
|
187
|
-
},
|
|
188
|
-
// Check if the userOp is already in the mempool
|
|
189
|
-
isInMempool: async ({ userOpHash, entryPoint }) => {
|
|
190
|
-
const { outstanding, processing, submitted } = getStoreHandlers(entryPoint);
|
|
191
|
-
const [inOutstanding, inProcessing, inSubmitted] = await Promise.all([
|
|
108
|
+
// Check if the userOp is already in the mempool or conflicts with existing userOps.
|
|
109
|
+
checkDuplicatesAndConflicts: async ({ entryPoint, userOp, userOpHash }) => {
|
|
110
|
+
const { outstanding, processing } = getStoreHandlers(entryPoint);
|
|
111
|
+
const [isInOutstanding, isInProcessing, wouldConflict] = await Promise.all([
|
|
192
112
|
outstanding.contains(userOpHash),
|
|
193
|
-
processing.
|
|
194
|
-
|
|
195
|
-
]);
|
|
196
|
-
return inOutstanding || inProcessing || inSubmitted;
|
|
197
|
-
},
|
|
198
|
-
validateSubmittedOrProcessing: async ({ entryPoint, userOp }) => {
|
|
199
|
-
const { submitted, processing } = getStoreHandlers(entryPoint);
|
|
200
|
-
const [submittedConflict, processingConflict] = await Promise.all([
|
|
201
|
-
submitted.findConflicting(userOp),
|
|
202
|
-
processing.findConflicting(userOp)
|
|
113
|
+
processing.isProcessing(userOpHash),
|
|
114
|
+
processing.wouldConflict(userOp)
|
|
203
115
|
]);
|
|
204
|
-
|
|
205
|
-
if (
|
|
116
|
+
// Check if already known (in outstanding or processing).
|
|
117
|
+
if (isInOutstanding || isInProcessing) {
|
|
118
|
+
return {
|
|
119
|
+
valid: false,
|
|
120
|
+
reason: "Already known"
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
if (wouldConflict === "conflicting_nonce") {
|
|
206
124
|
return {
|
|
207
125
|
valid: false,
|
|
208
126
|
reason: "AA25 invalid account nonce: Another UserOperation with same sender and nonce is already being processed"
|
|
209
127
|
};
|
|
210
128
|
}
|
|
211
|
-
if (
|
|
129
|
+
if (wouldConflict === "conflicting_deployment") {
|
|
212
130
|
return {
|
|
213
131
|
valid: false,
|
|
214
132
|
reason: "AA25 invalid account deployment: Another deployment operation for this sender is already being processed"
|
|
215
133
|
};
|
|
216
134
|
}
|
|
135
|
+
if (wouldConflict === "conflicting_7702_auth") {
|
|
136
|
+
return {
|
|
137
|
+
valid: false,
|
|
138
|
+
reason: "AA10 sender already constructed: Sender already has an inflight EIP-7702 authorization"
|
|
139
|
+
};
|
|
140
|
+
}
|
|
217
141
|
return { valid: true };
|
|
218
142
|
},
|
|
219
143
|
popConflictingOustanding: async ({ entryPoint, userOp }) => {
|
|
@@ -227,21 +151,21 @@ export const createMempoolStore = ({ config, metrics }) => {
|
|
|
227
151
|
return undefined;
|
|
228
152
|
}
|
|
229
153
|
},
|
|
230
|
-
validateSenderLimits: ({ entryPoint, userOp }) => {
|
|
154
|
+
validateSenderLimits: async ({ entryPoint, userOp }) => {
|
|
231
155
|
const { outstanding } = getStoreHandlers(entryPoint);
|
|
232
156
|
if (!outstanding.validateParallelLimit(userOp)) {
|
|
233
|
-
return
|
|
157
|
+
return {
|
|
234
158
|
valid: false,
|
|
235
159
|
reason: "AA25 invalid account nonce: Maximum number of parallel user operations for that is allowed for this sender reached"
|
|
236
|
-
}
|
|
160
|
+
};
|
|
237
161
|
}
|
|
238
162
|
if (!outstanding.validateQueuedLimit(userOp)) {
|
|
239
|
-
return
|
|
163
|
+
return {
|
|
240
164
|
valid: false,
|
|
241
165
|
reason: "AA25 invalid account nonce: Maximum number of queued user operations reached for this sender and nonce key"
|
|
242
|
-
}
|
|
166
|
+
};
|
|
243
167
|
}
|
|
244
|
-
return
|
|
168
|
+
return { valid: true };
|
|
245
169
|
},
|
|
246
170
|
// misc
|
|
247
171
|
getQueuedOutstandingUserOps: async ({ userOp, entryPoint }) => {
|