@pimlico/alto 0.0.7 → 0.0.9

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 (268) hide show
  1. package/esm/cli/alto.js +3 -1
  2. package/esm/cli/alto.js.map +1 -1
  3. package/esm/cli/config/bundler.d.ts +320 -272
  4. package/esm/cli/config/bundler.js +26 -7
  5. package/esm/cli/config/bundler.js.map +1 -1
  6. package/esm/cli/config/options.js +65 -10
  7. package/esm/cli/config/options.js.map +1 -1
  8. package/esm/cli/customTransport.js +40 -7
  9. package/esm/cli/customTransport.js.map +1 -1
  10. package/esm/cli/deploySimulationsContract.d.ts +8 -0
  11. package/esm/cli/deploySimulationsContract.js +35 -0
  12. package/esm/cli/deploySimulationsContract.js.map +1 -0
  13. package/esm/cli/handler.d.ts +2 -2
  14. package/esm/cli/handler.js +78 -89
  15. package/esm/cli/handler.js.map +1 -1
  16. package/esm/cli/instrumentation.js +4 -2
  17. package/esm/cli/instrumentation.js.map +1 -1
  18. package/esm/cli/parseArgs.d.ts +8 -0
  19. package/esm/cli/parseArgs.js +21 -0
  20. package/esm/cli/parseArgs.js.map +1 -0
  21. package/esm/cli/setupServer.d.ts +4 -9
  22. package/esm/cli/setupServer.js +100 -82
  23. package/esm/cli/setupServer.js.map +1 -1
  24. package/esm/createConfig.d.ts +15 -0
  25. package/esm/createConfig.js +8 -0
  26. package/esm/createConfig.js.map +1 -0
  27. package/esm/executor/executor.d.ts +48 -14
  28. package/esm/executor/executor.js +262 -139
  29. package/esm/executor/executor.js.map +1 -1
  30. package/esm/executor/executorManager.d.ts +14 -10
  31. package/esm/executor/executorManager.js +36 -39
  32. package/esm/executor/executorManager.js.map +1 -1
  33. package/esm/executor/senderManager.d.ts +11 -6
  34. package/esm/executor/senderManager.js +39 -36
  35. package/esm/executor/senderManager.js.map +1 -1
  36. package/esm/executor/utilityWalletMonitor.d.ts +9 -5
  37. package/esm/executor/utilityWalletMonitor.js +8 -8
  38. package/esm/executor/utilityWalletMonitor.js.map +1 -1
  39. package/esm/executor/utils.d.ts +2 -1
  40. package/esm/executor/utils.js +7 -2
  41. package/esm/executor/utils.js.map +1 -1
  42. package/esm/handlers/arbitrumGasPriceManager.d.ts +11 -0
  43. package/esm/handlers/arbitrumGasPriceManager.js +29 -0
  44. package/esm/handlers/arbitrumGasPriceManager.js.map +1 -0
  45. package/esm/handlers/eventManager.d.ts +7 -3
  46. package/esm/handlers/eventManager.js +24 -16
  47. package/esm/handlers/eventManager.js.map +1 -1
  48. package/esm/handlers/gasPriceManager.d.ts +14 -41
  49. package/esm/handlers/gasPriceManager.js +87 -208
  50. package/esm/handlers/gasPriceManager.js.map +1 -1
  51. package/esm/handlers/mantleGasPriceManager.d.ts +20 -0
  52. package/esm/handlers/mantleGasPriceManager.js +28 -0
  53. package/esm/handlers/mantleGasPriceManager.js.map +1 -0
  54. package/esm/mempool/mempool.d.ts +13 -10
  55. package/esm/mempool/mempool.js +29 -26
  56. package/esm/mempool/mempool.js.map +1 -1
  57. package/esm/mempool/reputationManager.d.ts +4 -6
  58. package/esm/mempool/reputationManager.js +25 -29
  59. package/esm/mempool/reputationManager.js.map +1 -1
  60. package/esm/mempool/store.d.ts +1 -1
  61. package/esm/rpc/estimation/gasEstimationHandler.d.ts +7 -7
  62. package/esm/rpc/estimation/gasEstimationHandler.js +18 -33
  63. package/esm/rpc/estimation/gasEstimationHandler.js.map +1 -1
  64. package/esm/rpc/estimation/gasEstimationsV06.d.ts +7 -7
  65. package/esm/rpc/estimation/gasEstimationsV06.js +90 -48
  66. package/esm/rpc/estimation/gasEstimationsV06.js.map +1 -1
  67. package/esm/rpc/estimation/gasEstimationsV07.d.ts +7 -12
  68. package/esm/rpc/estimation/gasEstimationsV07.js +53 -37
  69. package/esm/rpc/estimation/gasEstimationsV07.js.map +1 -1
  70. package/esm/rpc/nonceQueuer.d.ts +10 -6
  71. package/esm/rpc/nonceQueuer.js +10 -10
  72. package/esm/rpc/nonceQueuer.js.map +1 -1
  73. package/esm/rpc/rpcHandler.d.ts +19 -16
  74. package/esm/rpc/rpcHandler.js +98 -90
  75. package/esm/rpc/rpcHandler.js.map +1 -1
  76. package/esm/rpc/server.d.ts +9 -7
  77. package/esm/rpc/server.js +27 -25
  78. package/esm/rpc/server.js.map +1 -1
  79. package/esm/rpc/validation/SafeValidator.d.ts +11 -6
  80. package/esm/rpc/validation/SafeValidator.js +14 -11
  81. package/esm/rpc/validation/SafeValidator.js.map +1 -1
  82. package/esm/rpc/validation/TracerResultParserV06.d.ts +1 -1
  83. package/esm/rpc/validation/TracerResultParserV06.js.map +1 -1
  84. package/esm/rpc/validation/TracerResultParserV07.d.ts +1 -1
  85. package/esm/rpc/validation/TracerResultParserV07.js +1 -1
  86. package/esm/rpc/validation/TracerResultParserV07.js.map +1 -1
  87. package/esm/rpc/validation/UnsafeValidator.d.ts +11 -12
  88. package/esm/rpc/validation/UnsafeValidator.js +28 -29
  89. package/esm/rpc/validation/UnsafeValidator.js.map +1 -1
  90. package/esm/types/contracts/ArbitrumL1FeeAbi.d.ts +32 -0
  91. package/esm/types/contracts/ArbitrumL1FeeAbi.js +42 -0
  92. package/esm/types/contracts/ArbitrumL1FeeAbi.js.map +1 -0
  93. package/esm/types/contracts/EntryPointSimulationsV6.d.ts +34 -0
  94. package/esm/types/contracts/EntryPointSimulationsV6.js +48 -0
  95. package/esm/types/contracts/EntryPointSimulationsV6.js.map +1 -0
  96. package/esm/types/contracts/{EntryPointSimulations.d.ts → EntryPointSimulationsV7.d.ts} +1 -9
  97. package/esm/types/contracts/{EntryPointSimulations.js → EntryPointSimulationsV7.js} +1 -13
  98. package/esm/types/contracts/EntryPointSimulationsV7.js.map +1 -0
  99. package/esm/types/contracts/MantleBvmGasPriceOracle.d.ts +219 -0
  100. package/esm/types/contracts/MantleBvmGasPriceOracle.js +177 -0
  101. package/esm/types/contracts/MantleBvmGasPriceOracle.js.map +1 -0
  102. package/esm/types/contracts/OpL1FeeAbi.d.ts +114 -0
  103. package/esm/types/contracts/OpL1FeeAbi.js +74 -0
  104. package/esm/types/contracts/OpL1FeeAbi.js.map +1 -0
  105. package/esm/types/contracts/PimlicoEntryPointSimulations.d.ts +1 -1
  106. package/esm/types/contracts/PimlicoEntryPointSimulations.js +1 -1
  107. package/esm/types/contracts/PimlicoEntryPointSimulations.js.map +1 -1
  108. package/esm/types/contracts/index.d.ts +5 -1
  109. package/esm/types/contracts/index.js +5 -1
  110. package/esm/types/contracts/index.js.map +1 -1
  111. package/esm/types/interfaces.d.ts +2 -2
  112. package/esm/types/mempool.d.ts +1 -2
  113. package/esm/types/mempool.js.map +1 -1
  114. package/esm/types/schemas.d.ts +26 -26
  115. package/esm/types/schemas.js +3 -3
  116. package/esm/types/schemas.js.map +1 -1
  117. package/esm/types/utils.d.ts +1 -1
  118. package/esm/utils/bigInt.js +2 -2
  119. package/esm/utils/bigInt.js.map +1 -1
  120. package/esm/utils/helpers.js +1 -1
  121. package/esm/utils/helpers.js.map +1 -1
  122. package/esm/utils/metrics.d.ts +1 -0
  123. package/esm/utils/metrics.js +7 -0
  124. package/esm/utils/metrics.js.map +1 -1
  125. package/esm/utils/rpc-reply.d.ts +1 -1
  126. package/esm/utils/timedQueue.d.ts +12 -0
  127. package/esm/utils/timedQueue.js +51 -0
  128. package/esm/utils/timedQueue.js.map +1 -0
  129. package/esm/utils/userop.d.ts +3 -3
  130. package/esm/utils/userop.js +4 -3
  131. package/esm/utils/userop.js.map +1 -1
  132. package/esm/utils/validation.d.ts +14 -6
  133. package/esm/utils/validation.js +160 -168
  134. package/esm/utils/validation.js.map +1 -1
  135. package/lib/cli/alto.js +2 -0
  136. package/lib/cli/alto.js.map +1 -1
  137. package/lib/cli/config/bundler.d.ts +320 -272
  138. package/lib/cli/config/bundler.js +25 -6
  139. package/lib/cli/config/bundler.js.map +1 -1
  140. package/lib/cli/config/options.js +65 -10
  141. package/lib/cli/config/options.js.map +1 -1
  142. package/lib/cli/customTransport.js +38 -5
  143. package/lib/cli/customTransport.js.map +1 -1
  144. package/lib/cli/deploySimulationsContract.d.ts +8 -0
  145. package/lib/cli/deploySimulationsContract.js +39 -0
  146. package/lib/cli/deploySimulationsContract.js.map +1 -0
  147. package/lib/cli/handler.d.ts +2 -2
  148. package/lib/cli/handler.js +77 -88
  149. package/lib/cli/handler.js.map +1 -1
  150. package/lib/cli/instrumentation.js +4 -2
  151. package/lib/cli/instrumentation.js.map +1 -1
  152. package/lib/cli/parseArgs.d.ts +8 -0
  153. package/lib/cli/parseArgs.js +25 -0
  154. package/lib/cli/parseArgs.js.map +1 -0
  155. package/lib/cli/setupServer.d.ts +4 -9
  156. package/lib/cli/setupServer.js +100 -82
  157. package/lib/cli/setupServer.js.map +1 -1
  158. package/lib/createConfig.d.ts +15 -0
  159. package/lib/createConfig.js +12 -0
  160. package/lib/createConfig.js.map +1 -0
  161. package/lib/executor/executor.d.ts +48 -14
  162. package/lib/executor/executor.js +258 -135
  163. package/lib/executor/executor.js.map +1 -1
  164. package/lib/executor/executorManager.d.ts +14 -10
  165. package/lib/executor/executorManager.js +34 -37
  166. package/lib/executor/executorManager.js.map +1 -1
  167. package/lib/executor/senderManager.d.ts +11 -6
  168. package/lib/executor/senderManager.js +39 -36
  169. package/lib/executor/senderManager.js.map +1 -1
  170. package/lib/executor/utilityWalletMonitor.d.ts +9 -5
  171. package/lib/executor/utilityWalletMonitor.js +8 -8
  172. package/lib/executor/utilityWalletMonitor.js.map +1 -1
  173. package/lib/executor/utils.d.ts +2 -1
  174. package/lib/executor/utils.js +9 -3
  175. package/lib/executor/utils.js.map +1 -1
  176. package/lib/handlers/arbitrumGasPriceManager.d.ts +11 -0
  177. package/lib/handlers/arbitrumGasPriceManager.js +33 -0
  178. package/lib/handlers/arbitrumGasPriceManager.js.map +1 -0
  179. package/lib/handlers/eventManager.d.ts +7 -3
  180. package/lib/handlers/eventManager.js +24 -16
  181. package/lib/handlers/eventManager.js.map +1 -1
  182. package/lib/handlers/gasPriceManager.d.ts +14 -41
  183. package/lib/handlers/gasPriceManager.js +85 -206
  184. package/lib/handlers/gasPriceManager.js.map +1 -1
  185. package/lib/handlers/mantleGasPriceManager.d.ts +20 -0
  186. package/lib/handlers/mantleGasPriceManager.js +32 -0
  187. package/lib/handlers/mantleGasPriceManager.js.map +1 -0
  188. package/lib/mempool/mempool.d.ts +13 -10
  189. package/lib/mempool/mempool.js +28 -25
  190. package/lib/mempool/mempool.js.map +1 -1
  191. package/lib/mempool/reputationManager.d.ts +4 -6
  192. package/lib/mempool/reputationManager.js +25 -29
  193. package/lib/mempool/reputationManager.js.map +1 -1
  194. package/lib/mempool/store.d.ts +1 -1
  195. package/lib/rpc/estimation/gasEstimationHandler.d.ts +7 -7
  196. package/lib/rpc/estimation/gasEstimationHandler.js +18 -33
  197. package/lib/rpc/estimation/gasEstimationHandler.js.map +1 -1
  198. package/lib/rpc/estimation/gasEstimationsV06.d.ts +7 -7
  199. package/lib/rpc/estimation/gasEstimationsV06.js +88 -46
  200. package/lib/rpc/estimation/gasEstimationsV06.js.map +1 -1
  201. package/lib/rpc/estimation/gasEstimationsV07.d.ts +7 -12
  202. package/lib/rpc/estimation/gasEstimationsV07.js +52 -36
  203. package/lib/rpc/estimation/gasEstimationsV07.js.map +1 -1
  204. package/lib/rpc/nonceQueuer.d.ts +10 -6
  205. package/lib/rpc/nonceQueuer.js +9 -9
  206. package/lib/rpc/nonceQueuer.js.map +1 -1
  207. package/lib/rpc/rpcHandler.d.ts +19 -16
  208. package/lib/rpc/rpcHandler.js +97 -89
  209. package/lib/rpc/rpcHandler.js.map +1 -1
  210. package/lib/rpc/server.d.ts +9 -7
  211. package/lib/rpc/server.js +26 -24
  212. package/lib/rpc/server.js.map +1 -1
  213. package/lib/rpc/validation/SafeValidator.d.ts +11 -6
  214. package/lib/rpc/validation/SafeValidator.js +13 -10
  215. package/lib/rpc/validation/SafeValidator.js.map +1 -1
  216. package/lib/rpc/validation/TracerResultParserV06.d.ts +1 -1
  217. package/lib/rpc/validation/TracerResultParserV07.d.ts +1 -1
  218. package/lib/rpc/validation/TracerResultParserV07.js +1 -1
  219. package/lib/rpc/validation/TracerResultParserV07.js.map +1 -1
  220. package/lib/rpc/validation/UnsafeValidator.d.ts +11 -12
  221. package/lib/rpc/validation/UnsafeValidator.js +28 -29
  222. package/lib/rpc/validation/UnsafeValidator.js.map +1 -1
  223. package/lib/types/contracts/ArbitrumL1FeeAbi.d.ts +32 -0
  224. package/lib/types/contracts/ArbitrumL1FeeAbi.js +45 -0
  225. package/lib/types/contracts/ArbitrumL1FeeAbi.js.map +1 -0
  226. package/lib/types/contracts/EntryPointSimulationsV6.d.ts +34 -0
  227. package/lib/types/contracts/EntryPointSimulationsV6.js +51 -0
  228. package/lib/types/contracts/EntryPointSimulationsV6.js.map +1 -0
  229. package/lib/types/contracts/{EntryPointSimulations.d.ts → EntryPointSimulationsV7.d.ts} +1 -9
  230. package/lib/types/contracts/{EntryPointSimulations.js → EntryPointSimulationsV7.js} +2 -14
  231. package/lib/types/contracts/EntryPointSimulationsV7.js.map +1 -0
  232. package/lib/types/contracts/MantleBvmGasPriceOracle.d.ts +219 -0
  233. package/lib/types/contracts/MantleBvmGasPriceOracle.js +180 -0
  234. package/lib/types/contracts/MantleBvmGasPriceOracle.js.map +1 -0
  235. package/lib/types/contracts/OpL1FeeAbi.d.ts +114 -0
  236. package/lib/types/contracts/OpL1FeeAbi.js +77 -0
  237. package/lib/types/contracts/OpL1FeeAbi.js.map +1 -0
  238. package/lib/types/contracts/PimlicoEntryPointSimulations.d.ts +1 -1
  239. package/lib/types/contracts/PimlicoEntryPointSimulations.js +1 -1
  240. package/lib/types/contracts/PimlicoEntryPointSimulations.js.map +1 -1
  241. package/lib/types/contracts/index.d.ts +5 -1
  242. package/lib/types/contracts/index.js +5 -1
  243. package/lib/types/contracts/index.js.map +1 -1
  244. package/lib/types/interfaces.d.ts +2 -2
  245. package/lib/types/mempool.d.ts +1 -2
  246. package/lib/types/mempool.js.map +1 -1
  247. package/lib/types/schemas.d.ts +26 -26
  248. package/lib/types/schemas.js +3 -3
  249. package/lib/types/schemas.js.map +1 -1
  250. package/lib/types/utils.d.ts +1 -1
  251. package/lib/utils/bigInt.js +2 -2
  252. package/lib/utils/bigInt.js.map +1 -1
  253. package/lib/utils/metrics.d.ts +1 -0
  254. package/lib/utils/metrics.js +7 -0
  255. package/lib/utils/metrics.js.map +1 -1
  256. package/lib/utils/rpc-reply.d.ts +1 -1
  257. package/lib/utils/timedQueue.d.ts +12 -0
  258. package/lib/utils/timedQueue.js +55 -0
  259. package/lib/utils/timedQueue.js.map +1 -0
  260. package/lib/utils/userop.d.ts +3 -3
  261. package/lib/utils/userop.js +3 -2
  262. package/lib/utils/userop.js.map +1 -1
  263. package/lib/utils/validation.d.ts +14 -6
  264. package/lib/utils/validation.js +164 -168
  265. package/lib/utils/validation.js.map +1 -1
  266. package/package.json +1 -1
  267. package/esm/types/contracts/EntryPointSimulations.js.map +0 -1
  268. package/lib/types/contracts/EntryPointSimulations.js.map +0 -1
@@ -1,58 +1,52 @@
1
1
  import { SenderManager } from "../executor/index.js";
2
+ import { GasPriceManager } from "../handlers/index.js";
2
3
  import { createMetrics, initDebugLogger, initProductionLogger } from "../utils/index.js";
3
4
  import { Registry } from "prom-client";
4
- import { createPublicClient, createWalletClient, http, formatEther } from "viem";
5
- import { fromZodError } from "zod-validation-error";
6
- import { optionArgsSchema } from "./config/index.js";
5
+ import { createPublicClient, createWalletClient, formatEther, fallback, publicActions } from "viem";
6
+ import { UtilityWalletMonitor } from "../executor/utilityWalletMonitor.js";
7
7
  import { customTransport } from "./customTransport.js";
8
8
  import { setupServer } from "./setupServer.js";
9
- import { PimlicoEntryPointSimulationsDeployBytecode } from "../types/contracts/index.js";
10
- import { UtilityWalletMonitor } from "../executor/utilityWalletMonitor.js";
11
- import { GasPriceManager } from "../handlers/index.js";
12
- const parseArgs = (args) => {
13
- // validate every arg, make type safe so if i add a new arg i have to validate it
14
- const parsing = optionArgsSchema.safeParse(args);
15
- if (!parsing.success) {
16
- const error = fromZodError(parsing.error);
17
- throw new Error(error.message);
18
- }
19
- return parsing.data;
20
- };
21
- const preFlightChecks = async (publicClient, parsedArgs) => {
22
- for (const entrypoint of parsedArgs.entrypoints) {
23
- const entryPointCode = await publicClient.getBytecode({
9
+ import { createConfig } from "../createConfig.js";
10
+ import { parseArgs } from "./parseArgs.js";
11
+ import { deploySimulationsContract } from "./deploySimulationsContract.js";
12
+ const preFlightChecks = async (config) => {
13
+ for (const entrypoint of config.entrypoints) {
14
+ const entryPointCode = await config.publicClient.getCode({
24
15
  address: entrypoint
25
16
  });
26
- if (entryPointCode === "0x") {
17
+ if (entryPointCode === undefined || entryPointCode === "0x") {
27
18
  throw new Error(`entry point ${entrypoint} does not exist`);
28
19
  }
29
20
  }
30
- if (parsedArgs["entrypoint-simulation-contract"]) {
31
- const simulations = parsedArgs["entrypoint-simulation-contract"];
32
- const simulationsCode = await publicClient.getBytecode({
21
+ if (config.entrypointSimulationContract) {
22
+ const simulations = config.entrypointSimulationContract;
23
+ const simulationsCode = await config.publicClient.getCode({
33
24
  address: simulations
34
25
  });
35
26
  if (simulationsCode === undefined || simulationsCode === "0x") {
36
27
  throw new Error(`EntryPointSimulations contract ${simulations} does not exist`);
37
28
  }
38
29
  }
39
- };
40
- export async function bundlerHandler(args) {
41
- const parsedArgs = parseArgs(args);
42
- let logger;
43
- if (parsedArgs.json) {
44
- logger = initProductionLogger(parsedArgs["log-level"]);
45
- }
46
- else {
47
- logger = initDebugLogger(parsedArgs["log-level"]);
30
+ if (config.refillHelperContract) {
31
+ const refillHelper = config.refillHelperContract;
32
+ const refillHelperCode = await config.publicClient.getCode({
33
+ address: refillHelper
34
+ });
35
+ if (refillHelperCode === undefined || refillHelperCode === "0x") {
36
+ throw new Error(`RefillHelper contract ${refillHelper} does not exist`);
37
+ }
48
38
  }
49
- const rootLogger = logger.child({ module: "root" }, { level: parsedArgs["log-level"] });
39
+ };
40
+ export async function bundlerHandler(args_) {
41
+ const args = parseArgs(args_);
42
+ const logger = args.json
43
+ ? initProductionLogger(args.logLevel)
44
+ : initDebugLogger(args.logLevel);
50
45
  const getChainId = async () => {
51
46
  const client = createPublicClient({
52
- transport: customTransport(parsedArgs["rpc-url"], {
47
+ transport: customTransport(args.rpcUrl, {
53
48
  logger: logger.child({ module: "public_client" }, {
54
- level: parsedArgs["public-client-log-level"] ||
55
- parsedArgs["log-level"]
49
+ level: args.publicClientLogLevel || args.logLevel
56
50
  })
57
51
  })
58
52
  });
@@ -61,53 +55,57 @@ export async function bundlerHandler(args) {
61
55
  const chainId = await getChainId();
62
56
  const chain = {
63
57
  id: chainId,
64
- name: args["network-name"],
58
+ name: args.networkName,
65
59
  nativeCurrency: {
66
60
  name: "ETH",
67
61
  symbol: "ETH",
68
62
  decimals: 18
69
63
  },
70
64
  rpcUrls: {
71
- default: { http: [args["rpc-url"]] },
72
- public: { http: [args["rpc-url"]] }
65
+ default: { http: [args.rpcUrl] },
66
+ public: { http: [args.rpcUrl] }
73
67
  }
74
68
  };
75
- const client = createPublicClient({
76
- transport: customTransport(args["rpc-url"], {
69
+ let publicClient = createPublicClient({
70
+ transport: customTransport(args.rpcUrl, {
77
71
  logger: logger.child({ module: "public_client" }, {
78
- level: parsedArgs["public-client-log-level"] ||
79
- parsedArgs["log-level"]
72
+ level: args.publicClientLogLevel || args.logLevel
80
73
  })
81
74
  }),
82
75
  chain
83
76
  });
77
+ if (args.chainType === "skale") {
78
+ // SKALE only allows white listed addresses to deploy contracts.
79
+ publicClient = publicClient
80
+ .extend((client) => ({
81
+ async call(args) {
82
+ args.account = "0x4337000c2828F5260d8921fD25829F606b9E8680";
83
+ return await client.call(args);
84
+ }
85
+ }))
86
+ .extend(publicActions);
87
+ }
88
+ const createWalletTransport = (url) => customTransport(url, {
89
+ logger: logger.child({ module: "wallet_client" }, { level: args.walletClientLogLevel || args.logLevel })
90
+ });
91
+ const walletClient = createWalletClient({
92
+ transport: args.sendTransactionRpcUrl
93
+ ? fallback([
94
+ createWalletTransport(args.sendTransactionRpcUrl),
95
+ createWalletTransport(args.rpcUrl)
96
+ ], { rank: false })
97
+ : createWalletTransport(args.rpcUrl),
98
+ chain
99
+ });
84
100
  // if flag is set, use utility wallet to deploy the simulations contract
85
- if (parsedArgs["deploy-simulations-contract"]) {
86
- if (!parsedArgs["utility-private-key"]) {
87
- throw new Error("Cannot deploy entryPoint simulations without utility-private-key");
88
- }
89
- const walletClient = createWalletClient({
90
- transport: http(args["rpc-url"]),
91
- account: parsedArgs["utility-private-key"]
92
- });
93
- const deployHash = await walletClient.deployContract({
94
- chain,
95
- abi: [],
96
- bytecode: PimlicoEntryPointSimulationsDeployBytecode
101
+ if (args.deploySimulationsContract) {
102
+ args.entrypointSimulationContract = await deploySimulationsContract({
103
+ args,
104
+ publicClient
97
105
  });
98
- const receipt = await client.getTransactionReceipt({
99
- hash: deployHash
100
- });
101
- const simulationsContract = receipt.contractAddress;
102
- if (simulationsContract === null) {
103
- throw new Error("Failed to deploy simulationsContract");
104
- }
105
- parsedArgs["entrypoint-simulation-contract"] = simulationsContract;
106
106
  }
107
- const gasPriceManager = new GasPriceManager(chain, client, parsedArgs["legacy-transactions"], logger.child({ module: "gas_price_manager" }, {
108
- level: parsedArgs["public-client-log-level"] ||
109
- parsedArgs["log-level"]
110
- }), parsedArgs["gas-price-bump"], parsedArgs["gas-price-expiry"], parsedArgs["gas-price-refresh-interval"], parsedArgs["chain-type"]);
107
+ const config = createConfig({ ...args, logger, publicClient, walletClient });
108
+ const gasPriceManager = new GasPriceManager(config);
111
109
  await gasPriceManager.init();
112
110
  const registry = new Registry();
113
111
  registry.setDefaultLabels({
@@ -115,33 +113,24 @@ export async function bundlerHandler(args) {
115
113
  chainId
116
114
  });
117
115
  const metrics = createMetrics(registry);
118
- await preFlightChecks(client, parsedArgs);
119
- const walletClient = createWalletClient({
120
- transport: customTransport(parsedArgs["send-transaction-rpc-url"] ?? args["rpc-url"], {
121
- logger: logger.child({ module: "wallet_client" }, {
122
- level: parsedArgs["wallet-client-log-level"] ||
123
- parsedArgs["log-level"]
124
- })
125
- }),
126
- chain
116
+ await preFlightChecks(config);
117
+ const senderManager = new SenderManager({
118
+ config,
119
+ metrics,
120
+ gasPriceManager
127
121
  });
128
- const senderManager = new SenderManager(parsedArgs["executor-private-keys"], parsedArgs["utility-private-key"], logger.child({ module: "executor" }, {
129
- level: parsedArgs["executor-log-level"] || parsedArgs["log-level"]
130
- }), metrics, parsedArgs["legacy-transactions"], gasPriceManager, parsedArgs["max-executors"]);
131
- const utilityWalletAddress = parsedArgs["utility-private-key"]?.address;
132
- if (utilityWalletAddress && parsedArgs["utility-wallet-monitor"]) {
133
- const utilityWalletMonitor = new UtilityWalletMonitor(client, parsedArgs["utility-wallet-monitor-interval"], utilityWalletAddress, metrics, logger.child({ module: "utility_wallet_monitor" }, {
134
- level: parsedArgs["log-level"]
135
- }));
122
+ const utilityWalletAddress = config.utilityPrivateKey?.address;
123
+ if (utilityWalletAddress && config.utilityWalletMonitor) {
124
+ const utilityWalletMonitor = new UtilityWalletMonitor({
125
+ config,
126
+ metrics,
127
+ utilityWalletAddress
128
+ });
136
129
  await utilityWalletMonitor.start();
137
130
  }
138
- metrics.executorWalletsMinBalance.set(Number.parseFloat(formatEther(parsedArgs["min-executor-balance"] || 0n)));
131
+ metrics.executorWalletsMinBalance.set(Number.parseFloat(formatEther(config.minExecutorBalance || 0n)));
139
132
  await setupServer({
140
- client,
141
- walletClient,
142
- parsedArgs,
143
- logger,
144
- rootLogger,
133
+ config,
145
134
  registry,
146
135
  metrics,
147
136
  senderManager,
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../cli/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../cli/handler.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
3
3
  import { FastifyInstrumentation } from "@opentelemetry/instrumentation-fastify";
4
4
  import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
5
5
  import { PinoInstrumentation } from "@opentelemetry/instrumentation-pino";
6
+ import { UndiciInstrumentation } from "@opentelemetry/instrumentation-undici";
6
7
  import { NodeSDK } from "@opentelemetry/sdk-node";
7
8
  import { ParentBasedSampler, SamplingDecision } from "@opentelemetry/sdk-trace-base";
8
9
  import { SemanticAttributes } from "@opentelemetry/semantic-conventions";
9
- import { UndiciInstrumentation } from "@opentelemetry/instrumentation-undici";
10
10
  class CustomSampler {
11
11
  shouldSample(_context, _traceId, _spanName, spanKind, attributes) {
12
12
  const ignoredRoutes = ["/metrics", "/health"];
@@ -29,7 +29,9 @@ const sdk = new NodeSDK({
29
29
  new HttpInstrumentation({
30
30
  requireParentforOutgoingSpans: true
31
31
  }),
32
- new UndiciInstrumentation(),
32
+ new UndiciInstrumentation({
33
+ requireParentforSpans: true
34
+ }),
33
35
  new FastifyInstrumentation(),
34
36
  new PinoInstrumentation()
35
37
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../cli/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EACH,kBAAkB,EAElB,gBAAgB,EACnB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAE7E,MAAM,aAAa;IACf,YAAY,CACR,QAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,QAAkB,EAClB,UAAsB;QAEtB,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAE7C,MAAM,UAAU,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;QAE7D,IACI,QAAQ,KAAK,QAAQ,CAAC,MAAM;YAC5B,UAAU;YACV,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAC/C,CAAC;YACC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAA;QACpD,CAAC;QACD,WAAW;QACX,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,CAAA;IAC5D,CAAC;IACD,QAAQ;QACJ,OAAO,eAAe,CAAA;IAC1B,CAAC;CACJ;AAED,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC;IACpB,aAAa,EAAE,IAAI,iBAAiB,EAAE;IACtC,gBAAgB,EAAE;QACd,IAAI,mBAAmB,CAAC;YACpB,6BAA6B,EAAE,IAAI;SACtC,CAAC;QACF,IAAI,qBAAqB,EAAE;QAC3B,IAAI,sBAAsB,EAAE;QAC5B,IAAI,mBAAmB,EAAE;KAC5B;IACD,OAAO,EAAE,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,EAAE,CAAC;CACjE,CAAC,CAAA;AAEF,GAAG,CAAC,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../cli/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EACH,kBAAkB,EAElB,gBAAgB,EACnB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE,MAAM,aAAa;IACf,YAAY,CACR,QAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,QAAkB,EAClB,UAAsB;QAEtB,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAE7C,MAAM,UAAU,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;QAE7D,IACI,QAAQ,KAAK,QAAQ,CAAC,MAAM;YAC5B,UAAU;YACV,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAC/C,CAAC;YACC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAA;QACpD,CAAC;QACD,WAAW;QACX,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,CAAA;IAC5D,CAAC;IACD,QAAQ;QACJ,OAAO,eAAe,CAAA;IAC1B,CAAC;CACJ;AAED,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC;IACpB,aAAa,EAAE,IAAI,iBAAiB,EAAE;IACtC,gBAAgB,EAAE;QACd,IAAI,mBAAmB,CAAC;YACpB,6BAA6B,EAAE,IAAI;SACtC,CAAC;QACF,IAAI,qBAAqB,CAAC;YACtB,qBAAqB,EAAE,IAAI;SAC9B,CAAC;QACF,IAAI,sBAAsB,EAAE;QAC5B,IAAI,mBAAmB,EAAE;KAC5B;IACD,OAAO,EAAE,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,EAAE,CAAC;CACjE,CAAC,CAAA;AAEF,GAAG,CAAC,KAAK,EAAE,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { type IOptions, type IOptionsInput } from "./index.js";
2
+ type CamelCase<S extends string> = S extends `${infer P1}-${infer P2}${infer P3}` ? `${P1}${Uppercase<P2>}${CamelCase<P3>}` : S extends `${infer P1}_${infer P2}${infer P3}` ? `${P1}${Uppercase<P2>}${CamelCase<P3>}` : S;
3
+ export type CamelCasedProperties<T> = {
4
+ [K in keyof T as CamelCase<Extract<K, string>>]: T[K];
5
+ };
6
+ export declare const parseArgs: (args: IOptionsInput) => CamelCasedProperties<IOptions>;
7
+ export {};
8
+ //# sourceMappingURL=parseArgs.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { optionArgsSchema } from "./index.js";
2
+ import { fromZodError } from "zod-validation-error";
3
+ function toCamelCase(str) {
4
+ return str.replace(/([-_][a-z])/g, (group) => group.toUpperCase().replace("-", "").replace("_", ""));
5
+ }
6
+ function convertKeysToCamelCase(obj) {
7
+ return Object.keys(obj).reduce((acc, key) => {
8
+ const camelCaseKey = toCamelCase(key);
9
+ acc[camelCaseKey] = obj[key];
10
+ return acc;
11
+ }, {});
12
+ }
13
+ export const parseArgs = (args) => {
14
+ const parsing = optionArgsSchema.safeParse(args);
15
+ if (!parsing.success) {
16
+ const error = fromZodError(parsing.error);
17
+ throw new Error(error.message);
18
+ }
19
+ return convertKeysToCamelCase(parsing.data);
20
+ };
21
+ //# sourceMappingURL=parseArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArgs.js","sourceRoot":"","sources":["../../cli/parseArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,gBAAgB,EAAsB,MAAM,WAAW,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAanD,SAAS,WAAW,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CACzC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CACxD,CAAA;AACL,CAAC;AAED,SAAS,sBAAsB,CAC3B,GAAM;IAEN,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACT,MAAM,YAAY,GAAG,WAAW,CAC5B,GAAG,CAC2B,CACjC;QAAC,GAAW,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,GAAc,CAAC,CAAA;QAEjD,OAAO,GAAG,CAAA;IACd,CAAC,EACD,EAA6B,CAChC,CAAA;AACL,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CACrB,IAAmB,EACW,EAAE;IAChC,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAChD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACzC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,OAAO,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC,CAAA"}
@@ -1,15 +1,10 @@
1
1
  import type { SenderManager } from "../executor/index.js";
2
2
  import { type GasPriceManager } from "../handlers/index.js";
3
- import type { Logger, Metrics } from "../utils/index.js";
3
+ import type { Metrics } from "../utils/index.js";
4
4
  import type { Registry } from "prom-client";
5
- import type { Chain, PublicClient, Transport, WalletClient } from "viem";
6
- import type { IOptions } from "./config/index.js";
7
- export declare const setupServer: ({ client, walletClient, parsedArgs, logger, rootLogger, registry, metrics, senderManager, gasPriceManager }: {
8
- client: PublicClient<Transport, Chain>;
9
- walletClient: WalletClient<Transport, Chain>;
10
- parsedArgs: IOptions;
11
- logger: Logger;
12
- rootLogger: Logger;
5
+ import type { AltoConfig } from "../createConfig.js";
6
+ export declare const setupServer: ({ config, registry, metrics, senderManager, gasPriceManager }: {
7
+ config: AltoConfig;
13
8
  registry: Registry;
14
9
  metrics: Metrics;
15
10
  senderManager: SenderManager;
@@ -2,141 +2,161 @@ import { Executor, ExecutorManager } from "../executor/index.js";
2
2
  import { CompressionHandler, EventManager } from "../handlers/index.js";
3
3
  import { MemoryMempool, Monitor, NullReputationManager, ReputationManager } from "../mempool/index.js";
4
4
  import { NonceQueuer, RpcHandler, SafeValidator, Server, UnsafeValidator } from "../rpc/index.js";
5
- const getReputationManager = ({ client, parsedArgs, logger }) => {
6
- if (parsedArgs["safe-mode"]) {
7
- return new ReputationManager(client, parsedArgs.entrypoints, BigInt(parsedArgs["min-entity-stake"]), BigInt(parsedArgs["min-entity-unstake-delay"]), logger.child({ module: "reputation_manager" }, {
8
- level: parsedArgs["reputation-manager-log-level"] ||
9
- parsedArgs["log-level"]
10
- }));
5
+ const getReputationManager = (config) => {
6
+ if (config.safeMode) {
7
+ return new ReputationManager(config);
11
8
  }
12
9
  return new NullReputationManager();
13
10
  };
14
- const getValidator = ({ client, parsedArgs, logger, senderManager, metrics, gasPriceManager }) => {
15
- const utilityWalletAddress = parsedArgs["utility-private-key"]?.address ||
16
- "0x4337000c2828F5260d8921fD25829F606b9E8680";
17
- if (parsedArgs["safe-mode"]) {
18
- return new SafeValidator(client, senderManager, logger.child({ module: "rpc" }, {
19
- level: parsedArgs["rpc-log-level"] || parsedArgs["log-level"]
20
- }), metrics, gasPriceManager, parsedArgs["chain-type"], parsedArgs["block-tag-support"], utilityWalletAddress, parsedArgs["binary-search-tolerance-delta"], parsedArgs["binary-search-gas-allowance"], parsedArgs["entrypoint-simulation-contract"], parsedArgs["fixed-gas-limit-for-estimation"], parsedArgs.tenderly, parsedArgs["balance-override"]);
11
+ const getValidator = ({ config, senderManager, metrics, gasPriceManager }) => {
12
+ if (config.safeMode) {
13
+ return new SafeValidator({
14
+ config,
15
+ senderManager,
16
+ metrics,
17
+ gasPriceManager
18
+ });
21
19
  }
22
- return new UnsafeValidator(client, logger.child({ module: "rpc" }, { level: parsedArgs["rpc-log-level"] || parsedArgs["log-level"] }), metrics, gasPriceManager, parsedArgs["chain-type"], parsedArgs["block-tag-support"], utilityWalletAddress, parsedArgs["binary-search-tolerance-delta"], parsedArgs["binary-search-gas-allowance"], parsedArgs["entrypoint-simulation-contract"], parsedArgs["fixed-gas-limit-for-estimation"], parsedArgs.tenderly, parsedArgs["balance-override"], parsedArgs["expiration-check"]);
20
+ return new UnsafeValidator({
21
+ config,
22
+ metrics,
23
+ gasPriceManager
24
+ });
23
25
  };
24
26
  const getMonitor = () => {
25
27
  return new Monitor();
26
28
  };
27
- const getMempool = ({ monitor, reputationManager, validator, client, parsedArgs, logger, metrics, eventManager }) => {
28
- return new MemoryMempool(monitor, reputationManager, validator, client, parsedArgs["safe-mode"], logger.child({ module: "mempool" }, {
29
- level: parsedArgs["mempool-log-level"] || parsedArgs["log-level"]
30
- }), metrics, parsedArgs["mempool-max-parallel-ops"], parsedArgs["mempool-max-queued-ops"], parsedArgs["enforce-unique-senders-per-bundle"], eventManager);
29
+ const getMempool = ({ config, monitor, reputationManager, validator, metrics, eventManager }) => {
30
+ return new MemoryMempool({
31
+ config,
32
+ monitor,
33
+ reputationManager,
34
+ validator,
35
+ metrics,
36
+ eventManager
37
+ });
31
38
  };
32
- const getEventManager = ({ endpoint, chainId, logger, metrics }) => {
33
- return new EventManager(endpoint, chainId, logger, metrics);
39
+ const getEventManager = ({ config, metrics }) => {
40
+ return new EventManager({ config, metrics });
34
41
  };
35
- const getCompressionHandler = async ({ client, parsedArgs }) => {
42
+ const getCompressionHandler = async (config) => {
36
43
  let compressionHandler = null;
37
- if (parsedArgs["bundle-bulker-address"] !== undefined &&
38
- parsedArgs["per-op-inflator-address"] !== undefined) {
39
- compressionHandler = await CompressionHandler.createAsync(parsedArgs["bundle-bulker-address"], parsedArgs["per-op-inflator-address"], client);
44
+ if (config.bundleBulkerAddress !== undefined &&
45
+ config.perOpInflatorAddress !== undefined) {
46
+ compressionHandler = await CompressionHandler.createAsync(config.bundleBulkerAddress, config.perOpInflatorAddress, config.publicClient);
40
47
  }
41
48
  return compressionHandler;
42
49
  };
43
- const getExecutor = ({ client, walletClient, senderManager, reputationManager, parsedArgs, logger, metrics, compressionHandler, gasPriceManager, eventManager }) => {
44
- return new Executor(client, walletClient, senderManager, reputationManager, parsedArgs.entrypoints, logger.child({ module: "executor" }, {
45
- level: parsedArgs["executor-log-level"] || parsedArgs["log-level"]
46
- }), metrics, compressionHandler, gasPriceManager, eventManager, !parsedArgs.tenderly, parsedArgs["legacy-transactions"], parsedArgs["fixed-gas-limit-for-estimation"], parsedArgs["block-tag-support"], parsedArgs["local-gas-limit-calculation"], parsedArgs["no-profit-bundling"]);
50
+ const getExecutor = ({ mempool, config, senderManager, reputationManager, metrics, compressionHandler, gasPriceManager, eventManager }) => {
51
+ return new Executor({
52
+ mempool,
53
+ config,
54
+ senderManager,
55
+ reputationManager,
56
+ metrics,
57
+ compressionHandler,
58
+ gasPriceManager,
59
+ eventManager
60
+ });
47
61
  };
48
- const getExecutorManager = ({ executor, mempool, monitor, reputationManager, client, parsedArgs, logger, metrics, gasPriceManager, eventManager }) => {
49
- return new ExecutorManager(executor, parsedArgs.entrypoints, mempool, monitor, reputationManager, client, parsedArgs["polling-interval"], logger.child({ module: "executor" }, {
50
- level: parsedArgs["executor-log-level"] || parsedArgs["log-level"]
51
- }), metrics, parsedArgs["bundle-mode"], parsedArgs["max-bundle-wait"], parsedArgs["max-gas-per-bundle"], gasPriceManager, eventManager, parsedArgs["aa95-gas-multiplier"], parsedArgs["max-block-range"]);
62
+ const getExecutorManager = ({ config, executor, mempool, monitor, reputationManager, metrics, gasPriceManager, eventManager }) => {
63
+ return new ExecutorManager({
64
+ config,
65
+ executor,
66
+ mempool,
67
+ monitor,
68
+ reputationManager,
69
+ metrics,
70
+ gasPriceManager,
71
+ eventManager
72
+ });
52
73
  };
53
- const getNonceQueuer = ({ mempool, client, parsedArgs, logger, eventManager }) => {
54
- return new NonceQueuer(mempool, client, logger.child({ module: "nonce_queuer" }, {
55
- level: parsedArgs["nonce-queuer-log-level"] ||
56
- parsedArgs["log-level"]
57
- }), parsedArgs["block-tag-support"], eventManager);
74
+ const getNonceQueuer = ({ config, mempool, eventManager }) => {
75
+ return new NonceQueuer({
76
+ config,
77
+ mempool,
78
+ eventManager
79
+ });
58
80
  };
59
- const getRpcHandler = ({ client, validator, mempool, executor, monitor, nonceQueuer, executorManager, reputationManager, parsedArgs, logger, metrics, compressionHandler, gasPriceManager, eventManager }) => {
60
- return new RpcHandler(parsedArgs.entrypoints, client, validator, mempool, executor, monitor, nonceQueuer, executorManager, reputationManager, parsedArgs.tenderly ?? false, parsedArgs["max-block-range"], logger.child({ module: "rpc" }, { level: parsedArgs["rpc-log-level"] || parsedArgs["log-level"] }), metrics, parsedArgs["enable-debug-endpoints"], compressionHandler, parsedArgs["legacy-transactions"], gasPriceManager, parsedArgs["gas-price-multipliers"], parsedArgs["chain-type"], parsedArgs["paymaster-gas-limit-multiplier"], eventManager, parsedArgs["enable-instant-bundling-endpoint"], parsedArgs["dangerous-skip-user-operation-validation"]);
81
+ const getRpcHandler = ({ config, validator, mempool, executor, monitor, nonceQueuer, executorManager, reputationManager, metrics, compressionHandler, gasPriceManager, eventManager }) => {
82
+ return new RpcHandler({
83
+ config,
84
+ validator,
85
+ mempool,
86
+ executor,
87
+ monitor,
88
+ nonceQueuer,
89
+ executorManager,
90
+ reputationManager,
91
+ metrics,
92
+ compressionHandler,
93
+ gasPriceManager,
94
+ eventManager
95
+ });
61
96
  };
62
- const getServer = ({ rpcEndpoint, parsedArgs, logger, registry, metrics }) => {
63
- return new Server(rpcEndpoint, parsedArgs["api-version"], parsedArgs["default-api-version"], parsedArgs.port, parsedArgs.timeout, parsedArgs["websocket-max-payload-size"], parsedArgs.websocket, logger.child({ module: "rpc" }, { level: parsedArgs["rpc-log-level"] || parsedArgs["log-level"] }), registry, metrics, parsedArgs["rpc-methods"]);
97
+ const getServer = ({ config, rpcEndpoint, registry, metrics }) => {
98
+ return new Server({
99
+ config,
100
+ rpcEndpoint,
101
+ registry,
102
+ metrics
103
+ });
64
104
  };
65
- export const setupServer = async ({ client, walletClient, parsedArgs, logger, rootLogger, registry, metrics, senderManager, gasPriceManager }) => {
105
+ export const setupServer = async ({ config, registry, metrics, senderManager, gasPriceManager }) => {
66
106
  const validator = getValidator({
67
- client,
68
- logger,
69
- parsedArgs,
107
+ config,
70
108
  senderManager,
71
109
  metrics,
72
- gasPriceManager,
73
- walletClient
74
- });
75
- const reputationManager = getReputationManager({
76
- client,
77
- parsedArgs,
78
- logger
79
- });
80
- const compressionHandler = await getCompressionHandler({
81
- client,
82
- parsedArgs
110
+ gasPriceManager
83
111
  });
112
+ const reputationManager = getReputationManager(config);
113
+ const compressionHandler = await getCompressionHandler(config);
84
114
  const eventManager = getEventManager({
85
- endpoint: parsedArgs["redis-queue-endpoint"],
86
- chainId: client.chain.id,
87
- logger,
115
+ config,
88
116
  metrics
89
117
  });
90
- if (parsedArgs["refilling-wallets"]) {
91
- await senderManager.validateAndRefillWallets(client, walletClient, parsedArgs["min-executor-balance"]);
118
+ if (config.refillingWallets) {
119
+ await senderManager.validateAndRefillWallets();
92
120
  setInterval(async () => {
93
- await senderManager.validateAndRefillWallets(client, walletClient, parsedArgs["min-executor-balance"]);
94
- }, parsedArgs["executor-refill-interval"] * 1000);
121
+ await senderManager.validateAndRefillWallets();
122
+ }, config.executorRefillInterval * 1000);
95
123
  }
96
124
  const monitor = getMonitor();
97
125
  const mempool = getMempool({
126
+ config,
98
127
  monitor,
99
128
  reputationManager,
100
129
  validator,
101
- client,
102
- parsedArgs,
103
- logger,
104
130
  metrics,
105
131
  eventManager
106
132
  });
107
133
  const executor = getExecutor({
108
- client,
109
- walletClient,
134
+ mempool,
135
+ config,
110
136
  senderManager,
111
137
  reputationManager,
112
- parsedArgs,
113
- logger,
114
138
  metrics,
115
139
  compressionHandler,
116
140
  gasPriceManager,
117
141
  eventManager
118
142
  });
119
143
  const executorManager = getExecutorManager({
144
+ config,
120
145
  executor,
121
146
  mempool,
122
147
  monitor,
123
148
  reputationManager,
124
- client,
125
- parsedArgs,
126
- logger,
127
149
  metrics,
128
150
  gasPriceManager,
129
151
  eventManager
130
152
  });
131
153
  const nonceQueuer = getNonceQueuer({
154
+ config,
132
155
  mempool,
133
- client,
134
- parsedArgs,
135
- logger,
136
156
  eventManager
137
157
  });
138
158
  const rpcEndpoint = getRpcHandler({
139
- client,
159
+ config,
140
160
  validator,
141
161
  mempool,
142
162
  executor,
@@ -144,21 +164,19 @@ export const setupServer = async ({ client, walletClient, parsedArgs, logger, ro
144
164
  nonceQueuer,
145
165
  executorManager,
146
166
  reputationManager,
147
- parsedArgs,
148
- logger,
149
167
  metrics,
150
168
  compressionHandler,
151
169
  gasPriceManager,
152
170
  eventManager
153
171
  });
154
- if (parsedArgs["flush-stuck-transactions-during-startup"]) {
172
+ if (config.flushStuckTransactionsDuringStartup) {
155
173
  executor.flushStuckTransactions();
156
174
  }
175
+ const rootLogger = config.getLogger({ module: "root" }, { level: config.logLevel });
157
176
  rootLogger.info(`Initialized ${senderManager.wallets.length} executor wallets`);
158
177
  const server = getServer({
178
+ config,
159
179
  rpcEndpoint,
160
- parsedArgs,
161
- logger,
162
180
  registry,
163
181
  metrics
164
182
  });