@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
@@ -1,599 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tracerResultParserV07 = exports.parseEntitySlots = exports.associatedWith = exports.isStaked = void 0;
4
- const types_1 = require("../../types/index.js");
5
- // This file contains references to validation rules, in the format [xxx-###]
6
- // where xxx is OP/STO/COD/EP/SREP/EREP/UREP/ALT, and ### is a number
7
- // the validation rules are defined in erc-aa-validation.md
8
- const viem_1 = require("viem");
9
- const utils_1 = require("../../utils/index.js");
10
- const abi = [...types_1.SenderCreatorAbi, ...types_1.EntryPointV07Abi, ...types_1.PaymasterAbi];
11
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
12
- const functionSignatureToMethodName = (hash) => {
13
- let functionName = undefined;
14
- for (const item of abi) {
15
- const signature = (0, viem_1.toFunctionSelector)(item);
16
- if (signature === hash) {
17
- functionName = item.name;
18
- }
19
- }
20
- if (functionName === undefined) {
21
- throw new Error(`Could not find function name for hash ${hash}`);
22
- }
23
- return functionName;
24
- };
25
- function isStaked(entStake) {
26
- return Boolean(entStake && 1n <= entStake.stake && 1n <= entStake.unstakeDelaySec);
27
- }
28
- exports.isStaked = isStaked;
29
- function associatedWith(slot, addr, entitySlots) {
30
- const addrPadded = (0, viem_1.pad)(addr, {
31
- size: 32
32
- }).toLowerCase();
33
- if (slot.toLowerCase() === addrPadded) {
34
- return true;
35
- }
36
- const k = entitySlots[addr];
37
- if (!k) {
38
- return false;
39
- }
40
- const slotN = (0, viem_1.hexToBigInt)(slot);
41
- // scan all slot entries to check of the given slot is within a structure, starting at that offset.
42
- // assume a maximum size on a (static) structure size.
43
- for (const k1 of k.keys()) {
44
- const kn = (0, viem_1.hexToBigInt)(k1);
45
- if (slotN >= kn && slotN < kn + 128n) {
46
- return true;
47
- }
48
- }
49
- return false;
50
- }
51
- exports.associatedWith = associatedWith;
52
- /**
53
- * parse all call operation in the trace.
54
- * notes:
55
- * - entries are ordered by the return (so nested call appears before its outer call
56
- * - last entry is top-level return from "simulateValidation". it as ret and rettype, but no type or address
57
- * @param tracerResults
58
- * @param abi
59
- */
60
- function parseCallStack(tracerResults) {
61
- function callCatch(x, def) {
62
- try {
63
- return x();
64
- }
65
- catch (_) {
66
- return def;
67
- }
68
- }
69
- const out = [];
70
- const stack = [];
71
- const filteredTracerResultCalls = tracerResults.calls.filter((x) => !x.type.startsWith("depth"));
72
- for (const c of filteredTracerResultCalls) {
73
- if (c.type.match(/REVERT|RETURN/) !== null) {
74
- const top = stack.splice(-1)[0] ?? {
75
- type: "top",
76
- method: "validateUserOp"
77
- };
78
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
79
- const returnData = c.data;
80
- if (top.type.match(/CREATE/) !== null) {
81
- out.push({
82
- to: top.to,
83
- from: top.from,
84
- type: top.type,
85
- method: "",
86
- return: `len=${returnData.length}`
87
- });
88
- }
89
- else {
90
- const method = callCatch(() => functionSignatureToMethodName(top.method), top.method);
91
- if (c.type === "REVERT") {
92
- const parsedError = callCatch(() => (0, viem_1.decodeErrorResult)({ abi: abi, data: returnData }), returnData);
93
- out.push({
94
- to: top.to,
95
- from: top.from,
96
- type: top.type,
97
- method: method,
98
- value: top.value,
99
- revert: parsedError
100
- });
101
- }
102
- else {
103
- const ret = callCatch(() => (0, viem_1.decodeFunctionResult)({
104
- abi: abi,
105
- functionName: method,
106
- data: returnData
107
- }), returnData);
108
- out.push({
109
- to: top.to,
110
- from: top.from,
111
- type: top.type,
112
- value: top.value,
113
- method: method,
114
- return: ret
115
- });
116
- }
117
- }
118
- }
119
- else {
120
- stack.push(c);
121
- }
122
- }
123
- // TODO: verify that stack is empty at the end.
124
- return out;
125
- }
126
- /**
127
- * slots associated with each entity.
128
- * keccak( A || ...) is associated with "A"
129
- * removed rule: keccak( ... || ASSOC ) (for a previously associated hash) is also associated with "A"
130
- *
131
- * @param stakeInfoEntities stake info for (factory, account, paymaster). factory and paymaster can be null.
132
- * @param keccak array of buffers that were given to keccak in the transaction
133
- */
134
- function parseEntitySlots(stakeInfoEntities, keccak) {
135
- // for each entity (sender, factory, paymaster), hold the valid slot addresses
136
- // valid: the slot was generated by keccak(entity || ...)
137
- const entitySlots = {};
138
- for (const k of keccak) {
139
- const values = Object.values(stakeInfoEntities);
140
- for (const info of values) {
141
- const addr = info?.addr?.toLowerCase();
142
- if (!addr) {
143
- continue;
144
- }
145
- const addrPadded = (0, viem_1.pad)(addr).toLowerCase();
146
- if (!entitySlots[addr]) {
147
- entitySlots[addr] = new Set();
148
- }
149
- const currentEntitySlots = entitySlots[addr];
150
- // valid slot: the slot was generated by keccak(entityAddr || ...)
151
- if (k.startsWith(addrPadded)) {
152
- currentEntitySlots.add((0, viem_1.keccak256)(k));
153
- }
154
- // disabled 2nd rule: .. or by keccak( ... || OWN) where OWN is previous allowed slot
155
- // if (k.length === 130 && currentEntitySlots.has(k.slice(-64))) {
156
- // currentEntitySlots.add(value)
157
- // }
158
- }
159
- }
160
- return entitySlots;
161
- }
162
- exports.parseEntitySlots = parseEntitySlots;
163
- // method-signature for calls from entryPoint
164
- const callsFromEntryPointMethodSigs = {
165
- factory: (0, viem_1.toFunctionSelector)({
166
- inputs: [
167
- {
168
- internalType: "bytes",
169
- name: "initCode",
170
- type: "bytes"
171
- }
172
- ],
173
- name: "createSender",
174
- outputs: [
175
- {
176
- internalType: "address",
177
- name: "sender",
178
- type: "address"
179
- }
180
- ],
181
- stateMutability: "nonpayable",
182
- type: "function"
183
- }),
184
- account: (0, viem_1.toFunctionSelector)({
185
- inputs: [
186
- {
187
- components: [
188
- {
189
- internalType: "address",
190
- name: "sender",
191
- type: "address"
192
- },
193
- {
194
- internalType: "uint256",
195
- name: "nonce",
196
- type: "uint256"
197
- },
198
- {
199
- internalType: "bytes",
200
- name: "initCode",
201
- type: "bytes"
202
- },
203
- {
204
- internalType: "bytes",
205
- name: "callData",
206
- type: "bytes"
207
- },
208
- {
209
- internalType: "bytes32",
210
- name: "accountGasLimits",
211
- type: "bytes32"
212
- },
213
- {
214
- internalType: "uint256",
215
- name: "preVerificationGas",
216
- type: "uint256"
217
- },
218
- {
219
- internalType: "bytes32",
220
- name: "gasFees",
221
- type: "bytes32"
222
- },
223
- {
224
- internalType: "bytes",
225
- name: "paymasterAndData",
226
- type: "bytes"
227
- },
228
- {
229
- internalType: "bytes",
230
- name: "signature",
231
- type: "bytes"
232
- }
233
- ],
234
- internalType: "struct PackedUserOperation",
235
- name: "userOp",
236
- type: "tuple"
237
- },
238
- {
239
- internalType: "bytes32",
240
- name: "userOpHash",
241
- type: "bytes32"
242
- },
243
- {
244
- internalType: "uint256",
245
- name: "missingAccountFunds",
246
- type: "uint256"
247
- }
248
- ],
249
- name: "validateUserOp",
250
- outputs: [
251
- {
252
- internalType: "uint256",
253
- name: "validationData",
254
- type: "uint256"
255
- }
256
- ],
257
- stateMutability: "nonpayable",
258
- type: "function"
259
- }),
260
- paymaster: (0, viem_1.toFunctionSelector)({
261
- inputs: [
262
- {
263
- components: [
264
- {
265
- internalType: "address",
266
- name: "sender",
267
- type: "address"
268
- },
269
- {
270
- internalType: "uint256",
271
- name: "nonce",
272
- type: "uint256"
273
- },
274
- {
275
- internalType: "bytes",
276
- name: "initCode",
277
- type: "bytes"
278
- },
279
- {
280
- internalType: "bytes",
281
- name: "callData",
282
- type: "bytes"
283
- },
284
- {
285
- internalType: "bytes32",
286
- name: "accountGasLimits",
287
- type: "bytes32"
288
- },
289
- {
290
- internalType: "uint256",
291
- name: "preVerificationGas",
292
- type: "uint256"
293
- },
294
- {
295
- internalType: "bytes32",
296
- name: "gasFees",
297
- type: "bytes32"
298
- },
299
- {
300
- internalType: "bytes",
301
- name: "paymasterAndData",
302
- type: "bytes"
303
- },
304
- {
305
- internalType: "bytes",
306
- name: "signature",
307
- type: "bytes"
308
- }
309
- ],
310
- internalType: "struct PackedUserOperation",
311
- name: "userOp",
312
- type: "tuple"
313
- },
314
- {
315
- internalType: "bytes32",
316
- name: "userOpHash",
317
- type: "bytes32"
318
- },
319
- {
320
- internalType: "uint256",
321
- name: "maxCost",
322
- type: "uint256"
323
- }
324
- ],
325
- name: "validatePaymasterUserOp",
326
- outputs: [
327
- {
328
- internalType: "bytes",
329
- name: "context",
330
- type: "bytes"
331
- },
332
- {
333
- internalType: "uint256",
334
- name: "validationData",
335
- type: "uint256"
336
- }
337
- ],
338
- stateMutability: "nonpayable",
339
- type: "function"
340
- })
341
- };
342
- /**
343
- * parse collected simulation traces and revert if they break our rules
344
- * @param userOperation the userOperation that was used in this simulation
345
- * @param tracerResults the tracer return value
346
- * @param validationResult output from simulateValidation
347
- * @param entryPoint the entryPoint that hosted the "simulatedValidation" traced call.
348
- * @return list of contract addresses referenced by this UserOp
349
- */
350
- function tracerResultParserV07(userOperation, tracerResults, validationResult, entryPointAddress) {
351
- // todo: block access to no-code addresses (might need update to tracer)
352
- // opcodes from [OP-011]
353
- const bannedOpCodes = (0, utils_1.isVersion08)(userOperation, entryPointAddress)
354
- ? new Set([
355
- "GAS",
356
- "NUMBER",
357
- "TIMESTAMP",
358
- "COINBASE",
359
- "DIFFICULTY",
360
- "BASEFEE",
361
- "GASLIMIT",
362
- "GASPRICE",
363
- "SELFBALANCE",
364
- "BALANCE",
365
- "ORIGIN",
366
- "BLOCKHASH",
367
- "SELFDESTRUCT",
368
- "BLOBHASH",
369
- "BLOBBASEFEE"
370
- ])
371
- : new Set([
372
- "GASPRICE",
373
- "GASLIMIT",
374
- "DIFFICULTY",
375
- "TIMESTAMP",
376
- "BASEFEE",
377
- "BLOCKHASH",
378
- "NUMBER",
379
- "ORIGIN",
380
- "GAS",
381
- "COINBASE",
382
- "SELFDESTRUCT",
383
- "RANDOM",
384
- "PREVRANDAO",
385
- "INVALID",
386
- "SELFBALANCE",
387
- "BALANCE"
388
- ]);
389
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
390
- if (Object.values(tracerResults.callsFromEntryPoint).length < 1) {
391
- throw new Error("Unexpected traceCall result: no calls from entrypoint.");
392
- }
393
- const callStack = parseCallStack(tracerResults);
394
- // [OP-052], [OP-053]
395
- const callInfoEntryPoint = callStack.find((call) => call.to === entryPointAddress &&
396
- call.from !== entryPointAddress &&
397
- call.method !== "0x" &&
398
- call.method !== "depositTo");
399
- // [OP-054]
400
- if (callInfoEntryPoint &&
401
- callInfoEntryPoint?.method !== "delegateAndRevert") {
402
- throw new types_1.RpcError(`illegal call into EntryPoint during validation ${callInfoEntryPoint?.method}`, types_1.ValidationErrors.OpcodeValidation);
403
- }
404
- // [OP-061]
405
- const illegalNonZeroValueCall = callStack.find((call) => call.to !== entryPointAddress &&
406
- (0, viem_1.hexToBigInt)(call.value ?? "0x0") !== 0n);
407
- if (illegalNonZeroValueCall) {
408
- throw new types_1.RpcError("May not may CALL with value", types_1.ValidationErrors.OpcodeValidation);
409
- }
410
- const sender = userOperation.sender.toLowerCase();
411
- // stake info per "number" level (factory, sender, paymaster)
412
- // we only use stake info if we notice a memory reference that require stake
413
- const stakeInfoEntities = {
414
- factory: validationResult.factoryInfo,
415
- account: validationResult.senderInfo,
416
- paymaster: validationResult.paymasterInfo
417
- };
418
- const entitySlots = parseEntitySlots(stakeInfoEntities, tracerResults.keccak);
419
- let isCreateOpcodeUsed = false;
420
- for (const [title, entStakes] of Object.entries(stakeInfoEntities)) {
421
- const entityTitle = title;
422
- const entityAddr = (entStakes?.addr ?? "").toLowerCase();
423
- const currentNumLevel = tracerResults.callsFromEntryPoint.find((info) => info.topLevelMethodSig ===
424
- callsFromEntryPointMethodSigs[entityTitle]);
425
- if (!currentNumLevel) {
426
- if (entityTitle === "account") {
427
- // should never happen... only factory, paymaster are optional.
428
- throw new Error("missing trace into validateUserOp");
429
- }
430
- continue;
431
- }
432
- const opcodes = currentNumLevel.opcodes;
433
- const access = currentNumLevel.access; // address => { reads, writes }
434
- // [OP-020]
435
- if (currentNumLevel.oog ?? false) {
436
- throw new types_1.RpcError(`${entityTitle} internally reverts on oog`, types_1.ValidationErrors.OpcodeValidation);
437
- }
438
- // opcodes from [OP-011]
439
- for (const opcode of Object.keys(opcodes)) {
440
- if (bannedOpCodes.has(opcode) && !isStaked(entStakes)) {
441
- throw new types_1.RpcError(`${entityTitle} uses banned opcode: ${opcode}`, types_1.ValidationErrors.OpcodeValidation);
442
- }
443
- }
444
- const createOpcode = (opcodes.CREATE2 ?? 0) + (opcodes.CREATE ?? 0);
445
- const create2Opcode = opcodes.CREATE2 ?? 0;
446
- if (isCreateOpcodeUsed && createOpcode > 1) {
447
- throw new types_1.RpcError(`${entityTitle} uses banned opcode: CREATE2`, types_1.ValidationErrors.OpcodeValidation);
448
- }
449
- // [OP-031]
450
- if (entityTitle === "factory") {
451
- if ((createOpcode ?? 0) > 2) {
452
- throw new types_1.RpcError(`${entityTitle} with too many CREATE2`, types_1.ValidationErrors.OpcodeValidation);
453
- }
454
- if ((create2Opcode ?? 0) >= 2) {
455
- throw new types_1.RpcError(`${entityTitle} with too many CREATE2`, types_1.ValidationErrors.OpcodeValidation);
456
- }
457
- }
458
- else if (createOpcode) {
459
- const isFactoryStaked = stakeInfoEntities.factory && isStaked(stakeInfoEntities.factory);
460
- const skip = stakeInfoEntities.factory && opcodes.CREATE;
461
- if (!(isFactoryStaked || skip)) {
462
- throw new types_1.RpcError(`${entityTitle} uses banned opcode: CREATE2`, types_1.ValidationErrors.OpcodeValidation);
463
- }
464
- }
465
- if (createOpcode > 0) {
466
- isCreateOpcodeUsed = true;
467
- }
468
- for (const [addr, { reads, writes }] of Object.entries(access)) {
469
- // testing read/write access on contract "addr"
470
- if ((0, utils_1.areAddressesEqual)(addr, userOperation.sender)) {
471
- // allowed to access sender's storage
472
- // [STO-010]
473
- continue;
474
- }
475
- if (addr === entryPointAddress) {
476
- // ignore storage access on entryPoint (balance/deposit of entities.
477
- // we block them on method calls: only allowed to deposit, never to read
478
- continue;
479
- }
480
- // return true if the given slot is associated with the given address, given the known keccak operations:
481
- // @param slot the SLOAD/SSTORE slot address we're testing
482
- // @param addr - the address we try to check for association with
483
- // @param reverseKeccak - a mapping we built for keccak values that contained the address
484
- // scan all slots. find a referenced slot
485
- // at the end of the scan, we will check if the entity has stake, and report that slot if not.
486
- let requireStakeSlot;
487
- const slots = [...Object.keys(writes), ...Object.keys(reads)];
488
- for (const slot of slots) {
489
- // slot associated with sender is allowed (e.g. token.balanceOf(sender)
490
- // but during initial UserOp (where there is an initCode), it is allowed only for staked entity
491
- if (associatedWith(slot, sender, entitySlots)) {
492
- if (userOperation.factory) {
493
- // special case: account.validateUserOp is allowed to use assoc storage if factory is staked.
494
- // [STO-022], [STO-021]
495
- if (!(((0, utils_1.areAddressesEqual)(entityAddr, userOperation.sender) ||
496
- (0, utils_1.areAddressesEqual)(entityAddr, userOperation.paymaster ?? "")) &&
497
- isStaked(stakeInfoEntities.factory))) {
498
- requireStakeSlot = slot;
499
- }
500
- }
501
- }
502
- else if (associatedWith(slot, entityAddr, entitySlots)) {
503
- // [STO-032]
504
- // accessing a slot associated with entityAddr (e.g. token.balanceOf(paymaster)
505
- requireStakeSlot = slot;
506
- }
507
- else if (addr === entityAddr) {
508
- // [STO-031]
509
- // accessing storage member of entity itself requires stake.
510
- requireStakeSlot = slot;
511
- }
512
- else if (writes[slot] === undefined) {
513
- // [STO-033]: staked entity have read-only access to any storage in non-entity contract.
514
- requireStakeSlot = slot;
515
- }
516
- else {
517
- // accessing arbitrary storage of another contract is not allowed
518
- const readWrite = Object.keys(writes).includes(addr)
519
- ? "write to"
520
- : "read from";
521
- const message = `${entityTitle} has forbidden ${readWrite} ${nameAddr(addr, entityTitle)} slot ${slot}`;
522
- throw new types_1.RpcError(message, types_1.ValidationErrors.OpcodeValidation, {
523
- [entityTitle]: entStakes?.addr
524
- });
525
- }
526
- }
527
- // if addr is current account/paymaster/factory, then return that title
528
- // otherwise, return addr as-is
529
- function nameAddr(addr, _currentEntity) {
530
- const [title] = Object.entries(stakeInfoEntities).find(([_title, info]) => (0, utils_1.areAddressesEqual)(info?.addr ?? "", addr)) ?? [];
531
- return title ?? addr;
532
- }
533
- requireCondAndStake(requireStakeSlot !== undefined, entStakes, `unstaked ${entityTitle} accessed ${nameAddr(addr, entityTitle)} slot ${requireStakeSlot}`);
534
- }
535
- // [EREP-050]
536
- if (entityTitle === "paymaster") {
537
- const validatePaymasterUserOp = callStack.find((call) => call.method === "validatePaymasterUserOp" &&
538
- call.to === entityAddr);
539
- const context = validatePaymasterUserOp?.return
540
- ? validatePaymasterUserOp?.return[0]
541
- : undefined;
542
- requireCondAndStake(context && context !== "0x", entStakes, "unstaked paymaster must not return context");
543
- }
544
- // check if the given entity is staked
545
- // helper method: if condition is true, then entity must be staked.
546
- function requireCondAndStake(cond, entStake, failureMessage) {
547
- if (!cond) {
548
- return;
549
- }
550
- if (!entStake) {
551
- throw new Error(`internal: ${entityTitle} not in userOp, but has storage accesses in ${JSON.stringify(access)}`);
552
- }
553
- if (!isStaked(entStake)) {
554
- throw new types_1.RpcError(failureMessage, types_1.ValidationErrors.OpcodeValidation, {
555
- [entityTitle]: entStakes?.addr
556
- });
557
- }
558
- // TODO: check real minimum stake values
559
- }
560
- // the only contract we allow to access before its deployment is the "sender" itself, which gets created.
561
- // biome-ignore lint/suspicious/noExplicitAny: it's a generic type
562
- let illegalZeroCodeAccess;
563
- for (const addr of Object.keys(currentNumLevel.contractSize)) {
564
- // [OP-042]
565
- if (addr !== sender &&
566
- currentNumLevel.contractSize[addr].contractSize <= 2) {
567
- illegalZeroCodeAccess = currentNumLevel.contractSize[addr];
568
- illegalZeroCodeAccess.address = addr;
569
- break;
570
- }
571
- }
572
- // [OP-041]
573
- if (illegalZeroCodeAccess) {
574
- throw new types_1.RpcError(`${entityTitle} accesses un-deployed contract address ${illegalZeroCodeAccess?.address} with opcode ${illegalZeroCodeAccess?.opcode}`, types_1.ValidationErrors.OpcodeValidation);
575
- }
576
- let illegalEntryPointCodeAccess = undefined;
577
- for (const addr of Object.keys(currentNumLevel.extCodeAccessInfo)) {
578
- if (addr === entryPointAddress) {
579
- illegalEntryPointCodeAccess =
580
- currentNumLevel.extCodeAccessInfo[addr];
581
- break;
582
- }
583
- }
584
- if (illegalEntryPointCodeAccess) {
585
- throw new types_1.RpcError(`${entityTitle} accesses EntryPoint contract address ${entryPointAddress} with opcode ${illegalEntryPointCodeAccess}`, types_1.ValidationErrors.OpcodeValidation);
586
- }
587
- }
588
- // return list of contract addresses by this UserOp. already known not to contain zero-sized addresses.
589
- const addresses = tracerResults.callsFromEntryPoint.flatMap((level) => Object.keys(level.contractSize));
590
- const storageMap = {};
591
- for (const level of tracerResults.callsFromEntryPoint) {
592
- for (const addr of Object.keys(level.access)) {
593
- storageMap[addr] = storageMap[addr] ?? level.access[addr].reads;
594
- }
595
- }
596
- return [addresses, storageMap];
597
- }
598
- exports.tracerResultParserV07 = tracerResultParserV07;
599
- //# sourceMappingURL=TracerResultParserV07.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TracerResultParserV07.js","sourceRoot":"","sources":["../../../rpc/validation/TracerResultParserV07.ts"],"names":[],"mappings":"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"}