@aztec/aztec 0.0.0-test.1 → 0.0.1-commit.5476d83

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 (139) hide show
  1. package/README.md +1 -1
  2. package/dest/bin/index.d.ts +1 -1
  3. package/dest/bin/index.js +20 -12
  4. package/dest/cli/aztec_start_action.d.ts +1 -1
  5. package/dest/cli/aztec_start_action.d.ts.map +1 -1
  6. package/dest/cli/aztec_start_action.js +36 -37
  7. package/dest/cli/aztec_start_options.d.ts +5 -3
  8. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  9. package/dest/cli/aztec_start_options.js +142 -210
  10. package/dest/cli/cli.d.ts +1 -1
  11. package/dest/cli/cli.d.ts.map +1 -1
  12. package/dest/cli/cli.js +50 -1
  13. package/dest/cli/cmds/start_archiver.d.ts +1 -1
  14. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  15. package/dest/cli/cmds/start_archiver.js +18 -10
  16. package/dest/cli/cmds/start_blob_sink.d.ts +1 -1
  17. package/dest/cli/cmds/start_blob_sink.d.ts.map +1 -1
  18. package/dest/cli/cmds/start_blob_sink.js +17 -1
  19. package/dest/cli/cmds/start_bot.d.ts +4 -7
  20. package/dest/cli/cmds/start_bot.d.ts.map +1 -1
  21. package/dest/cli/cmds/start_bot.js +24 -13
  22. package/dest/cli/cmds/start_node.d.ts +2 -2
  23. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  24. package/dest/cli/cmds/start_node.js +67 -80
  25. package/dest/cli/cmds/start_p2p_bootstrap.d.ts +1 -1
  26. package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
  27. package/dest/cli/cmds/start_p2p_bootstrap.js +9 -4
  28. package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
  29. package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
  30. package/dest/cli/cmds/start_prover_agent.js +31 -2
  31. package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
  32. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  33. package/dest/cli/cmds/start_prover_broker.js +9 -3
  34. package/dest/cli/cmds/start_prover_node.d.ts +1 -1
  35. package/dest/cli/cmds/start_prover_node.d.ts.map +1 -1
  36. package/dest/cli/cmds/start_prover_node.js +43 -45
  37. package/dest/cli/cmds/start_txe.d.ts +1 -1
  38. package/dest/cli/index.d.ts +1 -1
  39. package/dest/cli/preload_crs.d.ts +3 -0
  40. package/dest/cli/preload_crs.d.ts.map +1 -0
  41. package/dest/cli/preload_crs.js +6 -0
  42. package/dest/cli/release_version.d.ts +2 -0
  43. package/dest/cli/release_version.d.ts.map +1 -0
  44. package/dest/cli/release_version.js +14 -0
  45. package/dest/cli/util.d.ts +38 -7
  46. package/dest/cli/util.d.ts.map +1 -1
  47. package/dest/cli/util.js +198 -28
  48. package/dest/cli/versioning.d.ts +1 -1
  49. package/dest/cli/versioning.js +3 -3
  50. package/dest/examples/token.d.ts +1 -1
  51. package/dest/examples/token.js +31 -18
  52. package/dest/examples/util.d.ts +5 -6
  53. package/dest/examples/util.d.ts.map +1 -1
  54. package/dest/examples/util.js +5 -6
  55. package/dest/index.d.ts +2 -2
  56. package/dest/index.d.ts.map +1 -1
  57. package/dest/index.js +1 -1
  58. package/dest/local-network/banana_fpc.d.ts +10 -0
  59. package/dest/local-network/banana_fpc.d.ts.map +1 -0
  60. package/dest/{sandbox → local-network}/banana_fpc.js +19 -21
  61. package/dest/local-network/index.d.ts +4 -0
  62. package/dest/local-network/index.d.ts.map +1 -0
  63. package/dest/local-network/index.js +3 -0
  64. package/dest/local-network/local-network.d.ts +74 -0
  65. package/dest/local-network/local-network.d.ts.map +1 -0
  66. package/dest/{sandbox/sandbox.js → local-network/local-network.js} +59 -57
  67. package/dest/local-network/sponsored_fpc.d.ts +5 -0
  68. package/dest/local-network/sponsored_fpc.d.ts.map +1 -0
  69. package/dest/local-network/sponsored_fpc.js +18 -0
  70. package/dest/mnemonic.d.ts +1 -1
  71. package/dest/splash.d.ts +1 -1
  72. package/dest/testing/anvil_test_watcher.d.ts +34 -0
  73. package/dest/testing/anvil_test_watcher.d.ts.map +1 -0
  74. package/dest/testing/anvil_test_watcher.js +144 -0
  75. package/dest/testing/cheat_codes.d.ts +41 -0
  76. package/dest/testing/cheat_codes.d.ts.map +1 -0
  77. package/dest/testing/cheat_codes.js +62 -0
  78. package/dest/testing/index.d.ts +4 -0
  79. package/dest/testing/index.d.ts.map +1 -0
  80. package/dest/testing/index.js +3 -0
  81. package/package.json +51 -44
  82. package/src/bin/index.ts +24 -12
  83. package/src/cli/aztec_start_action.ts +32 -35
  84. package/src/cli/aztec_start_options.ts +161 -210
  85. package/src/cli/cli.ts +54 -1
  86. package/src/cli/cmds/start_archiver.ts +19 -13
  87. package/src/cli/cmds/start_blob_sink.ts +27 -1
  88. package/src/cli/cmds/start_bot.ts +35 -12
  89. package/src/cli/cmds/start_node.ts +90 -85
  90. package/src/cli/cmds/start_p2p_bootstrap.ts +12 -4
  91. package/src/cli/cmds/start_prover_agent.ts +22 -2
  92. package/src/cli/cmds/start_prover_broker.ts +23 -3
  93. package/src/cli/cmds/start_prover_node.ts +53 -50
  94. package/src/cli/preload_crs.ts +7 -0
  95. package/src/cli/release_version.ts +21 -0
  96. package/src/cli/util.ts +208 -34
  97. package/src/cli/versioning.ts +3 -3
  98. package/src/examples/token.ts +23 -19
  99. package/src/examples/util.ts +6 -8
  100. package/src/index.ts +5 -6
  101. package/src/{sandbox → local-network}/banana_fpc.ts +20 -25
  102. package/src/local-network/index.ts +7 -0
  103. package/src/{sandbox/sandbox.ts → local-network/local-network.ts} +81 -68
  104. package/src/local-network/sponsored_fpc.ts +26 -0
  105. package/src/testing/anvil_test_watcher.ts +166 -0
  106. package/src/testing/cheat_codes.ts +78 -0
  107. package/src/testing/index.ts +3 -0
  108. package/dest/cli/chain_l2_config.d.ts +0 -19
  109. package/dest/cli/chain_l2_config.d.ts.map +0 -1
  110. package/dest/cli/chain_l2_config.js +0 -56
  111. package/dest/cli/cmds/start_faucet.d.ts +0 -4
  112. package/dest/cli/cmds/start_faucet.d.ts.map +0 -1
  113. package/dest/cli/cmds/start_faucet.js +0 -20
  114. package/dest/cli/cmds/start_pxe.d.ts +0 -16
  115. package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
  116. package/dest/cli/cmds/start_pxe.js +0 -95
  117. package/dest/cli/get_l1_config.d.ts +0 -7
  118. package/dest/cli/get_l1_config.d.ts.map +0 -1
  119. package/dest/cli/get_l1_config.js +0 -13
  120. package/dest/sandbox/banana_fpc.d.ts +0 -11
  121. package/dest/sandbox/banana_fpc.d.ts.map +0 -1
  122. package/dest/sandbox/index.d.ts +0 -5
  123. package/dest/sandbox/index.d.ts.map +0 -1
  124. package/dest/sandbox/index.js +0 -4
  125. package/dest/sandbox/sandbox.d.ts +0 -76
  126. package/dest/sandbox/sandbox.d.ts.map +0 -1
  127. package/dest/sandbox/sponsored_fee_payment_method.d.ts +0 -23
  128. package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +0 -1
  129. package/dest/sandbox/sponsored_fee_payment_method.js +0 -36
  130. package/dest/sandbox/sponsored_fpc.d.ts +0 -6
  131. package/dest/sandbox/sponsored_fpc.d.ts.map +0 -1
  132. package/dest/sandbox/sponsored_fpc.js +0 -26
  133. package/src/cli/chain_l2_config.ts +0 -74
  134. package/src/cli/cmds/start_faucet.ts +0 -34
  135. package/src/cli/cmds/start_pxe.ts +0 -129
  136. package/src/cli/get_l1_config.ts +0 -18
  137. package/src/sandbox/index.ts +0 -5
  138. package/src/sandbox/sponsored_fee_payment_method.ts +0 -46
  139. package/src/sandbox/sponsored_fpc.ts +0 -38
@@ -1,4 +1,5 @@
1
1
  import { blobSinkConfigMappings, createBlobSinkServer, getBlobSinkConfigFromEnv } from '@aztec/blob-sink/server';
2
+ import { getL1Config } from '@aztec/cli/config';
2
3
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
3
4
  import { extractRelevantOptions } from '../util.js';
4
5
  export async function startBlobSink(options, signalHandlers, userLog) {
@@ -6,11 +7,26 @@ export async function startBlobSink(options, signalHandlers, userLog) {
6
7
  userLog(`Starting a blob sink with --node, --sequencer, --pxe, --p2p-bootstrap, --prover or --txe is not supported.`);
7
8
  process.exit(1);
8
9
  }
9
- const blobSinkConfig = {
10
+ let blobSinkConfig = {
10
11
  ...getBlobSinkConfigFromEnv(),
11
12
  ...extractRelevantOptions(options, blobSinkConfigMappings, 'blobSink')
12
13
  };
14
+ if (!blobSinkConfig.l1Contracts?.registryAddress || blobSinkConfig.l1Contracts.registryAddress.isZero()) {
15
+ throw new Error('REGISTRY_CONTRACT_ADDRESS not set');
16
+ }
17
+ if (!blobSinkConfig.l1RpcUrls || blobSinkConfig.l1RpcUrls.length === 0) {
18
+ throw new Error('ETHEREUM_HOSTS not set');
19
+ }
20
+ if (typeof blobSinkConfig.l1ChainId !== 'number') {
21
+ throw new Error('L1_CHAIN_ID');
22
+ }
13
23
  const telemetry = initTelemetryClient(getTelemetryClientConfig());
24
+ const { config: chainConfig, addresses } = await getL1Config(blobSinkConfig.l1Contracts.registryAddress, blobSinkConfig.l1RpcUrls, blobSinkConfig.l1ChainId, blobSinkConfig.rollupVersion);
25
+ blobSinkConfig = {
26
+ ...blobSinkConfig,
27
+ l1Contracts: addresses,
28
+ ...chainConfig
29
+ };
14
30
  const blobSink = await createBlobSinkServer(blobSinkConfig, telemetry);
15
31
  signalHandlers.push(blobSink.stop.bind(blobSink));
16
32
  await blobSink.start();
@@ -1,11 +1,8 @@
1
1
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
2
2
  import type { LogFn } from '@aztec/foundation/log';
3
- import type { AztecNode, PXE } from '@aztec/stdlib/interfaces/client';
3
+ import { type AztecNode, type AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
4
4
  import type { TelemetryClient } from '@aztec/telemetry-client';
5
+ import { TestWallet } from '@aztec/test-wallet/server';
5
6
  export declare function startBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<void>;
6
- export declare function addBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, deps: {
7
- pxe?: PXE;
8
- node?: AztecNode;
9
- telemetry: TelemetryClient;
10
- }): Promise<void>;
11
- //# sourceMappingURL=start_bot.d.ts.map
7
+ export declare function addBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, wallet: TestWallet, aztecNode: AztecNode, telemetry: TelemetryClient, aztecNodeAdmin?: AztecNodeAdmin): Promise<void>;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbkQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssY0FBYyxFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQzdHLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUt2RCx3QkFBc0IsUUFBUSxDQUM1QixPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixPQUFPLEVBQUUsS0FBSyxpQkF1QmY7QUFFRCx3QkFBc0IsTUFBTSxDQUMxQixPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixNQUFNLEVBQUUsVUFBVSxFQUNsQixTQUFTLEVBQUUsU0FBUyxFQUNwQixTQUFTLEVBQUUsZUFBZSxFQUMxQixjQUFjLENBQUMsRUFBRSxjQUFjLGlCQWtCaEMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"start_bot.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_bot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBAkBf;AAED,wBAAgB,MAAM,CACpB,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,eAAe,CAAA;CAAE,iBAWlE"}
1
+ {"version":3,"file":"start_bot.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_bot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAyB,MAAM,iCAAiC,CAAC;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAKvD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBAuBf;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,eAAe,EAC1B,cAAc,CAAC,EAAE,cAAc,iBAkBhC"}
@@ -1,27 +1,38 @@
1
- import { BotRunner, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
2
- import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
1
+ import { BotRunner, BotStore, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
2
+ import { createStore, openTmpStore } from '@aztec/kv-store/lmdb-v2';
3
+ import { allPxeConfigMappings } from '@aztec/pxe/config';
4
+ import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
5
+ import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient, makeTracedFetch } from '@aztec/telemetry-client';
6
+ import { TestWallet } from '@aztec/test-wallet/server';
3
7
  import { extractRelevantOptions } from '../util.js';
8
+ import { getVersions } from '../versioning.js';
4
9
  export async function startBot(options, signalHandlers, services, userLog) {
5
10
  const { proverNode, archiver, sequencer, p2pBootstrap, txe, prover } = options;
6
11
  if (proverNode || archiver || sequencer || p2pBootstrap || txe || prover) {
7
12
  userLog(`Starting a bot with --prover-node, --prover, --archiver, --sequencer, --p2p-bootstrap, or --txe is not supported.`);
8
13
  process.exit(1);
9
14
  }
10
- // Start a PXE client that is used by the bot if required
11
- let pxe;
12
- if (options.pxe) {
13
- const { addPXE } = await import('./start_pxe.js');
14
- ({ pxe } = await addPXE(options, signalHandlers, services, userLog));
15
+ const fetch = makeTracedFetch([
16
+ 1,
17
+ 2,
18
+ 3
19
+ ], true);
20
+ const config = extractRelevantOptions(options, botConfigMappings, 'bot');
21
+ if (!config.nodeUrl) {
22
+ throw new Error('The bot requires access to a Node');
15
23
  }
24
+ const aztecNode = createAztecNodeClient(config.nodeUrl, getVersions(), fetch);
25
+ const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
26
+ const wallet = await TestWallet.create(aztecNode, pxeConfig);
16
27
  const telemetry = initTelemetryClient(getTelemetryClientConfig());
17
- await addBot(options, signalHandlers, services, {
18
- pxe,
19
- telemetry
20
- });
28
+ await addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, undefined);
21
29
  }
22
- export function addBot(options, signalHandlers, services, deps) {
30
+ export async function addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, aztecNodeAdmin) {
23
31
  const config = extractRelevantOptions(options, botConfigMappings, 'bot');
24
- const botRunner = new BotRunner(config, deps);
32
+ const db = await (config.dataDirectory ? createStore('bot', BotStore.SCHEMA_VERSION, config) : openTmpStore('bot', true, config.dataStoreMapSizeKb));
33
+ const store = new BotStore(db);
34
+ await store.cleanupOldClaims();
35
+ const botRunner = new BotRunner(config, wallet, aztecNode, telemetry, aztecNodeAdmin, store);
25
36
  if (!config.noStart) {
26
37
  void botRunner.start(); // Do not block since bot setup takes time
27
38
  }
@@ -1,7 +1,7 @@
1
1
  import { type AztecNodeConfig } from '@aztec/aztec-node';
2
2
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
3
3
  import type { LogFn } from '@aztec/foundation/log';
4
- export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
4
+ export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, adminServices: NamespacedApiHandlers, userLog: LogFn): Promise<{
5
5
  config: AztecNodeConfig;
6
6
  }>;
7
- //# sourceMappingURL=start_node.d.ts.map
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfbm9kZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBTXBHLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFvQm5ELHdCQUFzQixTQUFTLENBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLGFBQWEsRUFBRSxxQkFBcUIsRUFDcEMsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFBO0NBQUUsQ0FBQyxDQXlIdEMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"start_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA6C,MAAM,mBAAmB,CAAC;AAEpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAgBnD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CA6HtC"}
1
+ {"version":3,"file":"start_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA6C,MAAM,mBAAmB,CAAC;AAMpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAoBnD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CAyHtC"}
@@ -1,87 +1,75 @@
1
- import { getInitialTestAccounts } from '@aztec/accounts/testing';
1
+ import { getInitialTestAccountsData } from '@aztec/accounts/testing';
2
2
  import { aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
3
- import { NULL_KEY } from '@aztec/ethereum';
4
- import { AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
3
+ import { Fr } from '@aztec/aztec.js/fields';
4
+ import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
5
+ import { getL1Config } from '@aztec/cli/config';
6
+ import { getPublicClient } from '@aztec/ethereum';
7
+ import { SecretValue } from '@aztec/foundation/config';
8
+ import { allPxeConfigMappings } from '@aztec/pxe/config';
9
+ import { AztecNodeAdminApiSchema, AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
5
10
  import { P2PApiSchema } from '@aztec/stdlib/interfaces/server';
6
11
  import { initTelemetryClient, telemetryClientConfigMappings } from '@aztec/telemetry-client';
12
+ import { TestWallet } from '@aztec/test-wallet/server';
7
13
  import { getGenesisValues } from '@aztec/world-state/testing';
8
- import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
9
- import { createAztecNode, deployContractsToL1 } from '../../sandbox/index.js';
10
- import { getL1Config } from '../get_l1_config.js';
11
- import { extractNamespacedOptions, extractRelevantOptions } from '../util.js';
12
- export async function startNode(options, signalHandlers, services, userLog) {
13
- // options specifically namespaced with --node.<option>
14
- const nodeSpecificOptions = extractNamespacedOptions(options, 'node');
14
+ import { createAztecNode } from '../../local-network/index.js';
15
+ import { extractNamespacedOptions, extractRelevantOptions, preloadCrsDataForVerifying, setupUpdateMonitor } from '../util.js';
16
+ export async function startNode(options, signalHandlers, services, adminServices, userLog) {
17
+ // All options set from environment variables
18
+ const configFromEnvVars = getConfigEnvVars();
19
+ // Extract relevant options from command line arguments
20
+ const relevantOptions = extractRelevantOptions(options, aztecNodeConfigMappings, 'node');
15
21
  // All options that are relevant to the Aztec Node
16
22
  let nodeConfig = {
17
- ...getConfigEnvVars(),
18
- ...extractRelevantOptions(options, aztecNodeConfigMappings, 'node')
23
+ ...configFromEnvVars,
24
+ ...relevantOptions
19
25
  };
20
26
  if (options.proverNode) {
21
27
  userLog(`Running a Prover Node within a Node is not yet supported`);
22
28
  process.exit(1);
23
29
  }
24
- const initialFundedAccounts = nodeConfig.testAccounts ? await getInitialTestAccounts() : [];
25
- const { genesisBlockHash, genesisArchiveRoot, prefilledPublicData } = await getGenesisValues(initialFundedAccounts.map((a)=>a.address));
26
- // Deploy contracts if needed
27
- if (nodeSpecificOptions.deployAztecContracts || nodeSpecificOptions.deployAztecContractsSalt) {
28
- let account;
29
- if (nodeSpecificOptions.publisherPrivateKey) {
30
- account = privateKeyToAccount(nodeSpecificOptions.publisherPrivateKey);
31
- } else if (options.l1Mnemonic) {
32
- account = mnemonicToAccount(options.l1Mnemonic);
33
- } else {
34
- throw new Error('--node.publisherPrivateKey or --l1-mnemonic is required to deploy L1 contracts');
35
- }
36
- // REFACTOR: We should not be calling a method from sandbox on the prod start flow
37
- await deployContractsToL1(nodeConfig, account, undefined, {
38
- assumeProvenThroughBlockNumber: nodeSpecificOptions.assumeProvenThroughBlockNumber,
39
- salt: nodeSpecificOptions.deployAztecContractsSalt,
40
- genesisBlockHash,
41
- genesisArchiveRoot
42
- });
43
- } else {
44
- if (!nodeConfig.l1Contracts.registryAddress || nodeConfig.l1Contracts.registryAddress.isZero()) {
45
- throw new Error('L1 registry address is required to start Aztec Node without --deploy-aztec-contracts option');
46
- }
47
- const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId);
48
- // TODO(#12272): will clean this up.
49
- nodeConfig = {
50
- ...nodeConfig,
51
- l1Contracts: {
52
- ...addresses,
53
- slashFactoryAddress: nodeConfig.l1Contracts.slashFactoryAddress
54
- },
55
- ...config
56
- };
30
+ await preloadCrsDataForVerifying(nodeConfig, userLog);
31
+ const testAccounts = nodeConfig.testAccounts ? (await getInitialTestAccountsData()).map((a)=>a.address) : [];
32
+ const sponsoredFPCAccounts = nodeConfig.sponsoredFPC ? [
33
+ await getSponsoredFPCAddress()
34
+ ] : [];
35
+ const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
36
+ userLog(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
37
+ const { genesisArchiveRoot, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
38
+ userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
39
+ const followsCanonicalRollup = typeof nodeConfig.rollupVersion !== 'number' || nodeConfig.rollupVersion === 'canonical';
40
+ if (!nodeConfig.l1Contracts.registryAddress || nodeConfig.l1Contracts.registryAddress.isZero()) {
41
+ throw new Error('L1 registry address is required to start Aztec Node');
57
42
  }
58
- // if no publisher private key, then use l1Mnemonic
59
- if (!options.archiver) {
60
- // expect archiver url in node config
61
- const archiverUrl = nodeConfig.archiverUrl;
62
- if (!archiverUrl) {
63
- userLog('Archiver Service URL is required to start Aztec Node without --archiver option');
64
- throw new Error('Archiver Service URL is required to start Aztec Node without --archiver option');
65
- }
66
- nodeConfig.archiverUrl = archiverUrl;
43
+ const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId, nodeConfig.rollupVersion);
44
+ process.env.ROLLUP_CONTRACT_ADDRESS ??= addresses.rollupAddress.toString();
45
+ if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
46
+ throw new Error(`The computed genesis archive tree root ${genesisArchiveRoot} does not match the expected genesis archive tree root ${config.genesisArchiveTreeRoot} for the rollup deployed at ${addresses.rollupAddress}`);
67
47
  }
68
- if (!options.sequencer) {
48
+ // TODO(#12272): will clean this up.
49
+ nodeConfig = {
50
+ ...nodeConfig,
51
+ l1Contracts: {
52
+ ...addresses,
53
+ slashFactoryAddress: nodeConfig.l1Contracts.slashFactoryAddress
54
+ },
55
+ ...config
56
+ };
57
+ if (!options.sequencer && !nodeConfig.fishermanMode) {
69
58
  nodeConfig.disableValidator = true;
70
59
  } else {
71
- const sequencerConfig = extractNamespacedOptions(options, 'sequencer');
72
- let account;
73
- if (!sequencerConfig.publisherPrivateKey || sequencerConfig.publisherPrivateKey === NULL_KEY) {
74
- if (!options.l1Mnemonic) {
75
- userLog('--sequencer.publisherPrivateKey or --l1-mnemonic is required to start Aztec Node with --sequencer option');
76
- throw new Error('Private key or Mnemonic is required to start Aztec Node with --sequencer option');
77
- } else {
78
- account = mnemonicToAccount(options.l1Mnemonic);
79
- const privKey = account.getHdKey().privateKey;
80
- nodeConfig.publisherPrivateKey = `0x${Buffer.from(privKey).toString('hex')}`;
60
+ const sequencerConfig = {
61
+ ...configFromEnvVars,
62
+ ...extractNamespacedOptions(options, 'sequencer')
63
+ };
64
+ // If no publisher private keys have been given, use the first validator key
65
+ if (sequencerConfig.publisherPrivateKeys === undefined || !sequencerConfig.publisherPrivateKeys.length) {
66
+ if (sequencerConfig.validatorPrivateKeys?.getValue().length) {
67
+ sequencerConfig.publisherPrivateKeys = [
68
+ new SecretValue(sequencerConfig.validatorPrivateKeys.getValue()[0])
69
+ ];
81
70
  }
82
- } else {
83
- nodeConfig.publisherPrivateKey = sequencerConfig.publisherPrivateKey;
84
71
  }
72
+ nodeConfig.publisherPrivateKeys = sequencerConfig.publisherPrivateKeys;
85
73
  }
86
74
  if (nodeConfig.p2pEnabled) {
87
75
  // ensure bootstrapNodes is an array
@@ -106,24 +94,23 @@ export async function startNode(options, signalHandlers, services, userLog) {
106
94
  node.getP2P(),
107
95
  P2PApiSchema
108
96
  ];
97
+ adminServices.nodeAdmin = [
98
+ node,
99
+ AztecNodeAdminApiSchema
100
+ ];
109
101
  // Add node stop function to signal handlers
110
102
  signalHandlers.push(node.stop.bind(node));
111
- // Add a PXE client that connects to this node if requested
112
- let pxe;
113
- if (options.pxe) {
114
- const { addPXE } = await import('./start_pxe.js');
115
- ({ pxe } = await addPXE(options, signalHandlers, services, userLog, {
116
- node
117
- }));
118
- }
119
103
  // Add a txs bot if requested
120
104
  if (options.bot) {
121
105
  const { addBot } = await import('./start_bot.js');
122
- await addBot(options, signalHandlers, services, {
123
- pxe,
124
- node,
125
- telemetry
126
- });
106
+ const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
107
+ const wallet = await TestWallet.create(node, pxeConfig);
108
+ await addBot(options, signalHandlers, services, wallet, node, telemetry, undefined);
109
+ }
110
+ if (nodeConfig.autoUpdate !== 'disabled' && nodeConfig.autoUpdateUrl) {
111
+ await setupUpdateMonitor(nodeConfig.autoUpdate, new URL(nodeConfig.autoUpdateUrl), followsCanonicalRollup, getPublicClient(nodeConfig), nodeConfig.l1Contracts.registryAddress, signalHandlers, async (config)=>node.setConfig((await AztecNodeAdminApiSchema.setConfig.parameters().parseAsync([
112
+ config
113
+ ]))[0]));
127
114
  }
128
115
  return {
129
116
  config: nodeConfig
@@ -3,4 +3,4 @@ import { type LogFn } from '@aztec/foundation/log';
3
3
  export declare function startP2PBootstrap(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
4
4
  config: import("@aztec/stdlib/config").ChainConfig;
5
5
  }>;
6
- //# sourceMappingURL=start_p2p_bootstrap.d.ts.map
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcDJwX2Jvb3RzdHJhcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3AycF9ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxLQUFLLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFhakUsd0JBQXNCLGlCQUFpQixDQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixPQUFPLEVBQUUsS0FBSzs7R0FpQmYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"start_p2p_bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_p2p_bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,uBAAuB,CAAC;AASjE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK;;GAaf"}
1
+ {"version":3,"file":"start_p2p_bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_p2p_bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,uBAAuB,CAAC;AAajE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK;;GAiBf"}
@@ -4,13 +4,18 @@ import { createStore } from '@aztec/kv-store/lmdb-v2';
4
4
  import { BootstrapNode, bootnodeConfigMappings } from '@aztec/p2p';
5
5
  import { emptyChainConfig } from '@aztec/stdlib/config';
6
6
  import { P2PBootstrapApiSchema } from '@aztec/stdlib/interfaces/server';
7
- import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
7
+ import { initTelemetryClient, telemetryClientConfigMappings } from '@aztec/telemetry-client';
8
8
  import { extractRelevantOptions } from '../util.js';
9
9
  export async function startP2PBootstrap(options, signalHandlers, services, userLog) {
10
10
  // Start a P2P bootstrap node.
11
11
  const config = extractRelevantOptions(options, bootnodeConfigMappings, 'p2p');
12
- userLog(`Starting P2P bootstrap node with config: ${jsonStringify(config)}`);
13
- const telemetryClient = initTelemetryClient(getTelemetryClientConfig());
12
+ const safeConfig = {
13
+ ...config,
14
+ peerIdPrivateKey: '<redacted>'
15
+ };
16
+ userLog(`Starting P2P bootstrap node with config: ${jsonStringify(safeConfig)}`);
17
+ const telemetryConfig = extractRelevantOptions(options, telemetryClientConfigMappings, 'tel');
18
+ const telemetryClient = initTelemetryClient(telemetryConfig);
14
19
  const store = await createStore('p2p-bootstrap', 1, config, createLogger('p2p:bootstrap:store'));
15
20
  const node = new BootstrapNode(store, telemetryClient);
16
21
  await node.start(config);
@@ -19,7 +24,7 @@ export async function startP2PBootstrap(options, signalHandlers, services, userL
19
24
  node,
20
25
  P2PBootstrapApiSchema
21
26
  ];
22
- userLog(`P2P bootstrap node started on ${config.udpListenAddress}`);
27
+ userLog(`P2P bootstrap node started on ${config.p2pIp}:${config.p2pPort}`);
23
28
  return {
24
29
  config: emptyChainConfig
25
30
  };
@@ -1,4 +1,4 @@
1
1
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
2
2
  import type { LogFn } from '@aztec/foundation/log';
3
3
  export declare function startProverAgent(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<void>;
4
- //# sourceMappingURL=start_prover_agent.d.ts.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2FnZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfcHJvdmVyX2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFnQm5ELHdCQUFzQixnQkFBZ0IsQ0FDcEMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssaUJBZ0VmIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"start_prover_agent.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAenD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBA6Cf"}
1
+ {"version":3,"file":"start_prover_agent.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAgBnD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBAgEf"}
@@ -3,8 +3,9 @@ import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
3
3
  import { buildServerCircuitProver } from '@aztec/prover-client';
4
4
  import { InlineProofStore, ProvingAgent, createProvingJobBrokerClient, proverAgentConfigMappings } from '@aztec/prover-client/broker';
5
5
  import { getProverNodeAgentConfigFromEnv } from '@aztec/prover-node';
6
+ import { ProverAgentApiSchema } from '@aztec/stdlib/interfaces/server';
6
7
  import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
7
- import { extractRelevantOptions } from '../util.js';
8
+ import { extractRelevantOptions, preloadCrsDataForServerSideProving } from '../util.js';
8
9
  import { getVersions } from '../versioning.js';
9
10
  export async function startProverAgent(options, signalHandlers, services, userLog) {
10
11
  if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
@@ -16,14 +17,26 @@ export async function startProverAgent(options, signalHandlers, services, userLo
16
17
  ...extractRelevantOptions(options, proverAgentConfigMappings, 'proverAgent')
17
18
  };
18
19
  if (config.realProofs && (!config.bbBinaryPath || !config.acvmBinaryPath)) {
20
+ userLog(`Requested real proving but no path to bb or acvm binaries provided`);
19
21
  process.exit(1);
20
22
  }
21
23
  if (!config.proverBrokerUrl) {
24
+ userLog(`Missing prover broker URL. Pass --proverAgent.proverBrokerUrl <value>`);
22
25
  process.exit(1);
23
26
  }
24
- const fetch = makeTracedFetch([
27
+ await preloadCrsDataForServerSideProving(config, userLog);
28
+ const fetch = makeTracedFetch(// retry connections every 3s, up to 30s before giving up
29
+ [
25
30
  1,
26
31
  2,
32
+ 3,
33
+ 3,
34
+ 3,
35
+ 3,
36
+ 3,
37
+ 3,
38
+ 3,
39
+ 3,
27
40
  3
28
41
  ], false, makeUndiciFetch(new Agent({
29
42
  connections: 10
@@ -33,6 +46,22 @@ export async function startProverAgent(options, signalHandlers, services, userLo
33
46
  const prover = await buildServerCircuitProver(config, telemetry);
34
47
  const proofStore = new InlineProofStore();
35
48
  const agents = times(config.proverAgentCount, ()=>new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs, telemetry));
49
+ // expose all agents as individual services
50
+ for(let i = 0; i < agents.length; i++){
51
+ services[`agent${i}`] = [
52
+ agents[i],
53
+ ProverAgentApiSchema,
54
+ ()=>agents[i].getStatus().status !== 'stopped'
55
+ ];
56
+ }
57
+ // shortcut in the most common case of having a single running agent
58
+ if (agents.length === 1) {
59
+ services[`agent`] = [
60
+ agents[0],
61
+ ProverAgentApiSchema,
62
+ ()=>agents[0].getStatus().status !== 'stopped'
63
+ ];
64
+ }
36
65
  await Promise.all(agents.map((agent)=>agent.start()));
37
66
  signalHandlers.push(async ()=>{
38
67
  await Promise.all(agents.map((agent)=>agent.stop()));
@@ -6,4 +6,4 @@ export declare function startProverBroker(options: any, signalHandlers: (() => P
6
6
  broker: ProvingJobBroker;
7
7
  config: ProverBrokerConfig;
8
8
  }>;
9
- //# sourceMappingURL=start_prover_broker.d.ts.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2Jyb2tlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3Byb3Zlcl9icm9rZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBS3hFLHdCQUFzQixpQkFBaUIsQ0FDckMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7SUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUE7Q0FBRSxDQUFDLENBNENuRSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"start_prover_broker.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_broker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMxE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAyBnE"}
1
+ {"version":3,"file":"start_prover_broker.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_broker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAKxE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC,CA4CnE"}
@@ -1,8 +1,9 @@
1
+ import { getL1Config } from '@aztec/cli/config';
2
+ import { getPublicClient } from '@aztec/ethereum';
1
3
  import { ProvingJobBrokerSchema, createAndStartProvingBroker, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
2
4
  import { getProverNodeBrokerConfigFromEnv } from '@aztec/prover-node';
3
5
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
4
- import { getL1Config } from '../get_l1_config.js';
5
- import { extractRelevantOptions } from '../util.js';
6
+ import { extractRelevantOptions, setupUpdateMonitor } from '../util.js';
6
7
  export async function startProverBroker(options, signalHandlers, services, userLog) {
7
8
  if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
8
9
  userLog(`Starting a prover broker with --node, --sequencer, --pxe, --p2p-bootstrap, or --txe is not supported.`);
@@ -15,10 +16,15 @@ export async function startProverBroker(options, signalHandlers, services, userL
15
16
  if (!config.l1Contracts.registryAddress || config.l1Contracts.registryAddress.isZero()) {
16
17
  throw new Error('L1 registry address is required to start Aztec Node without --deploy-aztec-contracts option');
17
18
  }
18
- const { addresses } = await getL1Config(config.l1Contracts.registryAddress, config.l1RpcUrls, config.l1ChainId);
19
+ const followsCanonicalRollup = typeof config.rollupVersion !== 'number';
20
+ const { addresses, config: rollupConfig } = await getL1Config(config.l1Contracts.registryAddress, config.l1RpcUrls, config.l1ChainId, config.rollupVersion);
19
21
  config.l1Contracts = addresses;
22
+ config.rollupVersion = rollupConfig.rollupVersion;
20
23
  const client = initTelemetryClient(getTelemetryClientConfig());
21
24
  const broker = await createAndStartProvingBroker(config, client);
25
+ if (options.autoUpdate !== 'disabled' && options.autoUpdateUrl) {
26
+ await setupUpdateMonitor(options.autoUpdate, new URL(options.autoUpdateUrl), followsCanonicalRollup, getPublicClient(config), config.l1Contracts.registryAddress, signalHandlers);
27
+ }
22
28
  services.proverBroker = [
23
29
  broker,
24
30
  ProvingJobBrokerSchema
@@ -4,4 +4,4 @@ import { type ProverNodeConfig } from '@aztec/prover-node';
4
4
  export declare function startProverNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
5
5
  config: ProverNodeConfig;
6
6
  }>;
7
- //# sourceMappingURL=start_prover_node.d.ts.map
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX25vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY21kcy9zdGFydF9wcm92ZXJfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRS9FLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQUl0QixNQUFNLG9CQUFvQixDQUFDO0FBUzVCLHdCQUFzQixlQUFlLENBQ25DLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLE9BQU8sRUFBRSxLQUFLLEdBQ2IsT0FBTyxDQUFDO0lBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFBO0NBQUUsQ0FBQyxDQStGdkMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"start_prover_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_node.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,oBAAoB,CAAC;AAa5B,wBAAsB,eAAe,CACnC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA2FvC"}
1
+ {"version":3,"file":"start_prover_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_node.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,oBAAoB,CAAC;AAS5B,wBAAsB,eAAe,CACnC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA+FvC"}