@pimlico/alto 0.0.0-main.20250428T212302 → 0.0.0-main.20250429T151930

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 (386) hide show
  1. package/contracts/EIP712.sol/EIP712.json +1 -0
  2. package/contracts/ERC165.sol/ERC165.json +1 -0
  3. package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -0
  4. package/contracts/EntryPoint.sol/EntryPoint.json +1 -0
  5. package/contracts/EntryPointCodeOverride.sol/EntryPointCodeOverride.json +1 -0
  6. package/contracts/EntryPointSimulations.sol/EntryPointSimulations.json +1 -0
  7. package/contracts/Exec.sol/Exec.json +1 -0
  8. package/contracts/IAccount.sol/IAccount.json +1 -0
  9. package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -0
  10. package/contracts/IAggregator.sol/IAggregator.json +1 -0
  11. package/contracts/IERC165.sol/IERC165.json +1 -0
  12. package/contracts/IERC5267.sol/IERC5267.json +1 -0
  13. package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -0
  14. package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -0
  15. package/contracts/INonceManager.sol/INonceManager.json +1 -0
  16. package/contracts/IPaymaster.sol/IPaymaster.json +1 -0
  17. package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -0
  18. package/contracts/IStakeManager.sol/IStakeManager.json +1 -0
  19. package/contracts/Math.sol/Math.json +1 -0
  20. package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -0
  21. package/contracts/NonceManager.sol/NonceManager.json +1 -0
  22. package/contracts/Panic.sol/Panic.json +1 -0
  23. package/contracts/PimlicoEntryPointSimulationsV7.sol/PimlicoEntryPointSimulationsV7.json +1 -0
  24. package/contracts/PimlicoEntryPointSimulationsV8.sol/PimlicoEntryPointSimulationsV8.json +1 -0
  25. package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -0
  26. package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -0
  27. package/contracts/SafeCast.sol/SafeCast.json +1 -0
  28. package/contracts/SenderCreator.sol/SenderCreator.json +1 -0
  29. package/contracts/ShortStrings.sol/ShortStrings.json +1 -0
  30. package/contracts/SignedMath.sol/SignedMath.json +1 -0
  31. package/contracts/StakeManager.sol/StakeManager.json +1 -0
  32. package/contracts/StorageSlot.sol/StorageSlot.json +1 -0
  33. package/contracts/Strings.sol/Strings.json +1 -0
  34. package/contracts/TransientSlot.sol/TransientSlot.json +1 -0
  35. package/contracts/UserOperation.sol/UserOperationLib.json +1 -0
  36. package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -0
  37. package/contracts/build-info/0c52dc19c74a9a932ddddcca463ce398.json +1 -0
  38. package/contracts/build-info/a1d9af887789a0ade8ffbc8b045f0780.json +1 -0
  39. package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
  40. package/esm/cli/deploySimulationsContract.js +14 -5
  41. package/esm/cli/deploySimulationsContract.js.map +1 -1
  42. package/esm/cli/handler.js +4 -0
  43. package/esm/cli/handler.js.map +1 -1
  44. package/package.json +2 -1
  45. package/lib/cli/alto.d.ts +0 -7
  46. package/lib/cli/alto.js +0 -141
  47. package/lib/cli/alto.js.map +0 -1
  48. package/lib/cli/config/bundler.d.ts +0 -2872
  49. package/lib/cli/config/bundler.js +0 -242
  50. package/lib/cli/config/bundler.js.map +0 -1
  51. package/lib/cli/config/index.d.ts +0 -3
  52. package/lib/cli/config/index.js +0 -19
  53. package/lib/cli/config/index.js.map +0 -1
  54. package/lib/cli/config/options.d.ts +0 -13
  55. package/lib/cli/config/options.js +0 -587
  56. package/lib/cli/config/options.js.map +0 -1
  57. package/lib/cli/customTransport.d.ts +0 -14
  58. package/lib/cli/customTransport.js +0 -94
  59. package/lib/cli/customTransport.js.map +0 -1
  60. package/lib/cli/deploySimulationsContract.d.ts +0 -13
  61. package/lib/cli/deploySimulationsContract.js +0 -100
  62. package/lib/cli/deploySimulationsContract.js.map +0 -1
  63. package/lib/cli/handler.d.ts +0 -3
  64. package/lib/cli/handler.js +0 -157
  65. package/lib/cli/handler.js.map +0 -1
  66. package/lib/cli/index.d.ts +0 -4
  67. package/lib/cli/index.js +0 -20
  68. package/lib/cli/index.js.map +0 -1
  69. package/lib/cli/instrumentation.d.ts +0 -2
  70. package/lib/cli/instrumentation.js +0 -47
  71. package/lib/cli/instrumentation.js.map +0 -1
  72. package/lib/cli/parseArgs.d.ts +0 -8
  73. package/lib/cli/parseArgs.js +0 -25
  74. package/lib/cli/parseArgs.js.map +0 -1
  75. package/lib/cli/setupServer.d.ts +0 -13
  76. package/lib/cli/setupServer.js +0 -266
  77. package/lib/cli/setupServer.js.map +0 -1
  78. package/lib/cli/util.d.ts +0 -22
  79. package/lib/cli/util.js +0 -34
  80. package/lib/cli/util.js.map +0 -1
  81. package/lib/createConfig.d.ts +0 -16
  82. package/lib/createConfig.js +0 -13
  83. package/lib/createConfig.js.map +0 -1
  84. package/lib/executor/executor.d.ts +0 -65
  85. package/lib/executor/executor.js +0 -301
  86. package/lib/executor/executor.js.map +0 -1
  87. package/lib/executor/executorManager.d.ts +0 -108
  88. package/lib/executor/executorManager.js +0 -702
  89. package/lib/executor/executorManager.js.map +0 -1
  90. package/lib/executor/fastlane.d.ts +0 -9
  91. package/lib/executor/fastlane.js +0 -41
  92. package/lib/executor/fastlane.js.map +0 -1
  93. package/lib/executor/filterOpsAndEStimateGas.d.ts +0 -29
  94. package/lib/executor/filterOpsAndEStimateGas.js +0 -225
  95. package/lib/executor/filterOpsAndEStimateGas.js.map +0 -1
  96. package/lib/executor/index.d.ts +0 -5
  97. package/lib/executor/index.js +0 -21
  98. package/lib/executor/index.js.map +0 -1
  99. package/lib/executor/senderManager/createMemorySenderManager.d.ts +0 -8
  100. package/lib/executor/senderManager/createMemorySenderManager.js +0 -45
  101. package/lib/executor/senderManager/createMemorySenderManager.js.map +0 -1
  102. package/lib/executor/senderManager/createRedisSenderManager.d.ts +0 -8
  103. package/lib/executor/senderManager/createRedisSenderManager.js +0 -85
  104. package/lib/executor/senderManager/createRedisSenderManager.js.map +0 -1
  105. package/lib/executor/senderManager/flushOnStartUp.d.ts +0 -9
  106. package/lib/executor/senderManager/flushOnStartUp.js +0 -37
  107. package/lib/executor/senderManager/flushOnStartUp.js.map +0 -1
  108. package/lib/executor/senderManager/index.d.ts +0 -15
  109. package/lib/executor/senderManager/index.js +0 -25
  110. package/lib/executor/senderManager/index.js.map +0 -1
  111. package/lib/executor/senderManager/validateAndRefill.d.ts +0 -11
  112. package/lib/executor/senderManager/validateAndRefill.js +0 -115
  113. package/lib/executor/senderManager/validateAndRefill.js.map +0 -1
  114. package/lib/executor/utilityWalletMonitor.d.ts +0 -19
  115. package/lib/executor/utilityWalletMonitor.js +0 -42
  116. package/lib/executor/utilityWalletMonitor.js.map +0 -1
  117. package/lib/executor/utils.d.ts +0 -34
  118. package/lib/executor/utils.js +0 -167
  119. package/lib/executor/utils.js.map +0 -1
  120. package/lib/handlers/arbitrumGasPriceManager.d.ts +0 -14
  121. package/lib/handlers/arbitrumGasPriceManager.js +0 -39
  122. package/lib/handlers/arbitrumGasPriceManager.js.map +0 -1
  123. package/lib/handlers/eventManager.d.ts +0 -29
  124. package/lib/handlers/eventManager.js +0 -225
  125. package/lib/handlers/eventManager.js.map +0 -1
  126. package/lib/handlers/gasPriceManager.d.ts +0 -36
  127. package/lib/handlers/gasPriceManager.js +0 -391
  128. package/lib/handlers/gasPriceManager.js.map +0 -1
  129. package/lib/handlers/index.d.ts +0 -3
  130. package/lib/handlers/index.js +0 -19
  131. package/lib/handlers/index.js.map +0 -1
  132. package/lib/handlers/mantleGasPriceManager.d.ts +0 -23
  133. package/lib/handlers/mantleGasPriceManager.js +0 -44
  134. package/lib/handlers/mantleGasPriceManager.js.map +0 -1
  135. package/lib/handlers/optimismManager.d.ts +0 -10
  136. package/lib/handlers/optimismManager.js +0 -21
  137. package/lib/handlers/optimismManager.js.map +0 -1
  138. package/lib/index.d.ts +0 -2
  139. package/lib/index.js +0 -4
  140. package/lib/index.js.map +0 -1
  141. package/lib/mempool/index.d.ts +0 -4
  142. package/lib/mempool/index.js +0 -20
  143. package/lib/mempool/index.js.map +0 -1
  144. package/lib/mempool/mempool.d.ts +0 -191
  145. package/lib/mempool/mempool.js +0 -499
  146. package/lib/mempool/mempool.js.map +0 -1
  147. package/lib/mempool/monitoring.d.ts +0 -14
  148. package/lib/mempool/monitoring.js +0 -101
  149. package/lib/mempool/monitoring.js.map +0 -1
  150. package/lib/mempool/reputationManager.d.ts +0 -121
  151. package/lib/mempool/reputationManager.js +0 -472
  152. package/lib/mempool/reputationManager.js.map +0 -1
  153. package/lib/rpc/createMethodHandler.d.ts +0 -31
  154. package/lib/rpc/createMethodHandler.js +0 -34
  155. package/lib/rpc/createMethodHandler.js.map +0 -1
  156. package/lib/rpc/estimation/gasEstimationHandler.d.ts +0 -30
  157. package/lib/rpc/estimation/gasEstimationHandler.js +0 -50
  158. package/lib/rpc/estimation/gasEstimationHandler.js.map +0 -1
  159. package/lib/rpc/estimation/gasEstimationsV06.d.ts +0 -19
  160. package/lib/rpc/estimation/gasEstimationsV06.js +0 -148
  161. package/lib/rpc/estimation/gasEstimationsV06.js.map +0 -1
  162. package/lib/rpc/estimation/gasEstimationsV07.d.ts +0 -101
  163. package/lib/rpc/estimation/gasEstimationsV07.js +0 -727
  164. package/lib/rpc/estimation/gasEstimationsV07.js.map +0 -1
  165. package/lib/rpc/estimation/types.d.ts +0 -120
  166. package/lib/rpc/estimation/types.js +0 -125
  167. package/lib/rpc/estimation/types.js.map +0 -1
  168. package/lib/rpc/index.d.ts +0 -4
  169. package/lib/rpc/index.js +0 -20
  170. package/lib/rpc/index.js.map +0 -1
  171. package/lib/rpc/methods/debug_bundler_clearReputation.d.ts +0 -22
  172. package/lib/rpc/methods/debug_bundler_clearReputation.js +0 -15
  173. package/lib/rpc/methods/debug_bundler_clearReputation.js.map +0 -1
  174. package/lib/rpc/methods/debug_bundler_clearState.d.ts +0 -22
  175. package/lib/rpc/methods/debug_bundler_clearState.js +0 -16
  176. package/lib/rpc/methods/debug_bundler_clearState.js.map +0 -1
  177. package/lib/rpc/methods/debug_bundler_dumpMempool.d.ts +0 -973
  178. package/lib/rpc/methods/debug_bundler_dumpMempool.js +0 -16
  179. package/lib/rpc/methods/debug_bundler_dumpMempool.js.map +0 -1
  180. package/lib/rpc/methods/debug_bundler_dumpReputation.d.ts +0 -57
  181. package/lib/rpc/methods/debug_bundler_dumpReputation.js +0 -16
  182. package/lib/rpc/methods/debug_bundler_dumpReputation.js.map +0 -1
  183. package/lib/rpc/methods/debug_bundler_getStakeStatus.d.ts +0 -79
  184. package/lib/rpc/methods/debug_bundler_getStakeStatus.js +0 -25
  185. package/lib/rpc/methods/debug_bundler_getStakeStatus.js.map +0 -1
  186. package/lib/rpc/methods/debug_bundler_sendBundleNow.d.ts +0 -22
  187. package/lib/rpc/methods/debug_bundler_sendBundleNow.js +0 -15
  188. package/lib/rpc/methods/debug_bundler_sendBundleNow.js.map +0 -1
  189. package/lib/rpc/methods/debug_bundler_setBundlingMode.d.ts +0 -22
  190. package/lib/rpc/methods/debug_bundler_setBundlingMode.js +0 -16
  191. package/lib/rpc/methods/debug_bundler_setBundlingMode.js.map +0 -1
  192. package/lib/rpc/methods/debug_bundler_setReputation.d.ts +0 -46
  193. package/lib/rpc/methods/debug_bundler_setReputation.js +0 -16
  194. package/lib/rpc/methods/debug_bundler_setReputation.js.map +0 -1
  195. package/lib/rpc/methods/eth_chainId.d.ts +0 -22
  196. package/lib/rpc/methods/eth_chainId.js +0 -13
  197. package/lib/rpc/methods/eth_chainId.js.map +0 -1
  198. package/lib/rpc/methods/eth_estimateUserOperationGas.d.ts +0 -1891
  199. package/lib/rpc/methods/eth_estimateUserOperationGas.js +0 -26
  200. package/lib/rpc/methods/eth_estimateUserOperationGas.js.map +0 -1
  201. package/lib/rpc/methods/eth_getUserOperationByHash.d.ts +0 -1775
  202. package/lib/rpc/methods/eth_getUserOperationByHash.js +0 -101
  203. package/lib/rpc/methods/eth_getUserOperationByHash.js.map +0 -1
  204. package/lib/rpc/methods/eth_getUserOperationReceipt.d.ts +0 -412
  205. package/lib/rpc/methods/eth_getUserOperationReceipt.js +0 -14
  206. package/lib/rpc/methods/eth_getUserOperationReceipt.js.map +0 -1
  207. package/lib/rpc/methods/eth_sendUserOperation.d.ts +0 -878
  208. package/lib/rpc/methods/eth_sendUserOperation.js +0 -44
  209. package/lib/rpc/methods/eth_sendUserOperation.js.map +0 -1
  210. package/lib/rpc/methods/eth_supportedEntryPoints.d.ts +0 -22
  211. package/lib/rpc/methods/eth_supportedEntryPoints.js +0 -13
  212. package/lib/rpc/methods/eth_supportedEntryPoints.js.map +0 -1
  213. package/lib/rpc/methods/index.d.ts +0 -3
  214. package/lib/rpc/methods/index.js +0 -44
  215. package/lib/rpc/methods/index.js.map +0 -1
  216. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.d.ts +0 -131
  217. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js +0 -33
  218. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js.map +0 -1
  219. package/lib/rpc/methods/pimlico_getUserOperationStatus.d.ts +0 -43
  220. package/lib/rpc/methods/pimlico_getUserOperationStatus.js +0 -14
  221. package/lib/rpc/methods/pimlico_getUserOperationStatus.js.map +0 -1
  222. package/lib/rpc/methods/pimlico_sendUserOperationNow.d.ts +0 -1268
  223. package/lib/rpc/methods/pimlico_sendUserOperationNow.js +0 -55
  224. package/lib/rpc/methods/pimlico_sendUserOperationNow.js.map +0 -1
  225. package/lib/rpc/rpcHandler.d.ts +0 -75
  226. package/lib/rpc/rpcHandler.js +0 -391
  227. package/lib/rpc/rpcHandler.js.map +0 -1
  228. package/lib/rpc/server.d.ts +0 -26
  229. package/lib/rpc/server.js +0 -283
  230. package/lib/rpc/server.js.map +0 -1
  231. package/lib/rpc/validation/BundlerCollectorTracerV06.d.ts +0 -102
  232. package/lib/rpc/validation/BundlerCollectorTracerV06.js +0 -262
  233. package/lib/rpc/validation/BundlerCollectorTracerV06.js.map +0 -1
  234. package/lib/rpc/validation/BundlerCollectorTracerV07.d.ts +0 -102
  235. package/lib/rpc/validation/BundlerCollectorTracerV07.js +0 -261
  236. package/lib/rpc/validation/BundlerCollectorTracerV07.js.map +0 -1
  237. package/lib/rpc/validation/SafeValidator.d.ts +0 -51
  238. package/lib/rpc/validation/SafeValidator.js +0 -327
  239. package/lib/rpc/validation/SafeValidator.js.map +0 -1
  240. package/lib/rpc/validation/TracerResultParserV06.d.ts +0 -13
  241. package/lib/rpc/validation/TracerResultParserV06.js +0 -582
  242. package/lib/rpc/validation/TracerResultParserV06.js.map +0 -1
  243. package/lib/rpc/validation/TracerResultParserV07.d.ts +0 -33
  244. package/lib/rpc/validation/TracerResultParserV07.js +0 -599
  245. package/lib/rpc/validation/TracerResultParserV07.js.map +0 -1
  246. package/lib/rpc/validation/UnsafeValidator.d.ts +0 -97
  247. package/lib/rpc/validation/UnsafeValidator.js +0 -303
  248. package/lib/rpc/validation/UnsafeValidator.js.map +0 -1
  249. package/lib/rpc/validation/index.d.ts +0 -3
  250. package/lib/rpc/validation/index.js +0 -19
  251. package/lib/rpc/validation/index.js.map +0 -1
  252. package/lib/rpc/validation/tracer.d.ts +0 -125
  253. package/lib/rpc/validation/tracer.js +0 -112
  254. package/lib/rpc/validation/tracer.js.map +0 -1
  255. package/lib/store/createMemoryOutstandingStore.d.ts +0 -28
  256. package/lib/store/createMemoryOutstandingStore.js +0 -236
  257. package/lib/store/createMemoryOutstandingStore.js.map +0 -1
  258. package/lib/store/createMempoolStore.d.ts +0 -8
  259. package/lib/store/createMempoolStore.js +0 -199
  260. package/lib/store/createMempoolStore.js.map +0 -1
  261. package/lib/store/createRedisOutstandingStore.d.ts +0 -27
  262. package/lib/store/createRedisOutstandingStore.js +0 -349
  263. package/lib/store/createRedisOutstandingStore.js.map +0 -1
  264. package/lib/store/createRedisStore.d.ts +0 -9
  265. package/lib/store/createRedisStore.js +0 -138
  266. package/lib/store/createRedisStore.js.map +0 -1
  267. package/lib/store/createStore.d.ts +0 -6
  268. package/lib/store/createStore.js +0 -70
  269. package/lib/store/createStore.js.map +0 -1
  270. package/lib/store/index.d.ts +0 -81
  271. package/lib/store/index.js +0 -6
  272. package/lib/store/index.js.map +0 -1
  273. package/lib/types/contracts/ArbitrumL1FeeAbi.d.ts +0 -32
  274. package/lib/types/contracts/ArbitrumL1FeeAbi.js +0 -45
  275. package/lib/types/contracts/ArbitrumL1FeeAbi.js.map +0 -1
  276. package/lib/types/contracts/CallEngine.d.ts +0 -28
  277. package/lib/types/contracts/CallEngine.js +0 -40
  278. package/lib/types/contracts/CallEngine.js.map +0 -1
  279. package/lib/types/contracts/CodeHashGetter.d.ts +0 -37
  280. package/lib/types/contracts/CodeHashGetter.js +0 -48
  281. package/lib/types/contracts/CodeHashGetter.js.map +0 -1
  282. package/lib/types/contracts/EntryPoint.d.ts +0 -1789
  283. package/lib/types/contracts/EntryPoint.js +0 -2307
  284. package/lib/types/contracts/EntryPoint.js.map +0 -1
  285. package/lib/types/contracts/EntryPointSimulationsV6.d.ts +0 -34
  286. package/lib/types/contracts/EntryPointSimulationsV6.js +0 -51
  287. package/lib/types/contracts/EntryPointSimulationsV6.js.map +0 -1
  288. package/lib/types/contracts/EntryPointSimulationsV7.d.ts +0 -2076
  289. package/lib/types/contracts/EntryPointSimulationsV7.js +0 -2678
  290. package/lib/types/contracts/EntryPointSimulationsV7.js.map +0 -1
  291. package/lib/types/contracts/IAccountExecute.d.ts +0 -53
  292. package/lib/types/contracts/IAccountExecute.js +0 -71
  293. package/lib/types/contracts/IAccountExecute.js.map +0 -1
  294. package/lib/types/contracts/IPaymaster.d.ts +0 -3
  295. package/lib/types/contracts/IPaymaster.js +0 -120
  296. package/lib/types/contracts/IPaymaster.js.map +0 -1
  297. package/lib/types/contracts/MantleBvmGasPriceOracle.d.ts +0 -219
  298. package/lib/types/contracts/MantleBvmGasPriceOracle.js +0 -180
  299. package/lib/types/contracts/MantleBvmGasPriceOracle.js.map +0 -1
  300. package/lib/types/contracts/OpL1FeeAbi.d.ts +0 -114
  301. package/lib/types/contracts/OpL1FeeAbi.js +0 -77
  302. package/lib/types/contracts/OpL1FeeAbi.js.map +0 -1
  303. package/lib/types/contracts/PimlicoEntryPointSimulations.d.ts +0 -25
  304. package/lib/types/contracts/PimlicoEntryPointSimulations.js +0 -42
  305. package/lib/types/contracts/PimlicoEntryPointSimulations.js.map +0 -1
  306. package/lib/types/contracts/SenderCreator.d.ts +0 -4
  307. package/lib/types/contracts/SenderCreator.js +0 -26
  308. package/lib/types/contracts/SenderCreator.js.map +0 -1
  309. package/lib/types/contracts/SimpleAccountFactory.d.ts +0 -57
  310. package/lib/types/contracts/SimpleAccountFactory.js +0 -79
  311. package/lib/types/contracts/SimpleAccountFactory.js.map +0 -1
  312. package/lib/types/contracts/TestOpcodesAccount.d.ts +0 -4
  313. package/lib/types/contracts/TestOpcodesAccount.js +0 -284
  314. package/lib/types/contracts/TestOpcodesAccount.js.map +0 -1
  315. package/lib/types/contracts/TestOpcodesAccountFactory.d.ts +0 -4
  316. package/lib/types/contracts/TestOpcodesAccountFactory.js +0 -26
  317. package/lib/types/contracts/TestOpcodesAccountFactory.js.map +0 -1
  318. package/lib/types/contracts/TestStorageAccount.d.ts +0 -4
  319. package/lib/types/contracts/TestStorageAccount.js +0 -316
  320. package/lib/types/contracts/TestStorageAccount.js.map +0 -1
  321. package/lib/types/contracts/index.d.ts +0 -17
  322. package/lib/types/contracts/index.js +0 -33
  323. package/lib/types/contracts/index.js.map +0 -1
  324. package/lib/types/gasPrice.d.ts +0 -110
  325. package/lib/types/gasPrice.js +0 -55
  326. package/lib/types/gasPrice.js.map +0 -1
  327. package/lib/types/index.d.ts +0 -11
  328. package/lib/types/index.js +0 -27
  329. package/lib/types/index.js.map +0 -1
  330. package/lib/types/interfaces.d.ts +0 -58
  331. package/lib/types/interfaces.js +0 -3
  332. package/lib/types/interfaces.js.map +0 -1
  333. package/lib/types/mempool.d.ts +0 -60
  334. package/lib/types/mempool.js +0 -11
  335. package/lib/types/mempool.js.map +0 -1
  336. package/lib/types/schemas.d.ts +0 -20785
  337. package/lib/types/schemas.js +0 -679
  338. package/lib/types/schemas.js.map +0 -1
  339. package/lib/types/utils.d.ts +0 -25
  340. package/lib/types/utils.js +0 -35
  341. package/lib/types/utils.js.map +0 -1
  342. package/lib/types/validation.d.ts +0 -14327
  343. package/lib/types/validation.js +0 -312
  344. package/lib/types/validation.js.map +0 -1
  345. package/lib/utils/asyncTimeout.d.ts +0 -5
  346. package/lib/utils/asyncTimeout.js +0 -51
  347. package/lib/utils/asyncTimeout.js.map +0 -1
  348. package/lib/utils/bigInt.d.ts +0 -8
  349. package/lib/utils/bigInt.js +0 -24
  350. package/lib/utils/bigInt.js.map +0 -1
  351. package/lib/utils/eip7702.d.ts +0 -4
  352. package/lib/utils/eip7702.js +0 -21
  353. package/lib/utils/eip7702.js.map +0 -1
  354. package/lib/utils/fastify-rpc-decorators.d.ts +0 -19
  355. package/lib/utils/fastify-rpc-decorators.js +0 -23
  356. package/lib/utils/fastify-rpc-decorators.js.map +0 -1
  357. package/lib/utils/helpers.d.ts +0 -15
  358. package/lib/utils/helpers.js +0 -59
  359. package/lib/utils/helpers.js.map +0 -1
  360. package/lib/utils/index.d.ts +0 -9
  361. package/lib/utils/index.js +0 -24
  362. package/lib/utils/index.js.map +0 -1
  363. package/lib/utils/logger.d.ts +0 -6
  364. package/lib/utils/logger.js +0 -85
  365. package/lib/utils/logger.js.map +0 -1
  366. package/lib/utils/metrics.d.ts +0 -29
  367. package/lib/utils/metrics.js +0 -199
  368. package/lib/utils/metrics.js.map +0 -1
  369. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.d.ts +0 -6
  370. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js +0 -57
  371. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +0 -1
  372. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +0 -7
  373. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js +0 -105
  374. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js.map +0 -1
  375. package/lib/utils/minMaxQueue/index.d.ts +0 -12
  376. package/lib/utils/minMaxQueue/index.js +0 -16
  377. package/lib/utils/minMaxQueue/index.js.map +0 -1
  378. package/lib/utils/rpc-reply.d.ts +0 -16
  379. package/lib/utils/rpc-reply.js +0 -41
  380. package/lib/utils/rpc-reply.js.map +0 -1
  381. package/lib/utils/userop.d.ts +0 -138
  382. package/lib/utils/userop.js +0 -620
  383. package/lib/utils/userop.js.map +0 -1
  384. package/lib/utils/validation.d.ts +0 -76
  385. package/lib/utils/validation.js +0 -491
  386. package/lib/utils/validation.js.map +0 -1
package/lib/rpc/server.js DELETED
@@ -1,283 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.Server = void 0;
30
- const types_1 = require("../types/index.js");
31
- const websocket_1 = __importDefault(require("@fastify/websocket"));
32
- const sentry = __importStar(require("@sentry/node"));
33
- const fastify_1 = __importDefault(require("fastify"));
34
- const viem_1 = require("viem");
35
- const zod_validation_error_1 = require("zod-validation-error");
36
- const fastify_rpc_decorators_1 = __importStar(require("../utils/fastify-rpc-decorators.js"));
37
- const rpc_reply_1 = __importDefault(require("../utils/rpc-reply.js"));
38
- // jsonBigIntOverride.ts
39
- const originalJsonStringify = JSON.stringify;
40
- JSON.stringify = (
41
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
42
- value, replacer, space) => {
43
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
44
- const bigintReplacer = (_key, value) => {
45
- if (typeof value === "bigint") {
46
- return (0, viem_1.toHex)(value);
47
- }
48
- return value;
49
- };
50
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
51
- const wrapperReplacer = (key, value) => {
52
- if (typeof replacer === "function") {
53
- // biome-ignore lint: no other way to do this
54
- value = replacer(key, value);
55
- }
56
- else if (Array.isArray(replacer)) {
57
- if (!replacer.includes(key)) {
58
- return;
59
- }
60
- }
61
- return bigintReplacer(key, value);
62
- };
63
- return originalJsonStringify(value, wrapperReplacer, space);
64
- };
65
- class Server {
66
- config;
67
- fastify;
68
- rpcEndpoint;
69
- registry;
70
- metrics;
71
- constructor({ config, rpcEndpoint, registry, metrics }) {
72
- this.config = config;
73
- const logger = config.getLogger({ module: "rpc" }, {
74
- level: config.rpcLogLevel || config.logLevel
75
- });
76
- this.fastify = (0, fastify_1.default)({
77
- logger: logger, // workaround for https://github.com/fastify/fastify/issues/4960
78
- requestTimeout: config.timeout,
79
- disableRequestLogging: true
80
- });
81
- this.fastify.register(fastify_rpc_decorators_1.default);
82
- this.fastify.register(websocket_1.default, {
83
- options: {
84
- maxPayload: config.websocketMaxPayloadSize
85
- }
86
- });
87
- this.fastify.addHook("onResponse", (request, reply) => {
88
- const ignoredRoutes = ["/health", "/metrics"];
89
- if (ignoredRoutes.includes(request.routeOptions.url)) {
90
- return;
91
- }
92
- const labels = {
93
- route: request.routeOptions.url,
94
- code: reply.statusCode,
95
- method: request.method,
96
- rpc_method: request.rpcMethod,
97
- rpc_status: reply.rpcStatus
98
- };
99
- this.metrics.httpRequests.labels(labels).inc();
100
- const durationMs = reply.elapsedTime;
101
- const durationSeconds = durationMs / 1000;
102
- this.metrics.httpRequestsDuration
103
- .labels(labels)
104
- .observe(durationSeconds);
105
- });
106
- this.fastify.post("/rpc", this.rpcHttp.bind(this));
107
- this.fastify.post("/:version/rpc", this.rpcHttp.bind(this));
108
- this.fastify.post("/", this.rpcHttp.bind(this));
109
- if (config.websocket) {
110
- this.fastify.register((fastify) => {
111
- fastify.route({
112
- method: "GET",
113
- url: "/:version/rpc",
114
- handler: async (request, reply) => {
115
- const version = request.params.version;
116
- await reply
117
- .status(404)
118
- .send(`GET request to /${version}/rpc is not supported, use POST isntead`);
119
- },
120
- wsHandler: (socket, request) => {
121
- socket.on("message", async (msgBuffer) => this.rpcSocket(request, msgBuffer, socket));
122
- }
123
- });
124
- });
125
- }
126
- this.fastify.get("/health", this.healthCheck.bind(this));
127
- this.fastify.get("/metrics", this.serveMetrics.bind(this));
128
- this.rpcEndpoint = rpcEndpoint;
129
- this.registry = registry;
130
- this.metrics = metrics;
131
- }
132
- start() {
133
- this.fastify.listen({ port: this.config.port, host: "0.0.0.0" });
134
- }
135
- async stop() {
136
- await this.fastify.close();
137
- }
138
- async healthCheck(_request, reply) {
139
- await reply.status(200).send("OK");
140
- }
141
- async rpcSocket(request, msgBuffer, socket) {
142
- try {
143
- request.body = JSON.parse(msgBuffer.toString());
144
- }
145
- catch (err) {
146
- socket.send(JSON.stringify({
147
- jsonrpc: "2.0",
148
- id: null,
149
- error: {
150
- message: "invalid JSON-RPC request",
151
- data: msgBuffer.toString(),
152
- code: types_1.ValidationErrors.InvalidFields
153
- }
154
- }));
155
- return;
156
- }
157
- await this.rpc(request, rpc_reply_1.default.fromSocket(socket));
158
- }
159
- async rpcHttp(request, reply) {
160
- await this.rpc(request, rpc_reply_1.default.fromHttpReply(reply));
161
- }
162
- async rpc(request, reply) {
163
- let requestId = null;
164
- const versionParsingResult = types_1.altoVersions.safeParse(request.params?.version ?? this.config.defaultApiVersion);
165
- if (!versionParsingResult.success) {
166
- const error = (0, zod_validation_error_1.fromZodError)(versionParsingResult.error);
167
- throw new types_1.RpcError(`invalid version ${error.message}`, types_1.ValidationErrors.InvalidFields);
168
- }
169
- const apiVersion = versionParsingResult.data;
170
- if (this.config.apiVersion.indexOf(apiVersion) === -1) {
171
- throw new types_1.RpcError(`unsupported version ${apiVersion}`, types_1.ValidationErrors.InvalidFields);
172
- }
173
- try {
174
- const contentTypeHeader = request.headers["content-type"];
175
- // Common browser websocket API does not allow setting custom headers
176
- if (contentTypeHeader !== "application/json" &&
177
- request.ws === false) {
178
- throw new types_1.RpcError("invalid content-type, content-type must be application/json", types_1.ValidationErrors.InvalidFields);
179
- }
180
- this.fastify.log.trace({ body: JSON.stringify(request.body) }, "received request");
181
- const jsonRpcParsing = types_1.jsonRpcSchema.safeParse(request.body);
182
- if (!jsonRpcParsing.success) {
183
- const validationError = (0, zod_validation_error_1.fromZodError)(jsonRpcParsing.error);
184
- throw new types_1.RpcError(`invalid JSON-RPC request ${validationError.message}`, types_1.ValidationErrors.InvalidFields);
185
- }
186
- const jsonRpcRequest = jsonRpcParsing.data;
187
- requestId = jsonRpcRequest.id;
188
- const bundlerRequestParsing = types_1.bundlerRequestSchema.safeParse(jsonRpcRequest);
189
- if (!bundlerRequestParsing.success) {
190
- const validationError = (0, zod_validation_error_1.fromZodError)(bundlerRequestParsing.error);
191
- if (validationError.message.includes("Missing/invalid userOpHash")) {
192
- throw new types_1.RpcError("Missing/invalid userOpHash", types_1.ValidationErrors.InvalidFields);
193
- }
194
- throw new types_1.RpcError(validationError.message, types_1.ValidationErrors.InvalidRequest);
195
- }
196
- const bundlerRequest = bundlerRequestParsing.data;
197
- request.rpcMethod = bundlerRequest.method;
198
- if (this.config.rpcMethods !== null &&
199
- !this.config.rpcMethods.includes(bundlerRequest.method)) {
200
- throw new types_1.RpcError(`Method not supported: ${bundlerRequest.method}`, types_1.ValidationErrors.InvalidRequest);
201
- }
202
- this.fastify.log.info({
203
- data: JSON.stringify(bundlerRequest, null),
204
- method: bundlerRequest.method
205
- }, "incoming request");
206
- const result = await this.rpcEndpoint.handleMethod(bundlerRequest, apiVersion);
207
- const jsonRpcResponse = {
208
- jsonrpc: "2.0",
209
- id: jsonRpcRequest.id,
210
- result
211
- };
212
- await reply
213
- .setRpcStatus(fastify_rpc_decorators_1.RpcStatus.Success)
214
- .status(200)
215
- .send(jsonRpcResponse);
216
- this.fastify.log.info({
217
- data: bundlerRequest.method ===
218
- "eth_getUserOperationReceipt" &&
219
- jsonRpcResponse.result
220
- ? {
221
- ...jsonRpcResponse,
222
- result: "<reduced>"
223
- }
224
- : jsonRpcResponse, // do not log the full result for eth_getUserOperationReceipt to reduce log size
225
- method: bundlerRequest.method
226
- }, "sent reply");
227
- }
228
- catch (err) {
229
- if (err instanceof types_1.RpcError) {
230
- const rpcError = {
231
- jsonrpc: "2.0",
232
- id: requestId,
233
- error: {
234
- message: err.message,
235
- data: err.data,
236
- code: err.code
237
- }
238
- };
239
- await reply
240
- .setRpcStatus(fastify_rpc_decorators_1.RpcStatus.ClientError)
241
- .status(200)
242
- .send(rpcError);
243
- this.fastify.log.info(rpcError, "error reply");
244
- }
245
- else if (err instanceof Error) {
246
- sentry.captureException(err);
247
- const rpcError = {
248
- jsonrpc: "2.0",
249
- id: requestId,
250
- error: {
251
- message: err.message
252
- }
253
- };
254
- await reply
255
- .setRpcStatus(fastify_rpc_decorators_1.RpcStatus.ServerError)
256
- .status(500)
257
- .send(rpcError);
258
- this.fastify.log.error(err, "error reply (non-rpc)");
259
- }
260
- else {
261
- const rpcError = {
262
- jsonrpc: "2.0",
263
- id: requestId,
264
- error: {
265
- message: "Unknown error"
266
- }
267
- };
268
- await reply
269
- .setRpcStatus(fastify_rpc_decorators_1.RpcStatus.ServerError)
270
- .status(500)
271
- .send(rpcError);
272
- this.fastify.log.error({ err }, "error reply (unhandled error type)");
273
- }
274
- }
275
- }
276
- async serveMetrics(_request, reply) {
277
- reply.headers({ "Content-Type": this.registry.contentType });
278
- const metrics = await this.registry.metrics();
279
- await reply.send(metrics);
280
- }
281
- }
282
- exports.Server = Server;
283
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../rpc/server.ts"],"names":[],"mappings":"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"}
@@ -1,102 +0,0 @@
1
- import type { Address, Hex } from "viem";
2
- import type { LogTracer } from "./tracer.js";
3
- /**
4
- * return type of our BundlerCollectorTracer.
5
- * collect access and opcodes, split into "levels" based on NUMBER opcode
6
- * keccak, calls and logs are collected globally, since the levels are unimportant for them.
7
- */
8
- export interface BundlerTracerResult {
9
- /**
10
- * storage and opcode info, collected on top-level calls from EntryPoint
11
- */
12
- callsFromEntryPoint: TopLevelCallInfo[];
13
- /**
14
- * values passed into KECCAK opcode
15
- */
16
- keccak: Hex[];
17
- calls: Array<ExitInfo | MethodInfo>;
18
- logs: LogInfo[];
19
- debug: any[];
20
- }
21
- export interface MethodInfo {
22
- type: string;
23
- from: Address;
24
- to: Address;
25
- method: string;
26
- value: bigint;
27
- gas: number;
28
- }
29
- export interface ExitInfo {
30
- type: "REVERT" | "RETURN";
31
- gasUsed: number;
32
- data: Hex;
33
- }
34
- export interface TopLevelCallInfo {
35
- topLevelMethodSig: Hex;
36
- topLevelTargetAddress: Address;
37
- opcodes: {
38
- [opcode: string]: number;
39
- };
40
- access: {
41
- [address: string]: AccessInfo;
42
- };
43
- contractSize: {
44
- [addr: string]: ContractSizeInfo;
45
- };
46
- extCodeAccessInfo: {
47
- [addr: string]: string;
48
- };
49
- oog?: boolean;
50
- }
51
- /**
52
- * It is illegal to access contracts with no code in validation even if it gets deployed later.
53
- * This means we need to store the {@link contractSize} of accessed addresses at the time of access.
54
- */
55
- export interface ContractSizeInfo {
56
- opcode: string;
57
- contractSize: number;
58
- }
59
- export interface AccessInfo {
60
- reads: {
61
- [slot: string]: string;
62
- };
63
- writes: {
64
- [slot: string]: number;
65
- };
66
- }
67
- export interface LogInfo {
68
- topics: string[];
69
- data: string;
70
- }
71
- interface RelevantStepData {
72
- opcode: string;
73
- stackTop3: any[];
74
- }
75
- /**
76
- * type-safe local storage of our collector. contains all return-value properties.
77
- * (also defines all "trace-local" variables and functions)
78
- */
79
- interface BundlerCollectorTracer extends LogTracer, BundlerTracerResult {
80
- lastOp: string;
81
- lastThreeOpcodes: RelevantStepData[];
82
- stopCollectingTopic: string;
83
- stopCollecting: boolean;
84
- currentLevel: TopLevelCallInfo;
85
- topLevelCallCounter: number;
86
- countSlot: (list: {
87
- [key: string]: number | undefined;
88
- }, key: any) => void;
89
- }
90
- /**
91
- * tracer to collect data for opcode banning.
92
- * this method is passed as the "tracer" for eth_traceCall (note, the function itself)
93
- *
94
- * returned data:
95
- * numberLevels: opcodes and memory access, split on execution of "number" opcode.
96
- * keccak: input data of keccak opcode.
97
- * calls: for each call, an array of [type, from, to, value]
98
- * slots: accessed slots (on any address)
99
- */
100
- export declare function bundlerCollectorTracer(): BundlerCollectorTracer;
101
- export {};
102
- //# sourceMappingURL=BundlerCollectorTracerV06.d.ts.map
@@ -1,262 +0,0 @@
1
- "use strict";
2
- // javascript code of tracer function
3
- // NOTE: we process this locally for hardhat, but send to geth for remote tracing.
4
- // should NOT "require" anything, or use logs.
5
- // see LogTrace for valid types (but alas, this one must be javascript, not typescript).
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.bundlerCollectorTracer = void 0;
8
- /**
9
- * tracer to collect data for opcode banning.
10
- * this method is passed as the "tracer" for eth_traceCall (note, the function itself)
11
- *
12
- * returned data:
13
- * numberLevels: opcodes and memory access, split on execution of "number" opcode.
14
- * keccak: input data of keccak opcode.
15
- * calls: for each call, an array of [type, from, to, value]
16
- * slots: accessed slots (on any address)
17
- */
18
- function bundlerCollectorTracer() {
19
- return {
20
- callsFromEntryPoint: [],
21
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
22
- currentLevel: null,
23
- keccak: [],
24
- calls: [],
25
- logs: [],
26
- debug: [],
27
- lastOp: "",
28
- lastThreeOpcodes: [],
29
- // event sent after all validations are done: keccak("BeforeExecution()")
30
- stopCollectingTopic: "bb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972",
31
- stopCollecting: false,
32
- topLevelCallCounter: 0,
33
- fault(log, _db) {
34
- this.debug.push(JSON.stringify({
35
- type: "fault",
36
- depth: log.getDepth(),
37
- gas: log.getGas(),
38
- cost: log.getCost(),
39
- err: log.getError()
40
- }));
41
- },
42
- result(_ctx, _db) {
43
- return {
44
- callsFromEntryPoint: this.callsFromEntryPoint,
45
- keccak: this.keccak,
46
- logs: this.logs,
47
- calls: this.calls,
48
- debug: this.debug // for internal debugging.
49
- };
50
- },
51
- enter(frame) {
52
- if (this.stopCollecting) {
53
- return;
54
- }
55
- this.calls.push({
56
- type: frame.getType(),
57
- from: toHex(frame.getFrom()),
58
- to: toHex(frame.getTo()),
59
- method: toHex(frame.getInput()).slice(0, 10),
60
- gas: frame.getGas(),
61
- value: frame.getValue()
62
- });
63
- },
64
- exit(frame) {
65
- if (this.stopCollecting) {
66
- return;
67
- }
68
- this.calls.push({
69
- type: frame.getError() != null ? "REVERT" : "RETURN",
70
- gasUsed: frame.getGasUsed(),
71
- data: toHex(frame.getOutput()).slice(0, 4000)
72
- });
73
- },
74
- // increment the "key" in the list. if the key is not defined yet, then set it to "1"
75
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
76
- countSlot(list, key) {
77
- if (list[key]) {
78
- // @ts-ignore
79
- list[key] += 1;
80
- }
81
- else {
82
- list[key] = 1;
83
- }
84
- },
85
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
86
- step(log, db) {
87
- if (this.stopCollecting) {
88
- return;
89
- }
90
- const opcode = log.op.toString();
91
- const stackSize = log.stack.length();
92
- const stackTop3 = [];
93
- for (let i = 0; i < 3 && i < stackSize; i++) {
94
- stackTop3.push(log.stack.peek(i));
95
- }
96
- this.lastThreeOpcodes.push({ opcode, stackTop3 });
97
- if (this.lastThreeOpcodes.length > 3) {
98
- this.lastThreeOpcodes.shift();
99
- }
100
- if (log.getGas() < log.getCost() ||
101
- // special rule for SSTORE with gas metering
102
- (opcode === "SSTORE" && log.getGas() < 2300)) {
103
- this.currentLevel.oog = true;
104
- }
105
- if (opcode === "REVERT" || opcode === "RETURN") {
106
- if (log.getDepth() === 1) {
107
- // exit() is not called on top-level return/revent, so we reconstruct it
108
- // from opcode
109
- const ofs = Number.parseInt(log.stack.peek(0).toString());
110
- const len = Number.parseInt(log.stack.peek(1).toString());
111
- const data = toHex(log.memory.slice(ofs, ofs + len)).slice(0, 4000);
112
- // this.debug.push(opcode + ' ' + data)
113
- this.calls.push({
114
- type: opcode,
115
- gasUsed: 0,
116
- data
117
- });
118
- }
119
- // NOTE: flushing all history after RETURN
120
- this.lastThreeOpcodes = [];
121
- }
122
- if (log.getDepth() === 1) {
123
- if (opcode === "CALL" || opcode === "STATICCALL") {
124
- // stack.peek(0) - gas
125
- const addr = toAddress(log.stack.peek(1).toString(16));
126
- const topLevelTargetAddress = toHex(addr);
127
- // stack.peek(2) - value
128
- const ofs = Number.parseInt(log.stack.peek(3).toString());
129
- // stack.peek(4) - len
130
- const topLevelMethodSig = toHex(log.memory.slice(ofs, ofs + 4));
131
- this.currentLevel = this.callsFromEntryPoint[this.topLevelCallCounter] = {
132
- topLevelMethodSig,
133
- topLevelTargetAddress,
134
- access: {},
135
- opcodes: {},
136
- extCodeAccessInfo: {},
137
- contractSize: {}
138
- };
139
- this.topLevelCallCounter++;
140
- }
141
- else if (opcode === "LOG1") {
142
- // ignore log data ofs, len
143
- const topic = log.stack.peek(2).toString(16);
144
- if (topic === this.stopCollectingTopic) {
145
- this.stopCollecting = true;
146
- }
147
- }
148
- this.lastOp = "";
149
- return;
150
- }
151
- const lastOpInfo = this.lastThreeOpcodes[this.lastThreeOpcodes.length - 2];
152
- // store all addresses touched by EXTCODE* opcodes
153
- if (lastOpInfo &&
154
- lastOpInfo.opcode &&
155
- lastOpInfo.opcode.match(/^(EXT.*)$/) != null) {
156
- const addr = toAddress(lastOpInfo.stackTop3[0].toString(16));
157
- const addrHex = toHex(addr);
158
- // [OP-051]
159
- if (!(this.lastThreeOpcodes[0].opcode.match(/\w+/) !== null &&
160
- this.lastThreeOpcodes[1].opcode === "EXTCODESIZE" &&
161
- this.lastThreeOpcodes[2].opcode === "ISZERO")) {
162
- this.currentLevel.extCodeAccessInfo[addrHex] = opcode;
163
- }
164
- // this.debug.push({
165
- // last3opcodes: JSON.stringify(this.lastThreeOpcodes.map(x => x.opcode)),
166
- // extCodeAccessInfo: this.currentLevel.extCodeAccessInfo
167
- // })
168
- }
169
- // not using 'isPrecompiled' to only allow the ones defined by the ERC-4337 as stateless precompiles
170
- // [OP-062]
171
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
172
- const isAllowedPrecompiled = (address) => {
173
- const addrHex = toHex(address);
174
- const addressInt = Number.parseInt(addrHex);
175
- // this.debug.push(`isPrecompiled address=${addrHex} addressInt=${addressInt}`)
176
- return addressInt > 0 && addressInt < 10;
177
- };
178
- // [OP-041]
179
- if (opcode.match(/^(EXT.*|CALL|CALLCODE|DELEGATECALL|STATICCALL)$/) != null) {
180
- const idx = opcode.startsWith("EXT") ? 0 : 1;
181
- const addr = toAddress(log.stack.peek(idx).toString(16));
182
- const addrHex = toHex(addr);
183
- // this.debug.push('op=' + opcode + ' last=' + this.lastOp + ' stacksize=' + log.stack.length() + ' addr=' + addrHex)
184
- if (this.currentLevel.contractSize[addrHex] == null &&
185
- !isAllowedPrecompiled(addr)) {
186
- this.currentLevel.contractSize[addrHex] = {
187
- contractSize: db.getCode(addr).length,
188
- opcode
189
- };
190
- }
191
- }
192
- // [OP-012]
193
- if (this.lastOp === "GAS" && !opcode.includes("CALL")) {
194
- // count "GAS" opcode only if not followed by "CALL"
195
- this.countSlot(this.currentLevel.opcodes, "GAS");
196
- }
197
- if (opcode !== "GAS") {
198
- // ignore "unimportant" opcodes:
199
- if (opcode.match(/^(DUP\d+|PUSH\d+|SWAP\d+|POP|ADD|SUB|MUL|DIV|EQ|LTE?|S?GTE?|SLT|SH[LR]|AND|OR|NOT|ISZERO)$/) == null) {
200
- this.countSlot(this.currentLevel.opcodes, opcode);
201
- }
202
- }
203
- this.lastOp = opcode;
204
- if (opcode === "SLOAD" ||
205
- opcode === "SSTORE" ||
206
- opcode === "TLOAD" ||
207
- opcode === "TSTORE") {
208
- const slot = toWord(log.stack.peek(0).toString(16));
209
- const slotHex = toHex(slot);
210
- const addr = log.contract.getAddress();
211
- const addrHex = toHex(addr);
212
- let access = this.currentLevel.access[addrHex];
213
- if (access == null) {
214
- access = {
215
- reads: {},
216
- writes: {}
217
- };
218
- this.currentLevel.access[addrHex] = access;
219
- }
220
- if (opcode === "SLOAD" || opcode === "TLOAD") {
221
- // read slot values before this UserOp was created
222
- // (so saving it if it was written before the first read)
223
- if (access.reads[slotHex] == null &&
224
- access.writes[slotHex] == null) {
225
- access.reads[slotHex] = toHex(db.getState(addr, slot));
226
- }
227
- }
228
- else {
229
- this.countSlot(access.writes, slotHex);
230
- }
231
- }
232
- if (opcode === "KECCAK256") {
233
- // collect keccak on 64-byte blocks
234
- const ofs = Number.parseInt(log.stack.peek(0).toString());
235
- const len = Number.parseInt(log.stack.peek(1).toString());
236
- // currently, solidity uses only 2-word (6-byte) for a key. this might change..
237
- // still, no need to return too much
238
- if (len > 20 && len < 512) {
239
- // if (len === 64) {
240
- this.keccak.push(toHex(log.memory.slice(ofs, ofs + len)));
241
- }
242
- }
243
- else if (opcode.startsWith("LOG")) {
244
- const count = Number.parseInt(opcode.substring(3));
245
- const ofs = Number.parseInt(log.stack.peek(0).toString());
246
- const len = Number.parseInt(log.stack.peek(1).toString());
247
- const topics = [];
248
- for (let i = 0; i < count; i++) {
249
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
250
- topics.push("0x" + log.stack.peek(2 + i).toString(16));
251
- }
252
- const data = toHex(log.memory.slice(ofs, ofs + len));
253
- this.logs.push({
254
- topics,
255
- data
256
- });
257
- }
258
- }
259
- };
260
- }
261
- exports.bundlerCollectorTracer = bundlerCollectorTracer;
262
- //# sourceMappingURL=BundlerCollectorTracerV06.js.map