@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.
Files changed (337) hide show
  1. package/contracts/EIP712.sol/EIP712.json +1 -1
  2. package/contracts/ERC165.sol/ERC165.json +1 -1
  3. package/contracts/ERC20.sol/ERC20.json +1 -1
  4. package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -1
  5. package/contracts/EntryPoint.sol/EntryPoint.json +1 -1
  6. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
  7. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
  8. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
  9. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
  10. package/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -1
  11. package/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  12. package/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  13. package/contracts/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
  14. package/contracts/Exec.sol/Exec.json +1 -1
  15. package/contracts/IAccount.sol/IAccount.json +1 -1
  16. package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -1
  17. package/contracts/IAggregator.sol/IAggregator.json +1 -1
  18. package/contracts/IERC165.sol/IERC165.json +1 -1
  19. package/contracts/IERC5267.sol/IERC5267.json +1 -1
  20. package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -1
  21. package/contracts/IEntryPointFilterOpsOverride.sol/IEntryPointFilterOpsOverride08.json +1 -0
  22. package/contracts/IEntryPointFilterOpsOverride.sol/IEntryPointFilterOpsOverride09.json +1 -0
  23. package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -1
  24. package/contracts/INonceManager.sol/INonceManager.json +1 -1
  25. package/contracts/IPaymaster.sol/IPaymaster.json +1 -1
  26. package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -1
  27. package/contracts/IStakeManager.sol/IStakeManager.json +1 -1
  28. package/contracts/LibBytes.sol/LibBytes.json +1 -1
  29. package/contracts/Math.sol/Math.json +1 -1
  30. package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -1
  31. package/contracts/NonceManager.sol/NonceManager.json +1 -1
  32. package/contracts/Panic.sol/Panic.json +1 -1
  33. package/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  34. package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -1
  35. package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -1
  36. package/contracts/SafeCast.sol/SafeCast.json +1 -1
  37. package/contracts/SenderCreator.sol/SenderCreator.json +1 -1
  38. package/contracts/ShortStrings.sol/ShortStrings.json +1 -1
  39. package/contracts/SignedMath.sol/SignedMath.json +1 -1
  40. package/contracts/SimulationOverrideHelper.sol/SimulationOverrideHelper.json +1 -0
  41. package/contracts/StakeManager.sol/StakeManager.json +1 -1
  42. package/contracts/StorageSlot.sol/StorageSlot.json +1 -1
  43. package/contracts/Strings.sol/Strings.json +1 -1
  44. package/contracts/TransientSlot.sol/TransientSlot.json +1 -1
  45. package/contracts/UserOperation.sol/UserOperationLib.json +1 -1
  46. package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -1
  47. package/contracts/account-abstraction-v9/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -0
  48. package/contracts/account-abstraction-v9/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
  49. package/contracts/account-abstraction-v9/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -0
  50. package/contracts/account-abstraction-v9/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -0
  51. package/contracts/build-info/338795fc743ca612.json +1 -0
  52. package/contracts/build-info/44a9648cfe32a468.json +1 -0
  53. package/contracts/build-info/{880955d5786bfdae.json → 8dbf8a4ad39019b5.json} +1 -1
  54. package/contracts/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
  55. package/contracts/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  56. package/contracts/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
  57. package/contracts/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
  58. package/contracts/core/Eip7702Support.sol/Eip7702Support.json +1 -0
  59. package/contracts/core/NonceManager.sol/NonceManager.json +1 -0
  60. package/contracts/core/SenderCreator.sol/SenderCreator.json +1 -0
  61. package/contracts/core/StakeManager.sol/StakeManager.json +1 -0
  62. package/contracts/core/UserOperationLib.sol/UserOperationLib.json +1 -0
  63. package/contracts/interfaces/IAccount.sol/IAccount.json +1 -0
  64. package/contracts/interfaces/IAccountExecute.sol/IAccountExecute.json +1 -0
  65. package/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
  66. package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  67. package/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
  68. package/contracts/interfaces/IPaymaster.sol/IPaymaster.json +1 -0
  69. package/contracts/interfaces/ISenderCreator.sol/ISenderCreator.json +1 -0
  70. package/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
  71. package/contracts/overrides/Eip7702Support.sol/Eip7702Support.json +1 -0
  72. package/contracts/overrides/NonceManager.sol/NonceManager.json +1 -0
  73. package/contracts/overrides/SenderCreator.sol/SenderCreator.json +1 -0
  74. package/contracts/overrides/StakeManager.sol/StakeManager.json +1 -0
  75. package/contracts/overrides/UserOperationLib.sol/UserOperationLib.json +1 -0
  76. package/contracts/utils/Exec.sol/Exec.json +1 -1
  77. package/contracts/utils/StorageSlot.sol/StorageSlot.json +1 -0
  78. package/contracts/v09/EntryPoint.sol/EntryPoint.json +1 -0
  79. package/esm/cli/alto.js +13 -6
  80. package/esm/cli/alto.js.map +1 -1
  81. package/esm/cli/config/bundler.d.ts +190 -148
  82. package/esm/cli/config/bundler.js +72 -83
  83. package/esm/cli/config/bundler.js.map +1 -1
  84. package/esm/cli/config/options.d.ts +2 -1
  85. package/esm/cli/config/options.js +105 -68
  86. package/esm/cli/config/options.js.map +1 -1
  87. package/esm/cli/customTransport.d.ts +3 -3
  88. package/esm/cli/deploySimulationsContract.d.ts +1 -0
  89. package/esm/cli/deploySimulationsContract.js +41 -5
  90. package/esm/cli/deploySimulationsContract.js.map +1 -1
  91. package/esm/cli/handler.js +48 -52
  92. package/esm/cli/handler.js.map +1 -1
  93. package/esm/cli/setupServer.js +46 -47
  94. package/esm/cli/setupServer.js.map +1 -1
  95. package/esm/cli/shutDown.d.ts +20 -0
  96. package/esm/cli/shutDown.js +260 -0
  97. package/esm/cli/shutDown.js.map +1 -0
  98. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
  99. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
  100. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
  101. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
  102. package/esm/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -1
  103. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  104. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  105. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
  106. package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  107. package/esm/createConfig.d.ts +9 -2
  108. package/esm/createConfig.js.map +1 -1
  109. package/esm/executor/{userOpMonitor.d.ts → bundleManager.d.ts} +38 -32
  110. package/esm/executor/{userOpMonitor.js → bundleManager.js} +127 -99
  111. package/esm/executor/bundleManager.js.map +1 -0
  112. package/esm/executor/executor.d.ts +4 -3
  113. package/esm/executor/executor.js +33 -20
  114. package/esm/executor/executor.js.map +1 -1
  115. package/esm/executor/executorManager.d.ts +17 -15
  116. package/esm/executor/executorManager.js +130 -55
  117. package/esm/executor/executorManager.js.map +1 -1
  118. package/esm/executor/filterOpsAndEstimateGas.d.ts +17 -2
  119. package/esm/executor/filterOpsAndEstimateGas.js +100 -77
  120. package/esm/executor/filterOpsAndEstimateGas.js.map +1 -1
  121. package/esm/executor/index.d.ts +1 -0
  122. package/esm/executor/index.js +1 -0
  123. package/esm/executor/index.js.map +1 -1
  124. package/esm/executor/senderManager/createMemorySenderManager.js +13 -0
  125. package/esm/executor/senderManager/createMemorySenderManager.js.map +1 -1
  126. package/esm/executor/senderManager/createRedisSenderManager.d.ts +2 -1
  127. package/esm/executor/senderManager/createRedisSenderManager.js +3 -6
  128. package/esm/executor/senderManager/createRedisSenderManager.js.map +1 -1
  129. package/esm/executor/senderManager/flushOnStartUp.js +4 -4
  130. package/esm/executor/senderManager/flushOnStartUp.js.map +1 -1
  131. package/esm/executor/senderManager/index.d.ts +1 -0
  132. package/esm/executor/senderManager/index.js +6 -2
  133. package/esm/executor/senderManager/index.js.map +1 -1
  134. package/esm/executor/senderManager/validateAndRefill.js +2 -2
  135. package/esm/executor/senderManager/validateAndRefill.js.map +1 -1
  136. package/esm/executor/utilityWalletMonitor.d.ts +4 -4
  137. package/esm/executor/utilityWalletMonitor.js +1 -1
  138. package/esm/executor/utilityWalletMonitor.js.map +1 -1
  139. package/esm/executor/utils.d.ts +7 -2
  140. package/esm/executor/utils.js +57 -26
  141. package/esm/executor/utils.js.map +1 -1
  142. package/esm/handlers/arbitrumGasPriceManager.d.ts +3 -2
  143. package/esm/handlers/arbitrumGasPriceManager.js +6 -2
  144. package/esm/handlers/arbitrumGasPriceManager.js.map +1 -1
  145. package/esm/handlers/eventManager.d.ts +9 -9
  146. package/esm/handlers/eventManager.js +59 -60
  147. package/esm/handlers/eventManager.js.map +1 -1
  148. package/esm/handlers/gasPriceManager.d.ts +8 -9
  149. package/esm/handlers/gasPriceManager.js +68 -80
  150. package/esm/handlers/gasPriceManager.js.map +1 -1
  151. package/esm/handlers/mantleGasPriceManager.d.ts +4 -4
  152. package/esm/handlers/mantleGasPriceManager.js +4 -4
  153. package/esm/handlers/mantleGasPriceManager.js.map +1 -1
  154. package/esm/handlers/optimismManager.d.ts +1 -1
  155. package/esm/handlers/optimismManager.js +1 -1
  156. package/esm/handlers/optimismManager.js.map +1 -1
  157. package/esm/mempool/index.d.ts +1 -1
  158. package/esm/mempool/index.js +1 -1
  159. package/esm/mempool/index.js.map +1 -1
  160. package/esm/mempool/mempool.d.ts +57 -22
  161. package/esm/mempool/mempool.js +180 -134
  162. package/esm/mempool/mempool.js.map +1 -1
  163. package/esm/mempool/reputationManager.d.ts +14 -14
  164. package/esm/mempool/reputationManager.js +36 -39
  165. package/esm/mempool/reputationManager.js.map +1 -1
  166. package/esm/mempool/statusManager.d.ts +20 -0
  167. package/esm/mempool/statusManager.js +143 -0
  168. package/esm/mempool/statusManager.js.map +1 -0
  169. package/esm/receiptCache/createMemoryReceiptCache.d.ts +3 -0
  170. package/esm/receiptCache/createMemoryReceiptCache.js +30 -0
  171. package/esm/receiptCache/createMemoryReceiptCache.js.map +1 -0
  172. package/esm/receiptCache/createRedisReceiptCache.d.ts +10 -0
  173. package/esm/receiptCache/createRedisReceiptCache.js +56 -0
  174. package/esm/receiptCache/createRedisReceiptCache.js.map +1 -0
  175. package/esm/receiptCache/index.d.ts +11 -0
  176. package/esm/receiptCache/index.js +21 -0
  177. package/esm/receiptCache/index.js.map +1 -0
  178. package/esm/rpc/createMethodHandler.js.map +1 -1
  179. package/esm/rpc/estimation/gasEstimationHandler.d.ts +2 -4
  180. package/esm/rpc/estimation/gasEstimationHandler.js.map +1 -1
  181. package/esm/rpc/estimation/gasEstimations06.d.ts +6 -7
  182. package/esm/rpc/estimation/gasEstimations06.js +1 -5
  183. package/esm/rpc/estimation/gasEstimations06.js.map +1 -1
  184. package/esm/rpc/estimation/gasEstimations07.d.ts +13 -41
  185. package/esm/rpc/estimation/gasEstimations07.js +27 -34
  186. package/esm/rpc/estimation/gasEstimations07.js.map +1 -1
  187. package/esm/{utils/preVerificationGasCalulator.d.ts → rpc/estimation/preVerificationGasCalculator.d.ts} +20 -6
  188. package/esm/{utils/preVerificationGasCalulator.js → rpc/estimation/preVerificationGasCalculator.js} +95 -47
  189. package/esm/rpc/estimation/preVerificationGasCalculator.js.map +1 -0
  190. package/esm/rpc/estimation/types.d.ts +4 -2
  191. package/esm/rpc/estimation/utils.d.ts +10 -8
  192. package/esm/rpc/estimation/utils.js +54 -48
  193. package/esm/rpc/estimation/utils.js.map +1 -1
  194. package/esm/rpc/methods/boost_sendUserOperation.d.ts +304 -0
  195. package/esm/rpc/methods/debug_bundler_clearReputation.js +1 -1
  196. package/esm/rpc/methods/debug_bundler_clearReputation.js.map +1 -1
  197. package/esm/rpc/methods/debug_bundler_clearState.js +1 -1
  198. package/esm/rpc/methods/debug_bundler_clearState.js.map +1 -1
  199. package/esm/rpc/methods/debug_bundler_dumpMempool.d.ts +338 -0
  200. package/esm/rpc/methods/debug_bundler_dumpReputation.js +1 -1
  201. package/esm/rpc/methods/debug_bundler_dumpReputation.js.map +1 -1
  202. package/esm/rpc/methods/eth_estimateUserOperationGas.d.ts +622 -14
  203. package/esm/rpc/methods/eth_estimateUserOperationGas.js +50 -29
  204. package/esm/rpc/methods/eth_estimateUserOperationGas.js.map +1 -1
  205. package/esm/rpc/methods/eth_getUserOperationByHash.d.ts +621 -11
  206. package/esm/rpc/methods/eth_getUserOperationByHash.js.map +1 -1
  207. package/esm/rpc/methods/eth_getUserOperationReceipt.d.ts +26 -26
  208. package/esm/rpc/methods/eth_getUserOperationReceipt.js +1 -1
  209. package/esm/rpc/methods/eth_sendUserOperation.d.ts +305 -1
  210. package/esm/rpc/methods/eth_sendUserOperation.js +132 -36
  211. package/esm/rpc/methods/eth_sendUserOperation.js.map +1 -1
  212. package/esm/rpc/methods/pimlico_getUserOperationStatus.js +1 -1
  213. package/esm/rpc/methods/pimlico_getUserOperationStatus.js.map +1 -1
  214. package/esm/rpc/methods/pimlico_sendUserOperationNow.d.ts +330 -26
  215. package/esm/rpc/methods/pimlico_sendUserOperationNow.js +15 -27
  216. package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
  217. package/esm/rpc/methods/pimlico_simulateAssetChange.d.ts +620 -12
  218. package/esm/rpc/methods/pimlico_simulateAssetChange.js +14 -19
  219. package/esm/rpc/methods/pimlico_simulateAssetChange.js.map +1 -1
  220. package/esm/rpc/rpcHandler.d.ts +21 -22
  221. package/esm/rpc/rpcHandler.js +15 -17
  222. package/esm/rpc/rpcHandler.js.map +1 -1
  223. package/esm/rpc/server.d.ts +5 -5
  224. package/esm/rpc/server.js +15 -11
  225. package/esm/rpc/server.js.map +1 -1
  226. package/esm/rpc/validation/BundlerCollectorTracerV06.js +1 -1
  227. package/esm/rpc/validation/BundlerCollectorTracerV06.js.map +1 -1
  228. package/esm/rpc/validation/BundlerCollectorTracerV07.js +1 -1
  229. package/esm/rpc/validation/BundlerCollectorTracerV07.js.map +1 -1
  230. package/esm/rpc/validation/SafeValidator.d.ts +13 -14
  231. package/esm/rpc/validation/SafeValidator.js +24 -24
  232. package/esm/rpc/validation/SafeValidator.js.map +1 -1
  233. package/esm/rpc/validation/TracerResultParserV06.d.ts +2 -2
  234. package/esm/rpc/validation/TracerResultParserV06.js +11 -11
  235. package/esm/rpc/validation/TracerResultParserV06.js.map +1 -1
  236. package/esm/rpc/validation/TracerResultParserV07.d.ts +2 -2
  237. package/esm/rpc/validation/TracerResultParserV07.js +13 -13
  238. package/esm/rpc/validation/TracerResultParserV07.js.map +1 -1
  239. package/esm/rpc/validation/UnsafeValidator.d.ts +18 -14
  240. package/esm/rpc/validation/UnsafeValidator.js +71 -40
  241. package/esm/rpc/validation/UnsafeValidator.js.map +1 -1
  242. package/esm/store/createMempoolStore.d.ts +1 -1
  243. package/esm/store/createMempoolStore.js +63 -139
  244. package/esm/store/createMempoolStore.js.map +1 -1
  245. package/esm/store/index.d.ts +4 -75
  246. package/esm/store/index.js +4 -1
  247. package/esm/store/index.js.map +1 -1
  248. package/esm/store/outstanding/index.d.ts +13 -0
  249. package/esm/store/outstanding/index.js +16 -0
  250. package/esm/store/outstanding/index.js.map +1 -0
  251. package/esm/store/{createMemoryOutstandingStore.d.ts → outstanding/memory.d.ts} +14 -13
  252. package/esm/store/outstanding/memory.js +263 -0
  253. package/esm/store/outstanding/memory.js.map +1 -0
  254. package/esm/store/outstanding/redis.d.ts +11 -0
  255. package/esm/store/outstanding/redis.js +229 -0
  256. package/esm/store/outstanding/redis.js.map +1 -0
  257. package/esm/store/outstanding/types.d.ts +19 -0
  258. package/esm/store/outstanding/types.js +2 -0
  259. package/esm/store/outstanding/types.js.map +1 -0
  260. package/esm/store/processing/index.d.ts +11 -0
  261. package/esm/store/processing/index.js +17 -0
  262. package/esm/store/processing/index.js.map +1 -0
  263. package/esm/store/processing/memory.d.ts +16 -0
  264. package/esm/store/processing/memory.js +58 -0
  265. package/esm/store/processing/memory.js.map +1 -0
  266. package/esm/store/processing/redis.d.ts +23 -0
  267. package/esm/store/processing/redis.js +85 -0
  268. package/esm/store/processing/redis.js.map +1 -0
  269. package/esm/store/processing/types.d.ts +10 -0
  270. package/esm/store/processing/types.js +2 -0
  271. package/esm/store/processing/types.js.map +1 -0
  272. package/esm/store/types.d.ts +50 -0
  273. package/esm/store/types.js +2 -0
  274. package/esm/store/types.js.map +1 -0
  275. package/esm/types/contracts/PimlicoSimulations.d.ts +81 -0
  276. package/esm/types/contracts/PimlicoSimulations.js +105 -0
  277. package/esm/types/contracts/PimlicoSimulations.js.map +1 -1
  278. package/esm/types/gasPrice.js +0 -18
  279. package/esm/types/gasPrice.js.map +1 -1
  280. package/esm/types/interfaces.d.ts +15 -10
  281. package/esm/types/mempool.d.ts +3 -0
  282. package/esm/types/schemas.d.ts +13174 -4732
  283. package/esm/types/schemas.js +113 -25
  284. package/esm/types/schemas.js.map +1 -1
  285. package/esm/types/utils.d.ts +2 -5
  286. package/esm/types/utils.js +16 -18
  287. package/esm/types/utils.js.map +1 -1
  288. package/esm/types/validation.d.ts +7646 -6912
  289. package/esm/types/validation.js +122 -152
  290. package/esm/types/validation.js.map +1 -1
  291. package/esm/utils/eip7702.d.ts +2 -1
  292. package/esm/utils/eip7702.js +14 -8
  293. package/esm/utils/eip7702.js.map +1 -1
  294. package/esm/utils/entryPointOverrides.js +18 -4
  295. package/esm/utils/entryPointOverrides.js.map +1 -1
  296. package/esm/utils/helpers.d.ts +2 -1
  297. package/esm/utils/helpers.js +30 -11
  298. package/esm/utils/helpers.js.map +1 -1
  299. package/esm/utils/index.d.ts +0 -1
  300. package/esm/utils/index.js +0 -1
  301. package/esm/utils/index.js.map +1 -1
  302. package/esm/utils/metrics.d.ts +2 -1
  303. package/esm/utils/metrics.js +15 -8
  304. package/esm/utils/metrics.js.map +1 -1
  305. package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.js +8 -9
  306. package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +1 -1
  307. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +24 -2
  308. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js +85 -64
  309. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js.map +1 -1
  310. package/esm/utils/minMaxQueue/index.d.ts +2 -2
  311. package/esm/utils/minMaxQueue/index.js +4 -3
  312. package/esm/utils/minMaxQueue/index.js.map +1 -1
  313. package/esm/utils/rpc-reply.d.ts +3 -3
  314. package/esm/utils/rpc-reply.js.map +1 -1
  315. package/esm/utils/toViemStateOverrides.js +7 -7
  316. package/esm/utils/toViemStateOverrides.js.map +1 -1
  317. package/esm/utils/userop.d.ts +87 -55
  318. package/esm/utils/userop.js +138 -248
  319. package/esm/utils/userop.js.map +1 -1
  320. package/package.json +4 -2
  321. package/contracts/build-info/7710b5a048396e70.json +0 -1
  322. package/esm/executor/userOpMonitor.js.map +0 -1
  323. package/esm/mempool/monitoring.d.ts +0 -15
  324. package/esm/mempool/monitoring.js +0 -118
  325. package/esm/mempool/monitoring.js.map +0 -1
  326. package/esm/store/createMemoryOutstandingStore.js +0 -240
  327. package/esm/store/createMemoryOutstandingStore.js.map +0 -1
  328. package/esm/store/createRedisOutstandingStore.d.ts +0 -27
  329. package/esm/store/createRedisOutstandingStore.js +0 -344
  330. package/esm/store/createRedisOutstandingStore.js.map +0 -1
  331. package/esm/store/createRedisStore.d.ts +0 -9
  332. package/esm/store/createRedisStore.js +0 -131
  333. package/esm/store/createRedisStore.js.map +0 -1
  334. package/esm/store/createStore.d.ts +0 -6
  335. package/esm/store/createStore.js +0 -66
  336. package/esm/store/createStore.js.map +0 -1
  337. package/esm/utils/preVerificationGasCalulator.js.map +0 -1
@@ -1,25 +1,25 @@
1
- import { EntryPointV06Abi, EntryPointV07Abi, RpcError, ValidationErrors } from "../types/index.js";
2
- import { getAAError, getAddressFromInitCodeOrPaymasterAndData, getUserOpHash, isVersion06, isVersion07, isVersion08, jsonStringifyWithBigint, scaleBigIntByPercent } from "../utils/index.js";
1
+ import { ERC7769Errors, EntryPointV06Abi, EntryPointV07Abi, RpcError } from "../types/index.js";
2
+ import { getAAError, getAddressFromInitCodeOrPaymasterAndData, getViemEntryPointVersion, isVersion06, isVersion07, jsonStringifyWithBigint, scaleBigIntByPercent } from "../utils/index.js";
3
3
  import { getAddress, getContract } from "viem";
4
- import { generatePrivateKey, privateKeyToAddress } from "viem/accounts";
5
4
  import { calculateAA95GasFloor } from "../executor/utils.js";
5
+ import { getEip7702AuthAddress } from "../utils/eip7702.js";
6
6
  import { ReputationStatuses } from "./reputationManager.js";
7
7
  export class Mempool {
8
8
  config;
9
9
  metrics;
10
- monitor;
10
+ statusManager;
11
11
  reputationManager;
12
- store;
13
12
  throttledEntityBundleCount;
14
13
  logger;
15
14
  validator;
16
15
  eventManager;
17
- constructor({ config, metrics, monitor, reputationManager, validator, store, eventManager }) {
16
+ store;
17
+ constructor({ config, metrics, statusManager, reputationManager, validator, store, eventManager }) {
18
18
  this.metrics = metrics;
19
19
  this.store = store;
20
20
  this.config = config;
21
21
  this.reputationManager = reputationManager;
22
- this.monitor = monitor;
22
+ this.statusManager = statusManager;
23
23
  this.validator = validator;
24
24
  this.logger = config.getLogger({ module: "mempool" }, {
25
25
  level: config.logLevel
@@ -28,30 +28,49 @@ export class Mempool {
28
28
  this.eventManager = eventManager;
29
29
  }
30
30
  // === Methods for handling changing userOp state === //
31
- async markUserOpsAsSubmitted({ userOps, entryPoint, transactionHash }) {
32
- await Promise.all(userOps.map(async (userOpInfo) => {
33
- const { userOpHash } = userOpInfo;
34
- await this.store.removeProcessing({ entryPoint, userOpHash });
35
- await this.store.addSubmitted({ entryPoint, userOpInfo });
36
- await this.monitor.setUserOpStatus(userOpHash, {
37
- status: "submitted",
38
- transactionHash
39
- });
40
- }));
31
+ async markUserOpsAsSubmitted({ userOps, transactionHash }) {
32
+ const userOpHashes = userOps.map((userOpInfo) => userOpInfo.userOpHash);
33
+ await this.statusManager.set(userOpHashes, {
34
+ status: "submitted",
35
+ transactionHash
36
+ });
41
37
  this.metrics.userOpsSubmitted
42
38
  .labels({ status: "success" })
43
39
  .inc(userOps.length);
44
40
  }
45
41
  async resubmitUserOps({ userOps, entryPoint, reason }) {
46
42
  await Promise.all(userOps.map(async (userOpInfo) => {
47
- const { userOpHash, userOp } = userOpInfo;
43
+ const { userOpHash, submissionAttempts } = userOpInfo;
44
+ const maxResubmits = this.config.maxResubmits;
45
+ // Check if max resubmits has been reached
46
+ if (maxResubmits !== undefined &&
47
+ submissionAttempts >= maxResubmits) {
48
+ this.logger.warn({
49
+ userOpHash,
50
+ submissionAttempts,
51
+ maxResubmits
52
+ }, "dropping userOp: max resubmits reached");
53
+ const rejectedUserOp = {
54
+ ...userOpInfo,
55
+ reason: "max resubmits reached"
56
+ };
57
+ await this.dropUserOps(entryPoint, [rejectedUserOp]);
58
+ return;
59
+ }
48
60
  this.logger.warn({
49
61
  userOpHash,
62
+ submissionAttempts,
50
63
  reason
51
64
  }, "resubmitting user operation");
52
- await this.store.removeProcessing({ entryPoint, userOpHash });
53
- await this.store.removeSubmitted({ entryPoint, userOpHash });
54
- const [success, failureReason] = await this.add(userOp, entryPoint);
65
+ // Complete processing before re-adding to outstanding pool.
66
+ await this.store.removeProcessing({
67
+ entryPoint,
68
+ userOpInfo
69
+ });
70
+ const [success, failureReason] = await this.add({
71
+ userOpInfo,
72
+ entryPoint
73
+ });
55
74
  if (!success) {
56
75
  this.logger.error({ userOpHash, failureReason }, "Failed to resubmit user operation");
57
76
  const rejectedUserOp = {
@@ -66,13 +85,17 @@ export class Mempool {
66
85
  async dropUserOps(entryPoint, rejectedUserOps) {
67
86
  await Promise.all(rejectedUserOps.map(async (rejectedUserOp) => {
68
87
  const { userOp, reason, userOpHash } = rejectedUserOp;
69
- await this.store.removeProcessing({ entryPoint, userOpHash });
70
- await this.store.removeSubmitted({ entryPoint, userOpHash });
88
+ // Complete processing since userOp is dropped.
89
+ await this.store.removeProcessing({
90
+ entryPoint,
91
+ userOpInfo: rejectedUserOp
92
+ });
71
93
  this.eventManager.emitDropped(userOpHash, reason, getAAError(reason));
72
- await this.monitor.setUserOpStatus(userOpHash, {
94
+ await this.statusManager.set([userOpHash], {
73
95
  status: "rejected",
74
96
  transactionHash: null
75
97
  });
98
+ this.metrics.userOpsDropped.labels({ reason }).inc();
76
99
  this.logger.warn({
77
100
  userOperation: jsonStringifyWithBigint(userOp),
78
101
  userOpHash,
@@ -80,30 +103,29 @@ export class Mempool {
80
103
  }, "user operation rejected");
81
104
  }));
82
105
  }
83
- async removeSubmittedUserOps({ userOps, entryPoint }) {
84
- await Promise.all(userOps.map(async ({ userOpHash }) => {
85
- await this.store.removeSubmitted({ entryPoint, userOpHash });
106
+ // Remove userOps from processing store.
107
+ // should be called when userOps are included onchain.
108
+ async removeProcessing({ userOps, entryPoint }) {
109
+ await Promise.all(userOps.map(async (userOpInfo) => {
110
+ await this.store.removeProcessing({
111
+ entryPoint,
112
+ userOpInfo
113
+ });
86
114
  }));
87
115
  }
88
116
  // === Methods for dropping mempool entries === //
89
117
  async dumpOutstanding(entryPoint) {
90
118
  return await this.store.dumpOutstanding(entryPoint);
91
119
  }
92
- async dumpProcessing(entryPoint) {
93
- return await this.store.dumpProcessing(entryPoint);
94
- }
95
- async dumpSubmittedOps(entryPoint) {
96
- return await this.store.dumpSubmitted(entryPoint);
97
- }
98
120
  // === Methods for entity management === //
99
121
  async checkEntityMultipleRoleViolation(entryPoint, op) {
100
122
  if (!this.config.safeMode) {
101
- return Promise.resolve();
123
+ return;
102
124
  }
103
125
  const knownEntities = await this.getKnownEntities(entryPoint);
104
126
  if (knownEntities.paymasters.has(op.sender) ||
105
127
  knownEntities.factories.has(op.sender)) {
106
- throw new RpcError(`The sender address "${op.sender}" is used as a different entity in another UserOperation currently in mempool`, ValidationErrors.OpcodeValidation);
128
+ throw new RpcError(`The sender address "${op.sender}" is used as a different entity in another UserOperation currently in mempool`, ERC7769Errors.OpcodeValidation);
107
129
  }
108
130
  let paymaster = null;
109
131
  let factory = null;
@@ -116,12 +138,11 @@ export class Mempool {
116
138
  factory = op.factory;
117
139
  }
118
140
  if (paymaster && knownEntities.sender.has(paymaster)) {
119
- throw new RpcError(`A Paymaster at ${paymaster} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, ValidationErrors.OpcodeValidation);
141
+ throw new RpcError(`A Paymaster at ${paymaster} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, ERC7769Errors.OpcodeValidation);
120
142
  }
121
143
  if (factory && knownEntities.sender.has(factory)) {
122
- throw new RpcError(`A Factory at ${factory} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, ValidationErrors.OpcodeValidation);
144
+ throw new RpcError(`A Factory at ${factory} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, ERC7769Errors.OpcodeValidation);
123
145
  }
124
- return Promise.resolve();
125
146
  }
126
147
  async getKnownEntities(entryPoint) {
127
148
  // TODO: this won't work with redis
@@ -151,21 +172,13 @@ export class Mempool {
151
172
  return entities;
152
173
  }
153
174
  // === Methods for adding userOps / creating bundles === //
154
- async add(userOp, entryPoint, referencedContracts) {
155
- const userOpHash = await getUserOpHash({
156
- userOp,
157
- entryPointAddress: entryPoint,
158
- chainId: this.config.chainId,
159
- publicClient: this.config.publicClient
160
- });
161
- // Check if the exact same userOperation is already in the mempool.
162
- if (await this.store.isInMempool({ userOpHash, entryPoint })) {
163
- return [false, "Already known"];
164
- }
165
- // Check if there is a conflicting userOp already being processed
166
- const validation = await this.store.validateSubmittedOrProcessing({
175
+ async add({ userOpInfo, entryPoint }) {
176
+ const { userOp, userOpHash } = userOpInfo;
177
+ // Check if the userOp is already known or conflicts with existing operations
178
+ const validation = await this.store.checkDuplicatesAndConflicts({
167
179
  entryPoint,
168
- userOp
180
+ userOp,
181
+ userOpHash
169
182
  });
170
183
  if (!validation.valid) {
171
184
  return [false, validation.reason];
@@ -176,7 +189,7 @@ export class Mempool {
176
189
  userOp
177
190
  });
178
191
  if (conflicting) {
179
- const { userOpInfo, reason } = conflicting;
192
+ const { userOpInfo, conflictReason } = conflicting;
180
193
  const conflictingUserOp = userOpInfo.userOp;
181
194
  const hasHigherPriorityFee = userOp.maxPriorityFeePerGas >=
182
195
  scaleBigIntByPercent(conflictingUserOp.maxPriorityFeePerGas, 110n);
@@ -184,13 +197,23 @@ export class Mempool {
184
197
  scaleBigIntByPercent(conflictingUserOp.maxFeePerGas, 110n);
185
198
  const hasHigherFees = hasHigherPriorityFee && hasHigherMaxFee;
186
199
  if (!hasHigherFees) {
187
- const message = reason === "conflicting_deployment"
188
- ? "AA10 sender already constructed: A conflicting userOperation with initCode for this sender is already in the mempool"
189
- : "AA25 invalid account nonce: User operation already present in mempool";
200
+ let message;
201
+ if (conflictReason === "conflicting_deployment") {
202
+ message =
203
+ "AA10 sender already constructed: A conflicting userOperation with initCode for this sender is already in the mempool";
204
+ }
205
+ else if (conflictReason === "conflicting_7702_auth") {
206
+ message =
207
+ "AA10 sender already constructed: Sender already has an inflight EIP-7702 authorization";
208
+ }
209
+ else {
210
+ message =
211
+ "AA25 invalid account nonce: User operation already present in mempool";
212
+ }
190
213
  // Re-add to outstanding as it wasn't replaced
191
214
  await this.store.addOutstanding({
192
215
  entryPoint,
193
- userOpInfo: conflicting.userOpInfo
216
+ userOpInfos: [conflicting.userOpInfo]
194
217
  });
195
218
  return [false, `${message}, bump the gas price by minimum 10%`];
196
219
  }
@@ -199,15 +222,9 @@ export class Mempool {
199
222
  await this.reputationManager.increaseUserOpSeenStatus(userOp, entryPoint);
200
223
  await this.store.addOutstanding({
201
224
  entryPoint,
202
- userOpInfo: {
203
- userOp,
204
- userOpHash,
205
- referencedContracts,
206
- addedToMempool: Date.now(),
207
- submissionAttempts: 0
208
- }
225
+ userOpInfos: [userOpInfo]
209
226
  });
210
- await this.monitor.setUserOpStatus(userOpHash, {
227
+ await this.statusManager.set([userOpHash], {
211
228
  status: "not_submitted",
212
229
  transactionHash: null
213
230
  });
@@ -215,7 +232,33 @@ export class Mempool {
215
232
  return [true, ""];
216
233
  }
217
234
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>
218
- async shouldSkip({ userOpInfo, paymasterDeposit, stakedEntityCount, knownEntities, senders, storageMap, entryPoint }) {
235
+ async shouldSkip({ userOpInfo, paymasterDeposit, touchedEip7702Auth, stakedEntityCount, knownEntities, senders, storageMap, entryPoint }) {
236
+ const { userOp, userOpHash, referencedContracts } = userOpInfo;
237
+ // Check conflicting EIP-7702 auths (same sender, different delegate address)
238
+ if (userOp.eip7702Auth) {
239
+ const auth = getEip7702AuthAddress(userOp.eip7702Auth);
240
+ const existingAuth = touchedEip7702Auth.get(userOp.sender);
241
+ if (existingAuth && existingAuth !== auth) {
242
+ this.logger.warn({
243
+ userOpHash,
244
+ conflictingAuth: auth,
245
+ existingAuth
246
+ }, "Conflicting EIP-7702 auths");
247
+ return {
248
+ skip: true,
249
+ removeOutstanding: false,
250
+ paymasterDeposit,
251
+ touchedEip7702Auth,
252
+ stakedEntityCount,
253
+ knownEntities,
254
+ senders,
255
+ storageMap
256
+ };
257
+ }
258
+ if (!existingAuth) {
259
+ touchedEip7702Auth.set(userOp.sender, auth);
260
+ }
261
+ }
219
262
  if (!this.config.safeMode) {
220
263
  return {
221
264
  skip: false,
@@ -223,10 +266,10 @@ export class Mempool {
223
266
  stakedEntityCount,
224
267
  knownEntities,
225
268
  senders,
226
- storageMap
269
+ storageMap,
270
+ touchedEip7702Auth
227
271
  };
228
272
  }
229
- const { userOp, userOpHash, referencedContracts } = userOpInfo;
230
273
  const isUserOpV06 = isVersion06(userOp);
231
274
  const paymaster = isUserOpV06
232
275
  ? getAddressFromInitCodeOrPaymasterAndData(userOp.paymasterAndData)
@@ -245,7 +288,8 @@ export class Mempool {
245
288
  stakedEntityCount,
246
289
  knownEntities,
247
290
  senders,
248
- storageMap
291
+ storageMap,
292
+ touchedEip7702Auth
249
293
  };
250
294
  }
251
295
  if (paymasterStatus === ReputationStatuses.throttled &&
@@ -261,7 +305,8 @@ export class Mempool {
261
305
  stakedEntityCount,
262
306
  knownEntities,
263
307
  senders,
264
- storageMap
308
+ storageMap,
309
+ touchedEip7702Auth
265
310
  };
266
311
  }
267
312
  if (factoryStatus === ReputationStatuses.throttled &&
@@ -277,7 +322,8 @@ export class Mempool {
277
322
  stakedEntityCount,
278
323
  knownEntities,
279
324
  senders,
280
- storageMap
325
+ storageMap,
326
+ touchedEip7702Auth
281
327
  };
282
328
  }
283
329
  if (senders.has(userOp.sender) &&
@@ -292,14 +338,15 @@ export class Mempool {
292
338
  stakedEntityCount,
293
339
  knownEntities,
294
340
  senders,
295
- storageMap
341
+ storageMap,
342
+ touchedEip7702Auth
296
343
  };
297
344
  }
298
345
  let validationResult;
299
346
  try {
300
347
  let queuedUserOps = [];
301
348
  if (!isUserOpV06) {
302
- queuedUserOps = await this.getQueuedOustandingUserOps({
349
+ queuedUserOps = await this.getQueuedOutstandingUserOps({
303
350
  userOp,
304
351
  entryPoint
305
352
  });
@@ -316,7 +363,7 @@ export class Mempool {
316
363
  userOpHash,
317
364
  error: JSON.stringify(e)
318
365
  }, "2nd Validation error");
319
- this.store.removeOutstanding({ entryPoint, userOpHash });
366
+ await this.store.removeOutstanding({ entryPoint, userOpHash });
320
367
  this.reputationManager.decreaseUserOpSeenStatus(userOp, entryPoint, e instanceof RpcError ? e.message : JSON.stringify(e));
321
368
  return {
322
369
  skip: true,
@@ -324,7 +371,8 @@ export class Mempool {
324
371
  stakedEntityCount,
325
372
  knownEntities,
326
373
  senders,
327
- storageMap
374
+ storageMap,
375
+ touchedEip7702Auth
328
376
  };
329
377
  }
330
378
  for (const storageAddress of Object.keys(validationResult.storageMap)) {
@@ -341,7 +389,8 @@ export class Mempool {
341
389
  stakedEntityCount,
342
390
  knownEntities,
343
391
  senders,
344
- storageMap
392
+ storageMap,
393
+ touchedEip7702Auth
345
394
  };
346
395
  }
347
396
  }
@@ -369,7 +418,8 @@ export class Mempool {
369
418
  stakedEntityCount,
370
419
  knownEntities,
371
420
  senders,
372
- storageMap
421
+ storageMap,
422
+ touchedEip7702Auth
373
423
  };
374
424
  }
375
425
  stakedEntityCount[paymaster] =
@@ -386,7 +436,8 @@ export class Mempool {
386
436
  stakedEntityCount,
387
437
  knownEntities,
388
438
  senders,
389
- storageMap
439
+ storageMap,
440
+ touchedEip7702Auth
390
441
  };
391
442
  }
392
443
  async getBundles(maxBundleCount) {
@@ -394,7 +445,6 @@ export class Mempool {
394
445
  return await this.process({
395
446
  entryPoint,
396
447
  maxGasLimit: this.config.maxGasPerBundle,
397
- minOpsPerBundle: 1,
398
448
  maxBundleCount
399
449
  });
400
450
  });
@@ -403,34 +453,34 @@ export class Mempool {
403
453
  return bundles;
404
454
  }
405
455
  // Returns a bundle of userOperations in array format.
406
- async process({ maxGasLimit, entryPoint, minOpsPerBundle, maxBundleCount }) {
407
- // Check if there are any operations in the store
408
- const firstOp = await this.store.peekOutstanding(entryPoint);
409
- if (!firstOp) {
456
+ async process({ maxGasLimit, entryPoint, maxBundleCount }) {
457
+ const bundles = [];
458
+ const batchSize = this.config.mempoolPopBatchSize;
459
+ // Pop batch of userOps.
460
+ const poppedUserOps = await this.store.popOutstanding(entryPoint, batchSize);
461
+ if (poppedUserOps.length === 0) {
410
462
  return [];
411
463
  }
412
- // Get EntryPoint version
413
- const bundles = [];
414
- const seenOps = new Set();
415
- let breakLoop = false;
416
- // Process operations until no more are available or we hit maxBundleCount
417
- while (await this.store.peekOutstanding(entryPoint)) {
418
- // If maxBundles is set and we reached the limit, break
464
+ // Keep track of unused ops from the batch
465
+ const unusedUserOps = [...poppedUserOps];
466
+ while (unusedUserOps.length > 0) {
467
+ // If maxBundles is set and we reached the limit, put back all unused ops and break.
419
468
  if (maxBundleCount && bundles.length >= maxBundleCount) {
469
+ if (unusedUserOps.length > 0) {
470
+ await this.store.addOutstanding({
471
+ entryPoint,
472
+ userOpInfos: unusedUserOps
473
+ });
474
+ }
420
475
  break;
421
476
  }
422
- // Derive version
423
- let version;
424
- if (isVersion08(firstOp.userOp, entryPoint)) {
425
- version = "0.8";
426
- }
427
- else if (isVersion07(firstOp.userOp)) {
428
- version = "0.7";
429
- }
430
- else {
431
- version = "0.6";
432
- }
433
- // Setup for next bundle
477
+ // Peek next userOp from unused batch.
478
+ const nextUserOp = unusedUserOps[0];
479
+ if (!nextUserOp)
480
+ break;
481
+ // Derive version.
482
+ const version = getViemEntryPointVersion(nextUserOp.userOp, entryPoint);
483
+ // Setup next bundle.
434
484
  const currentBundle = {
435
485
  entryPoint,
436
486
  version,
@@ -438,33 +488,21 @@ export class Mempool {
438
488
  submissionAttempts: 0
439
489
  };
440
490
  let gasUsed = 0n;
491
+ let touchedEip7702Auth = new Map();
441
492
  let paymasterDeposit = {};
442
493
  let stakedEntityCount = {};
443
494
  let senders = new Set();
444
495
  let knownEntities = await this.getKnownEntities(entryPoint);
445
496
  let storageMap = {};
446
- if (breakLoop) {
447
- break;
448
- }
449
- // Keep adding ops to current bundle
450
- while (await this.store.peekOutstanding(entryPoint)) {
451
- const userOpInfo = await this.store.popOutstanding(entryPoint);
452
- if (!userOpInfo) {
497
+ while (unusedUserOps.length > 0) {
498
+ const currentUserOp = unusedUserOps.shift();
499
+ if (!currentUserOp)
453
500
  break;
454
- }
455
- if (seenOps.has(userOpInfo.userOpHash)) {
456
- breakLoop = true;
457
- await this.store.addOutstanding({
458
- entryPoint,
459
- userOpInfo
460
- });
461
- break;
462
- }
463
- seenOps.add(userOpInfo.userOpHash);
464
- const { userOp } = userOpInfo;
501
+ const { userOp } = currentUserOp;
465
502
  // Check if we should skip this operation
466
503
  const skipResult = await this.shouldSkip({
467
- userOpInfo,
504
+ userOpInfo: currentUserOp,
505
+ touchedEip7702Auth,
468
506
  paymasterDeposit,
469
507
  stakedEntityCount,
470
508
  knownEntities,
@@ -477,22 +515,20 @@ export class Mempool {
477
515
  if (!skipResult.removeOutstanding) {
478
516
  await this.store.addOutstanding({
479
517
  entryPoint,
480
- userOpInfo
518
+ userOpInfos: [currentUserOp]
481
519
  });
482
520
  }
521
+ // Continue with next op from batch
483
522
  continue;
484
523
  }
485
- const beneficiary = this.config.utilityPrivateKey?.address ||
486
- privateKeyToAddress(generatePrivateKey());
487
524
  gasUsed += calculateAA95GasFloor({
488
525
  userOps: [userOp],
489
- beneficiary
526
+ beneficiary: this.config.utilityWalletAddress
490
527
  });
491
- // Only break on gas limit if we've hit minOpsPerBundle
492
- if (gasUsed > maxGasLimit &&
493
- currentBundle.userOps.length >= minOpsPerBundle) {
494
- // Put the operation back in the store
495
- await this.store.addOutstanding({ entryPoint, userOpInfo });
528
+ // Check bundle gasLimit if bundle is not empty
529
+ if (currentBundle.userOps.length > 0 && gasUsed > maxGasLimit) {
530
+ // Put current op back to front of unused for next bundle
531
+ unusedUserOps.unshift(currentUserOp);
496
532
  break;
497
533
  }
498
534
  // Update state based on skip result
@@ -501,10 +537,20 @@ export class Mempool {
501
537
  knownEntities = skipResult.knownEntities;
502
538
  senders = skipResult.senders;
503
539
  storageMap = skipResult.storageMap;
540
+ touchedEip7702Auth = skipResult.touchedEip7702Auth;
504
541
  this.reputationManager.decreaseUserOpCount(userOp);
505
- this.store.addProcessing({ entryPoint, userOpInfo });
506
- // Add op to current bundle
507
- currentBundle.userOps.push(userOpInfo);
542
+ // Track the operation as active (being bundled).
543
+ await this.store.addProcessing({
544
+ entryPoint,
545
+ userOpInfo: currentUserOp
546
+ });
547
+ // Add userOp to current bundle.
548
+ currentBundle.userOps.push(currentUserOp);
549
+ // Try to fetch more userOps if we've exhausted this batch.
550
+ if (unusedUserOps.length === 0) {
551
+ const morePoppedOps = await this.store.popOutstanding(entryPoint, batchSize);
552
+ unusedUserOps.push(...morePoppedOps);
553
+ }
508
554
  }
509
555
  if (currentBundle.userOps.length > 0) {
510
556
  bundles.push(currentBundle);
@@ -517,7 +563,7 @@ export class Mempool {
517
563
  this.store.clearOutstanding(entryPoint);
518
564
  }
519
565
  }
520
- async getQueuedOustandingUserOps(args) {
566
+ async getQueuedOutstandingUserOps(args) {
521
567
  return await this.store.getQueuedOutstandingUserOps(args);
522
568
  }
523
569
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mempool.js","sourceRoot":"","sources":["../../mempool/mempool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mempool.js","sourceRoot":"","sources":["../../mempool/mempool.ts"],"names":[],"mappings":"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"}