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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dest/bin/index.js +20 -12
  2. package/dest/cli/aztec_start_action.d.ts.map +1 -1
  3. package/dest/cli/aztec_start_action.js +32 -33
  4. package/dest/cli/aztec_start_options.d.ts +4 -2
  5. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  6. package/dest/cli/aztec_start_options.js +137 -207
  7. package/dest/cli/cli.d.ts.map +1 -1
  8. package/dest/cli/cli.js +4 -0
  9. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  10. package/dest/cli/cmds/start_archiver.js +18 -10
  11. package/dest/cli/cmds/start_blob_sink.d.ts.map +1 -1
  12. package/dest/cli/cmds/start_blob_sink.js +17 -1
  13. package/dest/cli/cmds/start_bot.d.ts +3 -6
  14. package/dest/cli/cmds/start_bot.d.ts.map +1 -1
  15. package/dest/cli/cmds/start_bot.js +24 -13
  16. package/dest/cli/cmds/start_node.d.ts +1 -1
  17. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  18. package/dest/cli/cmds/start_node.js +66 -79
  19. package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
  20. package/dest/cli/cmds/start_p2p_bootstrap.js +9 -4
  21. package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
  22. package/dest/cli/cmds/start_prover_agent.js +31 -2
  23. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  24. package/dest/cli/cmds/start_prover_broker.js +9 -3
  25. package/dest/cli/cmds/start_prover_node.d.ts.map +1 -1
  26. package/dest/cli/cmds/start_prover_node.js +43 -45
  27. package/dest/cli/preload_crs.d.ts +3 -0
  28. package/dest/cli/preload_crs.d.ts.map +1 -0
  29. package/dest/cli/preload_crs.js +6 -0
  30. package/dest/cli/release_version.d.ts +2 -0
  31. package/dest/cli/release_version.d.ts.map +1 -0
  32. package/dest/cli/release_version.js +14 -0
  33. package/dest/cli/util.d.ts +36 -5
  34. package/dest/cli/util.d.ts.map +1 -1
  35. package/dest/cli/util.js +198 -28
  36. package/dest/cli/versioning.js +3 -3
  37. package/dest/examples/token.js +31 -18
  38. package/dest/examples/util.d.ts +4 -5
  39. package/dest/examples/util.d.ts.map +1 -1
  40. package/dest/examples/util.js +5 -6
  41. package/dest/index.d.ts +1 -1
  42. package/dest/index.d.ts.map +1 -1
  43. package/dest/index.js +1 -1
  44. package/dest/sandbox/banana_fpc.d.ts +4 -5
  45. package/dest/sandbox/banana_fpc.d.ts.map +1 -1
  46. package/dest/sandbox/banana_fpc.js +19 -21
  47. package/dest/sandbox/index.d.ts +2 -3
  48. package/dest/sandbox/index.d.ts.map +1 -1
  49. package/dest/sandbox/index.js +2 -3
  50. package/dest/sandbox/sandbox.d.ts +25 -27
  51. package/dest/sandbox/sandbox.d.ts.map +1 -1
  52. package/dest/sandbox/sandbox.js +51 -49
  53. package/dest/sandbox/sponsored_fpc.d.ts +3 -5
  54. package/dest/sandbox/sponsored_fpc.d.ts.map +1 -1
  55. package/dest/sandbox/sponsored_fpc.js +10 -18
  56. package/dest/testing/anvil_test_watcher.d.ts +34 -0
  57. package/dest/testing/anvil_test_watcher.d.ts.map +1 -0
  58. package/dest/testing/anvil_test_watcher.js +142 -0
  59. package/dest/testing/cheat_codes.d.ts +43 -0
  60. package/dest/testing/cheat_codes.d.ts.map +1 -0
  61. package/dest/testing/cheat_codes.js +62 -0
  62. package/dest/testing/index.d.ts +4 -0
  63. package/dest/testing/index.d.ts.map +1 -0
  64. package/dest/testing/index.js +3 -0
  65. package/package.json +47 -41
  66. package/src/bin/index.ts +24 -12
  67. package/src/cli/aztec_start_action.ts +27 -30
  68. package/src/cli/aztec_start_options.ts +155 -207
  69. package/src/cli/cli.ts +8 -0
  70. package/src/cli/cmds/start_archiver.ts +19 -13
  71. package/src/cli/cmds/start_blob_sink.ts +27 -1
  72. package/src/cli/cmds/start_bot.ts +35 -12
  73. package/src/cli/cmds/start_node.ts +89 -84
  74. package/src/cli/cmds/start_p2p_bootstrap.ts +12 -4
  75. package/src/cli/cmds/start_prover_agent.ts +22 -2
  76. package/src/cli/cmds/start_prover_broker.ts +23 -3
  77. package/src/cli/cmds/start_prover_node.ts +53 -50
  78. package/src/cli/preload_crs.ts +7 -0
  79. package/src/cli/release_version.ts +21 -0
  80. package/src/cli/util.ts +208 -34
  81. package/src/cli/versioning.ts +3 -3
  82. package/src/examples/token.ts +23 -19
  83. package/src/examples/util.ts +6 -8
  84. package/src/index.ts +3 -4
  85. package/src/sandbox/banana_fpc.ts +20 -25
  86. package/src/sandbox/index.ts +5 -3
  87. package/src/sandbox/sandbox.ts +70 -57
  88. package/src/sandbox/sponsored_fpc.ts +12 -25
  89. package/src/testing/anvil_test_watcher.ts +164 -0
  90. package/src/testing/cheat_codes.ts +78 -0
  91. package/src/testing/index.ts +3 -0
  92. package/dest/cli/chain_l2_config.d.ts +0 -19
  93. package/dest/cli/chain_l2_config.d.ts.map +0 -1
  94. package/dest/cli/chain_l2_config.js +0 -56
  95. package/dest/cli/cmds/start_faucet.d.ts +0 -4
  96. package/dest/cli/cmds/start_faucet.d.ts.map +0 -1
  97. package/dest/cli/cmds/start_faucet.js +0 -20
  98. package/dest/cli/cmds/start_pxe.d.ts +0 -16
  99. package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
  100. package/dest/cli/cmds/start_pxe.js +0 -95
  101. package/dest/cli/get_l1_config.d.ts +0 -7
  102. package/dest/cli/get_l1_config.d.ts.map +0 -1
  103. package/dest/cli/get_l1_config.js +0 -13
  104. package/dest/sandbox/sponsored_fee_payment_method.d.ts +0 -23
  105. package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +0 -1
  106. package/dest/sandbox/sponsored_fee_payment_method.js +0 -36
  107. package/src/cli/chain_l2_config.ts +0 -74
  108. package/src/cli/cmds/start_faucet.ts +0 -34
  109. package/src/cli/cmds/start_pxe.ts +0 -129
  110. package/src/cli/get_l1_config.ts +0 -18
  111. package/src/sandbox/sponsored_fee_payment_method.ts +0 -46
@@ -1,8 +1,9 @@
1
1
  import { type ArchiverConfig, archiverConfigMappings } from '@aztec/archiver/config';
2
- import { faucetConfigMapping } from '@aztec/aztec-faucet/config';
3
2
  import { sequencerClientConfigMappings } from '@aztec/aztec-node/config';
4
3
  import { blobSinkConfigMappings } from '@aztec/blob-sink/server';
5
4
  import { botConfigMappings } from '@aztec/bot/config';
5
+ import { l1ContractAddressesMapping, l1ContractsConfigMappings, l1ReaderConfigMappings } from '@aztec/ethereum';
6
+ import { getKeys } from '@aztec/foundation/collection';
6
7
  import {
7
8
  type ConfigMapping,
8
9
  type EnvVar,
@@ -10,16 +11,15 @@ import {
10
11
  isBooleanConfigValue,
11
12
  omitConfigMappings,
12
13
  } from '@aztec/foundation/config';
14
+ import { dataConfigMappings } from '@aztec/kv-store/config';
15
+ import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
13
16
  import { bootnodeConfigMappings, p2pConfigMappings } from '@aztec/p2p/config';
14
- import {
15
- type ProverAgentConfig,
16
- type ProverBrokerConfig,
17
- proverAgentConfigMappings,
18
- proverBrokerConfigMappings,
19
- } from '@aztec/prover-client/broker';
17
+ import { proverAgentConfigMappings, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
20
18
  import { proverNodeConfigMappings } from '@aztec/prover-node/config';
21
19
  import { allPxeConfigMappings } from '@aztec/pxe/config';
20
+ import { chainConfigMappings } from '@aztec/stdlib/config';
22
21
  import { telemetryClientConfigMappings } from '@aztec/telemetry-client';
22
+ import { worldStateConfigMappings } from '@aztec/world-state';
23
23
 
24
24
  import { DefaultMnemonic } from '../mnemonic.js';
25
25
 
@@ -27,15 +27,18 @@ import { DefaultMnemonic } from '../mnemonic.js';
27
27
  export interface AztecStartOption {
28
28
  flag: string;
29
29
  description: string;
30
- defaultValue: any | undefined;
30
+ defaultValue: any;
31
31
  printDefault?: (val: any) => string;
32
- envVar: EnvVar | undefined;
32
+ env: EnvVar | undefined;
33
+ fallback?: EnvVar[];
33
34
  parseVal?: (val: string) => any;
34
35
  }
35
36
 
36
37
  export const getOptions = (namespace: string, configMappings: Record<string, ConfigMapping>) => {
37
38
  const options: AztecStartOption[] = [];
38
- for (const [key, { env, defaultValue: def, parseEnv, description, printDefault }] of Object.entries(configMappings)) {
39
+ for (const [key, { env, defaultValue: def, parseEnv, description, printDefault, fallback }] of Object.entries(
40
+ configMappings,
41
+ )) {
39
42
  if (universalOptions.includes(key)) {
40
43
  continue;
41
44
  }
@@ -45,126 +48,130 @@ export const getOptions = (namespace: string, configMappings: Record<string, Con
45
48
  description,
46
49
  defaultValue: def,
47
50
  printDefault,
48
- envVar: env,
51
+ env: env,
52
+ fallback,
49
53
  parseVal: parseEnv,
50
54
  });
51
55
  }
52
56
  return options;
53
57
  };
54
58
 
59
+ const configToFlag = (flag: string, configMapping: ConfigMapping, overrideDefaultValue?: any): AztecStartOption => {
60
+ if (!configMapping.isBoolean) {
61
+ flag += ' <value>';
62
+ }
63
+
64
+ const flagConfig: AztecStartOption = {
65
+ flag,
66
+ env: undefined,
67
+ defaultValue: undefined,
68
+ parseVal: configMapping.parseEnv,
69
+ ...configMapping,
70
+ };
71
+
72
+ if (overrideDefaultValue !== undefined) {
73
+ flagConfig.defaultValue = overrideDefaultValue;
74
+ }
75
+
76
+ return flagConfig;
77
+ };
78
+
55
79
  // These are options used by multiple modules so should be inputted once
56
- export const universalOptions = ['l1RpcUrls', 'l1ChainId', 'l1Contracts', 'p2pEnabled', 'dataDirectory'];
80
+ export const universalOptions = [
81
+ 'l1ConsensusHostUrls',
82
+ 'l1ConsensusHostApiKeys',
83
+ 'l1ConsensusHostApiKeyHeaders',
84
+ 'p2pEnabled',
85
+ ...getKeys(chainConfigMappings),
86
+ ...getKeys(l1ContractsConfigMappings),
87
+ ...getKeys(l1ContractAddressesMapping),
88
+ ...getKeys(l1ReaderConfigMappings),
89
+ ...getKeys(dataConfigMappings),
90
+ ...getKeys(worldStateConfigMappings),
91
+ ];
92
+
93
+ export const NETWORK_FLAG = 'network';
57
94
 
58
95
  // Define categories and options
59
96
  export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
60
- NETWORK: [
97
+ MISC: [
61
98
  {
62
- flag: '--network <value>',
99
+ flag: `--${NETWORK_FLAG} <value>`,
63
100
  description: 'Network to run Aztec on',
64
101
  defaultValue: undefined,
65
- envVar: 'NETWORK',
102
+ env: 'NETWORK',
66
103
  },
104
+
105
+ configToFlag('--auto-update', sharedNodeConfigMappings.autoUpdate),
106
+ configToFlag('--auto-update-url', sharedNodeConfigMappings.autoUpdateUrl),
107
+
108
+ configToFlag('--sync-mode', sharedNodeConfigMappings.syncMode),
109
+ configToFlag('--snapshots-urls', sharedNodeConfigMappings.snapshotsUrls),
67
110
  ],
68
111
  SANDBOX: [
69
112
  {
70
113
  flag: '--sandbox',
71
114
  description: 'Starts Aztec Sandbox',
72
115
  defaultValue: undefined,
73
- envVar: undefined,
116
+ env: undefined,
74
117
  },
75
118
  {
76
- flag: '--sandbox.testAccounts',
77
- description: 'Deploy test accounts on sandbox start',
78
- envVar: 'TEST_ACCOUNTS',
79
- ...booleanConfigHelper(true),
119
+ flag: '--sandbox.l1Mnemonic <value>',
120
+ description: 'Mnemonic for L1 accounts. Will be used ',
121
+ defaultValue: DefaultMnemonic,
122
+ env: 'MNEMONIC',
80
123
  },
81
124
  {
82
- flag: '--sandbox.noPXE',
83
- description: 'Do not expose PXE service on sandbox start',
84
- envVar: 'NO_PXE',
85
- ...booleanConfigHelper(),
125
+ flag: '--sandbox.deployAztecContractsSalt <value>',
126
+ description:
127
+ 'Numeric salt for deploying L1 Aztec contracts before starting the sandbox. Needs mnemonic or private key to be set.',
128
+ env: 'DEPLOY_AZTEC_CONTRACTS_SALT',
129
+ defaultValue: undefined,
130
+ parseVal: (val: string) => (val ? parseInt(val) : undefined),
86
131
  },
87
132
  ],
88
133
  API: [
89
134
  {
90
135
  flag: '--port <value>',
91
- description: 'Port to run the Aztec Services on on',
136
+ description: 'Port to run the Aztec Services on',
92
137
  defaultValue: 8080,
93
- envVar: 'AZTEC_PORT',
138
+ env: 'AZTEC_PORT',
139
+ parseVal: val => parseInt(val, 10),
140
+ },
141
+ {
142
+ flag: '--admin-port <value>',
143
+ description: 'Port to run admin APIs of Aztec Services on',
144
+ defaultValue: 8880,
145
+ env: 'AZTEC_ADMIN_PORT',
94
146
  parseVal: val => parseInt(val, 10),
95
147
  },
96
148
  {
97
149
  flag: '--api-prefix <value>',
98
150
  description: 'Prefix for API routes on any service that is started',
99
151
  defaultValue: '',
100
- envVar: 'API_PREFIX',
152
+ env: 'API_PREFIX',
101
153
  },
102
154
  ],
103
155
  ETHEREUM: [
104
- {
105
- flag: '--l1-rpc-urls <value>',
106
- description: 'List of URLs of the Ethereum RPC nodes that services will connect to (comma separated)',
107
- defaultValue: ['http://localhost:8545'],
108
- envVar: 'ETHEREUM_HOSTS',
109
- parseVal: (val: string) => val.split(',').map(url => url.trim()),
110
- },
111
- {
112
- flag: '--l1-chain-id <value>',
113
- description: 'The L1 chain ID',
114
- defaultValue: 31337,
115
- envVar: 'L1_CHAIN_ID',
116
- parseVal: val => parseInt(val, 10),
117
- },
118
- {
119
- flag: '--l1-mnemonic <value>',
120
- description: 'Mnemonic for L1 accounts. Will be used if no publisher private keys are provided',
121
- defaultValue: DefaultMnemonic,
122
- envVar: 'MNEMONIC',
123
- },
156
+ configToFlag('--l1-chain-id', l1ReaderConfigMappings.l1ChainId),
157
+ // Do not set default for CLI: keep undefined unless provided via flag or env
158
+ configToFlag('--l1-rpc-urls', { ...l1ReaderConfigMappings.l1RpcUrls, defaultValue: undefined }),
159
+ configToFlag('--l1-consensus-host-urls', blobSinkConfigMappings.l1ConsensusHostUrls),
160
+ configToFlag('--l1-consensus-host-api-keys', blobSinkConfigMappings.l1ConsensusHostApiKeys),
161
+ configToFlag('--l1-consensus-host-api-key-headers', blobSinkConfigMappings.l1ConsensusHostApiKeyHeaders),
124
162
  ],
125
- 'L1 CONTRACT ADDRESSES': [
126
- {
127
- flag: '--rollup-address <value>',
128
- description: 'The deployed L1 rollup contract address',
129
- defaultValue: undefined,
130
- envVar: 'ROLLUP_CONTRACT_ADDRESS',
131
- },
132
- {
133
- flag: '--registry-address <value>',
134
- description: 'The deployed L1 registry contract address',
135
- defaultValue: undefined,
136
- envVar: 'REGISTRY_CONTRACT_ADDRESS',
137
- },
138
- {
139
- flag: '--inbox-address <value>',
140
- description: 'The deployed L1 -> L2 inbox contract address',
141
- defaultValue: undefined,
142
- envVar: 'INBOX_CONTRACT_ADDRESS',
143
- },
144
- {
145
- flag: '--outbox-address <value>',
146
- description: 'The deployed L2 -> L1 outbox contract address',
147
- defaultValue: undefined,
148
- envVar: 'OUTBOX_CONTRACT_ADDRESS',
149
- },
150
- {
151
- flag: '--fee-juice-address <value>',
152
- description: 'The deployed L1 Fee Juice contract address',
153
- defaultValue: undefined,
154
- envVar: 'FEE_JUICE_CONTRACT_ADDRESS',
155
- },
156
- {
157
- flag: '--staking-asset-address <value>',
158
- description: 'The deployed L1 Staking Asset contract address',
159
- defaultValue: undefined,
160
- envVar: 'STAKING_ASSET_CONTRACT_ADDRESS',
161
- },
162
- {
163
- flag: '--fee-juice-portal-address <value>',
164
- description: 'The deployed L1 Fee Juice portal contract address',
165
- defaultValue: undefined,
166
- envVar: 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS',
167
- },
163
+ 'L1 CONTRACTS': [
164
+ configToFlag('--registry-address', l1ContractAddressesMapping.registryAddress),
165
+ configToFlag('--rollup-version', chainConfigMappings.rollupVersion),
166
+ ],
167
+ STORAGE: [
168
+ configToFlag('--data-directory', dataConfigMappings.dataDirectory),
169
+ configToFlag('--data-store-map-size-kb', dataConfigMappings.dataStoreMapSizeKb),
170
+ ],
171
+ 'WORLD STATE': [
172
+ configToFlag('--world-state-data-directory', worldStateConfigMappings.worldStateDataDirectory),
173
+ configToFlag('--world-state-db-map-size-kb', worldStateConfigMappings.worldStateDbMapSizeKb),
174
+ configToFlag('--world-state-block-history', worldStateConfigMappings.worldStateBlockHistory),
168
175
  ],
169
176
  // We can't easily auto-generate node options as they're parts of modules defined below
170
177
  'AZTEC NODE': [
@@ -172,106 +179,44 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
172
179
  flag: '--node',
173
180
  description: 'Starts Aztec Node with options',
174
181
  defaultValue: undefined,
175
- envVar: undefined,
176
- },
177
- {
178
- flag: '--data-directory <value>',
179
- description: 'Where to store data. If not set, will store temporarily',
180
- defaultValue: undefined,
181
- envVar: 'DATA_DIRECTORY',
182
- },
183
- {
184
- flag: '--node.archiverUrl <value>',
185
- description: 'URL for an archiver service',
186
- defaultValue: undefined,
187
- envVar: 'ARCHIVER_URL',
188
- },
189
- {
190
- flag: '--node.deployAztecContracts',
191
- description: 'Deploys L1 Aztec contracts before starting the node. Needs mnemonic or private key to be set.',
192
- envVar: 'DEPLOY_AZTEC_CONTRACTS',
193
- defaultValue: undefined,
194
- },
195
- {
196
- flag: '--node.deployAztecContractsSalt <value>',
197
- description:
198
- 'Numeric salt for deploying L1 Aztec contracts before starting the node. Needs mnemonic or private key to be set. Implies --node.deployAztecContracts.',
199
- envVar: 'DEPLOY_AZTEC_CONTRACTS_SALT',
200
- defaultValue: undefined,
201
- parseVal: (val: string) => (val ? parseInt(val) : undefined),
182
+ env: undefined,
202
183
  },
203
- {
204
- flag: '--node.assumeProvenThroughBlockNumber <value>',
205
- description:
206
- 'Cheats the rollup contract into assuming every block until this one is proven. Useful for speeding up bootstraps.',
207
- envVar: 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER',
208
- parseVal: (val: string) => parseInt(val, 10),
209
- defaultValue: 0,
210
- },
211
- {
212
- flag: '--node.publisherPrivateKey <value>',
213
- description: 'Private key of account for publishing L1 contracts',
214
- defaultValue: undefined,
215
- envVar: 'L1_PRIVATE_KEY',
216
- },
217
- {
218
- flag: '--node.worldStateBlockCheckIntervalMS <value>',
219
- description: 'Frequency in which to check for blocks in ms',
220
- defaultValue: 100,
221
- envVar: 'WS_BLOCK_CHECK_INTERVAL_MS',
222
- parseVal: val => parseInt(val, 10),
223
- },
224
- {
225
- flag: '--node.testAccounts',
226
- description: 'Populate genesis state with initial fee juice for test accounts',
227
- envVar: 'TEST_ACCOUNTS',
228
- ...booleanConfigHelper(),
229
- },
230
- ],
231
- 'P2P SUBSYSTEM': [
232
- {
233
- flag: '--p2p-enabled',
234
- description: 'Enable P2P subsystem',
235
- envVar: 'P2P_ENABLED',
236
- ...booleanConfigHelper(),
237
- },
238
- ...getOptions('p2p', p2pConfigMappings),
239
- ],
240
- TELEMETRY: [...getOptions('tel', telemetryClientConfigMappings)],
241
- PXE: [
242
- {
243
- flag: '--pxe',
244
- description: 'Starts Aztec PXE with options',
245
- defaultValue: undefined,
246
- envVar: undefined,
247
- },
248
- ...getOptions('pxe', allPxeConfigMappings),
249
184
  ],
250
185
  ARCHIVER: [
251
186
  {
252
187
  flag: '--archiver',
253
188
  description: 'Starts Aztec Archiver with options',
254
189
  defaultValue: undefined,
255
- envVar: undefined,
190
+ env: undefined,
256
191
  },
257
- // filter out archiverUrl as it's passed separately in --node & --prover-node
258
- ...getOptions('archiver', archiverConfigMappings).filter(opt => !opt.flag.includes('archiverUrl')),
192
+ ...getOptions(
193
+ 'archiver',
194
+ omitConfigMappings(archiverConfigMappings, Object.keys(l1ContractsConfigMappings) as (keyof ArchiverConfig)[]),
195
+ ),
259
196
  ],
260
197
  SEQUENCER: [
261
198
  {
262
199
  flag: '--sequencer',
263
200
  description: 'Starts Aztec Sequencer with options',
264
201
  defaultValue: undefined,
265
- envVar: undefined,
202
+ env: undefined,
266
203
  },
267
- ...getOptions('sequencer', sequencerClientConfigMappings),
204
+ ...getOptions(
205
+ 'sequencer',
206
+ omitConfigMappings(sequencerClientConfigMappings, [
207
+ 'fakeProcessingDelayPerTxMs',
208
+ 'skipCollectingAttestations',
209
+ 'skipInvalidateBlockAsProposer',
210
+ 'blobSinkMapSizeKb',
211
+ ]),
212
+ ),
268
213
  ],
269
- BLOB_SINK: [
214
+ 'BLOB SINK': [
270
215
  {
271
216
  flag: '--blob-sink',
272
217
  description: 'Starts Aztec Blob Sink with options',
273
218
  defaultValue: undefined,
274
- envVar: undefined,
219
+ env: undefined,
275
220
  },
276
221
  ...getOptions('blobSink', blobSinkConfigMappings),
277
222
  ],
@@ -280,21 +225,18 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
280
225
  flag: '--prover-node',
281
226
  description: 'Starts Aztec Prover Node with options',
282
227
  defaultValue: undefined,
283
- envVar: undefined,
284
- },
285
- {
286
- flag: '--proverNode.archiverUrl <value>',
287
- description: 'URL for an archiver service',
288
- defaultValue: undefined,
289
- envVar: 'ARCHIVER_URL',
228
+ env: undefined,
290
229
  },
291
230
  ...getOptions(
292
231
  'proverNode',
293
232
  omitConfigMappings(proverNodeConfigMappings, [
294
233
  // filter out options passed separately
295
- ...(Object.keys(archiverConfigMappings) as (keyof ArchiverConfig)[]),
296
- ...(Object.keys(proverBrokerConfigMappings) as (keyof ProverBrokerConfig)[]),
297
- ...(Object.keys(proverAgentConfigMappings) as (keyof ProverAgentConfig)[]),
234
+ ...getKeys(archiverConfigMappings),
235
+ ...getKeys(proverBrokerConfigMappings),
236
+ ...getKeys(proverAgentConfigMappings),
237
+ ...getKeys(p2pConfigMappings),
238
+ ...getKeys(worldStateConfigMappings),
239
+ ...getKeys(sharedNodeConfigMappings),
298
240
  ]),
299
241
  ),
300
242
  ],
@@ -303,7 +245,7 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
303
245
  flag: '--prover-broker',
304
246
  description: 'Starts Aztec proving job broker',
305
247
  defaultValue: undefined,
306
- envVar: undefined,
248
+ env: undefined,
307
249
  },
308
250
  ...getOptions(
309
251
  'proverBroker',
@@ -316,56 +258,62 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
316
258
  flag: '--prover-agent',
317
259
  description: 'Starts Aztec Prover Agent with options',
318
260
  defaultValue: undefined,
319
- envVar: undefined,
261
+ env: undefined,
320
262
  },
321
263
  ...getOptions('proverAgent', proverAgentConfigMappings),
322
264
  ],
265
+ 'P2P SUBSYSTEM': [
266
+ {
267
+ flag: '--p2p-enabled [value]',
268
+ description: 'Enable P2P subsystem',
269
+ env: 'P2P_ENABLED',
270
+ ...booleanConfigHelper(),
271
+ },
272
+ ...getOptions('p2p', p2pConfigMappings),
273
+ ],
323
274
  'P2P BOOTSTRAP': [
324
275
  {
325
276
  flag: '--p2p-bootstrap',
326
277
  description: 'Starts Aztec P2P Bootstrap with options',
327
278
  defaultValue: undefined,
328
- envVar: undefined,
279
+ env: undefined,
329
280
  },
330
- ...getOptions('p2pBootstrap', bootnodeConfigMappings),
281
+ ...getOptions(
282
+ 'p2pBootstrap',
283
+ omitConfigMappings(bootnodeConfigMappings, [
284
+ 'p2pIp',
285
+ 'p2pPort',
286
+ 'peerIdPrivateKey',
287
+ 'bootstrapNodes',
288
+ 'listenAddress',
289
+ ]),
290
+ ),
331
291
  ],
292
+ TELEMETRY: [...getOptions('tel', telemetryClientConfigMappings)],
332
293
  BOT: [
333
294
  {
334
295
  flag: '--bot',
335
296
  description: 'Starts Aztec Bot with options',
336
297
  defaultValue: undefined,
337
- envVar: undefined,
298
+ env: undefined,
338
299
  },
339
300
  ...getOptions('bot', botConfigMappings),
340
301
  ],
341
- TXE: [
302
+ PXE: [
342
303
  {
343
- flag: '--txe',
344
- description: 'Starts Aztec TXE with options',
304
+ flag: '--pxe',
305
+ description: 'Starts Aztec PXE with options',
345
306
  defaultValue: undefined,
346
- envVar: undefined,
307
+ env: undefined,
347
308
  },
309
+ ...getOptions('pxe', allPxeConfigMappings),
348
310
  ],
349
- FAUCET: [
311
+ TXE: [
350
312
  {
351
- flag: '--faucet',
352
- description: 'Starts the Aztec faucet',
313
+ flag: '--txe',
314
+ description: 'Starts Aztec TXE with options',
353
315
  defaultValue: undefined,
354
- envVar: undefined,
355
- },
356
- {
357
- flag: '--faucet.apiServer',
358
- description: 'Starts a simple HTTP server to access the faucet',
359
- defaultValue: true,
360
- envVar: undefined,
361
- },
362
- {
363
- flag: '--faucet.apiServerPort <value>',
364
- description: 'The port on which to start the api server on',
365
- defaultValue: 8080,
366
- envVar: undefined,
367
- parseVal: val => parseInt(val, 10),
316
+ env: undefined,
368
317
  },
369
- ...getOptions('faucet', faucetConfigMapping),
370
318
  ],
371
319
  };
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
  }
@@ -1,13 +1,19 @@
1
- import { Archiver, type ArchiverConfig, KVArchiverDataStore, archiverConfigMappings } from '@aztec/archiver';
2
- import { createLogger } from '@aztec/aztec.js';
3
- import { createBlobSinkClient } from '@aztec/blob-sink/client';
1
+ import {
2
+ Archiver,
3
+ type ArchiverConfig,
4
+ KVArchiverDataStore,
5
+ archiverConfigMappings,
6
+ getArchiverConfigFromEnv,
7
+ } from '@aztec/archiver';
8
+ import { createLogger } from '@aztec/aztec.js/log';
9
+ import { type BlobSinkConfig, blobSinkConfigMapping, createBlobSinkClient } from '@aztec/blob-sink/client';
10
+ import { getL1Config } from '@aztec/cli/config';
4
11
  import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
5
12
  import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
6
13
  import { createStore } from '@aztec/kv-store/lmdb-v2';
7
14
  import { ArchiverApiSchema } from '@aztec/stdlib/interfaces/server';
8
15
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
9
16
 
10
- import { getL1Config } from '../get_l1_config.js';
11
17
  import { extractRelevantOptions } from '../util.js';
12
18
 
13
19
  export type { ArchiverConfig, DataStoreConfig };
@@ -18,35 +24,35 @@ export async function startArchiver(
18
24
  signalHandlers: (() => Promise<void>)[],
19
25
  services: NamespacedApiHandlers,
20
26
  ): Promise<{ config: ArchiverConfig & DataStoreConfig }> {
21
- let archiverConfig = extractRelevantOptions<ArchiverConfig & DataStoreConfig>(
27
+ const envConfig = getArchiverConfigFromEnv();
28
+ const cliOptions = extractRelevantOptions<ArchiverConfig & DataStoreConfig & BlobSinkConfig>(
22
29
  options,
23
- {
24
- ...archiverConfigMappings,
25
- ...dataConfigMappings,
26
- },
30
+ { ...archiverConfigMappings, ...dataConfigMappings, ...blobSinkConfigMapping },
27
31
  'archiver',
28
32
  );
29
33
 
34
+ let archiverConfig = { ...envConfig, ...cliOptions };
35
+ archiverConfig.dataStoreMapSizeKb = archiverConfig.archiverStoreMapSizeKb ?? archiverConfig.dataStoreMapSizeKb;
36
+
30
37
  if (!archiverConfig.l1Contracts.registryAddress || archiverConfig.l1Contracts.registryAddress.isZero()) {
31
38
  throw new Error('L1 registry address is required to start an Archiver');
32
39
  }
33
40
 
34
- const { addresses, config } = await getL1Config(
41
+ const { addresses, config: l1Config } = await getL1Config(
35
42
  archiverConfig.l1Contracts.registryAddress,
36
43
  archiverConfig.l1RpcUrls,
37
44
  archiverConfig.l1ChainId,
38
45
  );
39
46
 
40
47
  archiverConfig.l1Contracts = addresses;
41
- archiverConfig = { ...archiverConfig, ...config };
48
+ archiverConfig = { ...archiverConfig, ...l1Config };
42
49
 
43
50
  const storeLog = createLogger('archiver:lmdb');
44
51
  const store = await createStore('archiver', KVArchiverDataStore.SCHEMA_VERSION, archiverConfig, storeLog);
45
52
  const archiverStore = new KVArchiverDataStore(store, archiverConfig.maxLogs);
46
53
 
47
54
  const telemetry = initTelemetryClient(getTelemetryClientConfig());
48
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/10056): place CL url in config here
49
- const blobSinkClient = createBlobSinkClient();
55
+ const blobSinkClient = createBlobSinkClient(archiverConfig, { logger: createLogger('archiver:blob-sink:client') });
50
56
  const archiver = await Archiver.createAndSync(archiverConfig, archiverStore, { telemetry, blobSinkClient }, true);
51
57
  services.archiver = [archiver, ArchiverApiSchema];
52
58
  signalHandlers.push(archiver.stop);
@@ -4,6 +4,7 @@ import {
4
4
  createBlobSinkServer,
5
5
  getBlobSinkConfigFromEnv,
6
6
  } from '@aztec/blob-sink/server';
7
+ import { getL1Config } from '@aztec/cli/config';
7
8
  import type { LogFn } from '@aztec/foundation/log';
8
9
  import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
9
10
 
@@ -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