@aztec/aztec 0.0.1-commit.033589e → 0.0.1-commit.04852196a

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 (56) hide show
  1. package/dest/bin/index.js +2 -2
  2. package/dest/cli/aztec_start_action.d.ts +1 -1
  3. package/dest/cli/aztec_start_action.d.ts.map +1 -1
  4. package/dest/cli/aztec_start_action.js +5 -3
  5. package/dest/cli/aztec_start_options.d.ts +1 -1
  6. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  7. package/dest/cli/aztec_start_options.js +2 -3
  8. package/dest/cli/cmds/compile.d.ts +1 -1
  9. package/dest/cli/cmds/compile.d.ts.map +1 -1
  10. package/dest/cli/cmds/compile.js +5 -0
  11. package/dest/cli/cmds/standby.d.ts +27 -0
  12. package/dest/cli/cmds/standby.d.ts.map +1 -0
  13. package/dest/cli/cmds/standby.js +78 -0
  14. package/dest/cli/cmds/start_archiver.d.ts +2 -2
  15. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  16. package/dest/cli/cmds/start_archiver.js +1 -1
  17. package/dest/cli/cmds/start_node.d.ts +3 -2
  18. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  19. package/dest/cli/cmds/start_node.js +13 -71
  20. package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
  21. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  22. package/dest/cli/cmds/start_prover_broker.js +6 -6
  23. package/dest/cli/cmds/utils/needs_recompile.d.ts +10 -0
  24. package/dest/cli/cmds/utils/needs_recompile.d.ts.map +1 -0
  25. package/dest/cli/cmds/utils/needs_recompile.js +124 -0
  26. package/dest/cli/util.d.ts +3 -5
  27. package/dest/cli/util.d.ts.map +1 -1
  28. package/dest/cli/util.js +37 -78
  29. package/dest/local-network/local-network.d.ts +1 -1
  30. package/dest/local-network/local-network.d.ts.map +1 -1
  31. package/dest/local-network/local-network.js +9 -1
  32. package/dest/testing/index.d.ts +2 -1
  33. package/dest/testing/index.d.ts.map +1 -1
  34. package/dest/testing/index.js +1 -0
  35. package/dest/testing/token_allowed_setup.d.ts +7 -0
  36. package/dest/testing/token_allowed_setup.d.ts.map +1 -0
  37. package/dest/testing/token_allowed_setup.js +20 -0
  38. package/package.json +35 -34
  39. package/scripts/aztec.sh +3 -0
  40. package/src/bin/index.ts +2 -2
  41. package/src/cli/aztec_start_action.ts +5 -3
  42. package/src/cli/aztec_start_options.ts +2 -3
  43. package/src/cli/cmds/compile.ts +6 -0
  44. package/src/cli/cmds/standby.ts +111 -0
  45. package/src/cli/cmds/start_archiver.ts +1 -1
  46. package/src/cli/cmds/start_node.ts +21 -106
  47. package/src/cli/cmds/start_prover_broker.ts +7 -14
  48. package/src/cli/cmds/utils/needs_recompile.ts +139 -0
  49. package/src/cli/util.ts +41 -74
  50. package/src/local-network/local-network.ts +6 -0
  51. package/src/testing/index.ts +1 -0
  52. package/src/testing/token_allowed_setup.ts +19 -0
  53. package/dest/cli/release_version.d.ts +0 -2
  54. package/dest/cli/release_version.d.ts.map +0 -1
  55. package/dest/cli/release_version.js +0 -14
  56. package/src/cli/release_version.ts +0 -21
package/dest/bin/index.js CHANGED
@@ -11,12 +11,12 @@ import { injectCommands as injectMiscCommands } from '@aztec/cli/misc';
11
11
  import { injectCommands as injectValidatorKeysCommands } from '@aztec/cli/validator_keys';
12
12
  import { getActiveNetworkName } from '@aztec/foundation/config';
13
13
  import { createConsoleLogger, createLogger } from '@aztec/foundation/log';
14
+ import { getPackageVersion } from '@aztec/stdlib/update-checker';
14
15
  import { Command } from 'commander';
15
16
  import { injectCompileCommand } from '../cli/cmds/compile.js';
16
17
  import { injectMigrateCommand } from '../cli/cmds/migrate_ha_db.js';
17
18
  import { injectProfileCommand } from '../cli/cmds/profile.js';
18
19
  import { injectAztecCommands } from '../cli/index.js';
19
- import { getCliVersion } from '../cli/release_version.js';
20
20
  const NETWORK_FLAG = 'network';
21
21
  const userLog = createConsoleLogger();
22
22
  const debugLogger = createLogger('cli');
@@ -36,7 +36,7 @@ const debugLogger = createLogger('cli');
36
36
  const networkName = getActiveNetworkName(networkValue);
37
37
  await enrichEnvironmentWithNetworkConfig(networkName);
38
38
  enrichEnvironmentWithChainName(networkName);
39
- const cliVersion = getCliVersion();
39
+ const cliVersion = getPackageVersion() ?? 'unknown';
40
40
  let program = new Command('aztec');
41
41
  program.description('Aztec command line interface').version(cliVersion).enablePositionalOptions();
42
42
  program = injectAztecCommands(program, userLog, debugLogger);
@@ -1,3 +1,3 @@
1
1
  import type { LogFn, Logger } from '@aztec/foundation/log';
2
2
  export declare function aztecStart(options: any, userLog: LogFn, debugLogger: Logger): Promise<void>;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfc3RhcnRfYWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2F6dGVjX3N0YXJ0X2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFhM0Qsd0JBQXNCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBd0lqRiJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfc3RhcnRfYWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2F6dGVjX3N0YXJ0X2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFhM0Qsd0JBQXNCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBeUlqRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"aztec_start_action.d.ts","sourceRoot":"","sources":["../../src/cli/aztec_start_action.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAa3D,wBAAsB,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAwIjF"}
1
+ {"version":3,"file":"aztec_start_action.d.ts","sourceRoot":"","sources":["../../src/cli/aztec_start_action.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAa3D,wBAAsB,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAyIjF"}
@@ -1,11 +1,12 @@
1
+ import { getActiveNetworkName } from '@aztec/foundation/config';
1
2
  import { createNamespacedSafeJsonRpcServer, getApiKeyAuthMiddleware, startHttpRpcServer } from '@aztec/foundation/json-rpc/server';
2
3
  import { AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
4
+ import { getPackageVersion } from '@aztec/stdlib/update-checker';
3
5
  import { getVersioningMiddleware } from '@aztec/stdlib/versioning';
4
6
  import { getOtelJsonRpcPropagationMiddleware } from '@aztec/telemetry-client';
5
7
  import { createLocalNetwork } from '../local-network/index.js';
6
8
  import { github, splash } from '../splash.js';
7
9
  import { resolveAdminApiKey } from './admin_api_key_store.js';
8
- import { getCliVersion } from './release_version.js';
9
10
  import { extractNamespacedOptions, installSignalHandlers } from './util.js';
10
11
  import { getVersions } from './versioning.js';
11
12
  export async function aztecStart(options, userLog, debugLogger) {
@@ -15,7 +16,7 @@ export async function aztecStart(options, userLog, debugLogger) {
15
16
  const adminServices = {};
16
17
  let config = undefined;
17
18
  if (options.localNetwork) {
18
- const cliVersion = getCliVersion();
19
+ const cliVersion = getPackageVersion() ?? 'unknown';
19
20
  const localNetwork = extractNamespacedOptions(options, 'local-network');
20
21
  localNetwork.testAccounts = true;
21
22
  userLog(`${splash}\n${github}\n\n`);
@@ -44,7 +45,8 @@ export async function aztecStart(options, userLog, debugLogger) {
44
45
  }
45
46
  if (options.node) {
46
47
  const { startNode } = await import('./cmds/start_node.js');
47
- ({ config } = await startNode(options, signalHandlers, services, adminServices, userLog));
48
+ const networkName = getActiveNetworkName(options.network);
49
+ ({ config } = await startNode(options, signalHandlers, services, adminServices, userLog, networkName));
48
50
  } else if (options.bot) {
49
51
  const { startBot } = await import('./cmds/start_bot.js');
50
52
  await startBot(options, signalHandlers, services, userLog);
@@ -14,4 +14,4 @@ export declare const NETWORK_FLAG = "network";
14
14
  export declare const aztecStartOptions: {
15
15
  [key: string]: AztecStartOption[];
16
16
  };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfc3RhcnRfb3B0aW9ucy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9henRlY19zdGFydF9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxNQUFNLEVBSVosTUFBTSwwQkFBMEIsQ0FBQztBQWVsQyxNQUFNLFdBQVcsZ0JBQWdCO0lBQy9CLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLFlBQVksRUFBRSxHQUFHLENBQUM7SUFDbEIsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLE1BQU0sQ0FBQztJQUNwQyxHQUFHLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUN4QixRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNwQixRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDO0NBQ2pDO0FBRUQsZUFBTyxNQUFNLFVBQVUsMEZBb0J0QixDQUFDO0FBdUJGLGVBQU8sTUFBTSxnQkFBZ0IsVUFZNUIsQ0FBQztBQUVGLGVBQU8sTUFBTSxZQUFZLFlBQVksQ0FBQztBQUd0QyxlQUFPLE1BQU0saUJBQWlCLEVBQUU7SUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQTtDQXVPbEUsQ0FBQyJ9
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfc3RhcnRfb3B0aW9ucy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9henRlY19zdGFydF9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxNQUFNLEVBSVosTUFBTSwwQkFBMEIsQ0FBQztBQWVsQyxNQUFNLFdBQVcsZ0JBQWdCO0lBQy9CLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLFlBQVksRUFBRSxHQUFHLENBQUM7SUFDbEIsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLE1BQU0sQ0FBQztJQUNwQyxHQUFHLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUN4QixRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNwQixRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDO0NBQ2pDO0FBRUQsZUFBTyxNQUFNLFVBQVUsMEZBb0J0QixDQUFDO0FBdUJGLGVBQU8sTUFBTSxnQkFBZ0IsVUFZNUIsQ0FBQztBQUVGLGVBQU8sTUFBTSxZQUFZLFlBQVksQ0FBQztBQUd0QyxlQUFPLE1BQU0saUJBQWlCLEVBQUU7SUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQTtDQXNPbEUsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"aztec_start_options.d.ts","sourceRoot":"","sources":["../../src/cli/aztec_start_options.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,MAAM,EAIZ,MAAM,0BAA0B,CAAC;AAelC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IACpC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;CACjC;AAED,eAAO,MAAM,UAAU,0FAoBtB,CAAC;AAuBF,eAAO,MAAM,gBAAgB,UAY5B,CAAC;AAEF,eAAO,MAAM,YAAY,YAAY,CAAC;AAGtC,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CAuOlE,CAAC"}
1
+ {"version":3,"file":"aztec_start_options.d.ts","sourceRoot":"","sources":["../../src/cli/aztec_start_options.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,MAAM,EAIZ,MAAM,0BAA0B,CAAC;AAelC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IACpC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;CACjC;AAED,eAAO,MAAM,UAAU,0FAoBtB,CAAC;AAuBF,eAAO,MAAM,gBAAgB,UAY5B,CAAC;AAEF,eAAO,MAAM,YAAY,YAAY,CAAC;AAGtC,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CAsOlE,CAAC"}
@@ -6,7 +6,6 @@ import { l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresse
6
6
  import { l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
7
7
  import { getKeys } from '@aztec/foundation/collection';
8
8
  import { booleanConfigHelper, isBooleanConfigValue, omitConfigMappings } from '@aztec/foundation/config';
9
- import { dataConfigMappings } from '@aztec/kv-store/config';
10
9
  import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
11
10
  import { bootnodeConfigMappings, p2pConfigMappings } from '@aztec/p2p/config';
12
11
  import { proverAgentConfigMappings, proverBrokerConfigMappings } from '@aztec/prover-client/broker/config';
@@ -14,6 +13,7 @@ import { proverNodeConfigMappings } from '@aztec/prover-node/config';
14
13
  import { allPxeConfigMappings } from '@aztec/pxe/config';
15
14
  import { sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
16
15
  import { chainConfigMappings, nodeRpcConfigMappings } from '@aztec/stdlib/config';
16
+ import { dataConfigMappings } from '@aztec/stdlib/kv-store';
17
17
  import { telemetryClientConfigMappings } from '@aztec/telemetry-client/config';
18
18
  import { worldStateConfigMappings } from '@aztec/world-state/config';
19
19
  import { DefaultMnemonic } from '../mnemonic.js';
@@ -76,8 +76,7 @@ export const aztecStartOptions = {
76
76
  defaultValue: undefined,
77
77
  env: 'NETWORK'
78
78
  },
79
- configToFlag('--auto-update', sharedNodeConfigMappings.autoUpdate),
80
- configToFlag('--auto-update-url', sharedNodeConfigMappings.autoUpdateUrl),
79
+ configToFlag('--enable-version-check', sharedNodeConfigMappings.enableVersionCheck),
81
80
  configToFlag('--sync-mode', sharedNodeConfigMappings.syncMode),
82
81
  configToFlag('--snapshots-urls', sharedNodeConfigMappings.snapshotsUrls),
83
82
  configToFlag('--fisherman-mode', sharedNodeConfigMappings.fishermanMode)
@@ -1,4 +1,4 @@
1
1
  import type { LogFn } from '@aztec/foundation/log';
2
2
  import type { Command } from 'commander';
3
3
  export declare function injectCompileCommand(program: Command, log: LogFn): Command;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL2NvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbkQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBOEp6Qyx3QkFBZ0Isb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FzQjFFIn0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL2NvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbkQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBb0t6Qyx3QkFBZ0Isb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FzQjFFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/compile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8JzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAsB1E"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/compile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoKzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAsB1E"}
@@ -2,6 +2,7 @@ import { execFileSync } from 'child_process';
2
2
  import { readFile, writeFile } from 'fs/promises';
3
3
  import { join } from 'path';
4
4
  import { readArtifactFiles } from './utils/artifacts.js';
5
+ import { needsRecompile } from './utils/needs_recompile.js';
5
6
  import { run } from './utils/spawn.js';
6
7
  /** Returns paths to contract artifacts in the target directory. */ async function collectContractArtifacts() {
7
8
  let files;
@@ -116,6 +117,10 @@ import { run } from './utils/spawn.js';
116
117
  }
117
118
  }
118
119
  /** Compiles Aztec Noir contracts and postprocesses artifacts. */ async function compileAztecContract(nargoArgs, log) {
120
+ if (!await needsRecompile()) {
121
+ log('No source changes detected, skipping compilation.');
122
+ return;
123
+ }
119
124
  const nargo = process.env.NARGO ?? 'nargo';
120
125
  const bb = process.env.BB ?? 'bb';
121
126
  await run(nargo, [
@@ -0,0 +1,27 @@
1
+ import type { Fr } from '@aztec/aztec.js/fields';
2
+ import type { GenesisStateConfig } from '@aztec/ethereum/config';
3
+ import type { EthAddress } from '@aztec/foundation/eth-address';
4
+ import type { LogFn } from '@aztec/foundation/log';
5
+ /**
6
+ * Computes the expected genesis archive root from the genesis state config.
7
+ * Reads test accounts and sponsored FPC addresses as specified, then computes
8
+ * the genesis values including the archive root and prefilled public data.
9
+ */
10
+ export declare function computeExpectedGenesisRoot(config: GenesisStateConfig, userLog: LogFn): Promise<{
11
+ genesisArchiveRoot: Fr;
12
+ prefilledPublicData: import("@aztec/stdlib/trees").PublicDataTreeLeaf[];
13
+ }>;
14
+ /**
15
+ * Waits until the canonical rollup's genesis archive root matches the expected local genesis root.
16
+ * If the rollup is not yet compatible (e.g. during L1 contract upgrades), enters standby mode:
17
+ * starts a lightweight HTTP server for K8s liveness probes and polls every 60s until a compatible rollup appears.
18
+ */
19
+ export declare function waitForCompatibleRollup(config: {
20
+ l1RpcUrls: string[];
21
+ l1ChainId: number;
22
+ l1Contracts: {
23
+ registryAddress: EthAddress;
24
+ };
25
+ rollupVersion?: number;
26
+ }, expectedGenesisRoot: Fr, port: number | undefined, userLog: LogFn): Promise<void>;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRieS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YW5kYnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHakQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVNuRDs7OztHQUlHO0FBQ0gsd0JBQXNCLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsS0FBSzs7O0dBYTFGO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQix1QkFBdUIsQ0FDM0MsTUFBTSxFQUFFO0lBQ04sU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsV0FBVyxFQUFFO1FBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQTtLQUFFLENBQUM7SUFDN0MsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3hCLEVBQ0QsbUJBQW1CLEVBQUUsRUFBRSxFQUN2QixJQUFJLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDeEIsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUMsSUFBSSxDQUFDLENBMERmIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standby.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/standby.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAGjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AASnD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK;;;GAa1F;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE;QAAE,eAAe,EAAE,UAAU,CAAA;KAAE,CAAC;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,EACD,mBAAmB,EAAE,EAAE,EACvB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,KAAK,GACb,OAAO,CAAC,IAAI,CAAC,CA0Df"}
@@ -0,0 +1,78 @@
1
+ import { getInitialTestAccountsData } from '@aztec/accounts/testing';
2
+ import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
3
+ import { getPublicClient } from '@aztec/ethereum/client';
4
+ import { RegistryContract, RollupContract } from '@aztec/ethereum/contracts';
5
+ import { startHttpRpcServer } from '@aztec/foundation/json-rpc/server';
6
+ import { retryUntil } from '@aztec/foundation/retry';
7
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
8
+ import { getGenesisValues } from '@aztec/world-state/testing';
9
+ import Koa from 'koa';
10
+ const ROLLUP_POLL_INTERVAL_S = 60;
11
+ /**
12
+ * Computes the expected genesis archive root from the genesis state config.
13
+ * Reads test accounts and sponsored FPC addresses as specified, then computes
14
+ * the genesis values including the archive root and prefilled public data.
15
+ */ export async function computeExpectedGenesisRoot(config, userLog) {
16
+ const testAccounts = config.testAccounts ? (await getInitialTestAccountsData()).map((a)=>a.address) : [];
17
+ const sponsoredFPCAccounts = config.sponsoredFPC ? [
18
+ await getSponsoredFPCAddress()
19
+ ] : [];
20
+ const prefundAddresses = (config.prefundAddresses ?? []).map((a)=>AztecAddress.fromString(a));
21
+ const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts).concat(prefundAddresses);
22
+ userLog(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
23
+ const { genesisArchiveRoot, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
24
+ userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
25
+ return {
26
+ genesisArchiveRoot,
27
+ prefilledPublicData
28
+ };
29
+ }
30
+ /**
31
+ * Waits until the canonical rollup's genesis archive root matches the expected local genesis root.
32
+ * If the rollup is not yet compatible (e.g. during L1 contract upgrades), enters standby mode:
33
+ * starts a lightweight HTTP server for K8s liveness probes and polls every 60s until a compatible rollup appears.
34
+ */ export async function waitForCompatibleRollup(config, expectedGenesisRoot, port, userLog) {
35
+ const publicClient = getPublicClient(config);
36
+ const rollupVersion = config.rollupVersion ?? 'canonical';
37
+ const registry = new RegistryContract(publicClient, config.l1Contracts.registryAddress);
38
+ const rollupAddress = await registry.getRollupAddress(rollupVersion);
39
+ const rollup = new RollupContract(publicClient, rollupAddress.toString());
40
+ let l1GenesisRoot;
41
+ try {
42
+ l1GenesisRoot = await rollup.getGenesisArchiveTreeRoot();
43
+ } catch (err) {
44
+ throw new Error(`Could not retrieve genesis archive root from canonical rollup at ${rollupAddress}: ${err.message}`);
45
+ }
46
+ if (l1GenesisRoot.equals(expectedGenesisRoot)) {
47
+ return;
48
+ }
49
+ userLog(`Genesis root mismatch: expected ${expectedGenesisRoot}, got ${l1GenesisRoot} from rollup at ${rollupAddress}. ` + `Entering standby mode. Will poll every ${ROLLUP_POLL_INTERVAL_S}s for a compatible rollup...`);
50
+ const standbyServer = await startHttpRpcServer({
51
+ getApp: ()=>new Koa(),
52
+ isHealthy: ()=>true
53
+ }, {
54
+ port
55
+ });
56
+ userLog(`Standby status server listening on port ${standbyServer.port}`);
57
+ try {
58
+ await retryUntil(async ()=>{
59
+ const currentRollupAddress = await registry.getRollupAddress(rollupVersion);
60
+ const currentRollup = new RollupContract(publicClient, currentRollupAddress.toString());
61
+ let currentGenesisRoot;
62
+ try {
63
+ currentGenesisRoot = await currentRollup.getGenesisArchiveTreeRoot();
64
+ } catch {
65
+ userLog(`Failed to fetch genesis root from rollup at ${currentRollupAddress}. Retrying...`);
66
+ return undefined;
67
+ }
68
+ if (currentGenesisRoot.equals(expectedGenesisRoot)) {
69
+ userLog(`Compatible rollup found at ${currentRollupAddress}. Exiting standby mode.`);
70
+ return true;
71
+ }
72
+ userLog(`Still waiting. Rollup at ${currentRollupAddress} has genesis root ${currentGenesisRoot}.`);
73
+ return undefined;
74
+ }, 'compatible rollup', 0, ROLLUP_POLL_INTERVAL_S);
75
+ } finally{
76
+ await new Promise((resolve, reject)=>standbyServer.close((err)=>err ? reject(err) : resolve()));
77
+ }
78
+ }
@@ -1,9 +1,9 @@
1
1
  import { type ArchiverConfig } from '@aztec/archiver';
2
2
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
3
- import { type DataStoreConfig } from '@aztec/kv-store/config';
3
+ import { type DataStoreConfig } from '@aztec/stdlib/kv-store';
4
4
  export type { ArchiverConfig, DataStoreConfig };
5
5
  /** Starts a standalone archiver. */
6
6
  export declare function startArchiver(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers): Promise<{
7
7
  config: ArchiverConfig & DataStoreConfig;
8
8
  }>;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY21kcy9zdGFydF9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQW9FLE1BQU0saUJBQWlCLENBQUM7QUFJeEgsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFNbEYsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUVoRCxvQ0FBb0M7QUFDcEMsd0JBQXNCLGFBQWEsQ0FDakMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsR0FDOUIsT0FBTyxDQUFDO0lBQUUsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLENBQUE7Q0FBRSxDQUFDLENBK0J2RCJ9
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY21kcy9zdGFydF9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQW9FLE1BQU0saUJBQWlCLENBQUM7QUFJeEgsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFLbEYsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUVoRCxvQ0FBb0M7QUFDcEMsd0JBQXNCLGFBQWEsQ0FDakMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsR0FDOUIsT0FBTyxDQUFDO0lBQUUsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLENBQUE7Q0FBRSxDQUFDLENBK0J2RCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"start_archiver.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAoE,MAAM,iBAAiB,CAAC;AAIxH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAMlF,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAEhD,oCAAoC;AACpC,wBAAsB,aAAa,CACjC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,GAAG,eAAe,CAAA;CAAE,CAAC,CA+BvD"}
1
+ {"version":3,"file":"start_archiver.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAoE,MAAM,iBAAiB,CAAC;AAIxH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAKlF,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAEhD,oCAAoC;AACpC,wBAAsB,aAAa,CACjC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,GAAG,eAAe,CAAA;CAAE,CAAC,CA+BvD"}
@@ -2,8 +2,8 @@ import { archiverConfigMappings, createArchiver, getArchiverConfigFromEnv } from
2
2
  import { createLogger } from '@aztec/aztec.js/log';
3
3
  import { blobClientConfigMapping, createBlobClient } from '@aztec/blob-client/client';
4
4
  import { getL1Config } from '@aztec/cli/config';
5
- import { dataConfigMappings } from '@aztec/kv-store/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
8
  import { extractRelevantOptions } from '../util.js';
9
9
  /** Starts a standalone archiver. */ export async function startArchiver(options, signalHandlers, services) {
@@ -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, adminServices: 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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfbm9kZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBUXBHLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUE2Rm5ELHdCQUFzQixTQUFTLENBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLGFBQWEsRUFBRSxxQkFBcUIsRUFDcEMsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFBO0NBQUUsQ0FBQyxDQTRLdEMifQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfbm9kZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBS3BHLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBZSxNQUFNLDBCQUEwQixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUF3Qm5ELHdCQUFzQixTQUFTLENBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLGFBQWEsRUFBRSxxQkFBcUIsRUFDcEMsT0FBTyxFQUFFLEtBQUssRUFDZCxXQUFXLEVBQUUsWUFBWSxHQUN4QixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFBO0NBQUUsQ0FBQyxDQStKdEMifQ==
@@ -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;AAQpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AA6FnD,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,CA4KtC"}
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;AAwBnD,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,CA+JtC"}
@@ -1,74 +1,22 @@
1
- import { getInitialTestAccountsData } from '@aztec/accounts/testing';
2
1
  import { aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
3
2
  import { Fr } from '@aztec/aztec.js/fields';
4
- import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
5
3
  import { getL1Config } from '@aztec/cli/config';
6
4
  import { getPublicClient } from '@aztec/ethereum/client';
7
- import { RegistryContract, RollupContract } from '@aztec/ethereum/contracts';
5
+ import { getGenesisStateConfigEnvVars } from '@aztec/ethereum/config';
8
6
  import { SecretValue } from '@aztec/foundation/config';
9
- import { startHttpRpcServer } from '@aztec/foundation/json-rpc/server';
10
7
  import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
11
- import { sleep } from '@aztec/foundation/sleep';
12
8
  import { ProvingJobConsumerSchema, createProvingJobBrokerClient } from '@aztec/prover-client/broker';
13
9
  import { allPxeConfigMappings } from '@aztec/pxe/config';
14
10
  import { AztecNodeAdminApiSchema, AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
15
11
  import { P2PApiSchema, ProverNodeApiSchema } from '@aztec/stdlib/interfaces/server';
16
12
  import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
17
13
  import { EmbeddedWallet } from '@aztec/wallets/embedded';
18
- import { getGenesisValues } from '@aztec/world-state/testing';
19
- import Koa from 'koa';
20
14
  import { createAztecNode } from '../../local-network/index.js';
21
- import { extractNamespacedOptions, extractRelevantOptions, preloadCrsDataForVerifying, setupUpdateMonitor } from '../util.js';
15
+ import { extractNamespacedOptions, extractRelevantOptions, preloadCrsDataForVerifying, setupVersionChecker } from '../util.js';
22
16
  import { getVersions } from '../versioning.js';
17
+ import { computeExpectedGenesisRoot, waitForCompatibleRollup } from './standby.js';
23
18
  import { startProverBroker } from './start_prover_broker.js';
24
- const ROLLUP_POLL_INTERVAL_MS = 600_000;
25
- /**
26
- * Waits until the canonical rollup's genesis archive root matches the expected local genesis root.
27
- * If the rollup is not yet compatible (e.g. during L1 contract upgrades), enters standby mode:
28
- * starts a lightweight HTTP server for K8s liveness probes and polls until a compatible rollup appears.
29
- */ async function waitForCompatibleRollup(publicClient, registryAddress, rollupVersion, expectedGenesisRoot, port, userLog) {
30
- const registry = new RegistryContract(publicClient, registryAddress);
31
- const rollupAddress = await registry.getRollupAddress(rollupVersion);
32
- const rollup = new RollupContract(publicClient, rollupAddress.toString());
33
- let l1GenesisRoot;
34
- try {
35
- l1GenesisRoot = await rollup.getGenesisArchiveTreeRoot();
36
- } catch (err) {
37
- throw new Error(`Could not retrieve genesis archive root from canonical rollup at ${rollupAddress}: ${err.message}`);
38
- }
39
- if (l1GenesisRoot.equals(expectedGenesisRoot)) {
40
- return;
41
- }
42
- userLog(`Genesis root mismatch: expected ${expectedGenesisRoot}, got ${l1GenesisRoot} from rollup at ${rollupAddress}. ` + `Entering standby mode. Will poll every ${ROLLUP_POLL_INTERVAL_MS / 1000}s for a compatible rollup...`);
43
- const standbyServer = await startHttpRpcServer({
44
- getApp: ()=>new Koa(),
45
- isHealthy: ()=>true
46
- }, {
47
- port
48
- });
49
- userLog(`Standby status server listening on port ${standbyServer.port}`);
50
- try {
51
- while(true){
52
- await sleep(ROLLUP_POLL_INTERVAL_MS);
53
- const currentRollupAddress = await registry.getRollupAddress(rollupVersion);
54
- const currentRollup = new RollupContract(publicClient, currentRollupAddress.toString());
55
- try {
56
- l1GenesisRoot = await currentRollup.getGenesisArchiveTreeRoot();
57
- } catch {
58
- userLog(`Failed to fetch genesis root from rollup at ${currentRollupAddress}. Retrying...`);
59
- continue;
60
- }
61
- if (l1GenesisRoot.equals(expectedGenesisRoot)) {
62
- userLog(`Compatible rollup found at ${currentRollupAddress}. Exiting standby mode.`);
63
- return;
64
- }
65
- userLog(`Still waiting. Rollup at ${currentRollupAddress} has genesis root ${l1GenesisRoot}.`);
66
- }
67
- } finally{
68
- await new Promise((resolve, reject)=>standbyServer.close((err)=>err ? reject(err) : resolve()));
69
- }
70
- }
71
- export async function startNode(options, signalHandlers, services, adminServices, userLog) {
19
+ export async function startNode(options, signalHandlers, services, adminServices, userLog, networkName) {
72
20
  // All options set from environment variables
73
21
  const configFromEnvVars = getConfigEnvVars();
74
22
  // Extract relevant options from command line arguments
@@ -114,23 +62,15 @@ export async function startNode(options, signalHandlers, services, adminServices
114
62
  }
115
63
  }
116
64
  await preloadCrsDataForVerifying(nodeConfig, userLog);
117
- const testAccounts = nodeConfig.testAccounts ? (await getInitialTestAccountsData()).map((a)=>a.address) : [];
118
- const sponsoredFPCAccounts = nodeConfig.sponsoredFPC ? [
119
- await getSponsoredFPCAddress()
120
- ] : [];
121
- const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
122
- userLog(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
123
- const { genesisArchiveRoot, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
124
- userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
65
+ const genesisConfig = getGenesisStateConfigEnvVars();
66
+ const { genesisArchiveRoot, prefilledPublicData } = await computeExpectedGenesisRoot(genesisConfig, userLog);
125
67
  const followsCanonicalRollup = typeof nodeConfig.rollupVersion !== 'number' || nodeConfig.rollupVersion === 'canonical';
126
68
  if (!nodeConfig.l1Contracts.registryAddress || nodeConfig.l1Contracts.registryAddress.isZero()) {
127
69
  throw new Error('L1 registry address is required to start Aztec Node');
128
70
  }
129
71
  // Wait for a compatible rollup before proceeding with full L1 config fetch.
130
72
  // This prevents crashes when the canonical rollup hasn't been upgraded yet.
131
- const publicClient = getPublicClient(nodeConfig);
132
- const rollupVersion = nodeConfig.rollupVersion ?? 'canonical';
133
- await waitForCompatibleRollup(publicClient, nodeConfig.l1Contracts.registryAddress, rollupVersion, genesisArchiveRoot, options.port, userLog);
73
+ await waitForCompatibleRollup(nodeConfig, genesisArchiveRoot, options.port, userLog);
134
74
  const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId, nodeConfig.rollupVersion);
135
75
  process.env.ROLLUP_CONTRACT_ADDRESS ??= addresses.rollupAddress.toString();
136
76
  if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
@@ -215,10 +155,12 @@ export async function startNode(options, signalHandlers, services, adminServices
215
155
  });
216
156
  await addBot(options, signalHandlers, services, wallet, node, telemetry, undefined);
217
157
  }
218
- if (nodeConfig.autoUpdate !== 'disabled' && nodeConfig.autoUpdateUrl) {
219
- await setupUpdateMonitor(nodeConfig.autoUpdate, new URL(nodeConfig.autoUpdateUrl), followsCanonicalRollup, getPublicClient(nodeConfig), nodeConfig.l1Contracts.registryAddress, signalHandlers, async (config)=>node.setConfig((await AztecNodeAdminApiSchema.setConfig.parameters().parseAsync([
220
- config
221
- ]))[0]));
158
+ if (nodeConfig.enableVersionCheck && networkName !== 'local') {
159
+ const cacheDir = process.env.DATA_DIRECTORY ? `${process.env.DATA_DIRECTORY}/cache` : undefined;
160
+ try {
161
+ await setupVersionChecker(networkName, followsCanonicalRollup, getPublicClient(nodeConfig), signalHandlers, cacheDir);
162
+ } catch {
163
+ /* no-op */ }
222
164
  }
223
165
  return {
224
166
  config: nodeConfig
@@ -6,4 +6,4 @@ export declare function startProverBroker(options: any, signalHandlers: (() => P
6
6
  broker: ProvingJobBroker;
7
7
  config: ProverBrokerConfig;
8
8
  }>;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2Jyb2tlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3Byb3Zlcl9icm9rZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBS3hFLHdCQUFzQixpQkFBaUIsQ0FDckMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7SUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUE7Q0FBRSxDQUFDLENBK0NuRSJ9
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2Jyb2tlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3Byb3Zlcl9icm9rZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTXhFLHdCQUFzQixpQkFBaUIsQ0FDckMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7SUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUE7Q0FBRSxDQUFDLENBdUNuRSJ9
@@ -1 +1 @@
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,EAKxB,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,CA+CnE"}
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,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,CAuCnE"}
@@ -1,9 +1,10 @@
1
1
  import { getL1Config } from '@aztec/cli/config';
2
- import { getPublicClient } from '@aztec/ethereum/client';
2
+ import { getGenesisStateConfigEnvVars } from '@aztec/ethereum/config';
3
3
  import { ProvingJobBrokerSchema, ProvingJobBrokerSchemaWithDebug, createAndStartProvingBroker, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
4
4
  import { getProverNodeBrokerConfigFromEnv } from '@aztec/prover-node';
5
5
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
6
- import { extractRelevantOptions, setupUpdateMonitor } from '../util.js';
6
+ import { extractRelevantOptions } from '../util.js';
7
+ import { computeExpectedGenesisRoot, waitForCompatibleRollup } from './standby.js';
7
8
  export async function startProverBroker(options, signalHandlers, services, userLog) {
8
9
  if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
9
10
  userLog(`Starting a prover broker with --node, --sequencer, --pxe, --p2p-bootstrap, or --txe is not supported.`);
@@ -16,15 +17,14 @@ export async function startProverBroker(options, signalHandlers, services, userL
16
17
  if (!config.l1Contracts.registryAddress || config.l1Contracts.registryAddress.isZero()) {
17
18
  throw new Error('L1 registry address is required to start Aztec Node without --deploy-aztec-contracts option');
18
19
  }
19
- const followsCanonicalRollup = typeof config.rollupVersion !== 'number';
20
+ const genesisConfig = getGenesisStateConfigEnvVars();
21
+ const { genesisArchiveRoot } = await computeExpectedGenesisRoot(genesisConfig, userLog);
22
+ await waitForCompatibleRollup(config, genesisArchiveRoot, options.port, userLog);
20
23
  const { addresses, config: rollupConfig } = await getL1Config(config.l1Contracts.registryAddress, config.l1RpcUrls, config.l1ChainId, config.rollupVersion);
21
24
  config.l1Contracts = addresses;
22
25
  config.rollupVersion = rollupConfig.rollupVersion;
23
26
  const client = await initTelemetryClient(getTelemetryClientConfig());
24
27
  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
- }
28
28
  services.proverBroker = [
29
29
  broker,
30
30
  config.proverBrokerDebugReplayEnabled ? ProvingJobBrokerSchemaWithDebug : ProvingJobBrokerSchema
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Returns true if recompilation is needed: either no artifacts exist in target/ or any .nr or Nargo.toml source file
3
+ * (including path-based dependencies) is newer than the oldest artifact. We compare against the oldest artifact so
4
+ * that a source change between the oldest and newest compilation (e.g. in a multi-contract workspace) still triggers
5
+ * a recompile.
6
+ *
7
+ * Note: The above implies that if there is a random json file in the target dir we would be always recompiling.
8
+ */
9
+ export declare function needsRecompile(): Promise<boolean>;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVlZHNfcmVjb21waWxlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpL2NtZHMvdXRpbHMvbmVlZHNfcmVjb21waWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0IsY0FBYyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FRdkQifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"needs_recompile.d.ts","sourceRoot":"","sources":["../../../../src/cli/cmds/utils/needs_recompile.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAQvD"}