@aztec/cli 2.0.3 → 2.1.0-rc.10

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 (58) hide show
  1. package/dest/cmds/infrastructure/sequencers.js +2 -2
  2. package/dest/cmds/l1/create_l1_account.js +1 -1
  3. package/dest/cmds/l1/deploy_l1_contracts.d.ts +1 -1
  4. package/dest/cmds/l1/deploy_l1_contracts.d.ts.map +1 -1
  5. package/dest/cmds/l1/deploy_l1_contracts.js +2 -2
  6. package/dest/cmds/l1/get_l1_addresses.js +1 -1
  7. package/dest/cmds/l1/get_l1_balance.js +1 -1
  8. package/dest/cmds/l1/index.d.ts.map +1 -1
  9. package/dest/cmds/l1/index.js +2 -20
  10. package/dest/cmds/l1/prover_stats.js +1 -1
  11. package/dest/cmds/l1/trigger_seed_snapshot.js +1 -1
  12. package/dest/cmds/l1/update_l1_validators.js +15 -7
  13. package/dest/config/cached_fetch.d.ts +18 -0
  14. package/dest/config/cached_fetch.d.ts.map +1 -0
  15. package/dest/config/cached_fetch.js +54 -0
  16. package/dest/config/chain_l2_config.d.ts +7 -4
  17. package/dest/config/chain_l2_config.d.ts.map +1 -1
  18. package/dest/config/chain_l2_config.js +123 -66
  19. package/dest/config/enrich_env.d.ts +4 -0
  20. package/dest/config/enrich_env.d.ts.map +1 -0
  21. package/dest/config/enrich_env.js +12 -0
  22. package/dest/config/index.d.ts +2 -0
  23. package/dest/config/index.d.ts.map +1 -1
  24. package/dest/config/index.js +2 -0
  25. package/dest/config/network_config.d.ts +19 -0
  26. package/dest/config/network_config.d.ts.map +1 -0
  27. package/dest/config/network_config.js +79 -0
  28. package/dest/utils/aztec.d.ts +1 -1
  29. package/dest/utils/aztec.d.ts.map +1 -1
  30. package/dest/utils/aztec.js +4 -3
  31. package/package.json +25 -25
  32. package/src/cmds/infrastructure/sequencers.ts +2 -2
  33. package/src/cmds/l1/create_l1_account.ts +1 -1
  34. package/src/cmds/l1/deploy_l1_contracts.ts +2 -0
  35. package/src/cmds/l1/get_l1_addresses.ts +1 -1
  36. package/src/cmds/l1/get_l1_balance.ts +1 -1
  37. package/src/cmds/l1/index.ts +2 -32
  38. package/src/cmds/l1/prover_stats.ts +1 -1
  39. package/src/cmds/l1/trigger_seed_snapshot.ts +1 -1
  40. package/src/cmds/l1/update_l1_validators.ts +7 -7
  41. package/src/config/cached_fetch.ts +67 -0
  42. package/src/config/chain_l2_config.ts +148 -71
  43. package/src/config/enrich_env.ts +15 -0
  44. package/src/config/index.ts +2 -0
  45. package/src/config/network_config.ts +102 -0
  46. package/src/utils/aztec.ts +4 -2
  47. package/dest/cmds/devnet/bootstrap_network.d.ts +0 -3
  48. package/dest/cmds/devnet/bootstrap_network.d.ts.map +0 -1
  49. package/dest/cmds/devnet/bootstrap_network.js +0 -216
  50. package/dest/cmds/devnet/faucet.d.ts +0 -4
  51. package/dest/cmds/devnet/faucet.d.ts.map +0 -1
  52. package/dest/cmds/devnet/faucet.js +0 -26
  53. package/dest/cmds/devnet/index.d.ts +0 -4
  54. package/dest/cmds/devnet/index.d.ts.map +0 -1
  55. package/dest/cmds/devnet/index.js +0 -14
  56. package/src/cmds/devnet/bootstrap_network.ts +0 -321
  57. package/src/cmds/devnet/faucet.ts +0 -33
  58. package/src/cmds/devnet/index.ts +0 -60
@@ -1,16 +1,21 @@
1
1
  import { DefaultL1ContractsConfig } from '@aztec/ethereum';
2
2
  import { EthAddress } from '@aztec/foundation/eth-address';
3
- import { mkdir, readFile, stat, writeFile } from 'fs/promises';
4
- import path, { dirname, join } from 'path';
3
+ import path, { join } from 'path';
5
4
  import publicIncludeMetrics from '../../public_include_metric_prefixes.json' with {
6
5
  type: 'json'
7
6
  };
7
+ import { cachedFetch } from './cached_fetch.js';
8
+ import { enrichEthAddressVar, enrichVar } from './enrich_env.js';
9
+ const SNAPSHOTS_URL = 'https://aztec-labs-snapshots.com';
10
+ const defaultDBMapSizeKb = 128 * 1_024 * 1_024; // 128 GB
11
+ const tbMapSizeKb = 1_024 * 1_024 * 1_024; // 1 TB
8
12
  const DefaultSlashConfig = {
9
13
  /** Tally-style slashing */ slasherFlavor: 'tally',
10
14
  /** Allow one round for vetoing */ slashingExecutionDelayInRounds: 1,
11
15
  /** How long for a slash payload to be executed */ slashingLifetimeInRounds: 5,
12
16
  /** Allow 2 rounds to discover faults */ slashingOffsetInRounds: 2,
13
17
  /** No slash vetoer */ slashingVetoer: EthAddress.ZERO,
18
+ /** Use default disable duration */ slashingDisableDuration: DefaultL1ContractsConfig.slashingDisableDuration,
14
19
  /** Use default slash amounts */ slashAmountSmall: DefaultL1ContractsConfig.slashAmountSmall,
15
20
  slashAmountMedium: DefaultL1ContractsConfig.slashAmountMedium,
16
21
  slashAmountLarge: DefaultL1ContractsConfig.slashAmountLarge,
@@ -25,11 +30,19 @@ const DefaultSlashConfig = {
25
30
  slashProposeInvalidAttestationsPenalty: DefaultL1ContractsConfig.slashAmountLarge,
26
31
  slashAttestDescendantOfInvalidPenalty: DefaultL1ContractsConfig.slashAmountLarge,
27
32
  slashUnknownPenalty: DefaultL1ContractsConfig.slashAmountSmall,
28
- slashBroadcastedInvalidBlockPenalty: DefaultL1ContractsConfig.slashAmountMedium,
33
+ slashBroadcastedInvalidBlockPenalty: 0n,
29
34
  slashMaxPayloadSize: 50,
30
35
  slashGracePeriodL2Slots: 32 * 2,
31
36
  slashOffenseExpirationRounds: 8,
32
- sentinelEnabled: true
37
+ sentinelEnabled: true,
38
+ slashExecuteRoundsLookBack: 4
39
+ };
40
+ const DefaultNetworkDBMapSizeConfig = {
41
+ dbMapSizeKb: defaultDBMapSizeKb,
42
+ archiverStoreMapSizeKb: tbMapSizeKb,
43
+ noteHashTreeMapSizeKb: tbMapSizeKb,
44
+ nullifierTreeMapSizeKb: tbMapSizeKb,
45
+ publicDataTreeMapSizeKb: tbMapSizeKb
33
46
  };
34
47
  export const stagingIgnitionL2ChainConfig = {
35
48
  l1ChainId: 11155111,
@@ -37,13 +50,12 @@ export const stagingIgnitionL2ChainConfig = {
37
50
  sponsoredFPC: false,
38
51
  p2pEnabled: true,
39
52
  p2pBootstrapNodes: [],
40
- registryAddress: '0x6c04b1c116ec1ea0f918e3cc91e87b0af3e23b73',
41
- slashFactoryAddress: '',
42
- feeAssetHandlerAddress: '',
43
53
  seqMinTxsPerBlock: 0,
44
54
  seqMaxTxsPerBlock: 0,
45
55
  realProofs: true,
46
- snapshotsUrl: 'https://storage.googleapis.com/aztec-testnet/snapshots/staging-ignition/',
56
+ snapshotsUrls: [
57
+ `${SNAPSHOTS_URL}/staging-ignition/`
58
+ ],
47
59
  autoUpdate: 'config-and-version',
48
60
  autoUpdateUrl: 'https://storage.googleapis.com/aztec-testnet/auto-update/staging-ignition.json',
49
61
  maxTxPoolSize: 100_000_000,
@@ -57,11 +69,13 @@ export const stagingIgnitionL2ChainConfig = {
57
69
  /** How many seconds an L2 slots lasts (must be multiple of ethereum slot duration). */ aztecSlotDuration: 72,
58
70
  /** How many L2 slots an epoch lasts. */ aztecEpochDuration: 32,
59
71
  /** The target validator committee size. */ aztecTargetCommitteeSize: 24,
72
+ /** The number of epochs to lag behind the current epoch for validator selection. */ lagInEpochs: 2,
60
73
  /** The number of epochs after an epoch ends that proofs are still accepted. */ aztecProofSubmissionEpochs: 1,
61
74
  /** How many sequencers must agree with a slash for it to be executed. */ slashingQuorum: 65,
62
75
  slashingRoundSizeInEpochs: 4,
63
76
  slashingLifetimeInRounds: 40,
64
77
  slashingExecutionDelayInRounds: 28,
78
+ slashingDisableDuration: 5 * 24 * 60 * 60,
65
79
  slashAmountSmall: 2_000n * 10n ** 18n,
66
80
  slashAmountMedium: 10_000n * 10n ** 18n,
67
81
  slashAmountLarge: 50_000n * 10n ** 18n,
@@ -73,6 +87,7 @@ export const stagingIgnitionL2ChainConfig = {
73
87
  /** The proving cost per mana */ provingCostPerMana: 0n,
74
88
  ejectionThreshold: 100_000n * 10n ** 18n,
75
89
  activationThreshold: 200_000n * 10n ** 18n,
90
+ localEjectionThreshold: 196_000n * 10n ** 18n,
76
91
  governanceProposerRoundSize: 300,
77
92
  governanceProposerQuorum: 151,
78
93
  // Node slashing config
@@ -87,11 +102,13 @@ export const stagingIgnitionL2ChainConfig = {
87
102
  slashProposeInvalidAttestationsPenalty: 50_000n * 10n ** 18n,
88
103
  slashAttestDescendantOfInvalidPenalty: 50_000n * 10n ** 18n,
89
104
  slashUnknownPenalty: 2_000n * 10n ** 18n,
90
- slashBroadcastedInvalidBlockPenalty: 10_000n * 10n ** 18n,
105
+ slashBroadcastedInvalidBlockPenalty: 0n,
91
106
  slashMaxPayloadSize: 50,
92
107
  slashGracePeriodL2Slots: 32 * 4,
93
108
  slashOffenseExpirationRounds: 8,
94
- sentinelEnabled: true
109
+ sentinelEnabled: true,
110
+ slashExecuteRoundsLookBack: 4,
111
+ ...DefaultNetworkDBMapSizeConfig
95
112
  };
96
113
  export const stagingPublicL2ChainConfig = {
97
114
  l1ChainId: 11155111,
@@ -99,13 +116,12 @@ export const stagingPublicL2ChainConfig = {
99
116
  sponsoredFPC: true,
100
117
  p2pEnabled: true,
101
118
  p2pBootstrapNodes: [],
102
- registryAddress: '0x2e48addca360da61e4d6c21ff2b1961af56eb83b',
103
- slashFactoryAddress: '0xe19410632fd00695bc5a08dd82044b7b26317742',
104
- feeAssetHandlerAddress: '0xb46dc3d91f849999330b6dd93473fa29fc45b076',
105
119
  seqMinTxsPerBlock: 0,
106
120
  seqMaxTxsPerBlock: 20,
107
121
  realProofs: true,
108
- snapshotsUrl: 'https://storage.googleapis.com/aztec-testnet/snapshots/staging-public/',
122
+ snapshotsUrls: [
123
+ `${SNAPSHOTS_URL}/staging-public/`
124
+ ],
109
125
  autoUpdate: 'config-and-version',
110
126
  autoUpdateUrl: 'https://storage.googleapis.com/aztec-testnet/auto-update/staging-public.json',
111
127
  publicIncludeMetrics,
@@ -120,6 +136,8 @@ export const stagingPublicL2ChainConfig = {
120
136
  /** How many seconds an L2 slots lasts (must be multiple of ethereum slot duration). */ aztecSlotDuration: 36,
121
137
  /** How many L2 slots an epoch lasts. */ aztecEpochDuration: 32,
122
138
  /** The target validator committee size. */ aztecTargetCommitteeSize: 48,
139
+ /** The number of epochs to lag behind the current epoch for validator selection. */ lagInEpochs: DefaultL1ContractsConfig.lagInEpochs,
140
+ /** The local ejection threshold for a validator. Stricter than ejectionThreshold but local to a specific rollup */ localEjectionThreshold: DefaultL1ContractsConfig.localEjectionThreshold,
123
141
  /** The number of epochs after an epoch ends that proofs are still accepted. */ aztecProofSubmissionEpochs: 1,
124
142
  /** The deposit amount for a validator */ activationThreshold: DefaultL1ContractsConfig.activationThreshold,
125
143
  /** The minimum stake for a validator. */ ejectionThreshold: DefaultL1ContractsConfig.ejectionThreshold,
@@ -128,7 +146,8 @@ export const stagingPublicL2ChainConfig = {
128
146
  /** The mana target for the rollup */ manaTarget: DefaultL1ContractsConfig.manaTarget,
129
147
  /** The proving cost per mana */ provingCostPerMana: DefaultL1ContractsConfig.provingCostPerMana,
130
148
  /** Exit delay for stakers */ exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
131
- ...DefaultSlashConfig
149
+ ...DefaultSlashConfig,
150
+ ...DefaultNetworkDBMapSizeConfig
132
151
  };
133
152
  export const testnetL2ChainConfig = {
134
153
  l1ChainId: 11155111,
@@ -136,13 +155,12 @@ export const testnetL2ChainConfig = {
136
155
  sponsoredFPC: true,
137
156
  p2pEnabled: true,
138
157
  p2pBootstrapNodes: [],
139
- registryAddress: '0xc2f24280f5c7f4897370dfdeb30f79ded14f1c81',
140
- slashFactoryAddress: '0x76291684ae928d6e5bcff348e36917f4cc532db8',
141
- feeAssetHandlerAddress: '0x50513c3713ffd33301e85f30d86ab764df421fe9',
142
158
  seqMinTxsPerBlock: 0,
143
159
  seqMaxTxsPerBlock: 20,
144
160
  realProofs: true,
145
- snapshotsUrl: 'https://storage.googleapis.com/aztec-testnet/snapshots/testnet/',
161
+ snapshotsUrls: [
162
+ `${SNAPSHOTS_URL}/testnet/`
163
+ ],
146
164
  autoUpdate: 'config-and-version',
147
165
  autoUpdateUrl: 'https://storage.googleapis.com/aztec-testnet/auto-update/testnet.json',
148
166
  maxTxPoolSize: 100_000_000,
@@ -157,9 +175,11 @@ export const testnetL2ChainConfig = {
157
175
  /** How many seconds an L2 slots lasts (must be multiple of ethereum slot duration). */ aztecSlotDuration: 36,
158
176
  /** How many L2 slots an epoch lasts. */ aztecEpochDuration: 32,
159
177
  /** The target validator committee size. */ aztecTargetCommitteeSize: 48,
178
+ /** The number of epochs to lag behind the current epoch for validator selection. */ lagInEpochs: 2,
160
179
  /** The number of epochs after an epoch ends that proofs are still accepted. */ aztecProofSubmissionEpochs: 1,
161
180
  /** The deposit amount for a validator */ activationThreshold: DefaultL1ContractsConfig.activationThreshold,
162
181
  /** The minimum stake for a validator. */ ejectionThreshold: DefaultL1ContractsConfig.ejectionThreshold,
182
+ /** The local ejection threshold for a validator. Stricter than ejectionThreshold but local to a specific rollup */ localEjectionThreshold: DefaultL1ContractsConfig.localEjectionThreshold,
163
183
  /** The slashing round size */ slashingRoundSizeInEpochs: DefaultL1ContractsConfig.slashingRoundSizeInEpochs,
164
184
  /** Governance proposing round size */ governanceProposerRoundSize: DefaultL1ContractsConfig.governanceProposerRoundSize,
165
185
  /** The mana target for the rollup */ manaTarget: DefaultL1ContractsConfig.manaTarget,
@@ -168,38 +188,83 @@ export const testnetL2ChainConfig = {
168
188
  ...DefaultSlashConfig,
169
189
  slashPrunePenalty: 0n,
170
190
  slashDataWithholdingPenalty: 0n,
171
- slashInactivityPenalty: DefaultL1ContractsConfig.slashAmountMedium
191
+ slashInactivityPenalty: DefaultL1ContractsConfig.slashAmountMedium,
192
+ ...DefaultNetworkDBMapSizeConfig
193
+ };
194
+ export const ignitionL2ChainConfig = {
195
+ l1ChainId: 1,
196
+ testAccounts: false,
197
+ sponsoredFPC: false,
198
+ p2pEnabled: true,
199
+ p2pBootstrapNodes: [],
200
+ seqMinTxsPerBlock: 0,
201
+ seqMaxTxsPerBlock: 0,
202
+ realProofs: true,
203
+ snapshotsUrls: [
204
+ `${SNAPSHOTS_URL}/ignition/`
205
+ ],
206
+ autoUpdate: 'notify',
207
+ autoUpdateUrl: 'https://storage.googleapis.com/aztec-testnet/auto-update/ignition.json',
208
+ maxTxPoolSize: 100_000_000,
209
+ publicIncludeMetrics,
210
+ publicMetricsCollectorUrl: 'https://telemetry.alpha-testnet.aztec-labs.com/v1/metrics',
211
+ publicMetricsCollectFrom: [
212
+ 'sequencer'
213
+ ],
214
+ txPoolDeleteTxsAfterReorg: false,
215
+ /** How many seconds an L1 slot lasts. */ ethereumSlotDuration: 12,
216
+ /** How many seconds an L2 slots lasts (must be multiple of ethereum slot duration). */ aztecSlotDuration: 72,
217
+ /** How many L2 slots an epoch lasts. */ aztecEpochDuration: 32,
218
+ /** The target validator committee size. */ aztecTargetCommitteeSize: 24,
219
+ /** The number of epochs to lag behind the current epoch for validator selection. */ lagInEpochs: 2,
220
+ /** The number of epochs after an epoch ends that proofs are still accepted. */ aztecProofSubmissionEpochs: 1,
221
+ /** How many sequencers must agree with a slash for it to be executed. */ slashingQuorum: 65,
222
+ slashingRoundSizeInEpochs: 4,
223
+ slashingLifetimeInRounds: 40,
224
+ slashingExecutionDelayInRounds: 28,
225
+ slashingDisableDuration: 5 * 24 * 60 * 60,
226
+ slashAmountSmall: 2_000n * 10n ** 18n,
227
+ slashAmountMedium: 10_000n * 10n ** 18n,
228
+ slashAmountLarge: 50_000n * 10n ** 18n,
229
+ slashingOffsetInRounds: 2,
230
+ slasherFlavor: 'tally',
231
+ slashingVetoer: EthAddress.ZERO,
232
+ /** The mana target for the rollup */ manaTarget: 0n,
233
+ exitDelaySeconds: 5 * 24 * 60 * 60,
234
+ /** The proving cost per mana */ provingCostPerMana: 0n,
235
+ ejectionThreshold: 100_000n * 10n ** 18n,
236
+ activationThreshold: 200_000n * 10n ** 18n,
237
+ localEjectionThreshold: 196_000n * 10n ** 18n,
238
+ governanceProposerRoundSize: 300,
239
+ governanceProposerQuorum: 151,
240
+ // Node slashing config
241
+ // TODO TMNT-330
242
+ slashMinPenaltyPercentage: 0.5,
243
+ slashMaxPenaltyPercentage: 2.0,
244
+ slashInactivityTargetPercentage: 0.7,
245
+ slashInactivityConsecutiveEpochThreshold: 2,
246
+ slashInactivityPenalty: 2_000n * 10n ** 18n,
247
+ slashPrunePenalty: 0n,
248
+ slashDataWithholdingPenalty: 0n,
249
+ slashProposeInvalidAttestationsPenalty: 50_000n * 10n ** 18n,
250
+ slashAttestDescendantOfInvalidPenalty: 50_000n * 10n ** 18n,
251
+ slashUnknownPenalty: 2_000n * 10n ** 18n,
252
+ slashBroadcastedInvalidBlockPenalty: 0n,
253
+ slashMaxPayloadSize: 50,
254
+ slashGracePeriodL2Slots: 32 * 4,
255
+ slashOffenseExpirationRounds: 8,
256
+ sentinelEnabled: true,
257
+ slashExecuteRoundsLookBack: 4,
258
+ ...DefaultNetworkDBMapSizeConfig
172
259
  };
173
260
  const BOOTNODE_CACHE_DURATION_MS = 60 * 60 * 1000; // 1 hour;
174
261
  export async function getBootnodes(networkName, cacheDir) {
175
- const cacheFile = cacheDir ? join(cacheDir, networkName, 'bootnodes.json') : undefined;
176
- try {
177
- if (cacheFile) {
178
- const info = await stat(cacheFile);
179
- if (info.mtimeMs + BOOTNODE_CACHE_DURATION_MS > Date.now()) {
180
- return JSON.parse(await readFile(cacheFile, 'utf-8'))['bootnodes'];
181
- }
182
- }
183
- } catch {
184
- // no-op. Get the remote-file
185
- }
186
262
  const url = `http://static.aztec.network/${networkName}/bootnodes.json`;
187
- const response = await fetch(url);
188
- if (!response.ok) {
189
- throw new Error(`Failed to fetch basic contract addresses from ${url}. Check you are using a correct network name.`);
190
- }
191
- const json = await response.json();
192
- try {
193
- if (cacheFile) {
194
- await mkdir(dirname(cacheFile), {
195
- recursive: true
196
- });
197
- await writeFile(cacheFile, JSON.stringify(json), 'utf-8');
198
- }
199
- } catch {
200
- // no-op
201
- }
202
- return json['bootnodes'];
263
+ const data = await cachedFetch(url, {
264
+ cacheDurationMs: BOOTNODE_CACHE_DURATION_MS,
265
+ cacheFile: cacheDir ? join(cacheDir, networkName, 'bootnodes.json') : undefined
266
+ });
267
+ return data?.bootnodes;
203
268
  }
204
269
  export async function getL2ChainConfig(networkName, cacheDir) {
205
270
  let config;
@@ -215,6 +280,10 @@ export async function getL2ChainConfig(networkName, cacheDir) {
215
280
  config = {
216
281
  ...stagingIgnitionL2ChainConfig
217
282
  };
283
+ } else if (networkName === 'ignition') {
284
+ config = {
285
+ ...ignitionL2ChainConfig
286
+ };
218
287
  }
219
288
  if (!config) {
220
289
  return undefined;
@@ -226,21 +295,6 @@ export async function getL2ChainConfig(networkName, cacheDir) {
226
295
  }
227
296
  return config;
228
297
  }
229
- function enrichVar(envVar, value) {
230
- // Don't override
231
- if (process.env[envVar] || value === undefined) {
232
- return;
233
- }
234
- process.env[envVar] = value;
235
- }
236
- function enrichEthAddressVar(envVar, value) {
237
- // EthAddress doesn't like being given empty strings
238
- if (value === '') {
239
- enrichVar(envVar, EthAddress.ZERO.toString());
240
- return;
241
- }
242
- enrichVar(envVar, value);
243
- }
244
298
  function getDefaultDataDir(networkName) {
245
299
  return path.join(process.env.HOME || '~', '.aztec', networkName, 'data');
246
300
  }
@@ -263,8 +317,13 @@ export async function enrichEnvironmentWithChainConfig(networkName) {
263
317
  enrichVar('SEQ_MAX_TX_PER_BLOCK', config.seqMaxTxsPerBlock.toString());
264
318
  enrichVar('PROVER_REAL_PROOFS', config.realProofs.toString());
265
319
  enrichVar('PXE_PROVER_ENABLED', config.realProofs.toString());
266
- enrichVar('SYNC_SNAPSHOTS_URL', config.snapshotsUrl);
320
+ enrichVar('SYNC_SNAPSHOTS_URLS', config.snapshotsUrls.join(','));
267
321
  enrichVar('P2P_MAX_TX_POOL_SIZE', config.maxTxPoolSize.toString());
322
+ enrichVar('DATA_STORE_MAP_SIZE_KB', config.dbMapSizeKb.toString());
323
+ enrichVar('ARCHIVER_STORE_MAP_SIZE_KB', config.archiverStoreMapSizeKb.toString());
324
+ enrichVar('NOTE_HASH_TREE_MAP_SIZE_KB', config.noteHashTreeMapSizeKb.toString());
325
+ enrichVar('NULLIFIER_TREE_MAP_SIZE_KB', config.nullifierTreeMapSizeKb.toString());
326
+ enrichVar('PUBLIC_DATA_TREE_MAP_SIZE_KB', config.publicDataTreeMapSizeKb.toString());
268
327
  if (config.autoUpdate) {
269
328
  enrichVar('AUTO_UPDATE', config.autoUpdate?.toString());
270
329
  }
@@ -280,9 +339,6 @@ export async function enrichEnvironmentWithChainConfig(networkName) {
280
339
  if (config.publicMetricsCollectFrom) {
281
340
  enrichVar('PUBLIC_OTEL_COLLECT_FROM', config.publicMetricsCollectFrom.join(','));
282
341
  }
283
- enrichEthAddressVar('REGISTRY_CONTRACT_ADDRESS', config.registryAddress);
284
- enrichEthAddressVar('SLASH_FACTORY_CONTRACT_ADDRESS', config.slashFactoryAddress);
285
- enrichEthAddressVar('FEE_ASSET_HANDLER_CONTRACT_ADDRESS', config.feeAssetHandlerAddress);
286
342
  // Deployment stuff
287
343
  enrichVar('ETHEREUM_SLOT_DURATION', config.ethereumSlotDuration.toString());
288
344
  enrichVar('AZTEC_SLOT_DURATION', config.aztecSlotDuration.toString());
@@ -291,6 +347,7 @@ export async function enrichEnvironmentWithChainConfig(networkName) {
291
347
  enrichVar('AZTEC_PROOF_SUBMISSION_EPOCHS', config.aztecProofSubmissionEpochs.toString());
292
348
  enrichVar('AZTEC_ACTIVATION_THRESHOLD', config.activationThreshold.toString());
293
349
  enrichVar('AZTEC_EJECTION_THRESHOLD', config.ejectionThreshold.toString());
350
+ enrichVar('AZTEC_LOCAL_EJECTION_THRESHOLD', config.localEjectionThreshold.toString());
294
351
  enrichVar('AZTEC_SLASHING_QUORUM', config.slashingQuorum?.toString());
295
352
  enrichVar('AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS', config.slashingRoundSizeInEpochs.toString());
296
353
  enrichVar('AZTEC_GOVERNANCE_PROPOSER_QUORUM', config.governanceProposerQuorum?.toString());
@@ -0,0 +1,4 @@
1
+ import type { EnvVar } from '@aztec/foundation/config';
2
+ export declare function enrichVar(envVar: EnvVar, value: string | undefined): void;
3
+ export declare function enrichEthAddressVar(envVar: EnvVar, value: string): void;
4
+ //# sourceMappingURL=enrich_env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich_env.d.ts","sourceRoot":"","sources":["../../src/config/enrich_env.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,QAMlE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAGhE"}
@@ -0,0 +1,12 @@
1
+ import { EthAddress } from '@aztec/aztec.js';
2
+ export function enrichVar(envVar, value) {
3
+ // Don't override
4
+ if (process.env[envVar] || value === undefined) {
5
+ return;
6
+ }
7
+ process.env[envVar] = value;
8
+ }
9
+ export function enrichEthAddressVar(envVar, value) {
10
+ // EthAddress doesn't like being given empty strings
11
+ enrichVar(envVar, value || EthAddress.ZERO.toString());
12
+ }
@@ -1,3 +1,5 @@
1
+ export * from './cached_fetch.js';
1
2
  export * from './chain_l2_config.js';
2
3
  export * from './get_l1_config.js';
4
+ export * from './network_config.js';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
@@ -1,2 +1,4 @@
1
+ export * from './cached_fetch.js';
1
2
  export * from './chain_l2_config.js';
2
3
  export * from './get_l1_config.js';
4
+ export * from './network_config.js';
@@ -0,0 +1,19 @@
1
+ import { type NetworkConfig, type NetworkNames } from '@aztec/foundation/config';
2
+ /**
3
+ * Fetches remote network configuration from GitHub with caching support.
4
+ * Uses the reusable cachedFetch utility.
5
+ *
6
+ * @param networkName - The network name to fetch config for
7
+ * @param cacheDir - Optional cache directory for storing fetched config
8
+ * @returns Remote configuration for the specified network, or undefined if not found/error
9
+ */
10
+ export declare function getNetworkConfig(networkName: NetworkNames, cacheDir?: string): Promise<NetworkConfig | undefined>;
11
+ /**
12
+ * Enriches environment variables with remote network configuration.
13
+ * This function is called before node config initialization to set env vars
14
+ * from the remote config, following the same pattern as enrichEnvironmentWithChainConfig().
15
+ *
16
+ * @param networkName - The network name to fetch remote config for
17
+ */
18
+ export declare function enrichEnvironmentWithNetworkConfig(networkName: NetworkNames): Promise<void>;
19
+ //# sourceMappingURL=network_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network_config.d.ts","sourceRoot":"","sources":["../../src/config/network_config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAA0B,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAYzG;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,YAAY,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAiDpC;AAED;;;;;;GAMG;AACH,wBAAsB,kCAAkC,CAAC,WAAW,EAAE,YAAY,iBAoBjF"}
@@ -0,0 +1,79 @@
1
+ import { NetworkConfigMapSchema } from '@aztec/foundation/config';
2
+ import { readFile } from 'fs/promises';
3
+ import { join } from 'path';
4
+ import { cachedFetch } from './cached_fetch.js';
5
+ import { enrichEthAddressVar, enrichVar } from './enrich_env.js';
6
+ const DEFAULT_CONFIG_URL = 'https://raw.githubusercontent.com/AztecProtocol/networks/refs/heads/main/network_config.json';
7
+ const NETWORK_CONFIG_CACHE_DURATION_MS = 60 * 60 * 1000; // 1 hour
8
+ /**
9
+ * Fetches remote network configuration from GitHub with caching support.
10
+ * Uses the reusable cachedFetch utility.
11
+ *
12
+ * @param networkName - The network name to fetch config for
13
+ * @param cacheDir - Optional cache directory for storing fetched config
14
+ * @returns Remote configuration for the specified network, or undefined if not found/error
15
+ */ export async function getNetworkConfig(networkName, cacheDir) {
16
+ let url;
17
+ const configLocation = process.env.NETWORK_CONFIG_LOCATION || DEFAULT_CONFIG_URL;
18
+ if (!configLocation) {
19
+ return undefined;
20
+ }
21
+ try {
22
+ if (configLocation.includes('://')) {
23
+ url = new URL(configLocation);
24
+ } else {
25
+ url = new URL(`file://${configLocation}`);
26
+ }
27
+ } catch {
28
+ /* no-op */ }
29
+ if (!url) {
30
+ return undefined;
31
+ }
32
+ try {
33
+ let rawConfig;
34
+ if (url.protocol === 'http:' || url.protocol === 'https:') {
35
+ rawConfig = await cachedFetch(url.href, {
36
+ cacheDurationMs: NETWORK_CONFIG_CACHE_DURATION_MS,
37
+ cacheFile: cacheDir ? join(cacheDir, networkName, 'network_config.json') : undefined
38
+ });
39
+ } else if (url.protocol === 'file:') {
40
+ rawConfig = JSON.parse(await readFile(url.pathname, 'utf-8'));
41
+ } else {
42
+ throw new Error('Unsupported Aztec network config protocol: ' + url.href);
43
+ }
44
+ if (!rawConfig) {
45
+ return undefined;
46
+ }
47
+ const networkConfigMap = NetworkConfigMapSchema.parse(rawConfig);
48
+ if (networkName in networkConfigMap) {
49
+ return networkConfigMap[networkName];
50
+ } else {
51
+ return undefined;
52
+ }
53
+ } catch {
54
+ return undefined;
55
+ }
56
+ }
57
+ /**
58
+ * Enriches environment variables with remote network configuration.
59
+ * This function is called before node config initialization to set env vars
60
+ * from the remote config, following the same pattern as enrichEnvironmentWithChainConfig().
61
+ *
62
+ * @param networkName - The network name to fetch remote config for
63
+ */ export async function enrichEnvironmentWithNetworkConfig(networkName) {
64
+ if (networkName === 'local') {
65
+ return; // No remote config for local development
66
+ }
67
+ const cacheDir = process.env.DATA_DIRECTORY ? join(process.env.DATA_DIRECTORY, 'cache') : undefined;
68
+ const networkConfig = await getNetworkConfig(networkName, cacheDir);
69
+ if (!networkConfig) {
70
+ return;
71
+ }
72
+ enrichVar('BOOTSTRAP_NODES', networkConfig.bootnodes.join(','));
73
+ enrichVar('L1_CHAIN_ID', String(networkConfig.l1ChainId));
74
+ enrichVar('SYNC_SNAPSHOTS_URLS', networkConfig.snapshots.join(','));
75
+ enrichEthAddressVar('REGISTRY_CONTRACT_ADDRESS', networkConfig.registryAddress.toString());
76
+ if (networkConfig.feeAssetHandlerAddress) {
77
+ enrichEthAddressVar('FEE_ASSET_HANDLER_CONTRACT_ADDRESS', networkConfig.feeAssetHandlerAddress.toString());
78
+ }
79
+ }
@@ -18,7 +18,7 @@ export declare function getFunctionAbi(artifact: ContractArtifact, fnName: strin
18
18
  * @param privateKey - The private key to be used in contract deployment.
19
19
  * @param mnemonic - The mnemonic to be used in contract deployment.
20
20
  */
21
- export declare function deployAztecContracts(rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, initialValidators: Operator[], genesisArchiveRoot: Fr, feeJuicePortalInitialBalance: bigint, acceleratedTestDeployments: boolean, config: L1ContractsConfig, realVerifier: boolean, createVerificationJson: string | false, debugLogger: Logger): Promise<DeployL1ContractsReturnType>;
21
+ export declare function deployAztecContracts(rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, initialValidators: Operator[], genesisArchiveRoot: Fr, feeJuicePortalInitialBalance: bigint, acceleratedTestDeployments: boolean, config: L1ContractsConfig, existingToken: EthAddress | undefined, realVerifier: boolean, createVerificationJson: string | false, debugLogger: Logger): Promise<DeployL1ContractsReturnType>;
22
22
  export declare function deployNewRollupContracts(registryAddress: EthAddress, rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, initialValidators: Operator[], genesisArchiveRoot: Fr, feeJuicePortalInitialBalance: bigint, config: L1ContractsConfig, realVerifier: boolean, logger: Logger): Promise<{
23
23
  rollup: RollupContract;
24
24
  slashFactoryAddress: EthAddress;
@@ -1 +1 @@
1
- {"version":3,"file":"aztec.d.ts","sourceRoot":"","sources":["../../src/utils/aztec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAIjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,cAAc,EACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAShE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAMtF;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,kBAAkB,EAAE,EAAE,EACtB,4BAA4B,EAAE,MAAM,EACpC,0BAA0B,EAAE,OAAO,EACnC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,OAAO,EACrB,sBAAsB,EAAE,MAAM,GAAG,KAAK,EACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,CAAC,CAgCtC;AAED,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,UAAU,EAC3B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,kBAAkB,EAAE,EAAE,EACtB,4BAA4B,EAAE,MAAM,EACpC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,mBAAmB,EAAE,UAAU,CAAA;CAAE,CAAC,CA6CtE;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKjE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,6BA4BpE;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK;;;;GAO3G;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAK7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,KAAK,MAAM,EAKtD,CAAC;AAOF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAUtE;AAKD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,iBAyB9E"}
1
+ {"version":3,"file":"aztec.d.ts","sourceRoot":"","sources":["../../src/utils/aztec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAIjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,cAAc,EACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAShE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAMtF;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,kBAAkB,EAAE,EAAE,EACtB,4BAA4B,EAAE,MAAM,EACpC,0BAA0B,EAAE,OAAO,EACnC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,UAAU,GAAG,SAAS,EACrC,YAAY,EAAE,OAAO,EACrB,sBAAsB,EAAE,MAAM,GAAG,KAAK,EACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,CAAC,CAiCtC;AAED,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,UAAU,EAC3B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,kBAAkB,EAAE,EAAE,EACtB,4BAA4B,EAAE,MAAM,EACpC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,mBAAmB,EAAE,UAAU,CAAA;CAAE,CAAC,CA6CtE;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKjE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,6BA4BpE;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK;;;;GAO3G;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAK7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,KAAK,MAAM,EAKtD,CAAC;AAOF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAUtE;AAKD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,iBAyB9E"}
@@ -25,9 +25,9 @@ import { encodeArgs } from './encoding.js';
25
25
  * @param chainId - The chain ID of the L1 host.
26
26
  * @param privateKey - The private key to be used in contract deployment.
27
27
  * @param mnemonic - The mnemonic to be used in contract deployment.
28
- */ export async function deployAztecContracts(rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, salt, initialValidators, genesisArchiveRoot, feeJuicePortalInitialBalance, acceleratedTestDeployments, config, realVerifier, createVerificationJson, debugLogger) {
28
+ */ export async function deployAztecContracts(rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, salt, initialValidators, genesisArchiveRoot, feeJuicePortalInitialBalance, acceleratedTestDeployments, config, existingToken, realVerifier, createVerificationJson, debugLogger) {
29
29
  const { createEthereumChain, deployL1Contracts } = await import('@aztec/ethereum');
30
- const { mnemonicToAccount, privateKeyToAccount } = await import('viem/accounts');
30
+ const { mnemonicToAccount, privateKeyToAccount } = await import('@spalladino/viem/accounts');
31
31
  const account = !privateKey ? mnemonicToAccount(mnemonic, {
32
32
  addressIndex: mnemonicIndex
33
33
  }) : privateKeyToAccount(addLeadingHex(privateKey));
@@ -42,13 +42,14 @@ import { encodeArgs } from './encoding.js';
42
42
  acceleratedTestDeployments,
43
43
  feeJuicePortalInitialBalance,
44
44
  realVerifier,
45
+ existingTokenAddress: existingToken,
45
46
  ...config
46
47
  }, config, createVerificationJson);
47
48
  return result;
48
49
  }
49
50
  export async function deployNewRollupContracts(registryAddress, rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, salt, initialValidators, genesisArchiveRoot, feeJuicePortalInitialBalance, config, realVerifier, logger) {
50
51
  const { createEthereumChain, deployRollupForUpgrade, createExtendedL1Client } = await import('@aztec/ethereum');
51
- const { mnemonicToAccount, privateKeyToAccount } = await import('viem/accounts');
52
+ const { mnemonicToAccount, privateKeyToAccount } = await import('@spalladino/viem/accounts');
52
53
  const { getVKTreeRoot } = await import('@aztec/noir-protocol-circuits-types/vk-tree');
53
54
  const account = !privateKey ? mnemonicToAccount(mnemonic, {
54
55
  addressIndex: mnemonicIndex
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/cli",
3
- "version": "2.0.3",
3
+ "version": "2.1.0-rc.10",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./contracts": "./dest/cmds/contracts/index.js",
@@ -70,30 +70,30 @@
70
70
  ]
71
71
  },
72
72
  "dependencies": {
73
- "@aztec/archiver": "2.0.3",
74
- "@aztec/aztec.js": "2.0.3",
75
- "@aztec/constants": "2.0.3",
76
- "@aztec/entrypoints": "2.0.3",
77
- "@aztec/ethereum": "2.0.3",
78
- "@aztec/foundation": "2.0.3",
79
- "@aztec/l1-artifacts": "2.0.3",
80
- "@aztec/node-lib": "2.0.3",
81
- "@aztec/p2p": "2.0.3",
82
- "@aztec/stdlib": "2.0.3",
83
- "@aztec/world-state": "2.0.3",
73
+ "@aztec/archiver": "2.1.0-rc.10",
74
+ "@aztec/aztec.js": "2.1.0-rc.10",
75
+ "@aztec/constants": "2.1.0-rc.10",
76
+ "@aztec/entrypoints": "2.1.0-rc.10",
77
+ "@aztec/ethereum": "2.1.0-rc.10",
78
+ "@aztec/foundation": "2.1.0-rc.10",
79
+ "@aztec/l1-artifacts": "2.1.0-rc.10",
80
+ "@aztec/node-lib": "2.1.0-rc.10",
81
+ "@aztec/p2p": "2.1.0-rc.10",
82
+ "@aztec/stdlib": "2.1.0-rc.10",
83
+ "@aztec/world-state": "2.1.0-rc.10",
84
84
  "@iarna/toml": "^2.2.5",
85
85
  "@libp2p/peer-id-factory": "^3.0.4",
86
+ "@spalladino/viem": "2.38.2-eip7594.0",
86
87
  "commander": "^12.1.0",
87
88
  "lodash.chunk": "^4.2.0",
88
89
  "lodash.groupby": "^4.6.0",
89
90
  "semver": "^7.5.4",
90
91
  "source-map-support": "^0.5.21",
91
- "tslib": "^2.4.0",
92
- "viem": "2.23.7"
92
+ "tslib": "^2.4.0"
93
93
  },
94
94
  "devDependencies": {
95
- "@aztec/accounts": "2.0.3",
96
- "@aztec/protocol-contracts": "2.0.3",
95
+ "@aztec/accounts": "2.1.0-rc.10",
96
+ "@aztec/protocol-contracts": "2.1.0-rc.10",
97
97
  "@jest/globals": "^30.0.0",
98
98
  "@types/jest": "^30.0.0",
99
99
  "@types/lodash.chunk": "^4.2.9",
@@ -109,15 +109,15 @@
109
109
  "typescript": "^5.3.3"
110
110
  },
111
111
  "peerDependencies": {
112
- "@aztec/accounts": "2.0.3",
113
- "@aztec/bb-prover": "2.0.3",
114
- "@aztec/ethereum": "2.0.3",
115
- "@aztec/l1-artifacts": "2.0.3",
116
- "@aztec/noir-contracts.js": "2.0.3",
117
- "@aztec/noir-protocol-circuits-types": "2.0.3",
118
- "@aztec/noir-test-contracts.js": "2.0.3",
119
- "@aztec/protocol-contracts": "2.0.3",
120
- "@aztec/stdlib": "2.0.3"
112
+ "@aztec/accounts": "2.1.0-rc.10",
113
+ "@aztec/bb-prover": "2.1.0-rc.10",
114
+ "@aztec/ethereum": "2.1.0-rc.10",
115
+ "@aztec/l1-artifacts": "2.1.0-rc.10",
116
+ "@aztec/noir-contracts.js": "2.1.0-rc.10",
117
+ "@aztec/noir-protocol-circuits-types": "2.1.0-rc.10",
118
+ "@aztec/noir-test-contracts.js": "2.1.0-rc.10",
119
+ "@aztec/protocol-contracts": "2.1.0-rc.10",
120
+ "@aztec/stdlib": "2.1.0-rc.10"
121
121
  },
122
122
  "files": [
123
123
  "dest",
@@ -3,8 +3,8 @@ import { GSEContract, RollupContract, createEthereumChain, getL1ContractsConfigE
3
3
  import type { LogFn, Logger } from '@aztec/foundation/log';
4
4
  import { RollupAbi, TestERC20Abi } from '@aztec/l1-artifacts';
5
5
 
6
- import { createPublicClient, createWalletClient, fallback, getContract, http } from 'viem';
7
- import { mnemonicToAccount } from 'viem/accounts';
6
+ import { createPublicClient, createWalletClient, fallback, getContract, http } from '@spalladino/viem';
7
+ import { mnemonicToAccount } from '@spalladino/viem/accounts';
8
8
 
9
9
  export async function sequencers(opts: {
10
10
  command: 'list' | 'add' | 'remove' | 'who-next' | 'flush';
@@ -1,6 +1,6 @@
1
1
  import type { LogFn } from '@aztec/foundation/log';
2
2
 
3
- import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
3
+ import { generatePrivateKey, privateKeyToAccount } from '@spalladino/viem/accounts';
4
4
 
5
5
  import { prettyPrintJSON } from '../../utils/commands.js';
6
6