@aztec/aztec 0.0.0-test.1 → 0.0.1-commit.b655e406

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 (111) hide show
  1. package/dest/bin/index.js +20 -12
  2. package/dest/cli/aztec_start_action.d.ts.map +1 -1
  3. package/dest/cli/aztec_start_action.js +32 -33
  4. package/dest/cli/aztec_start_options.d.ts +4 -2
  5. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  6. package/dest/cli/aztec_start_options.js +137 -207
  7. package/dest/cli/cli.d.ts.map +1 -1
  8. package/dest/cli/cli.js +4 -0
  9. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  10. package/dest/cli/cmds/start_archiver.js +18 -10
  11. package/dest/cli/cmds/start_blob_sink.d.ts.map +1 -1
  12. package/dest/cli/cmds/start_blob_sink.js +17 -1
  13. package/dest/cli/cmds/start_bot.d.ts +3 -6
  14. package/dest/cli/cmds/start_bot.d.ts.map +1 -1
  15. package/dest/cli/cmds/start_bot.js +24 -13
  16. package/dest/cli/cmds/start_node.d.ts +1 -1
  17. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  18. package/dest/cli/cmds/start_node.js +66 -79
  19. package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
  20. package/dest/cli/cmds/start_p2p_bootstrap.js +9 -4
  21. package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
  22. package/dest/cli/cmds/start_prover_agent.js +31 -2
  23. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  24. package/dest/cli/cmds/start_prover_broker.js +9 -3
  25. package/dest/cli/cmds/start_prover_node.d.ts.map +1 -1
  26. package/dest/cli/cmds/start_prover_node.js +43 -45
  27. package/dest/cli/preload_crs.d.ts +3 -0
  28. package/dest/cli/preload_crs.d.ts.map +1 -0
  29. package/dest/cli/preload_crs.js +6 -0
  30. package/dest/cli/release_version.d.ts +2 -0
  31. package/dest/cli/release_version.d.ts.map +1 -0
  32. package/dest/cli/release_version.js +14 -0
  33. package/dest/cli/util.d.ts +36 -5
  34. package/dest/cli/util.d.ts.map +1 -1
  35. package/dest/cli/util.js +198 -28
  36. package/dest/cli/versioning.js +3 -3
  37. package/dest/examples/token.js +31 -18
  38. package/dest/examples/util.d.ts +4 -5
  39. package/dest/examples/util.d.ts.map +1 -1
  40. package/dest/examples/util.js +5 -6
  41. package/dest/index.d.ts +1 -1
  42. package/dest/index.d.ts.map +1 -1
  43. package/dest/index.js +1 -1
  44. package/dest/sandbox/banana_fpc.d.ts +4 -5
  45. package/dest/sandbox/banana_fpc.d.ts.map +1 -1
  46. package/dest/sandbox/banana_fpc.js +19 -21
  47. package/dest/sandbox/index.d.ts +2 -3
  48. package/dest/sandbox/index.d.ts.map +1 -1
  49. package/dest/sandbox/index.js +2 -3
  50. package/dest/sandbox/sandbox.d.ts +25 -27
  51. package/dest/sandbox/sandbox.d.ts.map +1 -1
  52. package/dest/sandbox/sandbox.js +51 -49
  53. package/dest/sandbox/sponsored_fpc.d.ts +3 -5
  54. package/dest/sandbox/sponsored_fpc.d.ts.map +1 -1
  55. package/dest/sandbox/sponsored_fpc.js +10 -18
  56. package/dest/testing/anvil_test_watcher.d.ts +34 -0
  57. package/dest/testing/anvil_test_watcher.d.ts.map +1 -0
  58. package/dest/testing/anvil_test_watcher.js +142 -0
  59. package/dest/testing/cheat_codes.d.ts +43 -0
  60. package/dest/testing/cheat_codes.d.ts.map +1 -0
  61. package/dest/testing/cheat_codes.js +62 -0
  62. package/dest/testing/index.d.ts +4 -0
  63. package/dest/testing/index.d.ts.map +1 -0
  64. package/dest/testing/index.js +3 -0
  65. package/package.json +47 -41
  66. package/src/bin/index.ts +24 -12
  67. package/src/cli/aztec_start_action.ts +27 -30
  68. package/src/cli/aztec_start_options.ts +155 -207
  69. package/src/cli/cli.ts +8 -0
  70. package/src/cli/cmds/start_archiver.ts +19 -13
  71. package/src/cli/cmds/start_blob_sink.ts +27 -1
  72. package/src/cli/cmds/start_bot.ts +35 -12
  73. package/src/cli/cmds/start_node.ts +89 -84
  74. package/src/cli/cmds/start_p2p_bootstrap.ts +12 -4
  75. package/src/cli/cmds/start_prover_agent.ts +22 -2
  76. package/src/cli/cmds/start_prover_broker.ts +23 -3
  77. package/src/cli/cmds/start_prover_node.ts +53 -50
  78. package/src/cli/preload_crs.ts +7 -0
  79. package/src/cli/release_version.ts +21 -0
  80. package/src/cli/util.ts +208 -34
  81. package/src/cli/versioning.ts +3 -3
  82. package/src/examples/token.ts +23 -19
  83. package/src/examples/util.ts +6 -8
  84. package/src/index.ts +3 -4
  85. package/src/sandbox/banana_fpc.ts +20 -25
  86. package/src/sandbox/index.ts +5 -3
  87. package/src/sandbox/sandbox.ts +70 -57
  88. package/src/sandbox/sponsored_fpc.ts +12 -25
  89. package/src/testing/anvil_test_watcher.ts +164 -0
  90. package/src/testing/cheat_codes.ts +78 -0
  91. package/src/testing/index.ts +3 -0
  92. package/dest/cli/chain_l2_config.d.ts +0 -19
  93. package/dest/cli/chain_l2_config.d.ts.map +0 -1
  94. package/dest/cli/chain_l2_config.js +0 -56
  95. package/dest/cli/cmds/start_faucet.d.ts +0 -4
  96. package/dest/cli/cmds/start_faucet.d.ts.map +0 -1
  97. package/dest/cli/cmds/start_faucet.js +0 -20
  98. package/dest/cli/cmds/start_pxe.d.ts +0 -16
  99. package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
  100. package/dest/cli/cmds/start_pxe.js +0 -95
  101. package/dest/cli/get_l1_config.d.ts +0 -7
  102. package/dest/cli/get_l1_config.d.ts.map +0 -1
  103. package/dest/cli/get_l1_config.js +0 -13
  104. package/dest/sandbox/sponsored_fee_payment_method.d.ts +0 -23
  105. package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +0 -1
  106. package/dest/sandbox/sponsored_fee_payment_method.js +0 -36
  107. package/src/cli/chain_l2_config.ts +0 -74
  108. package/src/cli/cmds/start_faucet.ts +0 -34
  109. package/src/cli/cmds/start_pxe.ts +0 -129
  110. package/src/cli/get_l1_config.ts +0 -18
  111. package/src/sandbox/sponsored_fee_payment_method.ts +0 -46
@@ -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
7
  //# sourceMappingURL=start_node.d.ts.map
@@ -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 '../../sandbox/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
  }
48
+ // TODO(#12272): will clean this up.
49
+ nodeConfig = {
50
+ ...nodeConfig,
51
+ l1Contracts: {
52
+ ...addresses,
53
+ slashFactoryAddress: nodeConfig.l1Contracts.slashFactoryAddress
54
+ },
55
+ ...config
56
+ };
68
57
  if (!options.sequencer) {
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
@@ -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 +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()));
@@ -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
@@ -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"}
@@ -1,15 +1,15 @@
1
- import { getInitialTestAccounts } from '@aztec/accounts/testing';
2
- import { NULL_KEY } from '@aztec/ethereum';
1
+ import { getInitialTestAccountsData } from '@aztec/accounts/testing';
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
4
+ import { getL1Config } from '@aztec/cli/config';
5
+ import { getPublicClient } from '@aztec/ethereum';
3
6
  import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
4
7
  import { ProvingJobConsumerSchema, createProvingJobBrokerClient } from '@aztec/prover-client/broker';
5
8
  import { createProverNode, getProverNodeConfigFromEnv, proverNodeConfigMappings } from '@aztec/prover-node';
6
- import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
7
9
  import { P2PApiSchema, ProverNodeApiSchema } from '@aztec/stdlib/interfaces/server';
8
10
  import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
9
11
  import { getGenesisValues } from '@aztec/world-state/testing';
10
- import { mnemonicToAccount } from 'viem/accounts';
11
- import { getL1Config } from '../get_l1_config.js';
12
- import { extractRelevantOptions } from '../util.js';
12
+ import { extractRelevantOptions, preloadCrsDataForVerifying, setupUpdateMonitor } from '../util.js';
13
13
  import { getVersions } from '../versioning.js';
14
14
  import { startProverBroker } from './start_prover_broker.js';
15
15
  export async function startProverNode(options, signalHandlers, services, userLog) {
@@ -21,48 +21,45 @@ export async function startProverNode(options, signalHandlers, services, userLog
21
21
  ...getProverNodeConfigFromEnv(),
22
22
  ...extractRelevantOptions(options, proverNodeConfigMappings, 'proverNode')
23
23
  };
24
- if (!options.archiver && !proverConfig.archiverUrl) {
25
- userLog('--archiver.archiverUrl is required to start a Prover Node without --archiver option');
26
- process.exit(1);
27
- }
28
- if (!proverConfig.publisherPrivateKey || proverConfig.publisherPrivateKey === NULL_KEY) {
29
- if (!options.l1Mnemonic) {
30
- userLog(`--l1-mnemonic is required to start a Prover Node without --node.publisherPrivateKey`);
31
- process.exit(1);
32
- }
33
- const hdAccount = mnemonicToAccount(options.l1Mnemonic);
34
- const privKey = hdAccount.getHdKey().privateKey;
35
- proverConfig.publisherPrivateKey = `0x${Buffer.from(privKey).toString('hex')}`;
36
- }
37
- // TODO(palla/prover-node) L1 contract addresses should not silently default to zero,
38
- // they should be undefined if not set and fail loudly.
39
- // Load l1 contract addresses from aztec node if not set.
40
- const isRollupAddressSet = proverConfig.l1Contracts?.rollupAddress && !proverConfig.l1Contracts.rollupAddress.isZero();
41
- const nodeUrl = proverConfig.nodeUrl ?? proverConfig.proverCoordinationNodeUrl;
42
- if (nodeUrl && !isRollupAddressSet) {
43
- userLog(`Loading L1 contract addresses from aztec node at ${nodeUrl}`);
44
- proverConfig.l1Contracts = await createAztecNodeClient(nodeUrl).getL1ContractAddresses();
24
+ if (!proverConfig.l1Contracts.registryAddress || proverConfig.l1Contracts.registryAddress.isZero()) {
25
+ throw new Error('L1 registry address is required to start a Prover Node');
45
26
  }
46
- // If we create an archiver here, validate the L1 config
47
- if (options.archiver) {
48
- if (!proverConfig.l1Contracts.registryAddress || proverConfig.l1Contracts.registryAddress.isZero()) {
49
- throw new Error('L1 registry address is required to start a Prover Node with --archiver option');
50
- }
51
- const { addresses, config } = await getL1Config(proverConfig.l1Contracts.registryAddress, proverConfig.l1RpcUrls, proverConfig.l1ChainId);
52
- proverConfig.l1Contracts = addresses;
53
- proverConfig = {
54
- ...proverConfig,
55
- ...config
56
- };
27
+ const followsCanonicalRollup = typeof proverConfig.rollupVersion !== 'number';
28
+ const { addresses, config } = await getL1Config(proverConfig.l1Contracts.registryAddress, proverConfig.l1RpcUrls, proverConfig.l1ChainId, proverConfig.rollupVersion);
29
+ process.env.ROLLUP_CONTRACT_ADDRESS ??= addresses.rollupAddress.toString();
30
+ proverConfig.l1Contracts = addresses;
31
+ proverConfig = {
32
+ ...proverConfig,
33
+ ...config
34
+ };
35
+ const testAccounts = proverConfig.testAccounts ? (await getInitialTestAccountsData()).map((a)=>a.address) : [];
36
+ const sponsoredFPCAccounts = proverConfig.sponsoredFPC ? [
37
+ await getSponsoredFPCAddress()
38
+ ] : [];
39
+ const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
40
+ userLog(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
41
+ const { genesisArchiveRoot, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
42
+ userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
43
+ if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
44
+ 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}`);
57
45
  }
58
46
  const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
59
47
  let broker;
60
48
  if (proverConfig.proverBrokerUrl) {
61
- // at 1TPS we'd enqueue ~1k tube proofs and ~1k AVM proofs immediately
62
- // set a lower connectio limit such that we don't overload the server
49
+ // at 1TPS we'd enqueue ~1k chonk verifier proofs and ~1k AVM proofs immediately
50
+ // set a lower connection limit such that we don't overload the server
51
+ // Keep retrying up to 30s
63
52
  const fetch = makeTracedFetch([
64
53
  1,
65
54
  2,
55
+ 3,
56
+ 3,
57
+ 3,
58
+ 3,
59
+ 3,
60
+ 3,
61
+ 3,
62
+ 3,
66
63
  3
67
64
  ], false, makeUndiciFetch(new Agent({
68
65
  connections: 100
@@ -77,8 +74,7 @@ export async function startProverNode(options, signalHandlers, services, userLog
77
74
  if (proverConfig.proverAgentCount === 0) {
78
75
  userLog(`Running prover node without local prover agent. Connect one or more prover agents to this node or pass --proverAgent.proverAgentCount`);
79
76
  }
80
- const initialFundedAccounts = proverConfig.testAccounts ? await getInitialTestAccounts() : [];
81
- const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts.map((a)=>a.address));
77
+ await preloadCrsDataForVerifying(proverConfig, userLog);
82
78
  const proverNode = await createProverNode(proverConfig, {
83
79
  telemetry,
84
80
  broker
@@ -89,8 +85,7 @@ export async function startProverNode(options, signalHandlers, services, userLog
89
85
  proverNode,
90
86
  ProverNodeApiSchema
91
87
  ];
92
- const p2p = proverNode.getP2P();
93
- if (p2p) {
88
+ if (proverNode.getP2P()) {
94
89
  services.p2p = [
95
90
  proverNode.getP2P(),
96
91
  P2PApiSchema
@@ -103,7 +98,10 @@ export async function startProverNode(options, signalHandlers, services, userLog
103
98
  ];
104
99
  }
105
100
  signalHandlers.push(proverNode.stop.bind(proverNode));
106
- proverNode.start();
101
+ await proverNode.start();
102
+ if (proverConfig.autoUpdate !== 'disabled' && proverConfig.autoUpdateUrl) {
103
+ await setupUpdateMonitor(proverConfig.autoUpdate, new URL(proverConfig.autoUpdateUrl), followsCanonicalRollup, getPublicClient(proverConfig), proverConfig.l1Contracts.registryAddress, signalHandlers);
104
+ }
107
105
  return {
108
106
  config: proverConfig
109
107
  };
@@ -0,0 +1,3 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ export declare function preloadCrs(_options: any, userLog: LogFn, _debugLogger: Logger): Promise<void>;
3
+ //# sourceMappingURL=preload_crs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preload_crs.d.ts","sourceRoot":"","sources":["../../src/cli/preload_crs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,wBAAsB,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,iBAEnF"}
@@ -0,0 +1,6 @@
1
+ import { preloadCrsDataForServerSideProving } from './util.js';
2
+ export async function preloadCrs(_options, userLog, _debugLogger) {
3
+ await preloadCrsDataForServerSideProving({
4
+ realProofs: true
5
+ }, userLog);
6
+ }
@@ -0,0 +1,2 @@
1
+ export declare const getCliVersion: () => any;
2
+ //# sourceMappingURL=release_version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release_version.d.ts","sourceRoot":"","sources":["../../src/cli/release_version.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,WAezB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { fileURLToPath } from '@aztec/foundation/url';
2
+ import { readFileSync } from 'fs';
3
+ import { dirname, resolve } from 'path';
4
+ export const getCliVersion = ()=>{
5
+ const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
6
+ const cliVersion = JSON.parse(readFileSync(packageJsonPath).toString()).version;
7
+ // If the version is 0.1.0, this is a placeholder version and we are in a docker container; query release please for the latest version
8
+ if (cliVersion === '0.1.0') {
9
+ const releasePleasePath = resolve(dirname(fileURLToPath(import.meta.url)), '../../../../.release-please-manifest.json');
10
+ const releaseVersion = JSON.parse(readFileSync(releasePleasePath).toString())['.'];
11
+ return releaseVersion;
12
+ }
13
+ return cliVersion;
14
+ };