@pimlico/alto 0.0.0-main.20250428T104157 → 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.
Files changed (384) 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/package.json +2 -1
  43. package/lib/cli/alto.d.ts +0 -7
  44. package/lib/cli/alto.js +0 -141
  45. package/lib/cli/alto.js.map +0 -1
  46. package/lib/cli/config/bundler.d.ts +0 -2872
  47. package/lib/cli/config/bundler.js +0 -242
  48. package/lib/cli/config/bundler.js.map +0 -1
  49. package/lib/cli/config/index.d.ts +0 -3
  50. package/lib/cli/config/index.js +0 -19
  51. package/lib/cli/config/index.js.map +0 -1
  52. package/lib/cli/config/options.d.ts +0 -13
  53. package/lib/cli/config/options.js +0 -587
  54. package/lib/cli/config/options.js.map +0 -1
  55. package/lib/cli/customTransport.d.ts +0 -14
  56. package/lib/cli/customTransport.js +0 -94
  57. package/lib/cli/customTransport.js.map +0 -1
  58. package/lib/cli/deploySimulationsContract.d.ts +0 -13
  59. package/lib/cli/deploySimulationsContract.js +0 -100
  60. package/lib/cli/deploySimulationsContract.js.map +0 -1
  61. package/lib/cli/handler.d.ts +0 -3
  62. package/lib/cli/handler.js +0 -157
  63. package/lib/cli/handler.js.map +0 -1
  64. package/lib/cli/index.d.ts +0 -4
  65. package/lib/cli/index.js +0 -20
  66. package/lib/cli/index.js.map +0 -1
  67. package/lib/cli/instrumentation.d.ts +0 -2
  68. package/lib/cli/instrumentation.js +0 -47
  69. package/lib/cli/instrumentation.js.map +0 -1
  70. package/lib/cli/parseArgs.d.ts +0 -8
  71. package/lib/cli/parseArgs.js +0 -25
  72. package/lib/cli/parseArgs.js.map +0 -1
  73. package/lib/cli/setupServer.d.ts +0 -13
  74. package/lib/cli/setupServer.js +0 -266
  75. package/lib/cli/setupServer.js.map +0 -1
  76. package/lib/cli/util.d.ts +0 -22
  77. package/lib/cli/util.js +0 -34
  78. package/lib/cli/util.js.map +0 -1
  79. package/lib/createConfig.d.ts +0 -16
  80. package/lib/createConfig.js +0 -13
  81. package/lib/createConfig.js.map +0 -1
  82. package/lib/executor/executor.d.ts +0 -65
  83. package/lib/executor/executor.js +0 -301
  84. package/lib/executor/executor.js.map +0 -1
  85. package/lib/executor/executorManager.d.ts +0 -108
  86. package/lib/executor/executorManager.js +0 -702
  87. package/lib/executor/executorManager.js.map +0 -1
  88. package/lib/executor/fastlane.d.ts +0 -9
  89. package/lib/executor/fastlane.js +0 -41
  90. package/lib/executor/fastlane.js.map +0 -1
  91. package/lib/executor/filterOpsAndEStimateGas.d.ts +0 -29
  92. package/lib/executor/filterOpsAndEStimateGas.js +0 -225
  93. package/lib/executor/filterOpsAndEStimateGas.js.map +0 -1
  94. package/lib/executor/index.d.ts +0 -5
  95. package/lib/executor/index.js +0 -21
  96. package/lib/executor/index.js.map +0 -1
  97. package/lib/executor/senderManager/createMemorySenderManager.d.ts +0 -8
  98. package/lib/executor/senderManager/createMemorySenderManager.js +0 -45
  99. package/lib/executor/senderManager/createMemorySenderManager.js.map +0 -1
  100. package/lib/executor/senderManager/createRedisSenderManager.d.ts +0 -8
  101. package/lib/executor/senderManager/createRedisSenderManager.js +0 -85
  102. package/lib/executor/senderManager/createRedisSenderManager.js.map +0 -1
  103. package/lib/executor/senderManager/flushOnStartUp.d.ts +0 -9
  104. package/lib/executor/senderManager/flushOnStartUp.js +0 -37
  105. package/lib/executor/senderManager/flushOnStartUp.js.map +0 -1
  106. package/lib/executor/senderManager/index.d.ts +0 -15
  107. package/lib/executor/senderManager/index.js +0 -25
  108. package/lib/executor/senderManager/index.js.map +0 -1
  109. package/lib/executor/senderManager/validateAndRefill.d.ts +0 -11
  110. package/lib/executor/senderManager/validateAndRefill.js +0 -115
  111. package/lib/executor/senderManager/validateAndRefill.js.map +0 -1
  112. package/lib/executor/utilityWalletMonitor.d.ts +0 -19
  113. package/lib/executor/utilityWalletMonitor.js +0 -42
  114. package/lib/executor/utilityWalletMonitor.js.map +0 -1
  115. package/lib/executor/utils.d.ts +0 -34
  116. package/lib/executor/utils.js +0 -167
  117. package/lib/executor/utils.js.map +0 -1
  118. package/lib/handlers/arbitrumGasPriceManager.d.ts +0 -14
  119. package/lib/handlers/arbitrumGasPriceManager.js +0 -39
  120. package/lib/handlers/arbitrumGasPriceManager.js.map +0 -1
  121. package/lib/handlers/eventManager.d.ts +0 -29
  122. package/lib/handlers/eventManager.js +0 -225
  123. package/lib/handlers/eventManager.js.map +0 -1
  124. package/lib/handlers/gasPriceManager.d.ts +0 -36
  125. package/lib/handlers/gasPriceManager.js +0 -391
  126. package/lib/handlers/gasPriceManager.js.map +0 -1
  127. package/lib/handlers/index.d.ts +0 -3
  128. package/lib/handlers/index.js +0 -19
  129. package/lib/handlers/index.js.map +0 -1
  130. package/lib/handlers/mantleGasPriceManager.d.ts +0 -23
  131. package/lib/handlers/mantleGasPriceManager.js +0 -44
  132. package/lib/handlers/mantleGasPriceManager.js.map +0 -1
  133. package/lib/handlers/optimismManager.d.ts +0 -10
  134. package/lib/handlers/optimismManager.js +0 -21
  135. package/lib/handlers/optimismManager.js.map +0 -1
  136. package/lib/index.d.ts +0 -2
  137. package/lib/index.js +0 -4
  138. package/lib/index.js.map +0 -1
  139. package/lib/mempool/index.d.ts +0 -4
  140. package/lib/mempool/index.js +0 -20
  141. package/lib/mempool/index.js.map +0 -1
  142. package/lib/mempool/mempool.d.ts +0 -191
  143. package/lib/mempool/mempool.js +0 -499
  144. package/lib/mempool/mempool.js.map +0 -1
  145. package/lib/mempool/monitoring.d.ts +0 -14
  146. package/lib/mempool/monitoring.js +0 -101
  147. package/lib/mempool/monitoring.js.map +0 -1
  148. package/lib/mempool/reputationManager.d.ts +0 -121
  149. package/lib/mempool/reputationManager.js +0 -472
  150. package/lib/mempool/reputationManager.js.map +0 -1
  151. package/lib/rpc/createMethodHandler.d.ts +0 -31
  152. package/lib/rpc/createMethodHandler.js +0 -34
  153. package/lib/rpc/createMethodHandler.js.map +0 -1
  154. package/lib/rpc/estimation/gasEstimationHandler.d.ts +0 -30
  155. package/lib/rpc/estimation/gasEstimationHandler.js +0 -50
  156. package/lib/rpc/estimation/gasEstimationHandler.js.map +0 -1
  157. package/lib/rpc/estimation/gasEstimationsV06.d.ts +0 -19
  158. package/lib/rpc/estimation/gasEstimationsV06.js +0 -148
  159. package/lib/rpc/estimation/gasEstimationsV06.js.map +0 -1
  160. package/lib/rpc/estimation/gasEstimationsV07.d.ts +0 -101
  161. package/lib/rpc/estimation/gasEstimationsV07.js +0 -727
  162. package/lib/rpc/estimation/gasEstimationsV07.js.map +0 -1
  163. package/lib/rpc/estimation/types.d.ts +0 -120
  164. package/lib/rpc/estimation/types.js +0 -125
  165. package/lib/rpc/estimation/types.js.map +0 -1
  166. package/lib/rpc/index.d.ts +0 -4
  167. package/lib/rpc/index.js +0 -20
  168. package/lib/rpc/index.js.map +0 -1
  169. package/lib/rpc/methods/debug_bundler_clearReputation.d.ts +0 -22
  170. package/lib/rpc/methods/debug_bundler_clearReputation.js +0 -15
  171. package/lib/rpc/methods/debug_bundler_clearReputation.js.map +0 -1
  172. package/lib/rpc/methods/debug_bundler_clearState.d.ts +0 -22
  173. package/lib/rpc/methods/debug_bundler_clearState.js +0 -16
  174. package/lib/rpc/methods/debug_bundler_clearState.js.map +0 -1
  175. package/lib/rpc/methods/debug_bundler_dumpMempool.d.ts +0 -973
  176. package/lib/rpc/methods/debug_bundler_dumpMempool.js +0 -16
  177. package/lib/rpc/methods/debug_bundler_dumpMempool.js.map +0 -1
  178. package/lib/rpc/methods/debug_bundler_dumpReputation.d.ts +0 -57
  179. package/lib/rpc/methods/debug_bundler_dumpReputation.js +0 -16
  180. package/lib/rpc/methods/debug_bundler_dumpReputation.js.map +0 -1
  181. package/lib/rpc/methods/debug_bundler_getStakeStatus.d.ts +0 -79
  182. package/lib/rpc/methods/debug_bundler_getStakeStatus.js +0 -25
  183. package/lib/rpc/methods/debug_bundler_getStakeStatus.js.map +0 -1
  184. package/lib/rpc/methods/debug_bundler_sendBundleNow.d.ts +0 -22
  185. package/lib/rpc/methods/debug_bundler_sendBundleNow.js +0 -15
  186. package/lib/rpc/methods/debug_bundler_sendBundleNow.js.map +0 -1
  187. package/lib/rpc/methods/debug_bundler_setBundlingMode.d.ts +0 -22
  188. package/lib/rpc/methods/debug_bundler_setBundlingMode.js +0 -16
  189. package/lib/rpc/methods/debug_bundler_setBundlingMode.js.map +0 -1
  190. package/lib/rpc/methods/debug_bundler_setReputation.d.ts +0 -46
  191. package/lib/rpc/methods/debug_bundler_setReputation.js +0 -16
  192. package/lib/rpc/methods/debug_bundler_setReputation.js.map +0 -1
  193. package/lib/rpc/methods/eth_chainId.d.ts +0 -22
  194. package/lib/rpc/methods/eth_chainId.js +0 -13
  195. package/lib/rpc/methods/eth_chainId.js.map +0 -1
  196. package/lib/rpc/methods/eth_estimateUserOperationGas.d.ts +0 -1891
  197. package/lib/rpc/methods/eth_estimateUserOperationGas.js +0 -26
  198. package/lib/rpc/methods/eth_estimateUserOperationGas.js.map +0 -1
  199. package/lib/rpc/methods/eth_getUserOperationByHash.d.ts +0 -1775
  200. package/lib/rpc/methods/eth_getUserOperationByHash.js +0 -101
  201. package/lib/rpc/methods/eth_getUserOperationByHash.js.map +0 -1
  202. package/lib/rpc/methods/eth_getUserOperationReceipt.d.ts +0 -412
  203. package/lib/rpc/methods/eth_getUserOperationReceipt.js +0 -14
  204. package/lib/rpc/methods/eth_getUserOperationReceipt.js.map +0 -1
  205. package/lib/rpc/methods/eth_sendUserOperation.d.ts +0 -878
  206. package/lib/rpc/methods/eth_sendUserOperation.js +0 -44
  207. package/lib/rpc/methods/eth_sendUserOperation.js.map +0 -1
  208. package/lib/rpc/methods/eth_supportedEntryPoints.d.ts +0 -22
  209. package/lib/rpc/methods/eth_supportedEntryPoints.js +0 -13
  210. package/lib/rpc/methods/eth_supportedEntryPoints.js.map +0 -1
  211. package/lib/rpc/methods/index.d.ts +0 -3
  212. package/lib/rpc/methods/index.js +0 -44
  213. package/lib/rpc/methods/index.js.map +0 -1
  214. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.d.ts +0 -131
  215. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js +0 -33
  216. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js.map +0 -1
  217. package/lib/rpc/methods/pimlico_getUserOperationStatus.d.ts +0 -43
  218. package/lib/rpc/methods/pimlico_getUserOperationStatus.js +0 -14
  219. package/lib/rpc/methods/pimlico_getUserOperationStatus.js.map +0 -1
  220. package/lib/rpc/methods/pimlico_sendUserOperationNow.d.ts +0 -1268
  221. package/lib/rpc/methods/pimlico_sendUserOperationNow.js +0 -55
  222. package/lib/rpc/methods/pimlico_sendUserOperationNow.js.map +0 -1
  223. package/lib/rpc/rpcHandler.d.ts +0 -75
  224. package/lib/rpc/rpcHandler.js +0 -391
  225. package/lib/rpc/rpcHandler.js.map +0 -1
  226. package/lib/rpc/server.d.ts +0 -26
  227. package/lib/rpc/server.js +0 -283
  228. package/lib/rpc/server.js.map +0 -1
  229. package/lib/rpc/validation/BundlerCollectorTracerV06.d.ts +0 -102
  230. package/lib/rpc/validation/BundlerCollectorTracerV06.js +0 -262
  231. package/lib/rpc/validation/BundlerCollectorTracerV06.js.map +0 -1
  232. package/lib/rpc/validation/BundlerCollectorTracerV07.d.ts +0 -102
  233. package/lib/rpc/validation/BundlerCollectorTracerV07.js +0 -261
  234. package/lib/rpc/validation/BundlerCollectorTracerV07.js.map +0 -1
  235. package/lib/rpc/validation/SafeValidator.d.ts +0 -51
  236. package/lib/rpc/validation/SafeValidator.js +0 -327
  237. package/lib/rpc/validation/SafeValidator.js.map +0 -1
  238. package/lib/rpc/validation/TracerResultParserV06.d.ts +0 -13
  239. package/lib/rpc/validation/TracerResultParserV06.js +0 -582
  240. package/lib/rpc/validation/TracerResultParserV06.js.map +0 -1
  241. package/lib/rpc/validation/TracerResultParserV07.d.ts +0 -33
  242. package/lib/rpc/validation/TracerResultParserV07.js +0 -599
  243. package/lib/rpc/validation/TracerResultParserV07.js.map +0 -1
  244. package/lib/rpc/validation/UnsafeValidator.d.ts +0 -97
  245. package/lib/rpc/validation/UnsafeValidator.js +0 -303
  246. package/lib/rpc/validation/UnsafeValidator.js.map +0 -1
  247. package/lib/rpc/validation/index.d.ts +0 -3
  248. package/lib/rpc/validation/index.js +0 -19
  249. package/lib/rpc/validation/index.js.map +0 -1
  250. package/lib/rpc/validation/tracer.d.ts +0 -125
  251. package/lib/rpc/validation/tracer.js +0 -112
  252. package/lib/rpc/validation/tracer.js.map +0 -1
  253. package/lib/store/createMemoryOutstandingStore.d.ts +0 -28
  254. package/lib/store/createMemoryOutstandingStore.js +0 -236
  255. package/lib/store/createMemoryOutstandingStore.js.map +0 -1
  256. package/lib/store/createMempoolStore.d.ts +0 -8
  257. package/lib/store/createMempoolStore.js +0 -199
  258. package/lib/store/createMempoolStore.js.map +0 -1
  259. package/lib/store/createRedisOutstandingStore.d.ts +0 -27
  260. package/lib/store/createRedisOutstandingStore.js +0 -349
  261. package/lib/store/createRedisOutstandingStore.js.map +0 -1
  262. package/lib/store/createRedisStore.d.ts +0 -9
  263. package/lib/store/createRedisStore.js +0 -138
  264. package/lib/store/createRedisStore.js.map +0 -1
  265. package/lib/store/createStore.d.ts +0 -6
  266. package/lib/store/createStore.js +0 -70
  267. package/lib/store/createStore.js.map +0 -1
  268. package/lib/store/index.d.ts +0 -81
  269. package/lib/store/index.js +0 -6
  270. package/lib/store/index.js.map +0 -1
  271. package/lib/types/contracts/ArbitrumL1FeeAbi.d.ts +0 -32
  272. package/lib/types/contracts/ArbitrumL1FeeAbi.js +0 -45
  273. package/lib/types/contracts/ArbitrumL1FeeAbi.js.map +0 -1
  274. package/lib/types/contracts/CallEngine.d.ts +0 -28
  275. package/lib/types/contracts/CallEngine.js +0 -40
  276. package/lib/types/contracts/CallEngine.js.map +0 -1
  277. package/lib/types/contracts/CodeHashGetter.d.ts +0 -37
  278. package/lib/types/contracts/CodeHashGetter.js +0 -48
  279. package/lib/types/contracts/CodeHashGetter.js.map +0 -1
  280. package/lib/types/contracts/EntryPoint.d.ts +0 -1789
  281. package/lib/types/contracts/EntryPoint.js +0 -2307
  282. package/lib/types/contracts/EntryPoint.js.map +0 -1
  283. package/lib/types/contracts/EntryPointSimulationsV6.d.ts +0 -34
  284. package/lib/types/contracts/EntryPointSimulationsV6.js +0 -51
  285. package/lib/types/contracts/EntryPointSimulationsV6.js.map +0 -1
  286. package/lib/types/contracts/EntryPointSimulationsV7.d.ts +0 -2076
  287. package/lib/types/contracts/EntryPointSimulationsV7.js +0 -2678
  288. package/lib/types/contracts/EntryPointSimulationsV7.js.map +0 -1
  289. package/lib/types/contracts/IAccountExecute.d.ts +0 -53
  290. package/lib/types/contracts/IAccountExecute.js +0 -71
  291. package/lib/types/contracts/IAccountExecute.js.map +0 -1
  292. package/lib/types/contracts/IPaymaster.d.ts +0 -3
  293. package/lib/types/contracts/IPaymaster.js +0 -120
  294. package/lib/types/contracts/IPaymaster.js.map +0 -1
  295. package/lib/types/contracts/MantleBvmGasPriceOracle.d.ts +0 -219
  296. package/lib/types/contracts/MantleBvmGasPriceOracle.js +0 -180
  297. package/lib/types/contracts/MantleBvmGasPriceOracle.js.map +0 -1
  298. package/lib/types/contracts/OpL1FeeAbi.d.ts +0 -114
  299. package/lib/types/contracts/OpL1FeeAbi.js +0 -77
  300. package/lib/types/contracts/OpL1FeeAbi.js.map +0 -1
  301. package/lib/types/contracts/PimlicoEntryPointSimulations.d.ts +0 -25
  302. package/lib/types/contracts/PimlicoEntryPointSimulations.js +0 -42
  303. package/lib/types/contracts/PimlicoEntryPointSimulations.js.map +0 -1
  304. package/lib/types/contracts/SenderCreator.d.ts +0 -4
  305. package/lib/types/contracts/SenderCreator.js +0 -26
  306. package/lib/types/contracts/SenderCreator.js.map +0 -1
  307. package/lib/types/contracts/SimpleAccountFactory.d.ts +0 -57
  308. package/lib/types/contracts/SimpleAccountFactory.js +0 -79
  309. package/lib/types/contracts/SimpleAccountFactory.js.map +0 -1
  310. package/lib/types/contracts/TestOpcodesAccount.d.ts +0 -4
  311. package/lib/types/contracts/TestOpcodesAccount.js +0 -284
  312. package/lib/types/contracts/TestOpcodesAccount.js.map +0 -1
  313. package/lib/types/contracts/TestOpcodesAccountFactory.d.ts +0 -4
  314. package/lib/types/contracts/TestOpcodesAccountFactory.js +0 -26
  315. package/lib/types/contracts/TestOpcodesAccountFactory.js.map +0 -1
  316. package/lib/types/contracts/TestStorageAccount.d.ts +0 -4
  317. package/lib/types/contracts/TestStorageAccount.js +0 -316
  318. package/lib/types/contracts/TestStorageAccount.js.map +0 -1
  319. package/lib/types/contracts/index.d.ts +0 -17
  320. package/lib/types/contracts/index.js +0 -33
  321. package/lib/types/contracts/index.js.map +0 -1
  322. package/lib/types/gasPrice.d.ts +0 -110
  323. package/lib/types/gasPrice.js +0 -55
  324. package/lib/types/gasPrice.js.map +0 -1
  325. package/lib/types/index.d.ts +0 -11
  326. package/lib/types/index.js +0 -27
  327. package/lib/types/index.js.map +0 -1
  328. package/lib/types/interfaces.d.ts +0 -58
  329. package/lib/types/interfaces.js +0 -3
  330. package/lib/types/interfaces.js.map +0 -1
  331. package/lib/types/mempool.d.ts +0 -60
  332. package/lib/types/mempool.js +0 -11
  333. package/lib/types/mempool.js.map +0 -1
  334. package/lib/types/schemas.d.ts +0 -20785
  335. package/lib/types/schemas.js +0 -679
  336. package/lib/types/schemas.js.map +0 -1
  337. package/lib/types/utils.d.ts +0 -25
  338. package/lib/types/utils.js +0 -35
  339. package/lib/types/utils.js.map +0 -1
  340. package/lib/types/validation.d.ts +0 -14327
  341. package/lib/types/validation.js +0 -312
  342. package/lib/types/validation.js.map +0 -1
  343. package/lib/utils/asyncTimeout.d.ts +0 -5
  344. package/lib/utils/asyncTimeout.js +0 -51
  345. package/lib/utils/asyncTimeout.js.map +0 -1
  346. package/lib/utils/bigInt.d.ts +0 -8
  347. package/lib/utils/bigInt.js +0 -24
  348. package/lib/utils/bigInt.js.map +0 -1
  349. package/lib/utils/eip7702.d.ts +0 -4
  350. package/lib/utils/eip7702.js +0 -21
  351. package/lib/utils/eip7702.js.map +0 -1
  352. package/lib/utils/fastify-rpc-decorators.d.ts +0 -19
  353. package/lib/utils/fastify-rpc-decorators.js +0 -23
  354. package/lib/utils/fastify-rpc-decorators.js.map +0 -1
  355. package/lib/utils/helpers.d.ts +0 -15
  356. package/lib/utils/helpers.js +0 -59
  357. package/lib/utils/helpers.js.map +0 -1
  358. package/lib/utils/index.d.ts +0 -9
  359. package/lib/utils/index.js +0 -24
  360. package/lib/utils/index.js.map +0 -1
  361. package/lib/utils/logger.d.ts +0 -6
  362. package/lib/utils/logger.js +0 -85
  363. package/lib/utils/logger.js.map +0 -1
  364. package/lib/utils/metrics.d.ts +0 -29
  365. package/lib/utils/metrics.js +0 -199
  366. package/lib/utils/metrics.js.map +0 -1
  367. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.d.ts +0 -6
  368. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js +0 -57
  369. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +0 -1
  370. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +0 -7
  371. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js +0 -105
  372. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js.map +0 -1
  373. package/lib/utils/minMaxQueue/index.d.ts +0 -12
  374. package/lib/utils/minMaxQueue/index.js +0 -16
  375. package/lib/utils/minMaxQueue/index.js.map +0 -1
  376. package/lib/utils/rpc-reply.d.ts +0 -16
  377. package/lib/utils/rpc-reply.js +0 -41
  378. package/lib/utils/rpc-reply.js.map +0 -1
  379. package/lib/utils/userop.d.ts +0 -138
  380. package/lib/utils/userop.js +0 -620
  381. package/lib/utils/userop.js.map +0 -1
  382. package/lib/utils/validation.d.ts +0 -76
  383. package/lib/utils/validation.js +0 -491
  384. 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