@aztec/aztec 0.0.0-test.1 → 0.0.1-commit.1142ef1

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 (156) hide show
  1. package/README.md +1 -1
  2. package/dest/bin/index.d.ts +1 -1
  3. package/dest/bin/index.js +23 -12
  4. package/dest/cli/aztec_start_action.d.ts +1 -1
  5. package/dest/cli/aztec_start_action.d.ts.map +1 -1
  6. package/dest/cli/aztec_start_action.js +40 -40
  7. package/dest/cli/aztec_start_options.d.ts +5 -3
  8. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  9. package/dest/cli/aztec_start_options.js +143 -224
  10. package/dest/cli/cli.d.ts +1 -1
  11. package/dest/cli/cli.d.ts.map +1 -1
  12. package/dest/cli/cli.js +12 -7
  13. package/dest/cli/cmds/migrate_ha_db.d.ts +3 -0
  14. package/dest/cli/cmds/migrate_ha_db.d.ts.map +1 -0
  15. package/dest/cli/cmds/migrate_ha_db.js +27 -0
  16. package/dest/cli/cmds/start_archiver.d.ts +1 -1
  17. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  18. package/dest/cli/cmds/start_archiver.js +20 -12
  19. package/dest/cli/cmds/start_bot.d.ts +4 -7
  20. package/dest/cli/cmds/start_bot.d.ts.map +1 -1
  21. package/dest/cli/cmds/start_bot.js +25 -14
  22. package/dest/cli/cmds/start_node.d.ts +2 -2
  23. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  24. package/dest/cli/cmds/start_node.js +68 -81
  25. package/dest/cli/cmds/start_p2p_bootstrap.d.ts +1 -1
  26. package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
  27. package/dest/cli/cmds/start_p2p_bootstrap.js +9 -4
  28. package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
  29. package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
  30. package/dest/cli/cmds/start_prover_agent.js +33 -4
  31. package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
  32. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  33. package/dest/cli/cmds/start_prover_broker.js +10 -4
  34. package/dest/cli/cmds/start_prover_node.d.ts +1 -1
  35. package/dest/cli/cmds/start_prover_node.d.ts.map +1 -1
  36. package/dest/cli/cmds/start_prover_node.js +44 -46
  37. package/dest/cli/cmds/start_txe.d.ts +1 -1
  38. package/dest/cli/index.d.ts +1 -1
  39. package/dest/cli/preload_crs.d.ts +3 -0
  40. package/dest/cli/preload_crs.d.ts.map +1 -0
  41. package/dest/cli/preload_crs.js +6 -0
  42. package/dest/cli/release_version.d.ts +2 -0
  43. package/dest/cli/release_version.d.ts.map +1 -0
  44. package/dest/cli/release_version.js +14 -0
  45. package/dest/cli/util.d.ts +38 -7
  46. package/dest/cli/util.d.ts.map +1 -1
  47. package/dest/cli/util.js +198 -28
  48. package/dest/cli/versioning.d.ts +1 -1
  49. package/dest/cli/versioning.js +3 -3
  50. package/dest/examples/token.d.ts +1 -1
  51. package/dest/examples/token.js +31 -18
  52. package/dest/examples/util.d.ts +5 -6
  53. package/dest/examples/util.d.ts.map +1 -1
  54. package/dest/examples/util.js +5 -6
  55. package/dest/index.d.ts +2 -2
  56. package/dest/index.d.ts.map +1 -1
  57. package/dest/index.js +1 -1
  58. package/dest/local-network/banana_fpc.d.ts +10 -0
  59. package/dest/local-network/banana_fpc.d.ts.map +1 -0
  60. package/dest/{sandbox → local-network}/banana_fpc.js +20 -22
  61. package/dest/local-network/index.d.ts +4 -0
  62. package/dest/local-network/index.d.ts.map +1 -0
  63. package/dest/local-network/index.js +3 -0
  64. package/dest/local-network/local-network.d.ts +72 -0
  65. package/dest/local-network/local-network.d.ts.map +1 -0
  66. package/dest/local-network/local-network.js +195 -0
  67. package/dest/local-network/sponsored_fpc.d.ts +5 -0
  68. package/dest/local-network/sponsored_fpc.d.ts.map +1 -0
  69. package/dest/local-network/sponsored_fpc.js +18 -0
  70. package/dest/mnemonic.d.ts +1 -1
  71. package/dest/splash.d.ts +1 -1
  72. package/dest/testing/anvil_test_watcher.d.ts +34 -0
  73. package/dest/testing/anvil_test_watcher.d.ts.map +1 -0
  74. package/dest/testing/anvil_test_watcher.js +144 -0
  75. package/dest/testing/cheat_codes.d.ts +41 -0
  76. package/dest/testing/cheat_codes.d.ts.map +1 -0
  77. package/dest/testing/cheat_codes.js +62 -0
  78. package/dest/testing/epoch_test_settler.d.ts +17 -0
  79. package/dest/testing/epoch_test_settler.d.ts.map +1 -0
  80. package/dest/testing/epoch_test_settler.js +52 -0
  81. package/dest/testing/index.d.ts +5 -0
  82. package/dest/testing/index.d.ts.map +1 -0
  83. package/dest/testing/index.js +4 -0
  84. package/package.json +55 -45
  85. package/scripts/aztec.sh +63 -0
  86. package/scripts/compile.sh +44 -0
  87. package/scripts/extract_function.js +47 -0
  88. package/scripts/flamegraph.sh +59 -0
  89. package/scripts/init.sh +35 -0
  90. package/scripts/new.sh +59 -0
  91. package/scripts/setup_project.sh +31 -0
  92. package/src/bin/index.ts +28 -12
  93. package/src/cli/aztec_start_action.ts +36 -38
  94. package/src/cli/aztec_start_options.ts +159 -222
  95. package/src/cli/cli.ts +20 -11
  96. package/src/cli/cmds/migrate_ha_db.ts +43 -0
  97. package/src/cli/cmds/start_archiver.ts +21 -15
  98. package/src/cli/cmds/start_bot.ts +36 -13
  99. package/src/cli/cmds/start_node.ts +91 -86
  100. package/src/cli/cmds/start_p2p_bootstrap.ts +12 -4
  101. package/src/cli/cmds/start_prover_agent.ts +24 -12
  102. package/src/cli/cmds/start_prover_broker.ts +24 -4
  103. package/src/cli/cmds/start_prover_node.ts +54 -51
  104. package/src/cli/preload_crs.ts +7 -0
  105. package/src/cli/release_version.ts +21 -0
  106. package/src/cli/util.ts +208 -34
  107. package/src/cli/versioning.ts +3 -3
  108. package/src/examples/token.ts +23 -19
  109. package/src/examples/util.ts +6 -8
  110. package/src/index.ts +5 -6
  111. package/src/{sandbox → local-network}/banana_fpc.ts +21 -26
  112. package/src/local-network/index.ts +7 -0
  113. package/src/local-network/local-network.ts +238 -0
  114. package/src/local-network/sponsored_fpc.ts +26 -0
  115. package/src/testing/anvil_test_watcher.ts +166 -0
  116. package/src/testing/cheat_codes.ts +79 -0
  117. package/src/testing/epoch_test_settler.ts +59 -0
  118. package/src/testing/index.ts +4 -0
  119. package/dest/cli/chain_l2_config.d.ts +0 -19
  120. package/dest/cli/chain_l2_config.d.ts.map +0 -1
  121. package/dest/cli/chain_l2_config.js +0 -56
  122. package/dest/cli/cmds/start_blob_sink.d.ts +0 -3
  123. package/dest/cli/cmds/start_blob_sink.d.ts.map +0 -1
  124. package/dest/cli/cmds/start_blob_sink.js +0 -17
  125. package/dest/cli/cmds/start_faucet.d.ts +0 -4
  126. package/dest/cli/cmds/start_faucet.d.ts.map +0 -1
  127. package/dest/cli/cmds/start_faucet.js +0 -20
  128. package/dest/cli/cmds/start_pxe.d.ts +0 -16
  129. package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
  130. package/dest/cli/cmds/start_pxe.js +0 -95
  131. package/dest/cli/get_l1_config.d.ts +0 -7
  132. package/dest/cli/get_l1_config.d.ts.map +0 -1
  133. package/dest/cli/get_l1_config.js +0 -13
  134. package/dest/sandbox/banana_fpc.d.ts +0 -11
  135. package/dest/sandbox/banana_fpc.d.ts.map +0 -1
  136. package/dest/sandbox/index.d.ts +0 -5
  137. package/dest/sandbox/index.d.ts.map +0 -1
  138. package/dest/sandbox/index.js +0 -4
  139. package/dest/sandbox/sandbox.d.ts +0 -76
  140. package/dest/sandbox/sandbox.d.ts.map +0 -1
  141. package/dest/sandbox/sandbox.js +0 -181
  142. package/dest/sandbox/sponsored_fee_payment_method.d.ts +0 -23
  143. package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +0 -1
  144. package/dest/sandbox/sponsored_fee_payment_method.js +0 -36
  145. package/dest/sandbox/sponsored_fpc.d.ts +0 -6
  146. package/dest/sandbox/sponsored_fpc.d.ts.map +0 -1
  147. package/dest/sandbox/sponsored_fpc.js +0 -26
  148. package/src/cli/chain_l2_config.ts +0 -74
  149. package/src/cli/cmds/start_blob_sink.ts +0 -31
  150. package/src/cli/cmds/start_faucet.ts +0 -34
  151. package/src/cli/cmds/start_pxe.ts +0 -129
  152. package/src/cli/get_l1_config.ts +0 -18
  153. package/src/sandbox/index.ts +0 -5
  154. package/src/sandbox/sandbox.ts +0 -229
  155. package/src/sandbox/sponsored_fee_payment_method.ts +0 -46
  156. package/src/sandbox/sponsored_fpc.ts +0 -38
@@ -1,8 +1,10 @@
1
1
  import { type ArchiverConfig, archiverConfigMappings } from '@aztec/archiver/config';
2
- import { faucetConfigMapping } from '@aztec/aztec-faucet/config';
3
- import { sequencerClientConfigMappings } from '@aztec/aztec-node/config';
4
- import { blobSinkConfigMappings } from '@aztec/blob-sink/server';
2
+ import { blobClientConfigMapping } from '@aztec/blob-client/client/config';
5
3
  import { botConfigMappings } from '@aztec/bot/config';
4
+ import { l1ContractsConfigMappings } from '@aztec/ethereum/config';
5
+ import { l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresses';
6
+ import { l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
7
+ import { getKeys } from '@aztec/foundation/collection';
6
8
  import {
7
9
  type ConfigMapping,
8
10
  type EnvVar,
@@ -10,16 +12,16 @@ import {
10
12
  isBooleanConfigValue,
11
13
  omitConfigMappings,
12
14
  } from '@aztec/foundation/config';
15
+ import { dataConfigMappings } from '@aztec/kv-store/config';
16
+ import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
13
17
  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';
18
+ import { proverAgentConfigMappings, proverBrokerConfigMappings } from '@aztec/prover-client/broker/config';
20
19
  import { proverNodeConfigMappings } from '@aztec/prover-node/config';
21
20
  import { allPxeConfigMappings } from '@aztec/pxe/config';
22
- import { telemetryClientConfigMappings } from '@aztec/telemetry-client';
21
+ import { sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
22
+ import { chainConfigMappings } from '@aztec/stdlib/config';
23
+ import { telemetryClientConfigMappings } from '@aztec/telemetry-client/config';
24
+ import { worldStateConfigMappings } from '@aztec/world-state/config';
23
25
 
24
26
  import { DefaultMnemonic } from '../mnemonic.js';
25
27
 
@@ -27,15 +29,18 @@ import { DefaultMnemonic } from '../mnemonic.js';
27
29
  export interface AztecStartOption {
28
30
  flag: string;
29
31
  description: string;
30
- defaultValue: any | undefined;
32
+ defaultValue: any;
31
33
  printDefault?: (val: any) => string;
32
- envVar: EnvVar | undefined;
34
+ env: EnvVar | undefined;
35
+ fallback?: EnvVar[];
33
36
  parseVal?: (val: string) => any;
34
37
  }
35
38
 
36
39
  export const getOptions = (namespace: string, configMappings: Record<string, ConfigMapping>) => {
37
40
  const options: AztecStartOption[] = [];
38
- for (const [key, { env, defaultValue: def, parseEnv, description, printDefault }] of Object.entries(configMappings)) {
41
+ for (const [key, { env, defaultValue: def, parseEnv, description, printDefault, fallback }] of Object.entries(
42
+ configMappings,
43
+ )) {
39
44
  if (universalOptions.includes(key)) {
40
45
  continue;
41
46
  }
@@ -45,126 +50,125 @@ export const getOptions = (namespace: string, configMappings: Record<string, Con
45
50
  description,
46
51
  defaultValue: def,
47
52
  printDefault,
48
- envVar: env,
53
+ env: env,
54
+ fallback,
49
55
  parseVal: parseEnv,
50
56
  });
51
57
  }
52
58
  return options;
53
59
  };
54
60
 
61
+ const configToFlag = (flag: string, configMapping: ConfigMapping, overrideDefaultValue?: any): AztecStartOption => {
62
+ if (!configMapping.isBoolean) {
63
+ flag += ' <value>';
64
+ }
65
+
66
+ const flagConfig: AztecStartOption = {
67
+ flag,
68
+ env: undefined,
69
+ defaultValue: undefined,
70
+ parseVal: configMapping.parseEnv,
71
+ ...configMapping,
72
+ };
73
+
74
+ if (overrideDefaultValue !== undefined) {
75
+ flagConfig.defaultValue = overrideDefaultValue;
76
+ }
77
+
78
+ return flagConfig;
79
+ };
80
+
55
81
  // These are options used by multiple modules so should be inputted once
56
- export const universalOptions = ['l1RpcUrls', 'l1ChainId', 'l1Contracts', 'p2pEnabled', 'dataDirectory'];
82
+ export const universalOptions = [
83
+ 'l1ConsensusHostUrls',
84
+ 'l1ConsensusHostApiKeys',
85
+ 'l1ConsensusHostApiKeyHeaders',
86
+ 'p2pEnabled',
87
+ 'fishermanMode',
88
+ ...getKeys(chainConfigMappings),
89
+ ...getKeys(l1ContractsConfigMappings),
90
+ ...getKeys(l1ContractAddressesMapping),
91
+ ...getKeys(l1ReaderConfigMappings),
92
+ ...getKeys(dataConfigMappings),
93
+ ...getKeys(worldStateConfigMappings),
94
+ ];
95
+
96
+ export const NETWORK_FLAG = 'network';
57
97
 
58
98
  // Define categories and options
59
99
  export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
60
- NETWORK: [
100
+ MISC: [
61
101
  {
62
- flag: '--network <value>',
102
+ flag: `--${NETWORK_FLAG} <value>`,
63
103
  description: 'Network to run Aztec on',
64
104
  defaultValue: undefined,
65
- envVar: 'NETWORK',
105
+ env: 'NETWORK',
66
106
  },
107
+
108
+ configToFlag('--auto-update', sharedNodeConfigMappings.autoUpdate),
109
+ configToFlag('--auto-update-url', sharedNodeConfigMappings.autoUpdateUrl),
110
+
111
+ configToFlag('--sync-mode', sharedNodeConfigMappings.syncMode),
112
+ configToFlag('--snapshots-urls', sharedNodeConfigMappings.snapshotsUrls),
113
+
114
+ configToFlag('--fisherman-mode', sharedNodeConfigMappings.fishermanMode),
67
115
  ],
68
- SANDBOX: [
116
+ LOCAL_NETWORK: [
69
117
  {
70
- flag: '--sandbox',
71
- description: 'Starts Aztec Sandbox',
118
+ flag: '--local-network',
119
+ description: 'Starts Aztec Local Network',
72
120
  defaultValue: undefined,
73
- envVar: undefined,
121
+ env: undefined,
74
122
  },
75
123
  {
76
- flag: '--sandbox.testAccounts',
77
- description: 'Deploy test accounts on sandbox start',
78
- envVar: 'TEST_ACCOUNTS',
79
- ...booleanConfigHelper(true),
80
- },
81
- {
82
- flag: '--sandbox.noPXE',
83
- description: 'Do not expose PXE service on sandbox start',
84
- envVar: 'NO_PXE',
85
- ...booleanConfigHelper(),
124
+ flag: '--local-network.l1Mnemonic <value>',
125
+ description: 'Mnemonic for L1 accounts. Will be used ',
126
+ defaultValue: DefaultMnemonic,
127
+ env: 'MNEMONIC',
86
128
  },
87
129
  ],
88
130
  API: [
89
131
  {
90
132
  flag: '--port <value>',
91
- description: 'Port to run the Aztec Services on on',
133
+ description: 'Port to run the Aztec Services on',
92
134
  defaultValue: 8080,
93
- envVar: 'AZTEC_PORT',
135
+ env: 'AZTEC_PORT',
136
+ parseVal: val => parseInt(val, 10),
137
+ },
138
+ {
139
+ flag: '--admin-port <value>',
140
+ description: 'Port to run admin APIs of Aztec Services on',
141
+ defaultValue: 8880,
142
+ env: 'AZTEC_ADMIN_PORT',
94
143
  parseVal: val => parseInt(val, 10),
95
144
  },
96
145
  {
97
146
  flag: '--api-prefix <value>',
98
147
  description: 'Prefix for API routes on any service that is started',
99
148
  defaultValue: '',
100
- envVar: 'API_PREFIX',
149
+ env: 'API_PREFIX',
101
150
  },
102
151
  ],
103
152
  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
- },
153
+ configToFlag('--l1-chain-id', l1ReaderConfigMappings.l1ChainId),
154
+ // Do not set default for CLI: keep undefined unless provided via flag or env
155
+ configToFlag('--l1-rpc-urls', { ...l1ReaderConfigMappings.l1RpcUrls, defaultValue: undefined }),
156
+ configToFlag('--l1-consensus-host-urls', blobClientConfigMapping.l1ConsensusHostUrls),
157
+ configToFlag('--l1-consensus-host-api-keys', blobClientConfigMapping.l1ConsensusHostApiKeys),
158
+ configToFlag('--l1-consensus-host-api-key-headers', blobClientConfigMapping.l1ConsensusHostApiKeyHeaders),
124
159
  ],
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
- },
160
+ 'L1 CONTRACTS': [
161
+ configToFlag('--registry-address', l1ContractAddressesMapping.registryAddress),
162
+ configToFlag('--rollup-version', chainConfigMappings.rollupVersion),
163
+ ],
164
+ STORAGE: [
165
+ configToFlag('--data-directory', dataConfigMappings.dataDirectory),
166
+ configToFlag('--data-store-map-size-kb', dataConfigMappings.dataStoreMapSizeKb),
167
+ ],
168
+ 'WORLD STATE': [
169
+ configToFlag('--world-state-data-directory', worldStateConfigMappings.worldStateDataDirectory),
170
+ configToFlag('--world-state-db-map-size-kb', worldStateConfigMappings.worldStateDbMapSizeKb),
171
+ configToFlag('--world-state-block-history', worldStateConfigMappings.worldStateBlockHistory),
168
172
  ],
169
173
  // We can't easily auto-generate node options as they're parts of modules defined below
170
174
  'AZTEC NODE': [
@@ -172,129 +176,56 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
172
176
  flag: '--node',
173
177
  description: 'Starts Aztec Node with options',
174
178
  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),
202
- },
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,
179
+ env: undefined,
247
180
  },
248
- ...getOptions('pxe', allPxeConfigMappings),
249
181
  ],
250
182
  ARCHIVER: [
251
183
  {
252
184
  flag: '--archiver',
253
185
  description: 'Starts Aztec Archiver with options',
254
186
  defaultValue: undefined,
255
- envVar: undefined,
187
+ env: undefined,
256
188
  },
257
- // filter out archiverUrl as it's passed separately in --node & --prover-node
258
- ...getOptions('archiver', archiverConfigMappings).filter(opt => !opt.flag.includes('archiverUrl')),
189
+ ...getOptions(
190
+ 'archiver',
191
+ omitConfigMappings(archiverConfigMappings, Object.keys(l1ContractsConfigMappings) as (keyof ArchiverConfig)[]),
192
+ ),
259
193
  ],
260
194
  SEQUENCER: [
261
195
  {
262
196
  flag: '--sequencer',
263
197
  description: 'Starts Aztec Sequencer with options',
264
198
  defaultValue: undefined,
265
- envVar: undefined,
266
- },
267
- ...getOptions('sequencer', sequencerClientConfigMappings),
268
- ],
269
- BLOB_SINK: [
270
- {
271
- flag: '--blob-sink',
272
- description: 'Starts Aztec Blob Sink with options',
273
- defaultValue: undefined,
274
- envVar: undefined,
199
+ env: undefined,
275
200
  },
276
- ...getOptions('blobSink', blobSinkConfigMappings),
201
+ ...getOptions(
202
+ 'sequencer',
203
+ omitConfigMappings(sequencerClientConfigMappings, [
204
+ 'fakeProcessingDelayPerTxMs',
205
+ 'fakeThrowAfterProcessingTxCount',
206
+ 'skipCollectingAttestations',
207
+ 'skipInvalidateBlockAsProposer',
208
+ 'blobSinkMapSizeKb',
209
+ ]),
210
+ ),
277
211
  ],
278
212
  'PROVER NODE': [
279
213
  {
280
214
  flag: '--prover-node',
281
215
  description: 'Starts Aztec Prover Node with options',
282
216
  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',
217
+ env: undefined,
290
218
  },
291
219
  ...getOptions(
292
220
  'proverNode',
293
221
  omitConfigMappings(proverNodeConfigMappings, [
294
222
  // 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)[]),
223
+ ...getKeys(archiverConfigMappings),
224
+ ...getKeys(proverBrokerConfigMappings),
225
+ ...getKeys(proverAgentConfigMappings),
226
+ ...getKeys(p2pConfigMappings),
227
+ ...getKeys(worldStateConfigMappings),
228
+ ...getKeys(sharedNodeConfigMappings),
298
229
  ]),
299
230
  ),
300
231
  ],
@@ -303,7 +234,7 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
303
234
  flag: '--prover-broker',
304
235
  description: 'Starts Aztec proving job broker',
305
236
  defaultValue: undefined,
306
- envVar: undefined,
237
+ env: undefined,
307
238
  },
308
239
  ...getOptions(
309
240
  'proverBroker',
@@ -316,56 +247,62 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
316
247
  flag: '--prover-agent',
317
248
  description: 'Starts Aztec Prover Agent with options',
318
249
  defaultValue: undefined,
319
- envVar: undefined,
250
+ env: undefined,
320
251
  },
321
252
  ...getOptions('proverAgent', proverAgentConfigMappings),
322
253
  ],
254
+ 'P2P SUBSYSTEM': [
255
+ {
256
+ flag: '--p2p-enabled [value]',
257
+ description: 'Enable P2P subsystem',
258
+ env: 'P2P_ENABLED',
259
+ ...booleanConfigHelper(),
260
+ },
261
+ ...getOptions('p2p', p2pConfigMappings),
262
+ ],
323
263
  'P2P BOOTSTRAP': [
324
264
  {
325
265
  flag: '--p2p-bootstrap',
326
266
  description: 'Starts Aztec P2P Bootstrap with options',
327
267
  defaultValue: undefined,
328
- envVar: undefined,
268
+ env: undefined,
329
269
  },
330
- ...getOptions('p2pBootstrap', bootnodeConfigMappings),
270
+ ...getOptions(
271
+ 'p2pBootstrap',
272
+ omitConfigMappings(bootnodeConfigMappings, [
273
+ 'p2pIp',
274
+ 'p2pPort',
275
+ 'peerIdPrivateKey',
276
+ 'bootstrapNodes',
277
+ 'listenAddress',
278
+ ]),
279
+ ),
331
280
  ],
281
+ TELEMETRY: [...getOptions('tel', telemetryClientConfigMappings)],
332
282
  BOT: [
333
283
  {
334
284
  flag: '--bot',
335
285
  description: 'Starts Aztec Bot with options',
336
286
  defaultValue: undefined,
337
- envVar: undefined,
287
+ env: undefined,
338
288
  },
339
289
  ...getOptions('bot', botConfigMappings),
340
290
  ],
341
- TXE: [
291
+ PXE: [
342
292
  {
343
- flag: '--txe',
344
- description: 'Starts Aztec TXE with options',
293
+ flag: '--pxe',
294
+ description: 'Starts Aztec PXE with options',
345
295
  defaultValue: undefined,
346
- envVar: undefined,
296
+ env: undefined,
347
297
  },
298
+ ...getOptions('pxe', allPxeConfigMappings),
348
299
  ],
349
- FAUCET: [
300
+ TXE: [
350
301
  {
351
- flag: '--faucet',
352
- description: 'Starts the Aztec faucet',
302
+ flag: '--txe',
303
+ description: 'Starts Aztec TXE with options',
353
304
  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),
305
+ env: undefined,
368
306
  },
369
- ...getOptions('faucet', faucetConfigMapping),
370
307
  ],
371
308
  };
package/src/cli/cli.ts CHANGED
@@ -31,18 +31,27 @@ export function injectAztecCommands(program: Command, userLog: LogFn, debugLogge
31
31
 
32
32
  program.configureHelp({ sortSubcommands: true });
33
33
 
34
- program.addHelpText(
35
- 'after',
36
- `
37
-
38
- Additional commands:
39
-
40
- test [options]: starts a dockerized TXE node via
41
- $ aztec start --txe
42
- then runs
43
- $ aztec-nargo test --silence-warnings --oracle-resolver=<TXE_ADDRESS> [options]
34
+ if (process.env.AZTEC_SHELL_WRAPPER) {
35
+ program.addHelpText(
36
+ 'after',
37
+ `
38
+ Additional commands:
39
+
40
+ init [folder] [options] creates a new Aztec Noir project.
41
+ new <path> [options] creates a new Aztec Noir project in a new directory.
42
+ compile [options] compiles Aztec Noir contracts.
43
+ test [options] starts a TXE and runs "nargo test" using it as the oracle resolver.
44
44
  `,
45
- );
45
+ );
46
+ }
47
+
48
+ program
49
+ .command('preload-crs')
50
+ .description('Preload the points data needed for proving and verifying')
51
+ .action(async options => {
52
+ const { preloadCrs } = await import('./preload_crs.js');
53
+ return await preloadCrs(options, userLog, debugLogger);
54
+ });
46
55
 
47
56
  return program;
48
57
  }
@@ -0,0 +1,43 @@
1
+ import { runMigrations } from '@aztec/validator-ha-signer/migrations';
2
+
3
+ import type { Command } from 'commander';
4
+
5
+ export function injectMigrateCommand(program: Command, log: (msg: string) => void): Command {
6
+ const migrateCommand = program.command('migrate-ha-db').description('Run validator-ha-signer database migrations');
7
+
8
+ migrateCommand
9
+ .command('up')
10
+ .description('Apply pending migrations')
11
+ .requiredOption('--database-url <string>', 'PostgreSQL connection string', process.env.DATABASE_URL)
12
+ .option('--verbose', 'Enable verbose output', false)
13
+ .action(async options => {
14
+ const migrations = await runMigrations(options.databaseUrl, {
15
+ direction: 'up',
16
+ verbose: options.verbose,
17
+ });
18
+ if (migrations.length > 0) {
19
+ log(`Applied migrations: ${migrations.join(', ')}`);
20
+ } else {
21
+ log('No migrations to apply - schema is up to date');
22
+ }
23
+ });
24
+
25
+ migrateCommand
26
+ .command('down')
27
+ .description('Rollback the last migration')
28
+ .requiredOption('--database-url <string>', 'PostgreSQL connection string', process.env.DATABASE_URL)
29
+ .option('--verbose', 'Enable verbose output', false)
30
+ .action(async options => {
31
+ const migrations = await runMigrations(options.databaseUrl, {
32
+ direction: 'down',
33
+ verbose: options.verbose,
34
+ });
35
+ if (migrations.length > 0) {
36
+ log(`Rolled back migrations: ${migrations.join(', ')}`);
37
+ } else {
38
+ log('No migrations to rollback');
39
+ }
40
+ });
41
+
42
+ return program;
43
+ }
@@ -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 BlobClientConfig, blobClientConfigMapping, createBlobClient } from '@aztec/blob-client/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,36 +24,36 @@ 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 & BlobClientConfig>(
22
29
  options,
23
- {
24
- ...archiverConfigMappings,
25
- ...dataConfigMappings,
26
- },
30
+ { ...archiverConfigMappings, ...dataConfigMappings, ...blobClientConfigMapping },
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
- const telemetry = initTelemetryClient(getTelemetryClientConfig());
48
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/10056): place CL url in config here
49
- const blobSinkClient = createBlobSinkClient();
50
- const archiver = await Archiver.createAndSync(archiverConfig, archiverStore, { telemetry, blobSinkClient }, true);
54
+ const telemetry = await initTelemetryClient(getTelemetryClientConfig());
55
+ const blobClient = createBlobClient(archiverConfig, { logger: createLogger('archiver:blob-client:client') });
56
+ const archiver = await Archiver.createAndSync(archiverConfig, archiverStore, { telemetry, blobClient }, true);
51
57
  services.archiver = [archiver, ArchiverApiSchema];
52
58
  signalHandlers.push(archiver.stop);
53
59