@aztec/aztec 0.0.0-test.0 → 0.0.1-commit.001888fc

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 (194) hide show
  1. package/README.md +1 -1
  2. package/dest/bin/index.d.ts +1 -1
  3. package/dest/bin/index.js +28 -13
  4. package/dest/cli/admin_api_key_store.d.ts +45 -0
  5. package/dest/cli/admin_api_key_store.d.ts.map +1 -0
  6. package/dest/cli/admin_api_key_store.js +98 -0
  7. package/dest/cli/aztec_start_action.d.ts +1 -1
  8. package/dest/cli/aztec_start_action.d.ts.map +1 -1
  9. package/dest/cli/aztec_start_action.js +89 -44
  10. package/dest/cli/aztec_start_options.d.ts +5 -3
  11. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  12. package/dest/cli/aztec_start_options.js +157 -220
  13. package/dest/cli/cli.d.ts +1 -1
  14. package/dest/cli/cli.d.ts.map +1 -1
  15. package/dest/cli/cli.js +11 -7
  16. package/dest/cli/cmds/compile.d.ts +4 -0
  17. package/dest/cli/cmds/compile.d.ts.map +1 -0
  18. package/dest/cli/cmds/compile.js +166 -0
  19. package/dest/cli/cmds/migrate_ha_db.d.ts +3 -0
  20. package/dest/cli/cmds/migrate_ha_db.d.ts.map +1 -0
  21. package/dest/cli/cmds/migrate_ha_db.js +27 -0
  22. package/dest/cli/cmds/profile.d.ts +4 -0
  23. package/dest/cli/cmds/profile.d.ts.map +1 -0
  24. package/dest/cli/cmds/profile.js +8 -0
  25. package/dest/cli/cmds/profile_flamegraph.d.ts +4 -0
  26. package/dest/cli/cmds/profile_flamegraph.d.ts.map +1 -0
  27. package/dest/cli/cmds/profile_flamegraph.js +52 -0
  28. package/dest/cli/cmds/profile_gates.d.ts +4 -0
  29. package/dest/cli/cmds/profile_gates.d.ts.map +1 -0
  30. package/dest/cli/cmds/profile_gates.js +58 -0
  31. package/dest/cli/cmds/profile_utils.d.ts +18 -0
  32. package/dest/cli/cmds/profile_utils.d.ts.map +1 -0
  33. package/dest/cli/cmds/profile_utils.js +50 -0
  34. package/dest/cli/cmds/standby.d.ts +32 -0
  35. package/dest/cli/cmds/standby.d.ts.map +1 -0
  36. package/dest/cli/cmds/standby.js +97 -0
  37. package/dest/cli/cmds/start_archiver.d.ts +2 -2
  38. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  39. package/dest/cli/cmds/start_archiver.js +25 -19
  40. package/dest/cli/cmds/start_bot.d.ts +4 -7
  41. package/dest/cli/cmds/start_bot.d.ts.map +1 -1
  42. package/dest/cli/cmds/start_bot.js +29 -14
  43. package/dest/cli/cmds/start_node.d.ts +3 -2
  44. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  45. package/dest/cli/cmds/start_node.js +128 -85
  46. package/dest/cli/cmds/start_p2p_bootstrap.d.ts +2 -2
  47. package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
  48. package/dest/cli/cmds/start_p2p_bootstrap.js +10 -6
  49. package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
  50. package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
  51. package/dest/cli/cmds/start_prover_agent.js +35 -6
  52. package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
  53. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  54. package/dest/cli/cmds/start_prover_broker.js +17 -5
  55. package/dest/cli/cmds/start_txe.d.ts +1 -1
  56. package/dest/cli/cmds/utils/artifacts.d.ts +21 -0
  57. package/dest/cli/cmds/utils/artifacts.d.ts.map +1 -0
  58. package/dest/cli/cmds/utils/artifacts.js +24 -0
  59. package/dest/cli/cmds/utils/needs_recompile.d.ts +10 -0
  60. package/dest/cli/cmds/utils/needs_recompile.d.ts.map +1 -0
  61. package/dest/cli/cmds/utils/needs_recompile.js +134 -0
  62. package/dest/cli/cmds/utils/spawn.d.ts +3 -0
  63. package/dest/cli/cmds/utils/spawn.d.ts.map +1 -0
  64. package/dest/cli/cmds/utils/spawn.js +16 -0
  65. package/dest/cli/index.d.ts +1 -1
  66. package/dest/cli/preload_crs.d.ts +3 -0
  67. package/dest/cli/preload_crs.d.ts.map +1 -0
  68. package/dest/cli/preload_crs.js +6 -0
  69. package/dest/cli/util.d.ts +37 -17
  70. package/dest/cli/util.d.ts.map +1 -1
  71. package/dest/cli/util.js +165 -31
  72. package/dest/cli/versioning.d.ts +1 -1
  73. package/dest/cli/versioning.js +3 -3
  74. package/dest/examples/token.d.ts +1 -1
  75. package/dest/examples/token.js +31 -18
  76. package/dest/examples/util.d.ts +5 -6
  77. package/dest/examples/util.d.ts.map +1 -1
  78. package/dest/examples/util.js +5 -6
  79. package/dest/index.d.ts +2 -2
  80. package/dest/index.d.ts.map +1 -1
  81. package/dest/index.js +1 -1
  82. package/dest/local-network/banana_fpc.d.ts +10 -0
  83. package/dest/local-network/banana_fpc.d.ts.map +1 -0
  84. package/dest/{sandbox → local-network}/banana_fpc.js +23 -25
  85. package/dest/local-network/index.d.ts +4 -0
  86. package/dest/local-network/index.d.ts.map +1 -0
  87. package/dest/local-network/index.js +3 -0
  88. package/dest/local-network/local-network.d.ts +73 -0
  89. package/dest/local-network/local-network.d.ts.map +1 -0
  90. package/dest/local-network/local-network.js +226 -0
  91. package/dest/local-network/sponsored_fpc.d.ts +5 -0
  92. package/dest/local-network/sponsored_fpc.d.ts.map +1 -0
  93. package/dest/local-network/sponsored_fpc.js +18 -0
  94. package/dest/mnemonic.d.ts +1 -1
  95. package/dest/splash.d.ts +1 -1
  96. package/dest/testing/anvil_test_watcher.d.ts +42 -0
  97. package/dest/testing/anvil_test_watcher.d.ts.map +1 -0
  98. package/dest/testing/anvil_test_watcher.js +181 -0
  99. package/dest/testing/cheat_codes.d.ts +43 -0
  100. package/dest/testing/cheat_codes.d.ts.map +1 -0
  101. package/dest/testing/cheat_codes.js +62 -0
  102. package/dest/testing/epoch_test_settler.d.ts +19 -0
  103. package/dest/testing/epoch_test_settler.d.ts.map +1 -0
  104. package/dest/testing/epoch_test_settler.js +61 -0
  105. package/dest/testing/index.d.ts +6 -0
  106. package/dest/testing/index.d.ts.map +1 -0
  107. package/dest/testing/index.js +5 -0
  108. package/dest/testing/token_allowed_setup.d.ts +7 -0
  109. package/dest/testing/token_allowed_setup.d.ts.map +1 -0
  110. package/dest/testing/token_allowed_setup.js +20 -0
  111. package/package.json +55 -45
  112. package/scripts/add_crate.sh +102 -0
  113. package/scripts/aztec.sh +69 -0
  114. package/scripts/init.sh +39 -0
  115. package/scripts/new.sh +83 -0
  116. package/scripts/setup_workspace.sh +68 -0
  117. package/src/bin/index.ts +33 -13
  118. package/src/cli/admin_api_key_store.ts +128 -0
  119. package/src/cli/aztec_start_action.ts +87 -41
  120. package/src/cli/aztec_start_options.ts +176 -218
  121. package/src/cli/cli.ts +19 -11
  122. package/src/cli/cmds/compile.ts +191 -0
  123. package/src/cli/cmds/migrate_ha_db.ts +43 -0
  124. package/src/cli/cmds/profile.ts +25 -0
  125. package/src/cli/cmds/profile_flamegraph.ts +64 -0
  126. package/src/cli/cmds/profile_gates.ts +68 -0
  127. package/src/cli/cmds/profile_utils.ts +58 -0
  128. package/src/cli/cmds/standby.ts +132 -0
  129. package/src/cli/cmds/start_archiver.ts +16 -21
  130. package/src/cli/cmds/start_bot.ts +40 -14
  131. package/src/cli/cmds/start_node.ts +146 -91
  132. package/src/cli/cmds/start_p2p_bootstrap.ts +14 -6
  133. package/src/cli/cmds/start_prover_agent.ts +26 -14
  134. package/src/cli/cmds/start_prover_broker.ts +28 -4
  135. package/src/cli/cmds/utils/artifacts.ts +44 -0
  136. package/src/cli/cmds/utils/needs_recompile.ts +151 -0
  137. package/src/cli/cmds/utils/spawn.ts +16 -0
  138. package/src/cli/preload_crs.ts +7 -0
  139. package/src/cli/util.ts +186 -50
  140. package/src/cli/versioning.ts +3 -3
  141. package/src/examples/token.ts +23 -19
  142. package/src/examples/util.ts +6 -8
  143. package/src/index.ts +5 -6
  144. package/src/{sandbox → local-network}/banana_fpc.ts +28 -29
  145. package/src/local-network/index.ts +7 -0
  146. package/src/local-network/local-network.ts +277 -0
  147. package/src/local-network/sponsored_fpc.ts +26 -0
  148. package/src/testing/anvil_test_watcher.ts +210 -0
  149. package/src/testing/cheat_codes.ts +79 -0
  150. package/src/testing/epoch_test_settler.ts +70 -0
  151. package/src/testing/index.ts +5 -0
  152. package/src/testing/token_allowed_setup.ts +19 -0
  153. package/dest/cli/chain_l2_config.d.ts +0 -19
  154. package/dest/cli/chain_l2_config.d.ts.map +0 -1
  155. package/dest/cli/chain_l2_config.js +0 -56
  156. package/dest/cli/cmds/start_blob_sink.d.ts +0 -3
  157. package/dest/cli/cmds/start_blob_sink.d.ts.map +0 -1
  158. package/dest/cli/cmds/start_blob_sink.js +0 -17
  159. package/dest/cli/cmds/start_faucet.d.ts +0 -4
  160. package/dest/cli/cmds/start_faucet.d.ts.map +0 -1
  161. package/dest/cli/cmds/start_faucet.js +0 -20
  162. package/dest/cli/cmds/start_prover_node.d.ts +0 -7
  163. package/dest/cli/cmds/start_prover_node.d.ts.map +0 -1
  164. package/dest/cli/cmds/start_prover_node.js +0 -110
  165. package/dest/cli/cmds/start_pxe.d.ts +0 -16
  166. package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
  167. package/dest/cli/cmds/start_pxe.js +0 -95
  168. package/dest/cli/get_l1_config.d.ts +0 -7
  169. package/dest/cli/get_l1_config.d.ts.map +0 -1
  170. package/dest/cli/get_l1_config.js +0 -13
  171. package/dest/sandbox/banana_fpc.d.ts +0 -11
  172. package/dest/sandbox/banana_fpc.d.ts.map +0 -1
  173. package/dest/sandbox/index.d.ts +0 -5
  174. package/dest/sandbox/index.d.ts.map +0 -1
  175. package/dest/sandbox/index.js +0 -4
  176. package/dest/sandbox/sandbox.d.ts +0 -76
  177. package/dest/sandbox/sandbox.d.ts.map +0 -1
  178. package/dest/sandbox/sandbox.js +0 -181
  179. package/dest/sandbox/sponsored_fee_payment_method.d.ts +0 -23
  180. package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +0 -1
  181. package/dest/sandbox/sponsored_fee_payment_method.js +0 -36
  182. package/dest/sandbox/sponsored_fpc.d.ts +0 -6
  183. package/dest/sandbox/sponsored_fpc.d.ts.map +0 -1
  184. package/dest/sandbox/sponsored_fpc.js +0 -26
  185. package/src/cli/chain_l2_config.ts +0 -74
  186. package/src/cli/cmds/start_blob_sink.ts +0 -31
  187. package/src/cli/cmds/start_faucet.ts +0 -34
  188. package/src/cli/cmds/start_prover_node.ts +0 -121
  189. package/src/cli/cmds/start_pxe.ts +0 -129
  190. package/src/cli/get_l1_config.ts +0 -18
  191. package/src/sandbox/index.ts +0 -5
  192. package/src/sandbox/sandbox.ts +0 -229
  193. package/src/sandbox/sponsored_fee_payment_method.ts +0 -46
  194. package/src/sandbox/sponsored_fpc.ts +0 -38
@@ -1,36 +1,42 @@
1
- import { Archiver, KVArchiverDataStore, archiverConfigMappings } from '@aztec/archiver';
2
- import { createLogger } from '@aztec/aztec.js';
3
- import { createBlobSinkClient } from '@aztec/blob-sink/client';
4
- import { dataConfigMappings } from '@aztec/kv-store/config';
5
- import { createStore } from '@aztec/kv-store/lmdb-v2';
1
+ import { archiverConfigMappings, createArchiver, getArchiverConfigFromEnv } from '@aztec/archiver';
2
+ import { createLogger } from '@aztec/aztec.js/log';
3
+ import { blobClientConfigMapping, createBlobClient } from '@aztec/blob-client/client';
4
+ import { getL1Config } from '@aztec/cli/config';
6
5
  import { ArchiverApiSchema } from '@aztec/stdlib/interfaces/server';
6
+ import { dataConfigMappings } from '@aztec/stdlib/kv-store';
7
7
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
8
- import { getL1Config } from '../get_l1_config.js';
9
8
  import { extractRelevantOptions } from '../util.js';
10
9
  /** Starts a standalone archiver. */ export async function startArchiver(options, signalHandlers, services) {
11
- let archiverConfig = extractRelevantOptions(options, {
10
+ const envConfig = getArchiverConfigFromEnv();
11
+ const cliOptions = extractRelevantOptions(options, {
12
12
  ...archiverConfigMappings,
13
- ...dataConfigMappings
13
+ ...dataConfigMappings,
14
+ ...blobClientConfigMapping
14
15
  }, 'archiver');
16
+ let archiverConfig = {
17
+ ...envConfig,
18
+ ...cliOptions
19
+ };
20
+ archiverConfig.dataStoreMapSizeKb = archiverConfig.archiverStoreMapSizeKb ?? archiverConfig.dataStoreMapSizeKb;
15
21
  if (!archiverConfig.l1Contracts.registryAddress || archiverConfig.l1Contracts.registryAddress.isZero()) {
16
22
  throw new Error('L1 registry address is required to start an Archiver');
17
23
  }
18
- const { addresses, config } = await getL1Config(archiverConfig.l1Contracts.registryAddress, archiverConfig.l1RpcUrls, archiverConfig.l1ChainId);
24
+ const { addresses, config: l1Config } = await getL1Config(archiverConfig.l1Contracts.registryAddress, archiverConfig.l1RpcUrls, archiverConfig.l1ChainId);
19
25
  archiverConfig.l1Contracts = addresses;
20
26
  archiverConfig = {
21
27
  ...archiverConfig,
22
- ...config
28
+ ...l1Config
23
29
  };
24
- const storeLog = createLogger('archiver:lmdb');
25
- const store = await createStore('archiver', KVArchiverDataStore.SCHEMA_VERSION, archiverConfig, storeLog);
26
- const archiverStore = new KVArchiverDataStore(store, archiverConfig.maxLogs);
27
- const telemetry = initTelemetryClient(getTelemetryClientConfig());
28
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/10056): place CL url in config here
29
- const blobSinkClient = createBlobSinkClient();
30
- const archiver = await Archiver.createAndSync(archiverConfig, archiverStore, {
30
+ const telemetry = await initTelemetryClient(getTelemetryClientConfig());
31
+ const blobClient = createBlobClient(archiverConfig, {
32
+ logger: createLogger('archiver:blob-client:client')
33
+ });
34
+ const archiver = await createArchiver(archiverConfig, {
31
35
  telemetry,
32
- blobSinkClient
33
- }, true);
36
+ blobClient
37
+ }, {
38
+ blockUntilSync: true
39
+ });
34
40
  services.archiver = [
35
41
  archiver,
36
42
  ArchiverApiSchema
@@ -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 { EmbeddedWallet } from '@aztec/wallets/embedded';
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: EmbeddedWallet, aztecNode: AztecNode, telemetry: TelemetryClient, aztecNodeAdmin?: AztecNodeAdmin, userLog?: LogFn): Promise<void>;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbkQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssY0FBYyxFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQzdHLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUt6RCx3QkFBc0IsUUFBUSxDQUM1QixPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixPQUFPLEVBQUUsS0FBSyxpQkF3QmY7QUFFRCx3QkFBc0IsTUFBTSxDQUMxQixPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixNQUFNLEVBQUUsY0FBYyxFQUN0QixTQUFTLEVBQUUsU0FBUyxFQUNwQixTQUFTLEVBQUUsZUFBZSxFQUMxQixjQUFjLENBQUMsRUFBRSxjQUFjLEVBQy9CLE9BQU8sQ0FBQyxFQUFFLEtBQUssaUJBbUJoQiJ9
@@ -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,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAKzD,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,iBAwBf;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,cAAc,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,eAAe,EAC1B,cAAc,CAAC,EAAE,cAAc,EAC/B,OAAO,CAAC,EAAE,KAAK,iBAmBhB"}
@@ -1,27 +1,42 @@
1
- import { BotRunner, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
2
- import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
3
- import { extractRelevantOptions } from '../util.js';
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 { EmbeddedWallet } from '@aztec/wallets/embedded';
7
+ import { extractRelevantOptions, stringifyConfig } 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
  }
16
- const telemetry = initTelemetryClient(getTelemetryClientConfig());
17
- await addBot(options, signalHandlers, services, {
18
- pxe,
19
- telemetry
24
+ const aztecNode = createAztecNodeClient(config.nodeUrl, getVersions(), fetch);
25
+ const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
26
+ userLog(`Creating bot wallet with config ${stringifyConfig(pxeConfig)}`);
27
+ const wallet = await EmbeddedWallet.create(aztecNode, {
28
+ pxeConfig
20
29
  });
30
+ const telemetry = await initTelemetryClient(getTelemetryClientConfig());
31
+ await addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, undefined, userLog);
21
32
  }
22
- export function addBot(options, signalHandlers, services, deps) {
33
+ export async function addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, aztecNodeAdmin, userLog) {
23
34
  const config = extractRelevantOptions(options, botConfigMappings, 'bot');
24
- const botRunner = new BotRunner(config, deps);
35
+ userLog?.(`Starting bot with config ${stringifyConfig(config)}`);
36
+ const db = await (config.dataDirectory ? createStore('bot', BotStore.SCHEMA_VERSION, config) : openTmpStore('bot', true, config.dataStoreMapSizeKb));
37
+ const store = new BotStore(db);
38
+ await store.cleanupOldClaims();
39
+ const botRunner = new BotRunner(config, wallet, aztecNode, telemetry, aztecNodeAdmin, store);
25
40
  if (!config.noStart) {
26
41
  void botRunner.start(); // Do not block since bot setup takes time
27
42
  }
@@ -1,7 +1,8 @@
1
1
  import { type AztecNodeConfig } from '@aztec/aztec-node';
2
+ import { type NetworkNames } from '@aztec/foundation/config';
2
3
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
3
4
  import type { LogFn } from '@aztec/foundation/log';
4
- export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
5
+ export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, adminServices: NamespacedApiHandlers, userLog: LogFn, networkName: NetworkNames): Promise<{
5
6
  config: AztecNodeConfig;
6
7
  }>;
7
- //# sourceMappingURL=start_node.d.ts.map
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfbm9kZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBS3BHLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBZSxNQUFNLDBCQUEwQixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUEwQm5ELHdCQUFzQixTQUFTLENBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLGFBQWEsRUFBRSxxQkFBcUIsRUFDcEMsT0FBTyxFQUFFLEtBQUssRUFDZCxXQUFXLEVBQUUsWUFBWSxHQUN4QixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFBO0NBQUUsQ0FBQyxDQW9LdEMifQ==
@@ -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":"AAAA,OAAO,EAAE,KAAK,eAAe,EAA6C,MAAM,mBAAmB,CAAC;AAKpG,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AA0BnD,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,EACd,WAAW,EAAE,YAAY,GACxB,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CAoKtC"}
@@ -1,87 +1,112 @@
1
- import { getInitialTestAccounts } from '@aztec/accounts/testing';
2
1
  import { aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
3
- import { NULL_KEY } from '@aztec/ethereum';
4
- import { AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
5
- import { P2PApiSchema } from '@aztec/stdlib/interfaces/server';
6
- import { initTelemetryClient, telemetryClientConfigMappings } from '@aztec/telemetry-client';
7
- 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');
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import { getL1Config } from '@aztec/cli/config';
4
+ import { getPublicClient } from '@aztec/ethereum/client';
5
+ import { getGenesisStateConfigEnvVars } from '@aztec/ethereum/config';
6
+ import { SecretValue } from '@aztec/foundation/config';
7
+ import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
8
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
9
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
10
+ import { ProvingJobConsumerSchema, createProvingJobBrokerClient } from '@aztec/prover-client/broker';
11
+ import { allPxeConfigMappings } from '@aztec/pxe/config';
12
+ import { AztecNodeAdminApiSchema, AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
13
+ import { P2PApiSchema, ProverNodeApiSchema } from '@aztec/stdlib/interfaces/server';
14
+ import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
15
+ import { EmbeddedWallet } from '@aztec/wallets/embedded';
16
+ import { createAztecNode } from '../../local-network/index.js';
17
+ import { extractNamespacedOptions, extractRelevantOptions, preloadCrsDataForVerifying, setupVersionChecker } from '../util.js';
18
+ import { getVersions } from '../versioning.js';
19
+ import { computeExpectedGenesisRoot, waitForCompatibleRollup } from './standby.js';
20
+ import { startProverBroker } from './start_prover_broker.js';
21
+ export async function startNode(options, signalHandlers, services, adminServices, userLog, networkName) {
22
+ // All options set from environment variables
23
+ const configFromEnvVars = getConfigEnvVars();
24
+ // Extract relevant options from command line arguments
25
+ const relevantOptions = extractRelevantOptions(options, aztecNodeConfigMappings, 'node');
15
26
  // All options that are relevant to the Aztec Node
16
27
  let nodeConfig = {
17
- ...getConfigEnvVars(),
18
- ...extractRelevantOptions(options, aztecNodeConfigMappings, 'node')
28
+ ...configFromEnvVars,
29
+ ...relevantOptions
19
30
  };
31
+ // Prover node configuration and broker setup
32
+ // REFACTOR: Move the broker setup out of here and into the prover-node factory
33
+ let broker = undefined;
20
34
  if (options.proverNode) {
21
- userLog(`Running a Prover Node within a Node is not yet supported`);
22
- process.exit(1);
23
- }
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
+ nodeConfig.enableProverNode = true;
36
+ if (nodeConfig.proverAgentCount === 0) {
37
+ userLog(`Running prover node without local prover agent. Connect prover agents or pass --proverAgent.proverAgentCount`);
35
38
  }
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');
39
+ if (nodeConfig.proverBrokerUrl) {
40
+ // at 1TPS we'd enqueue ~1k chonk verifier proofs and ~1k AVM proofs immediately
41
+ // set a lower connection limit such that we don't overload the server
42
+ // Keep retrying up to 30s
43
+ const fetch = makeTracedFetch([
44
+ 1,
45
+ 2,
46
+ 3,
47
+ 3,
48
+ 3,
49
+ 3,
50
+ 3,
51
+ 3,
52
+ 3,
53
+ 3,
54
+ 3
55
+ ], false, makeUndiciFetch(new Agent({
56
+ connections: 100
57
+ })));
58
+ broker = createProvingJobBrokerClient(nodeConfig.proverBrokerUrl, getVersions(nodeConfig), fetch);
59
+ } else if (options.proverBroker) {
60
+ ({ broker } = await startProverBroker(options, signalHandlers, services, userLog));
61
+ } else {
62
+ userLog(`--prover-broker-url or --prover-broker is required to start a Prover Node`);
63
+ process.exit(1);
46
64
  }
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
- };
57
65
  }
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;
66
+ await preloadCrsDataForVerifying(nodeConfig, userLog);
67
+ const genesisConfig = getGenesisStateConfigEnvVars();
68
+ const { genesisArchiveRoot, prefilledPublicData } = await computeExpectedGenesisRoot(genesisConfig, userLog);
69
+ const followsCanonicalRollup = typeof nodeConfig.rollupVersion !== 'number' || nodeConfig.rollupVersion === 'canonical';
70
+ if (!nodeConfig.l1Contracts.registryAddress || nodeConfig.l1Contracts.registryAddress.isZero()) {
71
+ throw new Error('L1 registry address is required to start Aztec Node');
67
72
  }
68
- if (!options.sequencer) {
73
+ // Wait for a compatible rollup before proceeding with full L1 config fetch.
74
+ // This prevents crashes when the canonical rollup hasn't been upgraded yet.
75
+ await waitForCompatibleRollup(nodeConfig, {
76
+ genesisArchiveRoot,
77
+ vkTreeRoot: getVKTreeRoot(),
78
+ protocolContractsHash
79
+ }, options.port, userLog);
80
+ const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId, nodeConfig.rollupVersion);
81
+ process.env.ROLLUP_CONTRACT_ADDRESS ??= addresses.rollupAddress.toString();
82
+ if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
83
+ 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}`);
84
+ }
85
+ // TODO(#12272): will clean this up.
86
+ nodeConfig = {
87
+ ...nodeConfig,
88
+ l1Contracts: {
89
+ ...addresses,
90
+ slashFactoryAddress: nodeConfig.l1Contracts.slashFactoryAddress
91
+ },
92
+ ...config
93
+ };
94
+ if (!options.sequencer && !nodeConfig.fishermanMode) {
69
95
  nodeConfig.disableValidator = true;
70
96
  } 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')}`;
97
+ const sequencerConfig = {
98
+ ...configFromEnvVars,
99
+ ...extractNamespacedOptions(options, 'sequencer')
100
+ };
101
+ // If no publisher private keys have been given, use the first validator key
102
+ if (sequencerConfig.sequencerPublisherPrivateKeys === undefined || !sequencerConfig.sequencerPublisherPrivateKeys.length) {
103
+ if (sequencerConfig.validatorPrivateKeys?.getValue().length) {
104
+ sequencerConfig.sequencerPublisherPrivateKeys = [
105
+ new SecretValue(sequencerConfig.validatorPrivateKeys.getValue()[0])
106
+ ];
81
107
  }
82
- } else {
83
- nodeConfig.publisherPrivateKey = sequencerConfig.publisherPrivateKey;
84
108
  }
109
+ nodeConfig.sequencerPublisherPrivateKeys = sequencerConfig.sequencerPublisherPrivateKeys;
85
110
  }
86
111
  if (nodeConfig.p2pEnabled) {
87
112
  // ensure bootstrapNodes is an array
@@ -90,10 +115,11 @@ export async function startNode(options, signalHandlers, services, userLog) {
90
115
  }
91
116
  }
92
117
  const telemetryConfig = extractRelevantOptions(options, telemetryClientConfigMappings, 'tel');
93
- const telemetry = initTelemetryClient(telemetryConfig);
118
+ const telemetry = await initTelemetryClient(telemetryConfig);
94
119
  // Create and start Aztec Node
95
120
  const node = await createAztecNode(nodeConfig, {
96
- telemetry
121
+ telemetry,
122
+ proverBroker: broker
97
123
  }, {
98
124
  prefilledPublicData
99
125
  });
@@ -106,24 +132,41 @@ export async function startNode(options, signalHandlers, services, userLog) {
106
132
  node.getP2P(),
107
133
  P2PApiSchema
108
134
  ];
135
+ adminServices.nodeAdmin = [
136
+ node,
137
+ AztecNodeAdminApiSchema
138
+ ];
139
+ // Register prover-node services if the prover node subsystem is running
140
+ const proverNode = node.getProverNode();
141
+ if (proverNode) {
142
+ services.prover = [
143
+ proverNode,
144
+ ProverNodeApiSchema
145
+ ];
146
+ if (!nodeConfig.proverBrokerUrl) {
147
+ services.provingJobSource = [
148
+ proverNode.getProver().getProvingJobSource(),
149
+ ProvingJobConsumerSchema
150
+ ];
151
+ }
152
+ }
109
153
  // Add node stop function to signal handlers
110
154
  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
155
  // Add a txs bot if requested
120
156
  if (options.bot) {
121
157
  const { addBot } = await import('./start_bot.js');
122
- await addBot(options, signalHandlers, services, {
123
- pxe,
124
- node,
125
- telemetry
158
+ const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
159
+ const wallet = await EmbeddedWallet.create(node, {
160
+ pxeConfig
126
161
  });
162
+ await addBot(options, signalHandlers, services, wallet, node, telemetry, undefined);
163
+ }
164
+ if (nodeConfig.enableVersionCheck && networkName !== 'local') {
165
+ const cacheDir = process.env.DATA_DIRECTORY ? `${process.env.DATA_DIRECTORY}/cache` : undefined;
166
+ try {
167
+ await setupVersionChecker(networkName, followsCanonicalRollup, getPublicClient(nodeConfig), signalHandlers, cacheDir);
168
+ } catch {
169
+ /* no-op */ }
127
170
  }
128
171
  return {
129
172
  config: nodeConfig
@@ -1,6 +1,6 @@
1
1
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
2
- import { type LogFn } from '@aztec/foundation/log';
2
+ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcDJwX2Jvb3RzdHJhcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3AycF9ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWFuRCx3QkFBc0IsaUJBQWlCLENBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLE9BQU8sRUFBRSxLQUFLOztHQWlCZiJ9
@@ -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,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAanD,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"}
@@ -1,17 +1,21 @@
1
1
  import { jsonStringify } from '@aztec/foundation/json-rpc';
2
- import { createLogger } from '@aztec/foundation/log';
3
2
  import { createStore } from '@aztec/kv-store/lmdb-v2';
4
3
  import { BootstrapNode, bootnodeConfigMappings } from '@aztec/p2p';
5
4
  import { emptyChainConfig } from '@aztec/stdlib/config';
6
5
  import { P2PBootstrapApiSchema } from '@aztec/stdlib/interfaces/server';
7
- import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
6
+ import { initTelemetryClient, telemetryClientConfigMappings } from '@aztec/telemetry-client';
8
7
  import { extractRelevantOptions } from '../util.js';
9
8
  export async function startP2PBootstrap(options, signalHandlers, services, userLog) {
10
9
  // Start a P2P bootstrap node.
11
10
  const config = extractRelevantOptions(options, bootnodeConfigMappings, 'p2p');
12
- userLog(`Starting P2P bootstrap node with config: ${jsonStringify(config)}`);
13
- const telemetryClient = initTelemetryClient(getTelemetryClientConfig());
14
- const store = await createStore('p2p-bootstrap', 1, config, createLogger('p2p:bootstrap:store'));
11
+ const safeConfig = {
12
+ ...config,
13
+ peerIdPrivateKey: '<redacted>'
14
+ };
15
+ userLog(`Starting P2P bootstrap node with config: ${jsonStringify(safeConfig)}`);
16
+ const telemetryConfig = extractRelevantOptions(options, telemetryClientConfigMappings, 'tel');
17
+ const telemetryClient = await initTelemetryClient(telemetryConfig);
18
+ const store = await createStore('p2p-bootstrap', 1, config);
15
19
  const node = new BootstrapNode(store, telemetryClient);
16
20
  await node.start(config);
17
21
  signalHandlers.push(()=>node.stop());
@@ -19,7 +23,7 @@ export async function startP2PBootstrap(options, signalHandlers, services, userL
19
23
  node,
20
24
  P2PBootstrapApiSchema
21
25
  ];
22
- userLog(`P2P bootstrap node started on ${config.udpListenAddress}`);
26
+ userLog(`P2P bootstrap node started on ${config.p2pIp}:${config.p2pPort}`);
23
27
  return {
24
28
  config: emptyChainConfig
25
29
  };
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2FnZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfcHJvdmVyX2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFnQm5ELHdCQUFzQixnQkFBZ0IsQ0FDcEMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssaUJBd0RmIn0=
@@ -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,iBAwDf"}
@@ -1,10 +1,11 @@
1
1
  import { times } from '@aztec/foundation/collection';
2
2
  import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
3
3
  import { buildServerCircuitProver } from '@aztec/prover-client';
4
- import { InlineProofStore, ProvingAgent, createProvingJobBrokerClient, proverAgentConfigMappings } from '@aztec/prover-client/broker';
4
+ import { ProvingAgent, createProofStore, 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,23 +17,51 @@ 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
30
43
  })));
31
44
  const broker = createProvingJobBrokerClient(config.proverBrokerUrl, getVersions(), fetch);
32
- const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
45
+ const telemetry = await initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
33
46
  const prover = await buildServerCircuitProver(config, telemetry);
34
- const proofStore = new InlineProofStore();
35
- const agents = times(config.proverAgentCount, ()=>new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs, telemetry));
47
+ const proofStore = await createProofStore(config.proofStore);
48
+ const agents = times(config.proverAgentCount, ()=>new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2Jyb2tlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3Byb3Zlcl9icm9rZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTXhFLHdCQUFzQixpQkFBaUIsQ0FDckMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7SUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUE7Q0FBRSxDQUFDLENBNENuRSJ9
@@ -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;AAGnD,OAAO,EACL,KAAK,kBAAkB,EAKxB,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,CA4CnE"}
@@ -1,8 +1,12 @@
1
- import { ProvingJobBrokerSchema, createAndStartProvingBroker, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
1
+ import { getL1Config } from '@aztec/cli/config';
2
+ import { getGenesisStateConfigEnvVars } from '@aztec/ethereum/config';
3
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
4
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
5
+ import { ProvingJobBrokerSchema, ProvingJobBrokerSchemaWithDebug, createAndStartProvingBroker, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
2
6
  import { getProverNodeBrokerConfigFromEnv } from '@aztec/prover-node';
3
7
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
4
- import { getL1Config } from '../get_l1_config.js';
5
8
  import { extractRelevantOptions } from '../util.js';
9
+ import { computeExpectedGenesisRoot, waitForCompatibleRollup } from './standby.js';
6
10
  export async function startProverBroker(options, signalHandlers, services, userLog) {
7
11
  if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
8
12
  userLog(`Starting a prover broker with --node, --sequencer, --pxe, --p2p-bootstrap, or --txe is not supported.`);
@@ -15,13 +19,21 @@ export async function startProverBroker(options, signalHandlers, services, userL
15
19
  if (!config.l1Contracts.registryAddress || config.l1Contracts.registryAddress.isZero()) {
16
20
  throw new Error('L1 registry address is required to start Aztec Node without --deploy-aztec-contracts option');
17
21
  }
18
- const { addresses } = await getL1Config(config.l1Contracts.registryAddress, config.l1RpcUrls, config.l1ChainId);
22
+ const genesisConfig = getGenesisStateConfigEnvVars();
23
+ const { genesisArchiveRoot } = await computeExpectedGenesisRoot(genesisConfig, userLog);
24
+ await waitForCompatibleRollup(config, {
25
+ genesisArchiveRoot,
26
+ vkTreeRoot: getVKTreeRoot(),
27
+ protocolContractsHash
28
+ }, options.port, userLog);
29
+ const { addresses, config: rollupConfig } = await getL1Config(config.l1Contracts.registryAddress, config.l1RpcUrls, config.l1ChainId, config.rollupVersion);
19
30
  config.l1Contracts = addresses;
20
- const client = initTelemetryClient(getTelemetryClientConfig());
31
+ config.rollupVersion = rollupConfig.rollupVersion;
32
+ const client = await initTelemetryClient(getTelemetryClientConfig());
21
33
  const broker = await createAndStartProvingBroker(config, client);
22
34
  services.proverBroker = [
23
35
  broker,
24
- ProvingJobBrokerSchema
36
+ config.proverBrokerDebugReplayEnabled ? ProvingJobBrokerSchemaWithDebug : ProvingJobBrokerSchema
25
37
  ];
26
38
  signalHandlers.push(()=>broker.stop());
27
39
  return {
@@ -1,3 +1,3 @@
1
1
  import type { Logger } from '@aztec/foundation/log';
2
2
  export declare function startTXE(options: any, debugLogger: Logger): Promise<void>;
3
- //# sourceMappingURL=start_txe.d.ts.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfdHhlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfdHhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3BELHdCQUFzQixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFVL0QifQ==