@aztec/aztec 0.0.1-fake-ceab37513c → 0.0.6-commit.a2d1860fe9

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 (142) hide show
  1. package/README.md +1 -1
  2. package/dest/bin/index.d.ts +1 -1
  3. package/dest/bin/index.js +14 -9
  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 +59 -34
  10. package/dest/cli/aztec_start_options.d.ts +1 -1
  11. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  12. package/dest/cli/aztec_start_options.js +46 -45
  13. package/dest/cli/cli.d.ts +1 -1
  14. package/dest/cli/cli.js +7 -7
  15. package/dest/cli/cmds/compile.d.ts +4 -0
  16. package/dest/cli/cmds/compile.d.ts.map +1 -0
  17. package/dest/cli/cmds/compile.js +95 -0
  18. package/dest/cli/cmds/migrate_ha_db.d.ts +3 -0
  19. package/dest/cli/cmds/migrate_ha_db.d.ts.map +1 -0
  20. package/dest/cli/cmds/migrate_ha_db.js +27 -0
  21. package/dest/cli/cmds/start_archiver.d.ts +1 -1
  22. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  23. package/dest/cli/cmds/start_archiver.js +12 -14
  24. package/dest/cli/cmds/start_bot.d.ts +4 -7
  25. package/dest/cli/cmds/start_bot.d.ts.map +1 -1
  26. package/dest/cli/cmds/start_bot.js +18 -18
  27. package/dest/cli/cmds/start_node.d.ts +1 -1
  28. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  29. package/dest/cli/cmds/start_node.js +71 -27
  30. package/dest/cli/cmds/start_p2p_bootstrap.d.ts +2 -2
  31. package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
  32. package/dest/cli/cmds/start_p2p_bootstrap.js +2 -3
  33. package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
  34. package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
  35. package/dest/cli/cmds/start_prover_agent.js +4 -4
  36. package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
  37. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  38. package/dest/cli/cmds/start_prover_broker.js +4 -4
  39. package/dest/cli/cmds/start_txe.d.ts +1 -1
  40. package/dest/cli/index.d.ts +1 -1
  41. package/dest/cli/preload_crs.d.ts +1 -1
  42. package/dest/cli/release_version.d.ts +1 -1
  43. package/dest/cli/util.d.ts +12 -19
  44. package/dest/cli/util.d.ts.map +1 -1
  45. package/dest/cli/util.js +16 -11
  46. package/dest/cli/versioning.d.ts +1 -1
  47. package/dest/cli/versioning.js +3 -3
  48. package/dest/examples/token.d.ts +1 -1
  49. package/dest/examples/token.js +21 -19
  50. package/dest/examples/util.d.ts +3 -3
  51. package/dest/examples/util.d.ts.map +1 -1
  52. package/dest/examples/util.js +1 -1
  53. package/dest/index.d.ts +2 -2
  54. package/dest/index.d.ts.map +1 -1
  55. package/dest/index.js +1 -1
  56. package/dest/local-network/banana_fpc.d.ts +10 -0
  57. package/dest/local-network/banana_fpc.d.ts.map +1 -0
  58. package/dest/{sandbox → local-network}/banana_fpc.js +17 -21
  59. package/dest/local-network/index.d.ts +4 -0
  60. package/dest/local-network/index.d.ts.map +1 -0
  61. package/dest/local-network/index.js +3 -0
  62. package/dest/local-network/local-network.d.ts +73 -0
  63. package/dest/local-network/local-network.d.ts.map +1 -0
  64. package/dest/{sandbox/sandbox.js → local-network/local-network.js} +83 -66
  65. package/dest/local-network/sponsored_fpc.d.ts +5 -0
  66. package/dest/local-network/sponsored_fpc.d.ts.map +1 -0
  67. package/dest/{sandbox → local-network}/sponsored_fpc.js +7 -8
  68. package/dest/mnemonic.d.ts +1 -1
  69. package/dest/splash.d.ts +1 -1
  70. package/dest/testing/anvil_test_watcher.d.ts +12 -4
  71. package/dest/testing/anvil_test_watcher.d.ts.map +1 -1
  72. package/dest/testing/anvil_test_watcher.js +69 -31
  73. package/dest/testing/cheat_codes.d.ts +7 -8
  74. package/dest/testing/cheat_codes.d.ts.map +1 -1
  75. package/dest/testing/cheat_codes.js +9 -10
  76. package/dest/testing/epoch_test_settler.d.ts +19 -0
  77. package/dest/testing/epoch_test_settler.d.ts.map +1 -0
  78. package/dest/testing/epoch_test_settler.js +62 -0
  79. package/dest/testing/index.d.ts +2 -2
  80. package/dest/testing/index.d.ts.map +1 -1
  81. package/dest/testing/index.js +1 -1
  82. package/package.json +41 -37
  83. package/scripts/aztec.sh +62 -0
  84. package/scripts/extract_function.js +47 -0
  85. package/scripts/flamegraph.sh +59 -0
  86. package/scripts/init.sh +35 -0
  87. package/scripts/new.sh +59 -0
  88. package/scripts/setup_project.sh +31 -0
  89. package/src/bin/index.ts +15 -9
  90. package/src/cli/admin_api_key_store.ts +128 -0
  91. package/src/cli/aztec_start_action.ts +62 -26
  92. package/src/cli/aztec_start_options.ts +47 -43
  93. package/src/cli/cli.ts +11 -11
  94. package/src/cli/cmds/compile.ts +107 -0
  95. package/src/cli/cmds/migrate_ha_db.ts +43 -0
  96. package/src/cli/cmds/start_archiver.ts +8 -19
  97. package/src/cli/cmds/start_bot.ts +27 -15
  98. package/src/cli/cmds/start_node.ts +64 -23
  99. package/src/cli/cmds/start_p2p_bootstrap.ts +3 -3
  100. package/src/cli/cmds/start_prover_agent.ts +4 -12
  101. package/src/cli/cmds/start_prover_broker.ts +7 -3
  102. package/src/cli/util.ts +23 -26
  103. package/src/cli/versioning.ts +3 -3
  104. package/src/examples/token.ts +20 -19
  105. package/src/examples/util.ts +2 -2
  106. package/src/index.ts +5 -5
  107. package/src/{sandbox → local-network}/banana_fpc.ts +24 -25
  108. package/src/local-network/index.ts +7 -0
  109. package/src/local-network/local-network.ts +267 -0
  110. package/src/local-network/sponsored_fpc.ts +26 -0
  111. package/src/testing/anvil_test_watcher.ts +77 -34
  112. package/src/testing/cheat_codes.ts +13 -13
  113. package/src/testing/epoch_test_settler.ts +71 -0
  114. package/src/testing/index.ts +1 -1
  115. package/dest/cli/cmds/start_blob_sink.d.ts +0 -3
  116. package/dest/cli/cmds/start_blob_sink.d.ts.map +0 -1
  117. package/dest/cli/cmds/start_blob_sink.js +0 -33
  118. package/dest/cli/cmds/start_prover_node.d.ts +0 -7
  119. package/dest/cli/cmds/start_prover_node.d.ts.map +0 -1
  120. package/dest/cli/cmds/start_prover_node.js +0 -108
  121. package/dest/cli/cmds/start_pxe.d.ts +0 -16
  122. package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
  123. package/dest/cli/cmds/start_pxe.js +0 -31
  124. package/dest/sandbox/banana_fpc.d.ts +0 -11
  125. package/dest/sandbox/banana_fpc.d.ts.map +0 -1
  126. package/dest/sandbox/index.d.ts +0 -4
  127. package/dest/sandbox/index.d.ts.map +0 -1
  128. package/dest/sandbox/index.js +0 -3
  129. package/dest/sandbox/sandbox.d.ts +0 -84
  130. package/dest/sandbox/sandbox.d.ts.map +0 -1
  131. package/dest/sandbox/sponsored_fpc.d.ts +0 -4
  132. package/dest/sandbox/sponsored_fpc.d.ts.map +0 -1
  133. package/dest/testing/aztec_cheat_codes.d.ts +0 -59
  134. package/dest/testing/aztec_cheat_codes.d.ts.map +0 -1
  135. package/dest/testing/aztec_cheat_codes.js +0 -62
  136. package/src/cli/cmds/start_blob_sink.ts +0 -57
  137. package/src/cli/cmds/start_prover_node.ts +0 -124
  138. package/src/cli/cmds/start_pxe.ts +0 -49
  139. package/src/sandbox/index.ts +0 -4
  140. package/src/sandbox/sandbox.ts +0 -253
  141. package/src/sandbox/sponsored_fpc.ts +0 -27
  142. package/src/testing/aztec_cheat_codes.ts +0 -77
@@ -1,16 +1,9 @@
1
- import {
2
- Archiver,
3
- type ArchiverConfig,
4
- KVArchiverDataStore,
5
- archiverConfigMappings,
6
- getArchiverConfigFromEnv,
7
- } from '@aztec/archiver';
8
- import { createLogger } from '@aztec/aztec.js';
9
- import { type BlobSinkConfig, blobSinkConfigMapping, createBlobSinkClient } from '@aztec/blob-sink/client';
1
+ import { type ArchiverConfig, archiverConfigMappings, createArchiver, getArchiverConfigFromEnv } from '@aztec/archiver';
2
+ import { createLogger } from '@aztec/aztec.js/log';
3
+ import { type BlobClientConfig, blobClientConfigMapping, createBlobClient } from '@aztec/blob-client/client';
10
4
  import { getL1Config } from '@aztec/cli/config';
11
5
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
12
6
  import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
13
- import { createStore } from '@aztec/kv-store/lmdb-v2';
14
7
  import { ArchiverApiSchema } from '@aztec/stdlib/interfaces/server';
15
8
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
16
9
 
@@ -25,9 +18,9 @@ export async function startArchiver(
25
18
  services: NamespacedApiHandlers,
26
19
  ): Promise<{ config: ArchiverConfig & DataStoreConfig }> {
27
20
  const envConfig = getArchiverConfigFromEnv();
28
- const cliOptions = extractRelevantOptions<ArchiverConfig & DataStoreConfig & BlobSinkConfig>(
21
+ const cliOptions = extractRelevantOptions<ArchiverConfig & DataStoreConfig & BlobClientConfig>(
29
22
  options,
30
- { ...archiverConfigMappings, ...dataConfigMappings, ...blobSinkConfigMapping },
23
+ { ...archiverConfigMappings, ...dataConfigMappings, ...blobClientConfigMapping },
31
24
  'archiver',
32
25
  );
33
26
 
@@ -47,13 +40,9 @@ export async function startArchiver(
47
40
  archiverConfig.l1Contracts = addresses;
48
41
  archiverConfig = { ...archiverConfig, ...l1Config };
49
42
 
50
- const storeLog = createLogger('archiver:lmdb');
51
- const store = await createStore('archiver', KVArchiverDataStore.SCHEMA_VERSION, archiverConfig, storeLog);
52
- const archiverStore = new KVArchiverDataStore(store, archiverConfig.maxLogs);
53
-
54
- const telemetry = initTelemetryClient(getTelemetryClientConfig());
55
- const blobSinkClient = createBlobSinkClient(archiverConfig, { logger: createLogger('archiver:blob-sink:client') });
56
- const archiver = await Archiver.createAndSync(archiverConfig, archiverStore, { telemetry, blobSinkClient }, true);
43
+ const telemetry = await initTelemetryClient(getTelemetryClientConfig());
44
+ const blobClient = createBlobClient(archiverConfig, { logger: createLogger('archiver:blob-client:client') });
45
+ const archiver = await createArchiver(archiverConfig, { telemetry, blobClient }, { blockUntilSync: true });
57
46
  services.archiver = [archiver, ArchiverApiSchema];
58
47
  signalHandlers.push(archiver.stop);
59
48
 
@@ -1,15 +1,18 @@
1
- import { type BotConfig, BotRunner, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
1
+ import { type BotConfig, BotRunner, BotStore, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
2
2
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
3
3
  import type { LogFn } from '@aztec/foundation/log';
4
- import { type AztecNode, type PXE, createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
4
+ import { createStore, openTmpStore } from '@aztec/kv-store/lmdb-v2';
5
+ import { type CliPXEOptions, type PXEConfig, allPxeConfigMappings } from '@aztec/pxe/config';
6
+ import { type AztecNode, type AztecNodeAdmin, createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
5
7
  import type { TelemetryClient } from '@aztec/telemetry-client';
6
8
  import {
7
9
  getConfigEnvVars as getTelemetryClientConfig,
8
10
  initTelemetryClient,
9
11
  makeTracedFetch,
10
12
  } from '@aztec/telemetry-client';
13
+ import { EmbeddedWallet } from '@aztec/wallets/embedded';
11
14
 
12
- import { extractRelevantOptions } from '../util.js';
15
+ import { extractRelevantOptions, stringifyConfig } from '../util.js';
13
16
  import { getVersions } from '../versioning.js';
14
17
 
15
18
  export async function startBot(
@@ -32,28 +35,37 @@ export async function startBot(
32
35
  throw new Error('The bot requires access to a Node');
33
36
  }
34
37
 
35
- const node = createAztecNodeClient(config.nodeUrl, getVersions(), fetch);
38
+ const aztecNode = createAztecNodeClient(config.nodeUrl, getVersions(), fetch);
36
39
 
37
- // Start a PXE client that is used by the bot if required
38
- let pxe: PXE | undefined;
39
- if (options.pxe) {
40
- const { addPXE } = await import('./start_pxe.js');
41
- ({ pxe } = await addPXE(options, signalHandlers, services, userLog, { node }));
42
- }
40
+ const pxeConfig = extractRelevantOptions<PXEConfig & CliPXEOptions>(options, allPxeConfigMappings, 'pxe');
41
+ userLog(`Creating bot wallet with config ${stringifyConfig(pxeConfig)}`);
42
+ const wallet = await EmbeddedWallet.create(aztecNode, { pxeConfig });
43
43
 
44
- const telemetry = initTelemetryClient(getTelemetryClientConfig());
45
- await addBot(options, signalHandlers, services, { pxe, telemetry, node });
44
+ const telemetry = await initTelemetryClient(getTelemetryClientConfig());
45
+ await addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, undefined, userLog);
46
46
  }
47
47
 
48
- export function addBot(
48
+ export async function addBot(
49
49
  options: any,
50
50
  signalHandlers: (() => Promise<void>)[],
51
51
  services: NamespacedApiHandlers,
52
- deps: { pxe?: PXE; node?: AztecNode; telemetry: TelemetryClient },
52
+ wallet: EmbeddedWallet,
53
+ aztecNode: AztecNode,
54
+ telemetry: TelemetryClient,
55
+ aztecNodeAdmin?: AztecNodeAdmin,
56
+ userLog?: LogFn,
53
57
  ) {
54
58
  const config = extractRelevantOptions<BotConfig>(options, botConfigMappings, 'bot');
59
+ userLog?.(`Starting bot with config ${stringifyConfig(config)}`);
60
+
61
+ const db = await (config.dataDirectory
62
+ ? createStore('bot', BotStore.SCHEMA_VERSION, config)
63
+ : openTmpStore('bot', true, config.dataStoreMapSizeKb));
64
+
65
+ const store = new BotStore(db);
66
+ await store.cleanupOldClaims();
55
67
 
56
- const botRunner = new BotRunner(config, deps);
68
+ const botRunner = new BotRunner(config, wallet, aztecNode, telemetry, aztecNodeAdmin, store);
57
69
  if (!config.noStart) {
58
70
  void botRunner.start(); // Do not block since bot setup takes time
59
71
  }
@@ -1,28 +1,35 @@
1
- import { getInitialTestAccounts } from '@aztec/accounts/testing';
1
+ import { getInitialTestAccountsData } from '@aztec/accounts/testing';
2
2
  import { type AztecNodeConfig, aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
3
- import { Fr } from '@aztec/aztec.js';
3
+ import { Fr } from '@aztec/aztec.js/fields';
4
4
  import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
5
5
  import { getL1Config } from '@aztec/cli/config';
6
- import { getPublicClient } from '@aztec/ethereum';
6
+ import { getPublicClient } from '@aztec/ethereum/client';
7
7
  import { SecretValue } from '@aztec/foundation/config';
8
8
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
9
+ import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
9
10
  import type { LogFn } from '@aztec/foundation/log';
10
- import { AztecNodeAdminApiSchema, AztecNodeApiSchema, type PXE } from '@aztec/stdlib/interfaces/client';
11
- import { P2PApiSchema } from '@aztec/stdlib/interfaces/server';
11
+ import { ProvingJobConsumerSchema, createProvingJobBrokerClient } from '@aztec/prover-client/broker';
12
+ import { type CliPXEOptions, type PXEConfig, allPxeConfigMappings } from '@aztec/pxe/config';
13
+ import { AztecNodeAdminApiSchema, AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
14
+ import { P2PApiSchema, ProverNodeApiSchema, type ProvingJobBroker } from '@aztec/stdlib/interfaces/server';
12
15
  import {
13
16
  type TelemetryClientConfig,
14
17
  initTelemetryClient,
18
+ makeTracedFetch,
15
19
  telemetryClientConfigMappings,
16
20
  } from '@aztec/telemetry-client';
21
+ import { EmbeddedWallet } from '@aztec/wallets/embedded';
17
22
  import { getGenesisValues } from '@aztec/world-state/testing';
18
23
 
19
- import { createAztecNode } from '../../sandbox/index.js';
24
+ import { createAztecNode } from '../../local-network/index.js';
20
25
  import {
21
26
  extractNamespacedOptions,
22
27
  extractRelevantOptions,
23
28
  preloadCrsDataForVerifying,
24
29
  setupUpdateMonitor,
25
30
  } from '../util.js';
31
+ import { getVersions } from '../versioning.js';
32
+ import { startProverBroker } from './start_prover_broker.js';
26
33
 
27
34
  export async function startNode(
28
35
  options: any,
@@ -43,14 +50,37 @@ export async function startNode(
43
50
  ...relevantOptions,
44
51
  };
45
52
 
53
+ // Prover node configuration and broker setup
54
+ // REFACTOR: Move the broker setup out of here and into the prover-node factory
55
+ let broker: ProvingJobBroker | undefined = undefined;
46
56
  if (options.proverNode) {
47
- userLog(`Running a Prover Node within a Node is not yet supported`);
48
- process.exit(1);
57
+ nodeConfig.enableProverNode = true;
58
+ if (nodeConfig.proverAgentCount === 0) {
59
+ userLog(
60
+ `Running prover node without local prover agent. Connect prover agents or pass --proverAgent.proverAgentCount`,
61
+ );
62
+ }
63
+ if (nodeConfig.proverBrokerUrl) {
64
+ // at 1TPS we'd enqueue ~1k chonk verifier proofs and ~1k AVM proofs immediately
65
+ // set a lower connection limit such that we don't overload the server
66
+ // Keep retrying up to 30s
67
+ const fetch = makeTracedFetch(
68
+ [1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3],
69
+ false,
70
+ makeUndiciFetch(new Agent({ connections: 100 })),
71
+ );
72
+ broker = createProvingJobBrokerClient(nodeConfig.proverBrokerUrl, getVersions(nodeConfig), fetch);
73
+ } else if (options.proverBroker) {
74
+ ({ broker } = await startProverBroker(options, signalHandlers, services, userLog));
75
+ } else {
76
+ userLog(`--prover-broker-url or --prover-broker is required to start a Prover Node`);
77
+ process.exit(1);
78
+ }
49
79
  }
50
80
 
51
81
  await preloadCrsDataForVerifying(nodeConfig, userLog);
52
82
 
53
- const testAccounts = nodeConfig.testAccounts ? (await getInitialTestAccounts()).map(a => a.address) : [];
83
+ const testAccounts = nodeConfig.testAccounts ? (await getInitialTestAccountsData()).map(a => a.address) : [];
54
84
  const sponsoredFPCAccounts = nodeConfig.sponsoredFPC ? [await getSponsoredFPCAddress()] : [];
55
85
  const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
56
86
 
@@ -91,7 +121,7 @@ export async function startNode(
91
121
  ...config,
92
122
  };
93
123
 
94
- if (!options.sequencer) {
124
+ if (!options.sequencer && !nodeConfig.fishermanMode) {
95
125
  nodeConfig.disableValidator = true;
96
126
  } else {
97
127
  const sequencerConfig = {
@@ -99,12 +129,17 @@ export async function startNode(
99
129
  ...extractNamespacedOptions(options, 'sequencer'),
100
130
  };
101
131
  // If no publisher private keys have been given, use the first validator key
102
- if (sequencerConfig.publisherPrivateKeys === undefined || !sequencerConfig.publisherPrivateKeys.length) {
132
+ if (
133
+ sequencerConfig.sequencerPublisherPrivateKeys === undefined ||
134
+ !sequencerConfig.sequencerPublisherPrivateKeys.length
135
+ ) {
103
136
  if (sequencerConfig.validatorPrivateKeys?.getValue().length) {
104
- sequencerConfig.publisherPrivateKeys = [new SecretValue(sequencerConfig.validatorPrivateKeys.getValue()[0])];
137
+ sequencerConfig.sequencerPublisherPrivateKeys = [
138
+ new SecretValue(sequencerConfig.validatorPrivateKeys.getValue()[0]),
139
+ ];
105
140
  }
106
141
  }
107
- nodeConfig.publisherPrivateKeys = sequencerConfig.publisherPrivateKeys;
142
+ nodeConfig.sequencerPublisherPrivateKeys = sequencerConfig.sequencerPublisherPrivateKeys;
108
143
  }
109
144
 
110
145
  if (nodeConfig.p2pEnabled) {
@@ -115,30 +150,36 @@ export async function startNode(
115
150
  }
116
151
 
117
152
  const telemetryConfig = extractRelevantOptions<TelemetryClientConfig>(options, telemetryClientConfigMappings, 'tel');
118
- const telemetry = initTelemetryClient(telemetryConfig);
153
+ const telemetry = await initTelemetryClient(telemetryConfig);
119
154
 
120
155
  // Create and start Aztec Node
121
- const node = await createAztecNode(nodeConfig, { telemetry }, { prefilledPublicData });
156
+ const node = await createAztecNode(nodeConfig, { telemetry, proverBroker: broker }, { prefilledPublicData });
122
157
 
123
158
  // Add node and p2p to services list
124
159
  services.node = [node, AztecNodeApiSchema];
125
160
  services.p2p = [node.getP2P(), P2PApiSchema];
126
161
  adminServices.nodeAdmin = [node, AztecNodeAdminApiSchema];
127
162
 
163
+ // Register prover-node services if the prover node subsystem is running
164
+ const proverNode = node.getProverNode();
165
+ if (proverNode) {
166
+ services.prover = [proverNode, ProverNodeApiSchema];
167
+ if (!nodeConfig.proverBrokerUrl) {
168
+ services.provingJobSource = [proverNode.getProver().getProvingJobSource(), ProvingJobConsumerSchema];
169
+ }
170
+ }
171
+
128
172
  // Add node stop function to signal handlers
129
173
  signalHandlers.push(node.stop.bind(node));
130
174
 
131
- // Add a PXE client that connects to this node if requested
132
- let pxe: PXE | undefined;
133
- if (options.pxe) {
134
- const { addPXE } = await import('./start_pxe.js');
135
- ({ pxe } = await addPXE(options, signalHandlers, services, userLog, { node }));
136
- }
137
-
138
175
  // Add a txs bot if requested
139
176
  if (options.bot) {
140
177
  const { addBot } = await import('./start_bot.js');
141
- await addBot(options, signalHandlers, services, { pxe, node, telemetry });
178
+
179
+ const pxeConfig = extractRelevantOptions<PXEConfig & CliPXEOptions>(options, allPxeConfigMappings, 'pxe');
180
+ const wallet = await EmbeddedWallet.create(node, { pxeConfig });
181
+
182
+ await addBot(options, signalHandlers, services, wallet, node, telemetry, undefined);
142
183
  }
143
184
 
144
185
  if (nodeConfig.autoUpdate !== 'disabled' && nodeConfig.autoUpdateUrl) {
@@ -1,6 +1,6 @@
1
1
  import { jsonStringify } from '@aztec/foundation/json-rpc';
2
2
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
3
- import { type LogFn, createLogger } from '@aztec/foundation/log';
3
+ import type { LogFn } from '@aztec/foundation/log';
4
4
  import { createStore } from '@aztec/kv-store/lmdb-v2';
5
5
  import { type BootnodeConfig, BootstrapNode, bootnodeConfigMappings } from '@aztec/p2p';
6
6
  import { emptyChainConfig } from '@aztec/stdlib/config';
@@ -25,9 +25,9 @@ export async function startP2PBootstrap(
25
25
  userLog(`Starting P2P bootstrap node with config: ${jsonStringify(safeConfig)}`);
26
26
 
27
27
  const telemetryConfig = extractRelevantOptions<TelemetryClientConfig>(options, telemetryClientConfigMappings, 'tel');
28
- const telemetryClient = initTelemetryClient(telemetryConfig);
28
+ const telemetryClient = await initTelemetryClient(telemetryConfig);
29
29
 
30
- const store = await createStore('p2p-bootstrap', 1, config, createLogger('p2p:bootstrap:store'));
30
+ const store = await createStore('p2p-bootstrap', 1, config);
31
31
  const node = new BootstrapNode(store, telemetryClient);
32
32
  await node.start(config);
33
33
  signalHandlers.push(() => node.stop());
@@ -4,9 +4,9 @@ import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
4
4
  import type { LogFn } from '@aztec/foundation/log';
5
5
  import { buildServerCircuitProver } from '@aztec/prover-client';
6
6
  import {
7
- InlineProofStore,
8
7
  type ProverAgentConfig,
9
8
  ProvingAgent,
9
+ createProofStore,
10
10
  createProvingJobBrokerClient,
11
11
  proverAgentConfigMappings,
12
12
  } from '@aztec/prover-client/broker';
@@ -53,20 +53,12 @@ export async function startProverAgent(
53
53
  );
54
54
  const broker = createProvingJobBrokerClient(config.proverBrokerUrl, getVersions(), fetch);
55
55
 
56
- const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
56
+ const telemetry = await initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
57
57
  const prover = await buildServerCircuitProver(config, telemetry);
58
- const proofStore = new InlineProofStore();
58
+ const proofStore = await createProofStore(config.proofStore);
59
59
  const agents = times(
60
60
  config.proverAgentCount,
61
- () =>
62
- new ProvingAgent(
63
- broker,
64
- proofStore,
65
- prover,
66
- config.proverAgentProofTypes,
67
- config.proverAgentPollIntervalMs,
68
- telemetry,
69
- ),
61
+ () => new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs),
70
62
  );
71
63
 
72
64
  // expose all agents as individual services
@@ -1,10 +1,11 @@
1
1
  import { getL1Config } from '@aztec/cli/config';
2
- import { getPublicClient } from '@aztec/ethereum';
2
+ import { getPublicClient } from '@aztec/ethereum/client';
3
3
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
4
4
  import type { LogFn } from '@aztec/foundation/log';
5
5
  import {
6
6
  type ProverBrokerConfig,
7
7
  ProvingJobBrokerSchema,
8
+ ProvingJobBrokerSchemaWithDebug,
8
9
  createAndStartProvingBroker,
9
10
  proverBrokerConfigMappings,
10
11
  } from '@aztec/prover-client/broker';
@@ -45,7 +46,7 @@ export async function startProverBroker(
45
46
  config.l1Contracts = addresses;
46
47
  config.rollupVersion = rollupConfig.rollupVersion;
47
48
 
48
- const client = initTelemetryClient(getTelemetryClientConfig());
49
+ const client = await initTelemetryClient(getTelemetryClientConfig());
49
50
  const broker = await createAndStartProvingBroker(config, client);
50
51
 
51
52
  if (options.autoUpdate !== 'disabled' && options.autoUpdateUrl) {
@@ -59,7 +60,10 @@ export async function startProverBroker(
59
60
  );
60
61
  }
61
62
 
62
- services.proverBroker = [broker, ProvingJobBrokerSchema];
63
+ services.proverBroker = [
64
+ broker,
65
+ config.proverBrokerDebugReplayEnabled ? ProvingJobBrokerSchemaWithDebug : ProvingJobBrokerSchema,
66
+ ];
63
67
  signalHandlers.push(() => broker.stop());
64
68
 
65
69
  return { broker, config };
package/src/cli/util.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import type { AztecNodeConfig } from '@aztec/aztec-node';
2
- import type { AccountManager, EthAddress, Fr } from '@aztec/aztec.js';
3
- import type { ViemClient } from '@aztec/ethereum';
2
+ import type { AccountManager } from '@aztec/aztec.js/wallet';
3
+ import type { ViemClient } from '@aztec/ethereum/types';
4
4
  import type { ConfigMappingsType } from '@aztec/foundation/config';
5
+ import { EthAddress } from '@aztec/foundation/eth-address';
6
+ import { jsonStringify } from '@aztec/foundation/json-rpc';
5
7
  import { type LogFn, createLogger } from '@aztec/foundation/log';
6
8
  import type { SharedNodeConfig } from '@aztec/node-lib/config';
7
- import type { PXEService } from '@aztec/pxe/server';
8
9
  import type { ProverConfig } from '@aztec/stdlib/interfaces/server';
9
- import { UpdateChecker } from '@aztec/stdlib/update-checker';
10
- import { getTelemetryClient } from '@aztec/telemetry-client';
10
+ import { getTelemetryClient } from '@aztec/telemetry-client/start';
11
+ import type { EmbeddedWallet } from '@aztec/wallets/embedded';
11
12
 
12
13
  import chalk from 'chalk';
13
14
  import type { Command } from 'commander';
@@ -35,7 +36,7 @@ export function shutdown(logFn: LogFn, exitCode: ExitCode, cb?: Array<() => Prom
35
36
 
36
37
  logFn('Shutting down...', { exitCode });
37
38
  if (cb) {
38
- shutdownPromise = Promise.allSettled(cb).then(() => process.exit(exitCode));
39
+ shutdownPromise = Promise.allSettled(cb.map(fn => fn())).then(() => process.exit(exitCode));
39
40
  } else {
40
41
  // synchronously shuts down the process
41
42
  // no need to set shutdownPromise on this branch of the if statement because no more code will be executed
@@ -67,30 +68,19 @@ export const installSignalHandlers = (logFn: LogFn, cb?: Array<() => Promise<voi
67
68
  /**
68
69
  * Creates logs for the initial accounts
69
70
  * @param accounts - The initial accounts
70
- * @param pxe - A PXE instance to get the registered accounts
71
+ * @param wallet - A EmbeddedWallet instance to get the registered accounts
71
72
  * @returns A string array containing the initial accounts details
72
73
  */
73
- export async function createAccountLogs(
74
- accountsWithSecretKeys: {
75
- /**
76
- * The account object
77
- */
78
- account: AccountManager;
79
- /**
80
- * The secret key of the account
81
- */
82
- secretKey: Fr;
83
- }[],
84
- pxe: PXEService,
85
- ) {
86
- const registeredAccounts = await pxe.getRegisteredAccounts();
74
+ export async function createAccountLogs(accountManagers: AccountManager[], wallet: EmbeddedWallet) {
75
+ const registeredAccounts = await wallet.getAccounts();
87
76
  const accountLogStrings = [`Initial Accounts:\n\n`];
88
- for (const accountWithSecretKey of accountsWithSecretKeys) {
89
- const completeAddress = await accountWithSecretKey.account.getCompleteAddress();
90
- if (registeredAccounts.find(a => a.equals(completeAddress))) {
77
+ for (const accountManager of accountManagers) {
78
+ const account = await accountManager.getAccount();
79
+ const completeAddress = account.getCompleteAddress();
80
+ if (registeredAccounts.find(a => a.item.equals(completeAddress.address))) {
91
81
  accountLogStrings.push(` Address: ${completeAddress.address.toString()}\n`);
92
82
  accountLogStrings.push(` Partial Address: ${completeAddress.partialAddress.toString()}\n`);
93
- accountLogStrings.push(` Secret Key: ${accountWithSecretKey.secretKey.toString()}\n`);
83
+ accountLogStrings.push(` Secret Key: ${account.getSecretKey().toString()}\n`);
94
84
  accountLogStrings.push(
95
85
  ` Master nullifier public key: ${completeAddress.publicKeys.masterNullifierPublicKey.toString()}\n`,
96
86
  );
@@ -271,7 +261,7 @@ export const extractRelevantOptions = <T>(
271
261
  };
272
262
 
273
263
  /**
274
- * Downloads just enough points to be able to verify ClientIVC proofs.
264
+ * Downloads just enough points to be able to verify Chonk proofs.
275
265
  * @param opts - Whether proof are to be verifier
276
266
  * @param log - Logging function
277
267
  */
@@ -310,6 +300,7 @@ export async function setupUpdateMonitor(
310
300
  updateNodeConfig?: (config: object) => Promise<void>,
311
301
  ) {
312
302
  const logger = createLogger('update-check');
303
+ const { UpdateChecker } = await import('@aztec/stdlib/update-checker');
313
304
  const checker = await UpdateChecker.new({
314
305
  baseURL: updatesLocation,
315
306
  publicClient,
@@ -386,3 +377,9 @@ export async function setupUpdateMonitor(
386
377
 
387
378
  checker.start();
388
379
  }
380
+
381
+ export function stringifyConfig(config: object): string {
382
+ return Object.entries(config)
383
+ .map(([key, value]) => `${key}=${jsonStringify(value)}`)
384
+ .join(' ');
385
+ }
@@ -1,13 +1,13 @@
1
1
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
2
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
2
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
3
3
  import type { ChainConfig } from '@aztec/stdlib/config';
4
4
  import { type ComponentsVersions, getComponentsVersionsFromConfig } from '@aztec/stdlib/versioning';
5
5
 
6
6
  export function getVersions(config?: ChainConfig): Partial<ComponentsVersions> {
7
7
  return config
8
- ? getComponentsVersionsFromConfig(config, protocolContractTreeRoot, getVKTreeRoot())
8
+ ? getComponentsVersionsFromConfig(config, protocolContractsHash, getVKTreeRoot())
9
9
  : {
10
10
  l2CircuitsVkTreeRoot: getVKTreeRoot().toString(),
11
- l2ProtocolContractsTreeRoot: protocolContractTreeRoot.toString(),
11
+ l2ProtocolContractsHash: protocolContractsHash.toString(),
12
12
  };
13
13
  }
@@ -1,13 +1,14 @@
1
- import { getDeployedTestAccountsWallets } from '@aztec/accounts/testing';
2
- import { createPXEClient } from '@aztec/aztec.js';
1
+ import { getInitialTestAccountsData } from '@aztec/accounts/testing';
2
+ import { createAztecNodeClient } from '@aztec/aztec.js/node';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
5
+ import { EmbeddedWallet } from '@aztec/wallets/embedded';
5
6
 
6
7
  const logger = createLogger('example:token');
7
8
 
8
- const url = 'http://localhost:8080';
9
+ const nodeUrl = 'http://localhost:8080';
9
10
 
10
- const pxe = createPXEClient(url);
11
+ const node = createAztecNodeClient(nodeUrl);
11
12
 
12
13
  const ALICE_MINT_BALANCE = 333n;
13
14
  const TRANSFER_AMOUNT = 33n;
@@ -18,40 +19,40 @@ const TRANSFER_AMOUNT = 33n;
18
19
  async function main() {
19
20
  logger.info('Running token contract test on HTTP interface.');
20
21
 
21
- const [aliceWallet, bobWallet] = await getDeployedTestAccountsWallets(pxe);
22
- const alice = aliceWallet.getAddress();
23
- const bob = bobWallet.getAddress();
22
+ const wallet = await EmbeddedWallet.create(node);
23
+
24
+ // During local network setup we deploy a few accounts. Below we add them to our wallet.
25
+ const [aliceInitialAccountData, bobInitialAccountData] = await getInitialTestAccountsData();
26
+ await wallet.createSchnorrAccount(aliceInitialAccountData.secret, aliceInitialAccountData.salt);
27
+ await wallet.createSchnorrAccount(bobInitialAccountData.secret, bobInitialAccountData.salt);
28
+
29
+ const alice = aliceInitialAccountData.address;
30
+ const bob = bobInitialAccountData.address;
24
31
 
25
32
  logger.info(`Fetched Alice and Bob accounts: ${alice.toString()}, ${bob.toString()}`);
26
33
 
27
34
  logger.info('Deploying Token...');
28
- const token = await TokenContract.deploy(aliceWallet, alice, 'TokenName', 'TokenSymbol', 18)
29
- .send({ from: alice })
30
- .deployed();
35
+ const token = await TokenContract.deploy(wallet, alice, 'TokenName', 'TokenSymbol', 18).send({ from: alice });
31
36
  logger.info('Token deployed');
32
37
 
33
- // Create the contract abstraction and link it to Alice's and Bob's wallet for future signing
34
- const tokenAlice = await TokenContract.at(token.address, aliceWallet);
35
- const tokenBob = await TokenContract.at(token.address, bobWallet);
36
-
37
38
  // Mint tokens to Alice
38
39
  logger.info(`Minting ${ALICE_MINT_BALANCE} more coins to Alice...`);
39
- await tokenAlice.methods.mint_to_private(alice, ALICE_MINT_BALANCE).send({ from: alice }).wait();
40
+ await token.methods.mint_to_private(alice, ALICE_MINT_BALANCE).send({ from: alice });
40
41
 
41
42
  logger.info(`${ALICE_MINT_BALANCE} tokens were successfully minted by Alice and transferred to private`);
42
43
 
43
- const balanceAfterMint = await tokenAlice.methods.balance_of_private(alice).simulate({ from: alice });
44
+ const balanceAfterMint = await token.methods.balance_of_private(alice).simulate({ from: alice });
44
45
  logger.info(`Tokens successfully minted. New Alice's balance: ${balanceAfterMint}`);
45
46
 
46
47
  // We will now transfer tokens from Alice to Bob
47
48
  logger.info(`Transferring ${TRANSFER_AMOUNT} tokens from Alice to Bob...`);
48
- await tokenAlice.methods.transfer(bob, TRANSFER_AMOUNT).send({ from: alice }).wait();
49
+ await token.methods.transfer(bob, TRANSFER_AMOUNT).send({ from: alice });
49
50
 
50
51
  // Check the new balances
51
- const aliceBalance = await tokenAlice.methods.balance_of_private(alice).simulate({ from: alice });
52
+ const aliceBalance = await token.methods.balance_of_private(alice).simulate({ from: alice });
52
53
  logger.info(`Alice's balance ${aliceBalance}`);
53
54
 
54
- const bobBalance = await tokenBob.methods.balance_of_private(bob).simulate({ from: bob });
55
+ const bobBalance = await token.methods.balance_of_private(bob).simulate({ from: bob });
55
56
  logger.info(`Bob's balance ${bobBalance}`);
56
57
  }
57
58
 
@@ -1,5 +1,5 @@
1
- import { EthAddress } from '@aztec/aztec.js';
2
- import type { ExtendedViemWalletClient } from '@aztec/ethereum';
1
+ import { EthAddress } from '@aztec/aztec.js/addresses';
2
+ import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
3
3
  import { jsonStringify } from '@aztec/foundation/json-rpc';
4
4
 
5
5
  import type { Abi, Narrow } from 'abitype';
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export {
2
- createSandbox,
3
- getDeployedBananaCoinAddress,
4
- getDeployedBananaFPCAddress,
5
- getDeployedSponsoredFPCAddress,
6
- } from './sandbox/index.js';
2
+ createLocalNetwork,
3
+ registerDeployedBananaCoinInWalletAndGetAddress,
4
+ registerDeployedBananaFPCInWalletAndGetAddress,
5
+ registerDeployedSponsoredFPCInWalletAndGetAddress,
6
+ } from './local-network/index.js';