@pimlico/alto 0.0.0-main.20250428T212302 → 0.0.0-main.20250429T114818
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 -0
- package/contracts/ERC165.sol/ERC165.json +1 -0
- package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -0
- package/contracts/EntryPoint.sol/EntryPoint.json +1 -0
- package/contracts/EntryPointCodeOverride.sol/EntryPointCodeOverride.json +1 -0
- package/contracts/EntryPointSimulations.sol/EntryPointSimulations.json +1 -0
- package/contracts/Exec.sol/Exec.json +1 -0
- package/contracts/IAccount.sol/IAccount.json +1 -0
- package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -0
- package/contracts/IAggregator.sol/IAggregator.json +1 -0
- package/contracts/IERC165.sol/IERC165.json +1 -0
- package/contracts/IERC5267.sol/IERC5267.json +1 -0
- package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -0
- package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -0
- package/contracts/INonceManager.sol/INonceManager.json +1 -0
- package/contracts/IPaymaster.sol/IPaymaster.json +1 -0
- package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -0
- package/contracts/IStakeManager.sol/IStakeManager.json +1 -0
- package/contracts/Math.sol/Math.json +1 -0
- package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -0
- package/contracts/NonceManager.sol/NonceManager.json +1 -0
- package/contracts/Panic.sol/Panic.json +1 -0
- package/contracts/PimlicoEntryPointSimulationsV7.sol/PimlicoEntryPointSimulationsV7.json +1 -0
- package/contracts/PimlicoEntryPointSimulationsV8.sol/PimlicoEntryPointSimulationsV8.json +1 -0
- package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -0
- package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -0
- package/contracts/SafeCast.sol/SafeCast.json +1 -0
- package/contracts/SenderCreator.sol/SenderCreator.json +1 -0
- package/contracts/ShortStrings.sol/ShortStrings.json +1 -0
- package/contracts/SignedMath.sol/SignedMath.json +1 -0
- package/contracts/StakeManager.sol/StakeManager.json +1 -0
- package/contracts/StorageSlot.sol/StorageSlot.json +1 -0
- package/contracts/Strings.sol/Strings.json +1 -0
- package/contracts/TransientSlot.sol/TransientSlot.json +1 -0
- package/contracts/UserOperation.sol/UserOperationLib.json +1 -0
- package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -0
- package/contracts/build-info/0c52dc19c74a9a932ddddcca463ce398.json +1 -0
- package/contracts/build-info/a1d9af887789a0ade8ffbc8b045f0780.json +1 -0
- package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
- package/esm/cli/deploySimulationsContract.js +14 -5
- package/esm/cli/deploySimulationsContract.js.map +1 -1
- package/package.json +2 -1
- package/lib/cli/alto.d.ts +0 -7
- package/lib/cli/alto.js +0 -141
- package/lib/cli/alto.js.map +0 -1
- package/lib/cli/config/bundler.d.ts +0 -2872
- package/lib/cli/config/bundler.js +0 -242
- package/lib/cli/config/bundler.js.map +0 -1
- package/lib/cli/config/index.d.ts +0 -3
- package/lib/cli/config/index.js +0 -19
- package/lib/cli/config/index.js.map +0 -1
- package/lib/cli/config/options.d.ts +0 -13
- package/lib/cli/config/options.js +0 -587
- package/lib/cli/config/options.js.map +0 -1
- package/lib/cli/customTransport.d.ts +0 -14
- package/lib/cli/customTransport.js +0 -94
- package/lib/cli/customTransport.js.map +0 -1
- package/lib/cli/deploySimulationsContract.d.ts +0 -13
- package/lib/cli/deploySimulationsContract.js +0 -100
- package/lib/cli/deploySimulationsContract.js.map +0 -1
- package/lib/cli/handler.d.ts +0 -3
- package/lib/cli/handler.js +0 -157
- package/lib/cli/handler.js.map +0 -1
- package/lib/cli/index.d.ts +0 -4
- package/lib/cli/index.js +0 -20
- package/lib/cli/index.js.map +0 -1
- package/lib/cli/instrumentation.d.ts +0 -2
- package/lib/cli/instrumentation.js +0 -47
- package/lib/cli/instrumentation.js.map +0 -1
- package/lib/cli/parseArgs.d.ts +0 -8
- package/lib/cli/parseArgs.js +0 -25
- package/lib/cli/parseArgs.js.map +0 -1
- package/lib/cli/setupServer.d.ts +0 -13
- package/lib/cli/setupServer.js +0 -266
- package/lib/cli/setupServer.js.map +0 -1
- package/lib/cli/util.d.ts +0 -22
- package/lib/cli/util.js +0 -34
- package/lib/cli/util.js.map +0 -1
- package/lib/createConfig.d.ts +0 -16
- package/lib/createConfig.js +0 -13
- package/lib/createConfig.js.map +0 -1
- package/lib/executor/executor.d.ts +0 -65
- package/lib/executor/executor.js +0 -301
- package/lib/executor/executor.js.map +0 -1
- package/lib/executor/executorManager.d.ts +0 -108
- package/lib/executor/executorManager.js +0 -702
- package/lib/executor/executorManager.js.map +0 -1
- package/lib/executor/fastlane.d.ts +0 -9
- package/lib/executor/fastlane.js +0 -41
- package/lib/executor/fastlane.js.map +0 -1
- package/lib/executor/filterOpsAndEStimateGas.d.ts +0 -29
- package/lib/executor/filterOpsAndEStimateGas.js +0 -225
- package/lib/executor/filterOpsAndEStimateGas.js.map +0 -1
- package/lib/executor/index.d.ts +0 -5
- package/lib/executor/index.js +0 -21
- package/lib/executor/index.js.map +0 -1
- package/lib/executor/senderManager/createMemorySenderManager.d.ts +0 -8
- package/lib/executor/senderManager/createMemorySenderManager.js +0 -45
- package/lib/executor/senderManager/createMemorySenderManager.js.map +0 -1
- package/lib/executor/senderManager/createRedisSenderManager.d.ts +0 -8
- package/lib/executor/senderManager/createRedisSenderManager.js +0 -85
- package/lib/executor/senderManager/createRedisSenderManager.js.map +0 -1
- package/lib/executor/senderManager/flushOnStartUp.d.ts +0 -9
- package/lib/executor/senderManager/flushOnStartUp.js +0 -37
- package/lib/executor/senderManager/flushOnStartUp.js.map +0 -1
- package/lib/executor/senderManager/index.d.ts +0 -15
- package/lib/executor/senderManager/index.js +0 -25
- package/lib/executor/senderManager/index.js.map +0 -1
- package/lib/executor/senderManager/validateAndRefill.d.ts +0 -11
- package/lib/executor/senderManager/validateAndRefill.js +0 -115
- package/lib/executor/senderManager/validateAndRefill.js.map +0 -1
- package/lib/executor/utilityWalletMonitor.d.ts +0 -19
- package/lib/executor/utilityWalletMonitor.js +0 -42
- package/lib/executor/utilityWalletMonitor.js.map +0 -1
- package/lib/executor/utils.d.ts +0 -34
- package/lib/executor/utils.js +0 -167
- package/lib/executor/utils.js.map +0 -1
- package/lib/handlers/arbitrumGasPriceManager.d.ts +0 -14
- package/lib/handlers/arbitrumGasPriceManager.js +0 -39
- package/lib/handlers/arbitrumGasPriceManager.js.map +0 -1
- package/lib/handlers/eventManager.d.ts +0 -29
- package/lib/handlers/eventManager.js +0 -225
- package/lib/handlers/eventManager.js.map +0 -1
- package/lib/handlers/gasPriceManager.d.ts +0 -36
- package/lib/handlers/gasPriceManager.js +0 -391
- package/lib/handlers/gasPriceManager.js.map +0 -1
- package/lib/handlers/index.d.ts +0 -3
- package/lib/handlers/index.js +0 -19
- package/lib/handlers/index.js.map +0 -1
- package/lib/handlers/mantleGasPriceManager.d.ts +0 -23
- package/lib/handlers/mantleGasPriceManager.js +0 -44
- package/lib/handlers/mantleGasPriceManager.js.map +0 -1
- package/lib/handlers/optimismManager.d.ts +0 -10
- package/lib/handlers/optimismManager.js +0 -21
- package/lib/handlers/optimismManager.js.map +0 -1
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -4
- package/lib/index.js.map +0 -1
- package/lib/mempool/index.d.ts +0 -4
- package/lib/mempool/index.js +0 -20
- package/lib/mempool/index.js.map +0 -1
- package/lib/mempool/mempool.d.ts +0 -191
- package/lib/mempool/mempool.js +0 -499
- package/lib/mempool/mempool.js.map +0 -1
- package/lib/mempool/monitoring.d.ts +0 -14
- package/lib/mempool/monitoring.js +0 -101
- package/lib/mempool/monitoring.js.map +0 -1
- package/lib/mempool/reputationManager.d.ts +0 -121
- package/lib/mempool/reputationManager.js +0 -472
- package/lib/mempool/reputationManager.js.map +0 -1
- package/lib/rpc/createMethodHandler.d.ts +0 -31
- package/lib/rpc/createMethodHandler.js +0 -34
- package/lib/rpc/createMethodHandler.js.map +0 -1
- package/lib/rpc/estimation/gasEstimationHandler.d.ts +0 -30
- package/lib/rpc/estimation/gasEstimationHandler.js +0 -50
- package/lib/rpc/estimation/gasEstimationHandler.js.map +0 -1
- package/lib/rpc/estimation/gasEstimationsV06.d.ts +0 -19
- package/lib/rpc/estimation/gasEstimationsV06.js +0 -148
- package/lib/rpc/estimation/gasEstimationsV06.js.map +0 -1
- package/lib/rpc/estimation/gasEstimationsV07.d.ts +0 -101
- package/lib/rpc/estimation/gasEstimationsV07.js +0 -727
- package/lib/rpc/estimation/gasEstimationsV07.js.map +0 -1
- package/lib/rpc/estimation/types.d.ts +0 -120
- package/lib/rpc/estimation/types.js +0 -125
- package/lib/rpc/estimation/types.js.map +0 -1
- package/lib/rpc/index.d.ts +0 -4
- package/lib/rpc/index.js +0 -20
- package/lib/rpc/index.js.map +0 -1
- package/lib/rpc/methods/debug_bundler_clearReputation.d.ts +0 -22
- package/lib/rpc/methods/debug_bundler_clearReputation.js +0 -15
- package/lib/rpc/methods/debug_bundler_clearReputation.js.map +0 -1
- package/lib/rpc/methods/debug_bundler_clearState.d.ts +0 -22
- package/lib/rpc/methods/debug_bundler_clearState.js +0 -16
- package/lib/rpc/methods/debug_bundler_clearState.js.map +0 -1
- package/lib/rpc/methods/debug_bundler_dumpMempool.d.ts +0 -973
- package/lib/rpc/methods/debug_bundler_dumpMempool.js +0 -16
- package/lib/rpc/methods/debug_bundler_dumpMempool.js.map +0 -1
- package/lib/rpc/methods/debug_bundler_dumpReputation.d.ts +0 -57
- package/lib/rpc/methods/debug_bundler_dumpReputation.js +0 -16
- package/lib/rpc/methods/debug_bundler_dumpReputation.js.map +0 -1
- package/lib/rpc/methods/debug_bundler_getStakeStatus.d.ts +0 -79
- package/lib/rpc/methods/debug_bundler_getStakeStatus.js +0 -25
- package/lib/rpc/methods/debug_bundler_getStakeStatus.js.map +0 -1
- package/lib/rpc/methods/debug_bundler_sendBundleNow.d.ts +0 -22
- package/lib/rpc/methods/debug_bundler_sendBundleNow.js +0 -15
- package/lib/rpc/methods/debug_bundler_sendBundleNow.js.map +0 -1
- package/lib/rpc/methods/debug_bundler_setBundlingMode.d.ts +0 -22
- package/lib/rpc/methods/debug_bundler_setBundlingMode.js +0 -16
- package/lib/rpc/methods/debug_bundler_setBundlingMode.js.map +0 -1
- package/lib/rpc/methods/debug_bundler_setReputation.d.ts +0 -46
- package/lib/rpc/methods/debug_bundler_setReputation.js +0 -16
- package/lib/rpc/methods/debug_bundler_setReputation.js.map +0 -1
- package/lib/rpc/methods/eth_chainId.d.ts +0 -22
- package/lib/rpc/methods/eth_chainId.js +0 -13
- package/lib/rpc/methods/eth_chainId.js.map +0 -1
- package/lib/rpc/methods/eth_estimateUserOperationGas.d.ts +0 -1891
- package/lib/rpc/methods/eth_estimateUserOperationGas.js +0 -26
- package/lib/rpc/methods/eth_estimateUserOperationGas.js.map +0 -1
- package/lib/rpc/methods/eth_getUserOperationByHash.d.ts +0 -1775
- package/lib/rpc/methods/eth_getUserOperationByHash.js +0 -101
- package/lib/rpc/methods/eth_getUserOperationByHash.js.map +0 -1
- package/lib/rpc/methods/eth_getUserOperationReceipt.d.ts +0 -412
- package/lib/rpc/methods/eth_getUserOperationReceipt.js +0 -14
- package/lib/rpc/methods/eth_getUserOperationReceipt.js.map +0 -1
- package/lib/rpc/methods/eth_sendUserOperation.d.ts +0 -878
- package/lib/rpc/methods/eth_sendUserOperation.js +0 -44
- package/lib/rpc/methods/eth_sendUserOperation.js.map +0 -1
- package/lib/rpc/methods/eth_supportedEntryPoints.d.ts +0 -22
- package/lib/rpc/methods/eth_supportedEntryPoints.js +0 -13
- package/lib/rpc/methods/eth_supportedEntryPoints.js.map +0 -1
- package/lib/rpc/methods/index.d.ts +0 -3
- package/lib/rpc/methods/index.js +0 -44
- package/lib/rpc/methods/index.js.map +0 -1
- package/lib/rpc/methods/pimlico_getUserOperationGasPrice.d.ts +0 -131
- package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js +0 -33
- package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js.map +0 -1
- package/lib/rpc/methods/pimlico_getUserOperationStatus.d.ts +0 -43
- package/lib/rpc/methods/pimlico_getUserOperationStatus.js +0 -14
- package/lib/rpc/methods/pimlico_getUserOperationStatus.js.map +0 -1
- package/lib/rpc/methods/pimlico_sendUserOperationNow.d.ts +0 -1268
- package/lib/rpc/methods/pimlico_sendUserOperationNow.js +0 -55
- package/lib/rpc/methods/pimlico_sendUserOperationNow.js.map +0 -1
- package/lib/rpc/rpcHandler.d.ts +0 -75
- package/lib/rpc/rpcHandler.js +0 -391
- package/lib/rpc/rpcHandler.js.map +0 -1
- package/lib/rpc/server.d.ts +0 -26
- package/lib/rpc/server.js +0 -283
- package/lib/rpc/server.js.map +0 -1
- package/lib/rpc/validation/BundlerCollectorTracerV06.d.ts +0 -102
- package/lib/rpc/validation/BundlerCollectorTracerV06.js +0 -262
- package/lib/rpc/validation/BundlerCollectorTracerV06.js.map +0 -1
- package/lib/rpc/validation/BundlerCollectorTracerV07.d.ts +0 -102
- package/lib/rpc/validation/BundlerCollectorTracerV07.js +0 -261
- package/lib/rpc/validation/BundlerCollectorTracerV07.js.map +0 -1
- package/lib/rpc/validation/SafeValidator.d.ts +0 -51
- package/lib/rpc/validation/SafeValidator.js +0 -327
- package/lib/rpc/validation/SafeValidator.js.map +0 -1
- package/lib/rpc/validation/TracerResultParserV06.d.ts +0 -13
- package/lib/rpc/validation/TracerResultParserV06.js +0 -582
- package/lib/rpc/validation/TracerResultParserV06.js.map +0 -1
- package/lib/rpc/validation/TracerResultParserV07.d.ts +0 -33
- package/lib/rpc/validation/TracerResultParserV07.js +0 -599
- package/lib/rpc/validation/TracerResultParserV07.js.map +0 -1
- package/lib/rpc/validation/UnsafeValidator.d.ts +0 -97
- package/lib/rpc/validation/UnsafeValidator.js +0 -303
- package/lib/rpc/validation/UnsafeValidator.js.map +0 -1
- package/lib/rpc/validation/index.d.ts +0 -3
- package/lib/rpc/validation/index.js +0 -19
- package/lib/rpc/validation/index.js.map +0 -1
- package/lib/rpc/validation/tracer.d.ts +0 -125
- package/lib/rpc/validation/tracer.js +0 -112
- package/lib/rpc/validation/tracer.js.map +0 -1
- package/lib/store/createMemoryOutstandingStore.d.ts +0 -28
- package/lib/store/createMemoryOutstandingStore.js +0 -236
- package/lib/store/createMemoryOutstandingStore.js.map +0 -1
- package/lib/store/createMempoolStore.d.ts +0 -8
- package/lib/store/createMempoolStore.js +0 -199
- package/lib/store/createMempoolStore.js.map +0 -1
- package/lib/store/createRedisOutstandingStore.d.ts +0 -27
- package/lib/store/createRedisOutstandingStore.js +0 -349
- package/lib/store/createRedisOutstandingStore.js.map +0 -1
- package/lib/store/createRedisStore.d.ts +0 -9
- package/lib/store/createRedisStore.js +0 -138
- package/lib/store/createRedisStore.js.map +0 -1
- package/lib/store/createStore.d.ts +0 -6
- package/lib/store/createStore.js +0 -70
- package/lib/store/createStore.js.map +0 -1
- package/lib/store/index.d.ts +0 -81
- package/lib/store/index.js +0 -6
- package/lib/store/index.js.map +0 -1
- package/lib/types/contracts/ArbitrumL1FeeAbi.d.ts +0 -32
- package/lib/types/contracts/ArbitrumL1FeeAbi.js +0 -45
- package/lib/types/contracts/ArbitrumL1FeeAbi.js.map +0 -1
- package/lib/types/contracts/CallEngine.d.ts +0 -28
- package/lib/types/contracts/CallEngine.js +0 -40
- package/lib/types/contracts/CallEngine.js.map +0 -1
- package/lib/types/contracts/CodeHashGetter.d.ts +0 -37
- package/lib/types/contracts/CodeHashGetter.js +0 -48
- package/lib/types/contracts/CodeHashGetter.js.map +0 -1
- package/lib/types/contracts/EntryPoint.d.ts +0 -1789
- package/lib/types/contracts/EntryPoint.js +0 -2307
- package/lib/types/contracts/EntryPoint.js.map +0 -1
- package/lib/types/contracts/EntryPointSimulationsV6.d.ts +0 -34
- package/lib/types/contracts/EntryPointSimulationsV6.js +0 -51
- package/lib/types/contracts/EntryPointSimulationsV6.js.map +0 -1
- package/lib/types/contracts/EntryPointSimulationsV7.d.ts +0 -2076
- package/lib/types/contracts/EntryPointSimulationsV7.js +0 -2678
- package/lib/types/contracts/EntryPointSimulationsV7.js.map +0 -1
- package/lib/types/contracts/IAccountExecute.d.ts +0 -53
- package/lib/types/contracts/IAccountExecute.js +0 -71
- package/lib/types/contracts/IAccountExecute.js.map +0 -1
- package/lib/types/contracts/IPaymaster.d.ts +0 -3
- package/lib/types/contracts/IPaymaster.js +0 -120
- package/lib/types/contracts/IPaymaster.js.map +0 -1
- package/lib/types/contracts/MantleBvmGasPriceOracle.d.ts +0 -219
- package/lib/types/contracts/MantleBvmGasPriceOracle.js +0 -180
- package/lib/types/contracts/MantleBvmGasPriceOracle.js.map +0 -1
- package/lib/types/contracts/OpL1FeeAbi.d.ts +0 -114
- package/lib/types/contracts/OpL1FeeAbi.js +0 -77
- package/lib/types/contracts/OpL1FeeAbi.js.map +0 -1
- package/lib/types/contracts/PimlicoEntryPointSimulations.d.ts +0 -25
- package/lib/types/contracts/PimlicoEntryPointSimulations.js +0 -42
- package/lib/types/contracts/PimlicoEntryPointSimulations.js.map +0 -1
- package/lib/types/contracts/SenderCreator.d.ts +0 -4
- package/lib/types/contracts/SenderCreator.js +0 -26
- package/lib/types/contracts/SenderCreator.js.map +0 -1
- package/lib/types/contracts/SimpleAccountFactory.d.ts +0 -57
- package/lib/types/contracts/SimpleAccountFactory.js +0 -79
- package/lib/types/contracts/SimpleAccountFactory.js.map +0 -1
- package/lib/types/contracts/TestOpcodesAccount.d.ts +0 -4
- package/lib/types/contracts/TestOpcodesAccount.js +0 -284
- package/lib/types/contracts/TestOpcodesAccount.js.map +0 -1
- package/lib/types/contracts/TestOpcodesAccountFactory.d.ts +0 -4
- package/lib/types/contracts/TestOpcodesAccountFactory.js +0 -26
- package/lib/types/contracts/TestOpcodesAccountFactory.js.map +0 -1
- package/lib/types/contracts/TestStorageAccount.d.ts +0 -4
- package/lib/types/contracts/TestStorageAccount.js +0 -316
- package/lib/types/contracts/TestStorageAccount.js.map +0 -1
- package/lib/types/contracts/index.d.ts +0 -17
- package/lib/types/contracts/index.js +0 -33
- package/lib/types/contracts/index.js.map +0 -1
- package/lib/types/gasPrice.d.ts +0 -110
- package/lib/types/gasPrice.js +0 -55
- package/lib/types/gasPrice.js.map +0 -1
- package/lib/types/index.d.ts +0 -11
- package/lib/types/index.js +0 -27
- package/lib/types/index.js.map +0 -1
- package/lib/types/interfaces.d.ts +0 -58
- package/lib/types/interfaces.js +0 -3
- package/lib/types/interfaces.js.map +0 -1
- package/lib/types/mempool.d.ts +0 -60
- package/lib/types/mempool.js +0 -11
- package/lib/types/mempool.js.map +0 -1
- package/lib/types/schemas.d.ts +0 -20785
- package/lib/types/schemas.js +0 -679
- package/lib/types/schemas.js.map +0 -1
- package/lib/types/utils.d.ts +0 -25
- package/lib/types/utils.js +0 -35
- package/lib/types/utils.js.map +0 -1
- package/lib/types/validation.d.ts +0 -14327
- package/lib/types/validation.js +0 -312
- package/lib/types/validation.js.map +0 -1
- package/lib/utils/asyncTimeout.d.ts +0 -5
- package/lib/utils/asyncTimeout.js +0 -51
- package/lib/utils/asyncTimeout.js.map +0 -1
- package/lib/utils/bigInt.d.ts +0 -8
- package/lib/utils/bigInt.js +0 -24
- package/lib/utils/bigInt.js.map +0 -1
- package/lib/utils/eip7702.d.ts +0 -4
- package/lib/utils/eip7702.js +0 -21
- package/lib/utils/eip7702.js.map +0 -1
- package/lib/utils/fastify-rpc-decorators.d.ts +0 -19
- package/lib/utils/fastify-rpc-decorators.js +0 -23
- package/lib/utils/fastify-rpc-decorators.js.map +0 -1
- package/lib/utils/helpers.d.ts +0 -15
- package/lib/utils/helpers.js +0 -59
- package/lib/utils/helpers.js.map +0 -1
- package/lib/utils/index.d.ts +0 -9
- package/lib/utils/index.js +0 -24
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/logger.d.ts +0 -6
- package/lib/utils/logger.js +0 -85
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/metrics.d.ts +0 -29
- package/lib/utils/metrics.js +0 -199
- package/lib/utils/metrics.js.map +0 -1
- package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.d.ts +0 -6
- package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js +0 -57
- package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +0 -1
- package/lib/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +0 -7
- package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js +0 -105
- package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js.map +0 -1
- package/lib/utils/minMaxQueue/index.d.ts +0 -12
- package/lib/utils/minMaxQueue/index.js +0 -16
- package/lib/utils/minMaxQueue/index.js.map +0 -1
- package/lib/utils/rpc-reply.d.ts +0 -16
- package/lib/utils/rpc-reply.js +0 -41
- package/lib/utils/rpc-reply.js.map +0 -1
- package/lib/utils/userop.d.ts +0 -138
- package/lib/utils/userop.js +0 -620
- package/lib/utils/userop.js.map +0 -1
- package/lib/utils/validation.d.ts +0 -76
- package/lib/utils/validation.js +0 -491
- package/lib/utils/validation.js.map +0 -1
|
@@ -1,349 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createRedisOutstandingQueue = exports.RedisHash = void 0;
|
|
4
|
-
const userop_1 = require("../utils/userop.js");
|
|
5
|
-
const types_1 = require("../types/index.js");
|
|
6
|
-
const ioredis_1 = require("ioredis");
|
|
7
|
-
const utils_1 = require("viem/utils");
|
|
8
|
-
const serializeUserOpInfo = (userOpInfo) => {
|
|
9
|
-
return JSON.stringify(userOpInfo, (_, value) => typeof value === "bigint" ? (0, utils_1.toHex)(value) : value);
|
|
10
|
-
};
|
|
11
|
-
const deserializeUserOpInfo = (data) => {
|
|
12
|
-
try {
|
|
13
|
-
const parsed = JSON.parse(data);
|
|
14
|
-
const result = types_1.userOpInfoSchema.safeParse(parsed);
|
|
15
|
-
if (!result.success) {
|
|
16
|
-
throw new Error(`Failed to parse UserOpInfo: ${result.error.message}`);
|
|
17
|
-
}
|
|
18
|
-
return result.data;
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
if (error instanceof Error) {
|
|
22
|
-
throw new Error(`UserOpInfo deserialization failed: ${error.message}`);
|
|
23
|
-
}
|
|
24
|
-
throw new Error("UserOpInfo deserialization failed with unknown error");
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
const isDeploymentOperation = (userOp) => {
|
|
28
|
-
const isV6Deployment = (0, userop_1.isVersion06)(userOp) && !!userOp.initCode && userOp.initCode !== "0x";
|
|
29
|
-
const isV7Deployment = (0, userop_1.isVersion07)(userOp) && !!userOp.factory && userOp.factory !== "0x";
|
|
30
|
-
return isV6Deployment || isV7Deployment;
|
|
31
|
-
};
|
|
32
|
-
class RedisSortedSet {
|
|
33
|
-
redis;
|
|
34
|
-
keyName;
|
|
35
|
-
constructor(redis, keyName) {
|
|
36
|
-
this.redis = redis;
|
|
37
|
-
this.keyName = keyName;
|
|
38
|
-
}
|
|
39
|
-
get keyPath() {
|
|
40
|
-
return this.keyName;
|
|
41
|
-
}
|
|
42
|
-
async add({ member, score, multi = this.redis }) {
|
|
43
|
-
await multi.zadd(this.keyPath, score, member);
|
|
44
|
-
}
|
|
45
|
-
async remove({ member, multi = this.redis }) {
|
|
46
|
-
await multi.zrem(this.keyPath, member);
|
|
47
|
-
}
|
|
48
|
-
async getByScoreRange(min, max) {
|
|
49
|
-
return this.redis.zrangebyscore(this.keyPath, min, max);
|
|
50
|
-
}
|
|
51
|
-
async getByRankRange(start, stop) {
|
|
52
|
-
return this.redis.zrange(this.keyPath, start, stop);
|
|
53
|
-
}
|
|
54
|
-
async popMax() {
|
|
55
|
-
const result = (await this.redis.zmpop(1, [this.keyPath], "MAX", "COUNT", 1));
|
|
56
|
-
return result && result[1].length > 0 ? result[1][0][0] : undefined;
|
|
57
|
-
}
|
|
58
|
-
async popMin() {
|
|
59
|
-
const result = (await this.redis.zmpop(1, [this.keyPath], "MIN", "COUNT", 1));
|
|
60
|
-
return result && result[1].length > 0 ? result[1][0][0] : undefined;
|
|
61
|
-
}
|
|
62
|
-
async delete({ multi = this.redis }) {
|
|
63
|
-
await multi.del(this.keyPath);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
class RedisHash {
|
|
67
|
-
redis;
|
|
68
|
-
keyName;
|
|
69
|
-
constructor(redis, keyName) {
|
|
70
|
-
this.redis = redis;
|
|
71
|
-
this.keyName = keyName;
|
|
72
|
-
}
|
|
73
|
-
get keyPath() {
|
|
74
|
-
return this.keyName;
|
|
75
|
-
}
|
|
76
|
-
async set({ key, value, multi = this.redis }) {
|
|
77
|
-
await multi.hset(this.keyPath, key, value);
|
|
78
|
-
}
|
|
79
|
-
async get(field) {
|
|
80
|
-
return this.redis.hget(this.keyPath, field);
|
|
81
|
-
}
|
|
82
|
-
async delete({ key, multi = this.redis }) {
|
|
83
|
-
await multi.hdel(this.keyPath, key);
|
|
84
|
-
}
|
|
85
|
-
async exists(field) {
|
|
86
|
-
return (await this.redis.hexists(this.keyPath, field)) === 1;
|
|
87
|
-
}
|
|
88
|
-
async getAll() {
|
|
89
|
-
return this.redis.hgetall(this.keyPath);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.RedisHash = RedisHash;
|
|
93
|
-
class RedisOutstandingQueue {
|
|
94
|
-
redis;
|
|
95
|
-
chainId;
|
|
96
|
-
entryPoint;
|
|
97
|
-
// Redis data structures
|
|
98
|
-
readyOpsQueue; // gasPrice -> pendingOpsKey
|
|
99
|
-
userOpHashLookup; // userOpHash -> pendingOpsKey
|
|
100
|
-
factoryLookup; // sender -> userOpHash
|
|
101
|
-
constructor({ config, entryPoint }) {
|
|
102
|
-
if (!config.redisMempoolUrl) {
|
|
103
|
-
throw new Error("Missing required redisMempoolUrl");
|
|
104
|
-
}
|
|
105
|
-
this.redis = new ioredis_1.Redis(config.redisMempoolUrl, {});
|
|
106
|
-
this.chainId = config.chainId;
|
|
107
|
-
this.entryPoint = entryPoint;
|
|
108
|
-
// Initialize Redis data structures
|
|
109
|
-
const factoryLookupKey = `${this.chainId}:outstanding:factory-lookup:${this.entryPoint}`;
|
|
110
|
-
const userOpHashLookupKey = `${this.chainId}:outstanding:user-op-hash-index:${this.entryPoint}`;
|
|
111
|
-
const readyOpsQueueKey = `${this.chainId}:outstanding:pending-queue:${this.entryPoint}`;
|
|
112
|
-
this.readyOpsQueue = new RedisSortedSet(this.redis, readyOpsQueueKey);
|
|
113
|
-
this.userOpHashLookup = new RedisHash(this.redis, userOpHashLookupKey);
|
|
114
|
-
this.factoryLookup = new RedisHash(this.redis, factoryLookupKey);
|
|
115
|
-
}
|
|
116
|
-
// Helpers
|
|
117
|
-
getPendingOpsSet(userOp) {
|
|
118
|
-
return new RedisSortedSet(this.redis, this.getPendingOpsKey(userOp));
|
|
119
|
-
}
|
|
120
|
-
getPendingOpsKey(userOp) {
|
|
121
|
-
const [nonceKey] = (0, userop_1.getNonceKeyAndSequence)(userOp.nonce);
|
|
122
|
-
const fingerprint = `${userOp.sender}-${(0, utils_1.toHex)(nonceKey)}`;
|
|
123
|
-
return `${this.chainId}:outstanding:pending-ops:${this.entryPoint}:${fingerprint}`;
|
|
124
|
-
}
|
|
125
|
-
// OutstandingStore methods
|
|
126
|
-
async contains(userOpHash) {
|
|
127
|
-
return this.userOpHashLookup.exists(userOpHash);
|
|
128
|
-
}
|
|
129
|
-
async popConflicting(userOp) {
|
|
130
|
-
const [, nonceSeq] = (0, userop_1.getNonceKeyAndSequence)(userOp.nonce);
|
|
131
|
-
const pendingOpsSet = this.getPendingOpsSet(userOp);
|
|
132
|
-
// Check for operations with the same nonce sequence
|
|
133
|
-
const conflictingNonce = await pendingOpsSet.getByScoreRange(Number(nonceSeq), Number(nonceSeq));
|
|
134
|
-
if (conflictingNonce.length) {
|
|
135
|
-
const conflicting = deserializeUserOpInfo(conflictingNonce[0]);
|
|
136
|
-
await this.remove(conflicting.userOpHash);
|
|
137
|
-
return {
|
|
138
|
-
reason: "conflicting_nonce",
|
|
139
|
-
userOpInfo: conflicting
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
// Check for conflicting deployments to the same address
|
|
143
|
-
if (isDeploymentOperation(userOp)) {
|
|
144
|
-
const conflictingUserOpHash = await this.factoryLookup.get(userOp.sender);
|
|
145
|
-
if (conflictingUserOpHash) {
|
|
146
|
-
const pendingOpsKey = await this.userOpHashLookup.get(conflictingUserOpHash);
|
|
147
|
-
if (pendingOpsKey) {
|
|
148
|
-
const conflictingPendingOpsSet = new RedisSortedSet(this.redis, pendingOpsKey);
|
|
149
|
-
const ops = await conflictingPendingOpsSet.getByRankRange(0, -1);
|
|
150
|
-
const userOps = ops.map(deserializeUserOpInfo);
|
|
151
|
-
const conflictingUserOp = userOps.find((op) => op.userOpHash === conflictingUserOpHash);
|
|
152
|
-
if (conflictingUserOp) {
|
|
153
|
-
await this.remove(conflictingUserOp.userOpHash);
|
|
154
|
-
return {
|
|
155
|
-
reason: "conflicting_deployment",
|
|
156
|
-
userOpInfo: conflictingUserOp
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return undefined;
|
|
163
|
-
}
|
|
164
|
-
async peek() {
|
|
165
|
-
// Get highest gas price operation's key
|
|
166
|
-
const pendingOpsKeys = await this.readyOpsQueue.getByRankRange(0, 0);
|
|
167
|
-
if (!pendingOpsKeys.length) {
|
|
168
|
-
return undefined;
|
|
169
|
-
}
|
|
170
|
-
// Get the lowest nonce operation from the pendingOpsKey
|
|
171
|
-
const pendingOpsSet = new RedisSortedSet(this.redis, pendingOpsKeys[0]);
|
|
172
|
-
const userOpInfoStrings = await pendingOpsSet.getByRankRange(0, 0);
|
|
173
|
-
if (!userOpInfoStrings.length) {
|
|
174
|
-
return undefined;
|
|
175
|
-
}
|
|
176
|
-
return deserializeUserOpInfo(userOpInfoStrings[0]);
|
|
177
|
-
}
|
|
178
|
-
async add(userOpInfo) {
|
|
179
|
-
const { userOpHash, userOp } = userOpInfo;
|
|
180
|
-
const pendingOpsSet = this.getPendingOpsSet(userOp);
|
|
181
|
-
const [, nonceSeq] = (0, userop_1.getNonceKeyAndSequence)(userOp.nonce);
|
|
182
|
-
// check if this will be the lowest nonce operation
|
|
183
|
-
// We need this info before starting the transaction
|
|
184
|
-
const existingOps = await pendingOpsSet.getByRankRange(0, 0);
|
|
185
|
-
const isLowestNonce = existingOps.length === 0 ||
|
|
186
|
-
userOp.nonce < deserializeUserOpInfo(existingOps[0]).userOp.nonce;
|
|
187
|
-
const multi = this.redis.multi();
|
|
188
|
-
// Add to pendingOps sorted set with nonceSeq as score
|
|
189
|
-
await pendingOpsSet.add({
|
|
190
|
-
member: serializeUserOpInfo(userOpInfo),
|
|
191
|
-
score: Number(nonceSeq),
|
|
192
|
-
multi
|
|
193
|
-
});
|
|
194
|
-
// Add to userOpHash lookup
|
|
195
|
-
await this.userOpHashLookup.set({
|
|
196
|
-
key: userOpHash,
|
|
197
|
-
value: pendingOpsSet.keyPath,
|
|
198
|
-
multi
|
|
199
|
-
});
|
|
200
|
-
// Track factory deployments if needed
|
|
201
|
-
if (isDeploymentOperation(userOp)) {
|
|
202
|
-
await this.factoryLookup.set({
|
|
203
|
-
key: userOp.sender,
|
|
204
|
-
value: userOpHash,
|
|
205
|
-
multi
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
// If lowest nonce, update ready queue with this userOp's gasPrice
|
|
209
|
-
if (isLowestNonce) {
|
|
210
|
-
await this.readyOpsQueue.add({
|
|
211
|
-
member: pendingOpsSet.keyPath,
|
|
212
|
-
score: Number(userOp.maxFeePerGas),
|
|
213
|
-
multi
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
await multi.exec();
|
|
217
|
-
}
|
|
218
|
-
async remove(userOpHash) {
|
|
219
|
-
// Get the userOp info from the secondary index
|
|
220
|
-
const pendingOpsKey = await this.userOpHashLookup.get(userOpHash);
|
|
221
|
-
if (!pendingOpsKey) {
|
|
222
|
-
return false;
|
|
223
|
-
}
|
|
224
|
-
// Get all pending operations for this key
|
|
225
|
-
const pendingOpsSet = new RedisSortedSet(this.redis, pendingOpsKey);
|
|
226
|
-
const ops = await pendingOpsSet.getByRankRange(0, -1);
|
|
227
|
-
if (!ops.length) {
|
|
228
|
-
return false;
|
|
229
|
-
}
|
|
230
|
-
const userOps = ops.map(deserializeUserOpInfo);
|
|
231
|
-
const userOpInfo = userOps.find((op) => op.userOpHash === userOpHash);
|
|
232
|
-
if (!userOpInfo) {
|
|
233
|
-
return false;
|
|
234
|
-
}
|
|
235
|
-
// Check if we're removing the lowest nonce operation
|
|
236
|
-
const isLowestNonce = userOps[0].userOpHash === userOpHash;
|
|
237
|
-
// If this is the lowest nonce, check if there's a next operation before starting the transaction
|
|
238
|
-
let nextOp = undefined;
|
|
239
|
-
if (isLowestNonce && userOps.length > 1) {
|
|
240
|
-
// userOps is already sorted by nonce sequence because it comes from the sorted set
|
|
241
|
-
// So we can simply take the second operation as the next one
|
|
242
|
-
nextOp = userOps[1];
|
|
243
|
-
}
|
|
244
|
-
// Create a transaction
|
|
245
|
-
const multi = this.redis.multi();
|
|
246
|
-
// Clean up factory deployment tracking if needed
|
|
247
|
-
if (isDeploymentOperation(userOpInfo.userOp)) {
|
|
248
|
-
await this.factoryLookup.delete({
|
|
249
|
-
key: userOpInfo.userOp.sender,
|
|
250
|
-
multi
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
// Remove from the sorted set
|
|
254
|
-
await pendingOpsSet.remove({
|
|
255
|
-
member: serializeUserOpInfo(userOpInfo),
|
|
256
|
-
multi
|
|
257
|
-
});
|
|
258
|
-
// Remove from hash lookup
|
|
259
|
-
await this.userOpHashLookup.delete({
|
|
260
|
-
key: userOpHash,
|
|
261
|
-
multi
|
|
262
|
-
});
|
|
263
|
-
if (isLowestNonce) {
|
|
264
|
-
// Remove from ready queue
|
|
265
|
-
await this.readyOpsQueue.remove({ member: pendingOpsKey, multi });
|
|
266
|
-
// If we have a next operation, add it to the ready queue
|
|
267
|
-
if (nextOp) {
|
|
268
|
-
await this.readyOpsQueue.add({
|
|
269
|
-
member: pendingOpsKey,
|
|
270
|
-
score: Number(nextOp.userOp.maxFeePerGas),
|
|
271
|
-
multi
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
// Execute transaction
|
|
276
|
-
await multi.exec();
|
|
277
|
-
return true;
|
|
278
|
-
}
|
|
279
|
-
async pop() {
|
|
280
|
-
// Pop highest gas price operation
|
|
281
|
-
const pendingOpsKey = await this.readyOpsQueue.popMax();
|
|
282
|
-
if (!pendingOpsKey) {
|
|
283
|
-
return undefined;
|
|
284
|
-
}
|
|
285
|
-
const pendingOpsSet = new RedisSortedSet(this.redis, pendingOpsKey);
|
|
286
|
-
// Get the operations from the set (limited to 2 for efficiency)
|
|
287
|
-
const ops = await pendingOpsSet.getByRankRange(0, 1);
|
|
288
|
-
if (!ops.length) {
|
|
289
|
-
return undefined;
|
|
290
|
-
}
|
|
291
|
-
const currentUserOpStr = ops[0];
|
|
292
|
-
const currentUserOp = deserializeUserOpInfo(currentUserOpStr);
|
|
293
|
-
// Create a transaction
|
|
294
|
-
const multi = this.redis.multi();
|
|
295
|
-
// Remove the current operation
|
|
296
|
-
await pendingOpsSet.remove({ member: currentUserOpStr, multi });
|
|
297
|
-
await this.userOpHashLookup.delete({
|
|
298
|
-
key: currentUserOp.userOpHash,
|
|
299
|
-
multi
|
|
300
|
-
});
|
|
301
|
-
// Execute transaction
|
|
302
|
-
await multi.exec();
|
|
303
|
-
// Check if there are more operations in this set
|
|
304
|
-
if (ops.length > 1) {
|
|
305
|
-
const nextUserOp = deserializeUserOpInfo(ops[1]);
|
|
306
|
-
await this.readyOpsQueue.add({
|
|
307
|
-
member: pendingOpsKey,
|
|
308
|
-
score: Number(nextUserOp.userOp.maxFeePerGas)
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
else {
|
|
312
|
-
// Delete the empty set
|
|
313
|
-
await pendingOpsSet.delete({});
|
|
314
|
-
}
|
|
315
|
-
return currentUserOp;
|
|
316
|
-
}
|
|
317
|
-
async getQueuedUserOps(userOp) {
|
|
318
|
-
const pendingOpsSet = this.getPendingOpsSet(userOp);
|
|
319
|
-
const [, nonceSequence] = (0, userop_1.getNonceKeyAndSequence)(userOp.nonce);
|
|
320
|
-
const pendingOps = await pendingOpsSet.getByRankRange(0, -1);
|
|
321
|
-
// Filter operations with nonce sequence less than the current one
|
|
322
|
-
return pendingOps
|
|
323
|
-
.map(deserializeUserOpInfo)
|
|
324
|
-
.filter((opInfo) => {
|
|
325
|
-
const [, opNonceSeq] = (0, userop_1.getNonceKeyAndSequence)(opInfo.userOp.nonce);
|
|
326
|
-
return opNonceSeq < nonceSequence;
|
|
327
|
-
})
|
|
328
|
-
.map((opInfo) => opInfo.userOp);
|
|
329
|
-
}
|
|
330
|
-
// These methods aren't implemented
|
|
331
|
-
async dumpLocal() {
|
|
332
|
-
return []; // We can't dump from redis as the latency is too high
|
|
333
|
-
}
|
|
334
|
-
async clear() {
|
|
335
|
-
throw new Error("Not implemented: clear");
|
|
336
|
-
}
|
|
337
|
-
// Skip limit checks when using Redis
|
|
338
|
-
validateQueuedLimit() {
|
|
339
|
-
return true;
|
|
340
|
-
}
|
|
341
|
-
validateParallelLimit() {
|
|
342
|
-
return true;
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
const createRedisOutstandingQueue = ({ config, entryPoint }) => {
|
|
346
|
-
return new RedisOutstandingQueue({ config, entryPoint });
|
|
347
|
-
};
|
|
348
|
-
exports.createRedisOutstandingQueue = createRedisOutstandingQueue;
|
|
349
|
-
//# sourceMappingURL=createRedisOutstandingStore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRedisOutstandingStore.js","sourceRoot":"","sources":["../../store/createRedisOutstandingStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Store, UserOpType } from "./index.js";
|
|
2
|
-
import { AltoConfig } from "../createConfig.js";
|
|
3
|
-
import { Address } from "viem";
|
|
4
|
-
export declare const createRedisStore: <T extends UserOpType>({ config, storeType, entryPoint }: {
|
|
5
|
-
config: AltoConfig;
|
|
6
|
-
storeType: string;
|
|
7
|
-
entryPoint: Address;
|
|
8
|
-
}) => Store<T>;
|
|
9
|
-
//# sourceMappingURL=createRedisStore.d.ts.map
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createRedisStore = void 0;
|
|
7
|
-
const ioredis_1 = __importDefault(require("ioredis"));
|
|
8
|
-
const schemas_1 = require("../types/schemas.js");
|
|
9
|
-
const userop_1 = require("../utils/userop.js");
|
|
10
|
-
const viem_1 = require("viem");
|
|
11
|
-
const createRedisOutstandingStore_1 = require("./createRedisOutstandingStore.js");
|
|
12
|
-
const createStore_1 = require("./createStore.js");
|
|
13
|
-
const isDeploymentOperation = (userOp) => {
|
|
14
|
-
const isV6Deployment = (0, userop_1.isVersion06)(userOp) && !!userOp.initCode && userOp.initCode !== "0x";
|
|
15
|
-
const isV7Deployment = (0, userop_1.isVersion07)(userOp) && !!userOp.factory && userOp.factory !== "0x";
|
|
16
|
-
return isV6Deployment || isV7Deployment;
|
|
17
|
-
};
|
|
18
|
-
const serializeUserOp = (userOpInfo) => {
|
|
19
|
-
return JSON.stringify(userOpInfo, (_, value) => typeof value === "bigint" ? (0, viem_1.toHex)(value) : value);
|
|
20
|
-
};
|
|
21
|
-
const deserializeUserOp = (data) => {
|
|
22
|
-
try {
|
|
23
|
-
const parsed = JSON.parse(data);
|
|
24
|
-
const result = schemas_1.userOperationSchema.safeParse(parsed);
|
|
25
|
-
if (!result.success) {
|
|
26
|
-
throw new Error(`Failed to parse UserOpInfo: ${result.error.message}`);
|
|
27
|
-
}
|
|
28
|
-
return result.data;
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
if (error instanceof Error) {
|
|
32
|
-
throw new Error(`UserOpInfo deserialization failed: ${error.message}`);
|
|
33
|
-
}
|
|
34
|
-
throw new Error("UserOpInfo deserialization failed with unknown error");
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
const createRedisStore = ({ config, storeType, entryPoint }) => {
|
|
38
|
-
if (!config.redisMempoolUrl) {
|
|
39
|
-
throw new Error("Missing required redisMempoolUrl");
|
|
40
|
-
}
|
|
41
|
-
const redis = new ioredis_1.default(config.redisMempoolUrl, {});
|
|
42
|
-
const factoryLookupKey = `${config.chainId}:${storeType}:factory-lookup:${entryPoint}`;
|
|
43
|
-
const conflictingNonceKey = `${config.chainId}:${storeType}:conflicting-nonce:${entryPoint}`;
|
|
44
|
-
const userOpHashLookupKey = `${config.chainId}:${storeType}:user-op-hash-index:${entryPoint}`;
|
|
45
|
-
const senderNonceLookupKey = `${config.chainId}:${storeType}:sender-nonce-lookup:${entryPoint}`;
|
|
46
|
-
const conflictingNonce = new createRedisOutstandingStore_1.RedisHash(redis, conflictingNonceKey); // userOpHash -> userOp
|
|
47
|
-
const factoryLookup = new createRedisOutstandingStore_1.RedisHash(redis, factoryLookupKey); // sender -> userOpHash (if deployment is present)
|
|
48
|
-
const senderNonceLookup = new createRedisOutstandingStore_1.RedisHash(redis, senderNonceLookupKey); // sender + nonce -> userOp
|
|
49
|
-
const userOpHashLookup = new createRedisOutstandingStore_1.RedisHash(redis, userOpHashLookupKey); // userOpHash -> userOp
|
|
50
|
-
const memoryStore = (0, createStore_1.createMemoryStore)({ config });
|
|
51
|
-
const encodeSenderNonce = (userOp) => {
|
|
52
|
-
return `${userOp.sender}-${userOp.nonce}`;
|
|
53
|
-
};
|
|
54
|
-
return {
|
|
55
|
-
add: async (op) => {
|
|
56
|
-
// Local memory logic
|
|
57
|
-
memoryStore.add(op);
|
|
58
|
-
// Global redis logic
|
|
59
|
-
const { userOpHash, userOp } = op;
|
|
60
|
-
const multi = redis.multi();
|
|
61
|
-
await userOpHashLookup.set({
|
|
62
|
-
key: userOpHash,
|
|
63
|
-
value: serializeUserOp(userOp),
|
|
64
|
-
multi
|
|
65
|
-
});
|
|
66
|
-
await conflictingNonce.set({
|
|
67
|
-
key: userOpHash,
|
|
68
|
-
value: serializeUserOp(userOp),
|
|
69
|
-
multi
|
|
70
|
-
});
|
|
71
|
-
await senderNonceLookup.set({
|
|
72
|
-
key: encodeSenderNonce(userOp),
|
|
73
|
-
value: serializeUserOp(userOp),
|
|
74
|
-
multi
|
|
75
|
-
});
|
|
76
|
-
if (isDeploymentOperation(userOp)) {
|
|
77
|
-
await factoryLookup.set({
|
|
78
|
-
key: op.userOp.sender,
|
|
79
|
-
value: op.userOpHash,
|
|
80
|
-
multi
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
await multi.exec();
|
|
84
|
-
},
|
|
85
|
-
remove: async (userOpHash) => {
|
|
86
|
-
// Local memory logic
|
|
87
|
-
memoryStore.remove(userOpHash);
|
|
88
|
-
// Redis Logic
|
|
89
|
-
const exist = await userOpHashLookup.get(userOpHash);
|
|
90
|
-
if (!exist) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
const userOp = deserializeUserOp(exist);
|
|
94
|
-
const multi = redis.multi();
|
|
95
|
-
await userOpHashLookup.delete({ key: userOpHash, multi });
|
|
96
|
-
await senderNonceLookup.delete({
|
|
97
|
-
key: encodeSenderNonce(userOp),
|
|
98
|
-
multi
|
|
99
|
-
});
|
|
100
|
-
if (isDeploymentOperation(userOp)) {
|
|
101
|
-
await factoryLookup.delete({ key: userOp.sender, multi });
|
|
102
|
-
}
|
|
103
|
-
await multi.exec();
|
|
104
|
-
return true;
|
|
105
|
-
},
|
|
106
|
-
contains: async (userOpHash) => {
|
|
107
|
-
return await userOpHashLookup.exists(userOpHash);
|
|
108
|
-
},
|
|
109
|
-
dumpLocal: () => {
|
|
110
|
-
return memoryStore.dumpLocal();
|
|
111
|
-
},
|
|
112
|
-
findConflicting: async (userOp) => {
|
|
113
|
-
const conflictingNonce = await senderNonceLookup.get(encodeSenderNonce(userOp));
|
|
114
|
-
if (conflictingNonce) {
|
|
115
|
-
return {
|
|
116
|
-
reason: "conflicting_nonce",
|
|
117
|
-
userOp: deserializeUserOp(conflictingNonce)
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
if (isDeploymentOperation(userOp)) {
|
|
121
|
-
const userOpHash = await factoryLookup.get(userOp.sender);
|
|
122
|
-
if (userOpHash) {
|
|
123
|
-
const userOp = await userOpHashLookup.get(userOpHash);
|
|
124
|
-
if (!userOp) {
|
|
125
|
-
return undefined;
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
reason: "conflicting_deployment",
|
|
129
|
-
userOp: deserializeUserOp(userOp)
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return undefined;
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
};
|
|
137
|
-
exports.createRedisStore = createRedisStore;
|
|
138
|
-
//# sourceMappingURL=createRedisStore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRedisStore.js","sourceRoot":"","sources":["../../store/createRedisStore.ts"],"names":[],"mappings":"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"}
|
package/lib/store/createStore.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMemoryStore = void 0;
|
|
4
|
-
const userop_1 = require("../utils/userop.js");
|
|
5
|
-
const createMemoryStore = ({ config }) => {
|
|
6
|
-
let store = [];
|
|
7
|
-
return {
|
|
8
|
-
findConflicting: async (userOp) => {
|
|
9
|
-
const dump = [...store];
|
|
10
|
-
const { sender, nonce } = userOp;
|
|
11
|
-
// Check for same sender and nonce
|
|
12
|
-
const conflictingNonce = dump.find((userOpInfo) => {
|
|
13
|
-
const { userOp: mempoolUserOp } = userOpInfo;
|
|
14
|
-
return (mempoolUserOp.sender === sender &&
|
|
15
|
-
mempoolUserOp.nonce === nonce);
|
|
16
|
-
});
|
|
17
|
-
if (conflictingNonce) {
|
|
18
|
-
return {
|
|
19
|
-
reason: "conflicting_nonce",
|
|
20
|
-
userOp: conflictingNonce.userOp
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
// Check for deployment conflict
|
|
24
|
-
const isCurrentOpDeployment = ((0, userop_1.isVersion06)(userOp) &&
|
|
25
|
-
userOp.initCode &&
|
|
26
|
-
userOp.initCode !== "0x") ||
|
|
27
|
-
((0, userop_1.isVersion07)(userOp) &&
|
|
28
|
-
userOp.factory &&
|
|
29
|
-
userOp.factory !== "0x");
|
|
30
|
-
if (isCurrentOpDeployment) {
|
|
31
|
-
const conflictingDeployment = dump.find((userOpInfo) => {
|
|
32
|
-
const { userOp: mempoolUserOp } = userOpInfo;
|
|
33
|
-
const isV6Deployment = (0, userop_1.isVersion06)(mempoolUserOp) &&
|
|
34
|
-
mempoolUserOp.initCode &&
|
|
35
|
-
mempoolUserOp.initCode !== "0x";
|
|
36
|
-
const isV7Deployment = (0, userop_1.isVersion07)(mempoolUserOp) &&
|
|
37
|
-
mempoolUserOp.factory &&
|
|
38
|
-
mempoolUserOp.factory !== "0x";
|
|
39
|
-
const isDeployment = isV6Deployment || isV7Deployment;
|
|
40
|
-
return mempoolUserOp.sender === sender && isDeployment;
|
|
41
|
-
});
|
|
42
|
-
if (conflictingDeployment) {
|
|
43
|
-
return {
|
|
44
|
-
reason: "conflicting_deployment",
|
|
45
|
-
userOp: conflictingDeployment.userOp
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return undefined;
|
|
50
|
-
},
|
|
51
|
-
add: (op) => {
|
|
52
|
-
store = [...store, op];
|
|
53
|
-
return Promise.resolve();
|
|
54
|
-
},
|
|
55
|
-
remove: (userOpHash) => {
|
|
56
|
-
const exists = store.some((op) => op.userOpHash === userOpHash);
|
|
57
|
-
store = store.filter((op) => op.userOpHash !== userOpHash);
|
|
58
|
-
return Promise.resolve(exists);
|
|
59
|
-
},
|
|
60
|
-
contains: (userOpHash) => {
|
|
61
|
-
const contains = store.some((op) => op.userOpHash === userOpHash);
|
|
62
|
-
return Promise.resolve(contains);
|
|
63
|
-
},
|
|
64
|
-
dumpLocal: () => {
|
|
65
|
-
return Promise.resolve([...store]);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
exports.createMemoryStore = createMemoryStore;
|
|
70
|
-
//# sourceMappingURL=createStore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createStore.js","sourceRoot":"","sources":["../../store/createStore.ts"],"names":[],"mappings":"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"}
|