@aztec/aztec 0.84.0 → 0.85.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"aztec_start_options.d.ts","sourceRoot":"","sources":["../../src/cli/aztec_start_options.ts"],"names":[],"mappings":"AAKA,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,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IACpC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;CACjC;AAED,eAAO,MAAM,UAAU,cAAe,MAAM,kBAAkB,OAAO,MAAM,EAAE,aAAa,CAAC,uBAiB1F,CAAC;AAGF,eAAO,MAAM,gBAAgB,UAU5B,CAAC;AAEF,eAAO,MAAM,YAAY,YAAY,CAAC;AAGtC,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CAgWlE,CAAC"}
1
+ {"version":3,"file":"aztec_start_options.d.ts","sourceRoot":"","sources":["../../src/cli/aztec_start_options.ts"],"names":[],"mappings":"AAKA,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,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IACpC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;CACjC;AAED,eAAO,MAAM,UAAU,cAAe,MAAM,kBAAkB,OAAO,MAAM,EAAE,aAAa,CAAC,uBAiB1F,CAAC;AAGF,eAAO,MAAM,gBAAgB,UAU5B,CAAC;AAEF,eAAO,MAAM,YAAY,YAAY,CAAC;AAGtC,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CA0WlE,CAAC"}
@@ -317,7 +317,8 @@ export const aztecStartOptions = {
317
317
  // filter out options passed separately
318
318
  ...Object.keys(archiverConfigMappings),
319
319
  ...Object.keys(proverBrokerConfigMappings),
320
- ...Object.keys(proverAgentConfigMappings)
320
+ ...Object.keys(proverAgentConfigMappings),
321
+ ...Object.keys(p2pConfigMappings)
321
322
  ]))
322
323
  ],
323
324
  'PROVER BROKER': [
@@ -346,7 +347,13 @@ export const aztecStartOptions = {
346
347
  defaultValue: undefined,
347
348
  envVar: undefined
348
349
  },
349
- ...getOptions('p2pBootstrap', bootnodeConfigMappings)
350
+ ...getOptions('p2pBootstrap', omitConfigMappings(bootnodeConfigMappings, [
351
+ 'p2pIp',
352
+ 'p2pPort',
353
+ 'peerIdPrivateKey',
354
+ 'bootstrapNodes',
355
+ 'listenAddress'
356
+ ]))
350
357
  ],
351
358
  BOT: [
352
359
  {
@@ -28,9 +28,9 @@ export const alphaTestnetL2ChainConfig = {
28
28
  sponsoredFPC: true,
29
29
  p2pEnabled: true,
30
30
  p2pBootstrapNodes: [],
31
- registryAddress: '0xad85d55a4bbef35e95396191c22903aa717edf1c',
32
- slashFactoryAddress: '',
33
- feeAssetHandlerAddress: '0xf0664fec6ac15313e18d5ad8225e46b7c6463338',
31
+ registryAddress: '0x4d2cc1d5fb6be65240e0bfc8154243e69c0fb19e',
32
+ slashFactoryAddress: '0xef057a24cb08c15321c7875f18e904e5131436aa',
33
+ feeAssetHandlerAddress: '0x80d848dc9f52df56789e2d62ce66f19555ff1019',
34
34
  seqMinTxsPerBlock: 0,
35
35
  seqMaxTxsPerBlock: 4,
36
36
  realProofs: true,
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAmClG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CA2ClG"}
package/dest/cli/cli.js CHANGED
@@ -29,5 +29,9 @@ import { addOptions, printAztecStartHelpText } from './util.js';
29
29
  then runs
30
30
  $ aztec-nargo test --silence-warnings --oracle-resolver=<TXE_ADDRESS> [options]
31
31
  `);
32
+ program.command('preload-crs').description('Preload the points data needed for proving and verifying').action(async (options)=>{
33
+ const { preloadCrs } = await import('./preload_crs.js');
34
+ return await preloadCrs(options, userLog, debugLogger);
35
+ });
32
36
  return program;
33
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"start_blob_sink.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_blob_sink.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKnD,wBAAsB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,iBAmBxG"}
1
+ {"version":3,"file":"start_blob_sink.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_blob_sink.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAMnD,wBAAsB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,iBA4CxG"}
@@ -1,16 +1,32 @@
1
1
  import { blobSinkConfigMappings, createBlobSinkServer, getBlobSinkConfigFromEnv } from '@aztec/blob-sink/server';
2
2
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
3
+ import { getL1Config } from '../get_l1_config.js';
3
4
  import { extractRelevantOptions } from '../util.js';
4
5
  export async function startBlobSink(options, signalHandlers, userLog) {
5
6
  if (options.prover || options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
6
7
  userLog(`Starting a blob sink with --node, --sequencer, --pxe, --p2p-bootstrap, --prover or --txe is not supported.`);
7
8
  process.exit(1);
8
9
  }
9
- const blobSinkConfig = {
10
+ let blobSinkConfig = {
10
11
  ...getBlobSinkConfigFromEnv(),
11
12
  ...extractRelevantOptions(options, blobSinkConfigMappings, 'blobSink')
12
13
  };
14
+ if (!blobSinkConfig.l1Contracts?.registryAddress || blobSinkConfig.l1Contracts.registryAddress.isZero()) {
15
+ throw new Error('REGISTRY_CONTRACT_ADDRESS not set');
16
+ }
17
+ if (!blobSinkConfig.l1RpcUrls || blobSinkConfig.l1RpcUrls.length === 0) {
18
+ throw new Error('ETHEREUM_HOSTS not set');
19
+ }
20
+ if (typeof blobSinkConfig.l1ChainId !== 'number') {
21
+ throw new Error('L1_CHAIN_ID');
22
+ }
13
23
  const telemetry = initTelemetryClient(getTelemetryClientConfig());
24
+ const { config: chainConfig, addresses } = await getL1Config(blobSinkConfig.l1Contracts.registryAddress, blobSinkConfig.l1RpcUrls, blobSinkConfig.l1ChainId, blobSinkConfig.rollupVersion);
25
+ blobSinkConfig = {
26
+ ...blobSinkConfig,
27
+ l1Contracts: addresses,
28
+ ...chainConfig
29
+ };
14
30
  const blobSink = await createBlobSinkServer(blobSinkConfig, telemetry);
15
31
  signalHandlers.push(blobSink.stop.bind(blobSink));
16
32
  await blobSink.start();
@@ -1 +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;AAGpG,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,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CAqJtC"}
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;AAIpG,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,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CA2JtC"}
@@ -1,5 +1,6 @@
1
1
  import { getInitialTestAccounts } from '@aztec/accounts/testing';
2
2
  import { aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
3
+ import { Fr } from '@aztec/aztec.js';
3
4
  import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
4
5
  import { NULL_KEY } from '@aztec/ethereum';
5
6
  import { AztecNodeAdminApiSchema, AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
@@ -59,6 +60,9 @@ export async function startNode(options, signalHandlers, services, adminServices
59
60
  throw new Error('L1 registry address is required to start Aztec Node without --deploy-aztec-contracts option');
60
61
  }
61
62
  const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId, nodeConfig.rollupVersion);
63
+ if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
64
+ 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}`);
65
+ }
62
66
  // TODO(#12272): will clean this up.
63
67
  nodeConfig = {
64
68
  ...nodeConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"start_prover_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_node.ts"],"names":[],"mappings":"AAGA,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;AAY5B,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,CAwFvC"}
1
+ {"version":3,"file":"start_prover_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_node.ts"],"names":[],"mappings":"AAIA,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;AAY5B,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,CA8FvC"}
@@ -1,4 +1,5 @@
1
1
  import { getInitialTestAccounts } from '@aztec/accounts/testing';
2
+ import { Fr } from '@aztec/aztec.js';
2
3
  import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
3
4
  import { NULL_KEY } from '@aztec/ethereum';
4
5
  import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
@@ -43,6 +44,18 @@ export async function startProverNode(options, signalHandlers, services, userLog
43
44
  ...proverConfig,
44
45
  ...config
45
46
  };
47
+ const testAccounts = proverConfig.testAccounts ? (await getInitialTestAccounts()).map((a)=>a.address) : [];
48
+ const sponsoredFPCAccounts = proverConfig.sponsoredFPC ? [
49
+ await getSponsoredFPCAddress()
50
+ ] : [];
51
+ const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
52
+ userLog(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
53
+ const { genesisArchiveRoot, genesisBlockHash, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
54
+ userLog(`Genesis block hash: ${genesisBlockHash.toString()}`);
55
+ userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
56
+ if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
57
+ 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}`);
58
+ }
46
59
  const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
47
60
  let broker;
48
61
  if (proverConfig.proverBrokerUrl) {
@@ -66,15 +79,6 @@ export async function startProverNode(options, signalHandlers, services, userLog
66
79
  userLog(`Running prover node without local prover agent. Connect one or more prover agents to this node or pass --proverAgent.proverAgentCount`);
67
80
  }
68
81
  await preloadCrsDataForVerifying(proverConfig, userLog);
69
- const testAccounts = proverConfig.testAccounts ? (await getInitialTestAccounts()).map((a)=>a.address) : [];
70
- const sponsoredFPCAccounts = proverConfig.sponsoredFPC ? [
71
- await getSponsoredFPCAddress()
72
- ] : [];
73
- const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
74
- userLog(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
75
- const { genesisArchiveRoot, genesisBlockHash, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
76
- userLog(`Genesis block hash: ${genesisBlockHash.toString()}`);
77
- userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
78
82
  const proverNode = await createProverNode(proverConfig, {
79
83
  telemetry,
80
84
  broker
@@ -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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/aztec",
3
- "version": "0.84.0",
3
+ "version": "0.85.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js"
@@ -29,40 +29,40 @@
29
29
  "../package.common.json"
30
30
  ],
31
31
  "dependencies": {
32
- "@aztec/accounts": "0.84.0",
33
- "@aztec/archiver": "0.84.0",
34
- "@aztec/aztec-faucet": "0.84.0",
35
- "@aztec/aztec-node": "0.84.0",
36
- "@aztec/aztec.js": "0.84.0",
37
- "@aztec/bb-prover": "0.84.0",
38
- "@aztec/bb.js": "0.84.0",
39
- "@aztec/blob-sink": "0.84.0",
40
- "@aztec/bot": "0.84.0",
41
- "@aztec/builder": "0.84.0",
42
- "@aztec/cli": "0.84.0",
43
- "@aztec/cli-wallet": "0.84.0",
44
- "@aztec/constants": "0.84.0",
45
- "@aztec/entrypoints": "0.84.0",
46
- "@aztec/ethereum": "0.84.0",
47
- "@aztec/foundation": "0.84.0",
48
- "@aztec/kv-store": "0.84.0",
49
- "@aztec/noir-contracts.js": "0.84.0",
50
- "@aztec/noir-protocol-circuits-types": "0.84.0",
51
- "@aztec/p2p": "0.84.0",
52
- "@aztec/p2p-bootstrap": "0.84.0",
53
- "@aztec/protocol-contracts": "0.84.0",
54
- "@aztec/prover-client": "0.84.0",
55
- "@aztec/prover-node": "0.84.0",
56
- "@aztec/pxe": "0.84.0",
57
- "@aztec/stdlib": "0.84.0",
58
- "@aztec/telemetry-client": "0.84.0",
59
- "@aztec/txe": "0.84.0",
60
- "@aztec/world-state": "0.84.0",
32
+ "@aztec/accounts": "0.85.0",
33
+ "@aztec/archiver": "0.85.0",
34
+ "@aztec/aztec-faucet": "0.85.0",
35
+ "@aztec/aztec-node": "0.85.0",
36
+ "@aztec/aztec.js": "0.85.0",
37
+ "@aztec/bb-prover": "0.85.0",
38
+ "@aztec/bb.js": "0.85.0",
39
+ "@aztec/blob-sink": "0.85.0",
40
+ "@aztec/bot": "0.85.0",
41
+ "@aztec/builder": "0.85.0",
42
+ "@aztec/cli": "0.85.0",
43
+ "@aztec/cli-wallet": "0.85.0",
44
+ "@aztec/constants": "0.85.0",
45
+ "@aztec/entrypoints": "0.85.0",
46
+ "@aztec/ethereum": "0.85.0",
47
+ "@aztec/foundation": "0.85.0",
48
+ "@aztec/kv-store": "0.85.0",
49
+ "@aztec/noir-contracts.js": "0.85.0",
50
+ "@aztec/noir-protocol-circuits-types": "0.85.0",
51
+ "@aztec/p2p": "0.85.0",
52
+ "@aztec/p2p-bootstrap": "0.85.0",
53
+ "@aztec/protocol-contracts": "0.85.0",
54
+ "@aztec/prover-client": "0.85.0",
55
+ "@aztec/prover-node": "0.85.0",
56
+ "@aztec/pxe": "0.85.0",
57
+ "@aztec/stdlib": "0.85.0",
58
+ "@aztec/telemetry-client": "0.85.0",
59
+ "@aztec/txe": "0.85.0",
60
+ "@aztec/world-state": "0.85.0",
61
61
  "@types/chalk": "^2.2.0",
62
62
  "abitype": "^0.8.11",
63
63
  "chalk": "^5.3.0",
64
64
  "commander": "^12.1.0",
65
- "koa": "^2.14.2",
65
+ "koa": "^2.16.1",
66
66
  "koa-router": "^12.0.0",
67
67
  "viem": "2.23.7"
68
68
  },
@@ -75,7 +75,7 @@
75
75
  "devDependencies": {
76
76
  "@jest/globals": "^29.5.0",
77
77
  "@types/jest": "^29.5.0",
78
- "@types/koa": "^2.13.6",
78
+ "@types/koa": "^2.15.0",
79
79
  "jest": "^29.5.0",
80
80
  "ts-node": "^10.9.1",
81
81
  "typescript": "^5.0.4"
@@ -10,7 +10,7 @@ import {
10
10
  isBooleanConfigValue,
11
11
  omitConfigMappings,
12
12
  } from '@aztec/foundation/config';
13
- import { bootnodeConfigMappings, p2pConfigMappings } from '@aztec/p2p/config';
13
+ import { type P2PConfig, bootnodeConfigMappings, p2pConfigMappings } from '@aztec/p2p/config';
14
14
  import {
15
15
  type ProverAgentConfig,
16
16
  type ProverBrokerConfig,
@@ -347,6 +347,7 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
347
347
  ...(Object.keys(archiverConfigMappings) as (keyof ArchiverConfig)[]),
348
348
  ...(Object.keys(proverBrokerConfigMappings) as (keyof ProverBrokerConfig)[]),
349
349
  ...(Object.keys(proverAgentConfigMappings) as (keyof ProverAgentConfig)[]),
350
+ ...(Object.keys(p2pConfigMappings) as (keyof P2PConfig)[]),
350
351
  ]),
351
352
  ),
352
353
  ],
@@ -379,7 +380,16 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
379
380
  defaultValue: undefined,
380
381
  envVar: undefined,
381
382
  },
382
- ...getOptions('p2pBootstrap', bootnodeConfigMappings),
383
+ ...getOptions(
384
+ 'p2pBootstrap',
385
+ omitConfigMappings(bootnodeConfigMappings, [
386
+ 'p2pIp',
387
+ 'p2pPort',
388
+ 'peerIdPrivateKey',
389
+ 'bootstrapNodes',
390
+ 'listenAddress',
391
+ ]),
392
+ ),
383
393
  ],
384
394
  BOT: [
385
395
  {
@@ -53,9 +53,9 @@ export const alphaTestnetL2ChainConfig: L2ChainConfig = {
53
53
  sponsoredFPC: true,
54
54
  p2pEnabled: true,
55
55
  p2pBootstrapNodes: [],
56
- registryAddress: '0xad85d55a4bbef35e95396191c22903aa717edf1c',
57
- slashFactoryAddress: '',
58
- feeAssetHandlerAddress: '0xf0664fec6ac15313e18d5ad8225e46b7c6463338',
56
+ registryAddress: '0x4d2cc1d5fb6be65240e0bfc8154243e69c0fb19e',
57
+ slashFactoryAddress: '0xef057a24cb08c15321c7875f18e904e5131436aa',
58
+ feeAssetHandlerAddress: '0x80d848dc9f52df56789e2d62ce66f19555ff1019',
59
59
  seqMinTxsPerBlock: 0,
60
60
  seqMaxTxsPerBlock: 4,
61
61
  realProofs: true,
package/src/cli/cli.ts CHANGED
@@ -44,5 +44,13 @@ export function injectAztecCommands(program: Command, userLog: LogFn, debugLogge
44
44
  `,
45
45
  );
46
46
 
47
+ program
48
+ .command('preload-crs')
49
+ .description('Preload the points data needed for proving and verifying')
50
+ .action(async options => {
51
+ const { preloadCrs } = await import('./preload_crs.js');
52
+ return await preloadCrs(options, userLog, debugLogger);
53
+ });
54
+
47
55
  return program;
48
56
  }
@@ -7,6 +7,7 @@ import {
7
7
  import type { LogFn } from '@aztec/foundation/log';
8
8
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
9
9
 
10
+ import { getL1Config } from '../get_l1_config.js';
10
11
  import { extractRelevantOptions } from '../util.js';
11
12
 
12
13
  export async function startBlobSink(options: any, signalHandlers: (() => Promise<void>)[], userLog: LogFn) {
@@ -17,13 +18,38 @@ export async function startBlobSink(options: any, signalHandlers: (() => Promise
17
18
  process.exit(1);
18
19
  }
19
20
 
20
- const blobSinkConfig = {
21
+ let blobSinkConfig: BlobSinkConfig = {
21
22
  ...getBlobSinkConfigFromEnv(), // get default config from env
22
23
  ...extractRelevantOptions<BlobSinkConfig>(options, blobSinkConfigMappings, 'blobSink'), // override with command line options
23
24
  };
24
25
 
26
+ if (!blobSinkConfig.l1Contracts?.registryAddress || blobSinkConfig.l1Contracts.registryAddress.isZero()) {
27
+ throw new Error('REGISTRY_CONTRACT_ADDRESS not set');
28
+ }
29
+
30
+ if (!blobSinkConfig.l1RpcUrls || blobSinkConfig.l1RpcUrls.length === 0) {
31
+ throw new Error('ETHEREUM_HOSTS not set');
32
+ }
33
+
34
+ if (typeof blobSinkConfig.l1ChainId !== 'number') {
35
+ throw new Error('L1_CHAIN_ID');
36
+ }
37
+
25
38
  const telemetry = initTelemetryClient(getTelemetryClientConfig());
26
39
 
40
+ const { config: chainConfig, addresses } = await getL1Config(
41
+ blobSinkConfig.l1Contracts.registryAddress,
42
+ blobSinkConfig.l1RpcUrls,
43
+ blobSinkConfig.l1ChainId,
44
+ blobSinkConfig.rollupVersion,
45
+ );
46
+
47
+ blobSinkConfig = {
48
+ ...blobSinkConfig,
49
+ l1Contracts: addresses,
50
+ ...chainConfig,
51
+ };
52
+
27
53
  const blobSink = await createBlobSinkServer(blobSinkConfig, telemetry);
28
54
  signalHandlers.push(blobSink.stop.bind(blobSink));
29
55
 
@@ -1,5 +1,6 @@
1
1
  import { getInitialTestAccounts } from '@aztec/accounts/testing';
2
2
  import { type AztecNodeConfig, aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
3
+ import { Fr } from '@aztec/aztec.js';
3
4
  import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
4
5
  import { NULL_KEY } from '@aztec/ethereum';
5
6
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
@@ -92,6 +93,12 @@ export async function startNode(
92
93
  nodeConfig.rollupVersion,
93
94
  );
94
95
 
96
+ if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
97
+ throw new Error(
98
+ `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}`,
99
+ );
100
+ }
101
+
95
102
  // TODO(#12272): will clean this up.
96
103
  nodeConfig = {
97
104
  ...nodeConfig,
@@ -1,4 +1,5 @@
1
1
  import { getInitialTestAccounts } from '@aztec/accounts/testing';
2
+ import { Fr } from '@aztec/aztec.js';
2
3
  import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
3
4
  import { NULL_KEY } from '@aztec/ethereum';
4
5
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
@@ -66,6 +67,22 @@ export async function startProverNode(
66
67
  proverConfig.l1Contracts = addresses;
67
68
  proverConfig = { ...proverConfig, ...config };
68
69
 
70
+ const testAccounts = proverConfig.testAccounts ? (await getInitialTestAccounts()).map(a => a.address) : [];
71
+ const sponsoredFPCAccounts = proverConfig.sponsoredFPC ? [await getSponsoredFPCAddress()] : [];
72
+ const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
73
+
74
+ userLog(`Initial funded accounts: ${initialFundedAccounts.map(a => a.toString()).join(', ')}`);
75
+ const { genesisArchiveRoot, genesisBlockHash, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
76
+
77
+ userLog(`Genesis block hash: ${genesisBlockHash.toString()}`);
78
+ userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
79
+
80
+ if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
81
+ throw new Error(
82
+ `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}`,
83
+ );
84
+ }
85
+
69
86
  const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
70
87
 
71
88
  let broker: ProvingJobBroker;
@@ -89,16 +106,6 @@ export async function startProverNode(
89
106
 
90
107
  await preloadCrsDataForVerifying(proverConfig, userLog);
91
108
 
92
- const testAccounts = proverConfig.testAccounts ? (await getInitialTestAccounts()).map(a => a.address) : [];
93
- const sponsoredFPCAccounts = proverConfig.sponsoredFPC ? [await getSponsoredFPCAddress()] : [];
94
- const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
95
-
96
- userLog(`Initial funded accounts: ${initialFundedAccounts.map(a => a.toString()).join(', ')}`);
97
- const { genesisArchiveRoot, genesisBlockHash, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
98
-
99
- userLog(`Genesis block hash: ${genesisBlockHash.toString()}`);
100
- userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
101
-
102
109
  const proverNode = await createProverNode(proverConfig, { telemetry, broker }, { prefilledPublicData });
103
110
  services.proverNode = [proverNode, ProverNodeApiSchema];
104
111
 
@@ -0,0 +1,7 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+
3
+ import { preloadCrsDataForServerSideProving } from './util.js';
4
+
5
+ export async function preloadCrs(_options: any, userLog: LogFn, _debugLogger: Logger) {
6
+ await preloadCrsDataForServerSideProving({ realProofs: true }, userLog);
7
+ }