@aztec/cli 0.0.1-commit.993d240 → 0.0.1-commit.9a89641

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 (43) hide show
  1. package/dest/cmds/infrastructure/setup_l2_contract.d.ts +1 -1
  2. package/dest/cmds/infrastructure/setup_l2_contract.d.ts.map +1 -1
  3. package/dest/cmds/infrastructure/setup_l2_contract.js +10 -6
  4. package/dest/cmds/validator_keys/eth_json_v3_worker.d.ts +2 -0
  5. package/dest/cmds/validator_keys/eth_json_v3_worker.d.ts.map +1 -0
  6. package/dest/cmds/validator_keys/eth_json_v3_worker.js +27 -0
  7. package/dest/cmds/validator_keys/index.d.ts +1 -1
  8. package/dest/cmds/validator_keys/index.d.ts.map +1 -1
  9. package/dest/cmds/validator_keys/index.js +7 -6
  10. package/dest/cmds/validator_keys/new.d.ts +7 -1
  11. package/dest/cmds/validator_keys/new.d.ts.map +1 -1
  12. package/dest/cmds/validator_keys/new.js +98 -12
  13. package/dest/cmds/validator_keys/set_funding_account.d.ts +14 -0
  14. package/dest/cmds/validator_keys/set_funding_account.d.ts.map +1 -0
  15. package/dest/cmds/validator_keys/set_funding_account.js +37 -0
  16. package/dest/cmds/validator_keys/shared.d.ts +15 -2
  17. package/dest/cmds/validator_keys/shared.d.ts.map +1 -1
  18. package/dest/cmds/validator_keys/shared.js +100 -23
  19. package/dest/cmds/validator_keys/utils.d.ts +12 -2
  20. package/dest/cmds/validator_keys/utils.d.ts.map +1 -1
  21. package/dest/cmds/validator_keys/utils.js +34 -0
  22. package/dest/config/chain_l2_config.d.ts +7 -2
  23. package/dest/config/chain_l2_config.d.ts.map +1 -1
  24. package/dest/config/chain_l2_config.js +14 -1
  25. package/dest/config/generated/networks.d.ts +53 -35
  26. package/dest/config/generated/networks.d.ts.map +1 -1
  27. package/dest/config/generated/networks.js +52 -34
  28. package/dest/utils/commands.d.ts +7 -6
  29. package/dest/utils/commands.d.ts.map +1 -1
  30. package/dest/utils/commands.js +10 -9
  31. package/dest/utils/inspect.js +5 -6
  32. package/package.json +30 -30
  33. package/src/cmds/infrastructure/setup_l2_contract.ts +9 -5
  34. package/src/cmds/validator_keys/eth_json_v3_worker.ts +30 -0
  35. package/src/cmds/validator_keys/index.ts +48 -8
  36. package/src/cmds/validator_keys/new.ts +129 -9
  37. package/src/cmds/validator_keys/set_funding_account.ts +55 -0
  38. package/src/cmds/validator_keys/shared.ts +123 -35
  39. package/src/cmds/validator_keys/utils.ts +44 -1
  40. package/src/config/chain_l2_config.ts +14 -1
  41. package/src/config/generated/networks.ts +52 -34
  42. package/src/utils/commands.ts +14 -13
  43. package/src/utils/inspect.ts +3 -3
@@ -1,14 +1,59 @@
1
1
  import { prettyPrintJSON } from '@aztec/cli/utils';
2
+ import { asyncPool } from '@aztec/foundation/async-pool';
2
3
  import { deriveBlsPrivateKey } from '@aztec/foundation/crypto/bls';
3
4
  import { createBn254Keystore } from '@aztec/foundation/crypto/bls/bn254_keystore';
4
5
  import { computeBn254G1PublicKeyCompressed } from '@aztec/foundation/crypto/bn254';
6
+ import { EthAddress } from '@aztec/foundation/eth-address';
5
7
  import { Wallet } from '@ethersproject/wallet';
6
8
  import { constants as fsConstants, mkdirSync } from 'fs';
7
9
  import { access, writeFile } from 'fs/promises';
8
- import { homedir } from 'os';
10
+ import { availableParallelism, homedir } from 'os';
9
11
  import { dirname, isAbsolute, join } from 'path';
10
12
  import { mnemonicToAccount } from 'viem/accounts';
13
+ import { Worker } from 'worker_threads';
11
14
  import { defaultBlsPath } from './utils.js';
15
+ // ethers' default scrypt parameters use substantial memory, so keep worker fan-out bounded.
16
+ const maxEthKeystoreWorkers = Math.max(1, Math.min(4, availableParallelism()));
17
+ function deserializeWorkerError(error) {
18
+ const result = new Error(error.message);
19
+ result.name = error.name ?? result.name;
20
+ result.stack = error.stack;
21
+ return result;
22
+ }
23
+ function encryptEthJsonV3InWorker(privateKeyHex, password) {
24
+ return new Promise((resolve, reject)=>{
25
+ const worker = new Worker(new URL('./eth_json_v3_worker.js', import.meta.url), {
26
+ workerData: {
27
+ privateKeyHex,
28
+ password
29
+ }
30
+ });
31
+ let settled = false;
32
+ worker.once('message', (result)=>{
33
+ settled = true;
34
+ if ('json' in result) {
35
+ resolve(result.json);
36
+ } else {
37
+ reject(deserializeWorkerError(result.error));
38
+ }
39
+ });
40
+ worker.once('error', (error)=>{
41
+ settled = true;
42
+ reject(error);
43
+ });
44
+ worker.once('exit', (code)=>{
45
+ if (!settled) {
46
+ reject(new Error(`ETH JSON V3 worker stopped with exit code ${code}`));
47
+ }
48
+ });
49
+ });
50
+ }
51
+ async function encryptEthJsonV3(privateKeyHex, password) {
52
+ if (process.env.JEST_WORKER_ID !== undefined) {
53
+ return await new Wallet(privateKeyHex).encrypt(password);
54
+ }
55
+ return await encryptEthJsonV3InWorker(privateKeyHex, password);
56
+ }
12
57
  export function withValidatorIndex(path, accountIndex = 0, addressIndex = 0) {
13
58
  // NOTE: The legacy BLS CLI is to allow users who generated keys in 2.1.4 to be able to use the same command
14
59
  // to re-generate their keys. In 2.1.5 we switched how we append addresses to the path so this is to maintain backwards compatibility.
@@ -50,6 +95,22 @@ export function deriveEthAttester(mnemonic, baseAccountIndex, addressIndex, remo
50
95
  remoteSignerUrl: remoteSigner
51
96
  } : '0x' + Buffer.from(acct.getHdKey().privateKey).toString('hex');
52
97
  }
98
+ /**
99
+ * Resolve a `--funding-account` value into a keystore `EthAccount`. A 66-char value is a private key
100
+ * (used verbatim). A 42-char value is an address: with an explicit `remoteSigner` URL it becomes an
101
+ * `{ address, remoteSignerUrl }` pair; without one it is stored as a bare address that falls back to
102
+ * the keystore-level remote signer at runtime. Callers must validate the value first (see
103
+ * `validateFundingAccountOptions`).
104
+ */ export function resolveFundingAccount(fundingAccount, remoteSigner) {
105
+ if (fundingAccount.length === 66) {
106
+ return fundingAccount;
107
+ }
108
+ const address = EthAddress.fromString(fundingAccount);
109
+ return remoteSigner ? {
110
+ address,
111
+ remoteSignerUrl: remoteSigner
112
+ } : address;
113
+ }
53
114
  export async function buildValidatorEntries(input) {
54
115
  const { validatorCount, publisherCount = 0, publishers, accountIndex, baseAddressIndex, mnemonic, ikm, blsPath, feeRecipient, coinbase, remoteSigner } = input;
55
116
  const summaries = [];
@@ -188,7 +249,7 @@ export function maybePrintJson(log, jsonFlag, obj) {
188
249
  mkdirSync(outDir, {
189
250
  recursive: true
190
251
  });
191
- const keystore = createBn254Keystore(password, privateKeyHex, pubkeyHex, derivationPath);
252
+ const keystore = await createBn254Keystore(password, privateKeyHex, pubkeyHex, derivationPath);
192
253
  const safeBase = fileNameBase.replace(/[^a-zA-Z0-9_-]/g, '_');
193
254
  const outPath = join(outDir, `keystore-${safeBase}.json`);
194
255
  await writeFile(outPath, JSON.stringify(keystore, null, 2), {
@@ -197,16 +258,15 @@ export function maybePrintJson(log, jsonFlag, obj) {
197
258
  return outPath;
198
259
  }
199
260
  /** Replace plaintext BLS keys in validators with { path, password } pointing to BN254 keystore files. */ export async function writeBlsBn254ToFile(validators, options) {
200
- for(let i = 0; i < validators.length; i++){
201
- const v = validators[i];
261
+ await Promise.all(validators.map(async (v, i)=>{
202
262
  if (!v || typeof v !== 'object' || !('attester' in v)) {
203
- continue;
263
+ return;
204
264
  }
205
265
  const att = v.attester;
206
266
  // Shapes: { bls: <hex> } or { eth: <ethAccount>, bls?: <hex> } or plain EthAccount
207
267
  const blsKey = typeof att === 'object' && 'bls' in att ? att.bls : undefined;
208
268
  if (!blsKey || typeof blsKey !== 'string') {
209
- continue;
269
+ return;
210
270
  }
211
271
  const pub = await computeBlsPublicKeyCompressed(blsKey);
212
272
  const path = options.blsPath ?? defaultBlsPath;
@@ -218,32 +278,50 @@ export function maybePrintJson(log, jsonFlag, obj) {
218
278
  password: options.password
219
279
  };
220
280
  }
221
- }
281
+ }));
222
282
  }
223
283
  /** Writes an Ethereum JSON V3 keystore using ethers, returns absolute path */ export async function writeEthJsonV3Keystore(outDir, fileNameBase, password, privateKeyHex) {
224
284
  const safeBase = fileNameBase.replace(/[^a-zA-Z0-9_-]/g, '_');
225
285
  mkdirSync(outDir, {
226
286
  recursive: true
227
287
  });
228
- const wallet = new Wallet(privateKeyHex);
229
- const json = await wallet.encrypt(password);
288
+ const json = await encryptEthJsonV3(privateKeyHex, password);
230
289
  const outPath = join(outDir, `keystore-eth-${safeBase}.json`);
231
290
  await writeFile(outPath, json, {
232
291
  encoding: 'utf-8'
233
292
  });
234
293
  return outPath;
235
294
  }
295
+ /**
296
+ * If `account` is a plaintext ETH private key, encrypt it to a JSON V3 file and return a
297
+ * { path, password } reference; otherwise return it unchanged.
298
+ */ async function maybeEncryptEthAccount(account, label, options) {
299
+ if (typeof account === 'string' && account.startsWith('0x') && account.length === 66) {
300
+ const fileBase = `${label}_${account.slice(2, 10)}`;
301
+ const p = await writeEthJsonV3Keystore(options.outDir, fileBase, options.password, account);
302
+ return {
303
+ path: p,
304
+ password: options.password
305
+ };
306
+ }
307
+ return account;
308
+ }
309
+ /** Encrypt a plaintext funding-account key to a JSON V3 file, replacing it with a { path, password } reference. */ export async function encryptFundingAccountToFile(account, options) {
310
+ return await maybeEncryptEthAccount(account, 'funding', options);
311
+ }
236
312
  /** Replace plaintext ETH keys in validators with { path, password } pointing to JSON V3 files. */ export async function writeEthJsonV3ToFile(validators, options) {
237
- const maybeEncryptEth = async (account, label)=>{
313
+ const tasks = [];
314
+ const maybeQueueEncryptEth = (account, label, setEncryptedAccount)=>{
238
315
  if (typeof account === 'string' && account.startsWith('0x') && account.length === 66) {
239
- const fileBase = `${label}_${account.slice(2, 10)}`;
240
- const p = await writeEthJsonV3Keystore(options.outDir, fileBase, options.password, account);
241
- return {
242
- path: p,
243
- password: options.password
244
- };
316
+ tasks.push(async ()=>{
317
+ const fileBase = `${label}_${account.slice(2, 10)}`;
318
+ const path = await writeEthJsonV3Keystore(options.outDir, fileBase, options.password, account);
319
+ setEncryptedAccount({
320
+ path,
321
+ password: options.password
322
+ });
323
+ });
245
324
  }
246
- return account;
247
325
  };
248
326
  for(let i = 0; i < validators.length; i++){
249
327
  const v = validators[i];
@@ -253,22 +331,21 @@ export function maybePrintJson(log, jsonFlag, obj) {
253
331
  // attester may be string (eth), object with eth, or remote signer
254
332
  const att = v.attester;
255
333
  if (typeof att === 'string') {
256
- v.attester = await maybeEncryptEth(att, `attester_${i + 1}`);
334
+ maybeQueueEncryptEth(att, `attester_${i + 1}`, (account)=>v.attester = account);
257
335
  } else if (att && typeof att === 'object' && 'eth' in att) {
258
- att.eth = await maybeEncryptEth(att.eth, `attester_${i + 1}`);
336
+ maybeQueueEncryptEth(att.eth, `attester_${i + 1}`, (account)=>att.eth = account);
259
337
  }
260
338
  // publisher can be single or array
261
339
  if ('publisher' in v) {
262
340
  const pub = v.publisher;
263
341
  if (Array.isArray(pub)) {
264
- const out = [];
265
342
  for(let j = 0; j < pub.length; j++){
266
- out.push(await maybeEncryptEth(pub[j], `publisher_${i + 1}_${j + 1}`));
343
+ maybeQueueEncryptEth(pub[j], `publisher_${i + 1}_${j + 1}`, (account)=>pub[j] = account);
267
344
  }
268
- v.publisher = out;
269
345
  } else if (pub !== undefined) {
270
- v.publisher = await maybeEncryptEth(pub, `publisher_${i + 1}`);
346
+ maybeQueueEncryptEth(pub, `publisher_${i + 1}`, (account)=>v.publisher = account);
271
347
  }
272
348
  }
273
349
  }
350
+ await asyncPool(maxEthKeystoreWorkers, tasks, (task)=>task());
274
351
  }
@@ -1,4 +1,4 @@
1
- import type { EthAddress } from '@aztec/foundation/eth-address';
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
2
  export declare const defaultBlsPath = "m/12381/3600/0/0/0";
3
3
  export declare function validateBlsPathOptions(options: {
4
4
  count?: number;
@@ -22,4 +22,14 @@ export declare function validatePublisherOptions(options: {
22
22
  publishers?: string[];
23
23
  publisherCount?: number;
24
24
  }): void;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL3ZhbGlkYXRvcl9rZXlzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSWhFLGVBQU8sTUFBTSxjQUFjLHVCQUF1QixDQUFDO0FBRW5ELHdCQUFnQixzQkFBc0IsQ0FBQyxPQUFPLEVBQUU7SUFDOUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2YsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN0QixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdEIsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNkLFFBV0E7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQUMsT0FBTyxFQUFFO0lBQ25ELFlBQVksQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN2QixVQUFVLENBQUMsRUFBRSxVQUFVLENBQUM7SUFDeEIsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDckIsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3BCLFFBZUE7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQUMsT0FBTyxFQUFFO0lBQUUsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsUUFNaEc7QUFFRCx3QkFBZ0Isd0JBQXdCLENBQUMsT0FBTyxFQUFFO0lBQUUsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFBQyxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUE7Q0FBRSxRQXdCbkcifQ==
25
+ /**
26
+ * Validates and normalizes the `--funding-account` option in place. The value may be a private key
27
+ * (used as a local signer) or an ETH address. An address needs a remote signer to sign funding txs:
28
+ * either `--remote-signer`, or a keystore that already defines one (pass `hasKeystoreRemoteSigner`),
29
+ * which a bare address inherits at runtime.
30
+ */
31
+ export declare function validateFundingAccountOptions(options: {
32
+ fundingAccount?: string;
33
+ remoteSigner?: string;
34
+ }, hasKeystoreRemoteSigner?: boolean): void;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL3ZhbGlkYXRvcl9rZXlzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUkzRCxlQUFPLE1BQU0sY0FBYyx1QkFBdUIsQ0FBQztBQUVuRCx3QkFBZ0Isc0JBQXNCLENBQUMsT0FBTyxFQUFFO0lBQzlDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNmLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN4QixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdEIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNqQixHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZCxRQVdBO0FBRUQsd0JBQWdCLDJCQUEyQixDQUFDLE9BQU8sRUFBRTtJQUNuRCxZQUFZLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDdkIsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDO0lBQ3hCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNwQixRQWVBO0FBRUQsd0JBQWdCLDJCQUEyQixDQUFDLE9BQU8sRUFBRTtJQUFFLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLFFBTWhHO0FBRUQsd0JBQWdCLHdCQUF3QixDQUFDLE9BQU8sRUFBRTtJQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsUUF3Qm5HO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IsNkJBQTZCLENBQzNDLE9BQU8sRUFBRTtJQUFFLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEVBQzNELHVCQUF1QixVQUFRLFFBaUNoQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator_keys/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAIhE,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAEnD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,QAWA;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,QAeA;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,QAMhG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,QAwBnG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator_keys/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAEnD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,QAWA;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,QAeA;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,QAMhG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,QAwBnG;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,uBAAuB,UAAQ,QAiChC"}
@@ -1,3 +1,4 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
1
2
  import { ethPrivateKeySchema } from '@aztec/node-keystore/schemas';
2
3
  export const defaultBlsPath = 'm/12381/3600/0/0/0';
3
4
  export function validateBlsPathOptions(options) {
@@ -50,3 +51,36 @@ export function validatePublisherOptions(options) {
50
51
  options.publishers = normalizedKeys;
51
52
  }
52
53
  }
54
+ /**
55
+ * Validates and normalizes the `--funding-account` option in place. The value may be a private key
56
+ * (used as a local signer) or an ETH address. An address needs a remote signer to sign funding txs:
57
+ * either `--remote-signer`, or a keystore that already defines one (pass `hasKeystoreRemoteSigner`),
58
+ * which a bare address inherits at runtime.
59
+ */ export function validateFundingAccountOptions(options, hasKeystoreRemoteSigner = false) {
60
+ if (!options.fundingAccount) {
61
+ return;
62
+ }
63
+ let value = options.fundingAccount.trim();
64
+ if (!value.startsWith('0x')) {
65
+ value = '0x' + value;
66
+ }
67
+ if (value.length === 66) {
68
+ try {
69
+ ethPrivateKeySchema.parse(value);
70
+ } catch (error) {
71
+ throw new Error(`Invalid funding account private key: ${error instanceof Error ? error.message : String(error)}`);
72
+ }
73
+ } else if (value.length === 42) {
74
+ try {
75
+ EthAddress.fromString(value);
76
+ } catch (error) {
77
+ throw new Error(`Invalid funding account address: ${error instanceof Error ? error.message : String(error)}`);
78
+ }
79
+ if (!options.remoteSigner && !hasKeystoreRemoteSigner) {
80
+ throw new Error('--funding-account as an address requires --remote-signer, or a keystore that already defines a remote signer');
81
+ }
82
+ } else {
83
+ throw new Error('Invalid funding account: expected a 32-byte private key or a 20-byte address');
84
+ }
85
+ options.fundingAccount = value;
86
+ }
@@ -1,4 +1,7 @@
1
1
  import type { NetworkNames } from '@aztec/foundation/config';
2
+ import { type ConsensusEnvVar } from '@aztec/stdlib/config';
3
+ /** Every generated network config must define every consensus-critical env var. */
4
+ export type ConsensusComplete = Record<ConsensusEnvVar, string | number | boolean>;
2
5
  /**
3
6
  * Sets up environment for the given network.
4
7
  *
@@ -6,9 +9,11 @@ import type { NetworkNames } from '@aztec/foundation/config';
6
9
  * and DefaultSlasherConfig (which match the 'defaults' section of defaults.yml).
7
10
  *
8
11
  * For deployed networks: applies network configuration from generated defaults.yml,
9
- * merging base defaults with network-specific overrides.
12
+ * merging base defaults with network-specific overrides. Before merging, enforces that operators have not
13
+ * overridden any consensus-critical env var with a value diverging from the network config (throwing unless
14
+ * ALLOW_OVERRIDING_NETWORK_CONFIG is set), so all nodes of a network agree on consensus-critical values.
10
15
  *
11
16
  * @param networkName - The network name
12
17
  */
13
18
  export declare function enrichEnvironmentWithChainName(networkName: NetworkNames): void;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5fbDJfY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NoYWluX2wyX2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQTBCN0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILHdCQUFnQiw4QkFBOEIsQ0FBQyxXQUFXLEVBQUUsWUFBWSxRQXFCdkUifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5fbDJfY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NoYWluX2wyX2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQThCLE1BQU0sc0JBQXNCLENBQUM7QUFjeEYsbUZBQW1GO0FBQ25GLE1BQU0sTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLE1BQU0sR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFpQm5GOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHdCQUFnQiw4QkFBOEIsQ0FBQyxXQUFXLEVBQUUsWUFBWSxRQXdCdkUifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"chain_l2_config.d.ts","sourceRoot":"","sources":["../../src/config/chain_l2_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA0B7D;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,YAAY,QAqBvE"}
1
+ {"version":3,"file":"chain_l2_config.d.ts","sourceRoot":"","sources":["../../src/config/chain_l2_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,KAAK,eAAe,EAA8B,MAAM,sBAAsB,CAAC;AAcxF,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAiBnF;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,YAAY,QAwBvE"}
@@ -1,3 +1,5 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { checkConsensusEnvOverrides } from '@aztec/stdlib/config';
1
3
  import path from 'path';
2
4
  import { devnetConfig, mainnetConfig, testnetConfig } from './generated/networks.js';
3
5
  const NetworkConfigs = {
@@ -5,6 +7,12 @@ const NetworkConfigs = {
5
7
  testnet: testnetConfig,
6
8
  mainnet: mainnetConfig
7
9
  };
10
+ ({
11
+ devnetConfig,
12
+ testnetConfig,
13
+ mainnetConfig
14
+ });
15
+ const log = createLogger('cli:chain_l2_config');
8
16
  function enrichEnvironmentWithNetworkConfig(config) {
9
17
  for (const [key, value] of Object.entries(config)){
10
18
  if (process.env[key] === undefined && value !== undefined) {
@@ -22,7 +30,9 @@ function getDefaultDataDir(networkName) {
22
30
  * and DefaultSlasherConfig (which match the 'defaults' section of defaults.yml).
23
31
  *
24
32
  * For deployed networks: applies network configuration from generated defaults.yml,
25
- * merging base defaults with network-specific overrides.
33
+ * merging base defaults with network-specific overrides. Before merging, enforces that operators have not
34
+ * overridden any consensus-critical env var with a value diverging from the network config (throwing unless
35
+ * ALLOW_OVERRIDING_NETWORK_CONFIG is set), so all nodes of a network agree on consensus-critical values.
26
36
  *
27
37
  * @param networkName - The network name
28
38
  */ export function enrichEnvironmentWithChainName(networkName) {
@@ -38,6 +48,9 @@ function getDefaultDataDir(networkName) {
38
48
  const configKey = /^v\d+-devnet-\d+$/.test(networkName) ? 'devnet' : networkName;
39
49
  const generatedConfig = NetworkConfigs[configKey];
40
50
  if (generatedConfig) {
51
+ // The check is pure; this layer owns env mutation, so apply its canonical writes before enriching.
52
+ const canonical = checkConsensusEnvOverrides(generatedConfig, process.env, (msg)=>log.warn(msg));
53
+ Object.assign(process.env, canonical);
41
54
  enrichEnvironmentWithNetworkConfig(generatedConfig);
42
55
  }
43
56
  // Set DATA_DIRECTORY if not already set
@@ -1,12 +1,10 @@
1
1
  export declare const devnetConfig: {
2
2
  readonly ETHEREUM_SLOT_DURATION: 12;
3
- readonly AZTEC_SLOT_DURATION: 72;
4
- readonly AZTEC_TARGET_COMMITTEE_SIZE: 48;
5
3
  readonly AZTEC_ACTIVATION_THRESHOLD: 100000000000000000000;
6
4
  readonly AZTEC_EJECTION_THRESHOLD: 50000000000000000000;
7
5
  readonly AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000;
8
6
  readonly AZTEC_EXIT_DELAY_SECONDS: 172800;
9
- readonly AZTEC_INBOX_LAG: 1;
7
+ readonly AZTEC_INBOX_LAG: 2;
10
8
  readonly AZTEC_PROOF_SUBMISSION_EPOCHS: 1;
11
9
  readonly AZTEC_MANA_TARGET: 100000000;
12
10
  readonly AZTEC_PROVING_COST_PER_MANA: 100;
@@ -21,6 +19,11 @@ export declare const devnetConfig: {
21
19
  readonly AZTEC_SLASH_AMOUNT_MEDIUM: 20000000000000000000;
22
20
  readonly AZTEC_SLASH_AMOUNT_LARGE: 50000000000000000000;
23
21
  readonly AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 300;
22
+ readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: 0;
23
+ readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE: 0;
24
+ readonly AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN: 48;
25
+ readonly AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT: 2;
26
+ readonly AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE: 48;
24
27
  readonly SLASH_OFFENSE_EXPIRATION_ROUNDS: 4;
25
28
  readonly SLASH_MAX_PAYLOAD_SIZE: 80;
26
29
  readonly SLASH_EXECUTE_ROUNDS_LOOK_BACK: 4;
@@ -30,7 +33,7 @@ export declare const devnetConfig: {
30
33
  readonly SEQ_MIN_TX_PER_BLOCK: 1;
31
34
  readonly SEQ_BUILD_CHECKPOINT_IF_EMPTY: true;
32
35
  readonly SEQ_BLOCK_DURATION_MS: 6000;
33
- readonly SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT: 36;
36
+ readonly CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 12;
34
37
  readonly DATA_STORE_MAP_SIZE_KB: 134217728;
35
38
  readonly ARCHIVER_STORE_MAP_SIZE_KB: 1073741824;
36
39
  readonly NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824;
@@ -38,10 +41,16 @@ export declare const devnetConfig: {
38
41
  readonly PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824;
39
42
  readonly PUBLIC_OTEL_INCLUDE_METRICS: "aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_";
40
43
  readonly SENTINEL_ENABLED: true;
44
+ readonly OFFENSE_COLLECTION_ENABLED: true;
45
+ readonly AZTEC_SLOT_DURATION: 36;
41
46
  readonly AZTEC_EPOCH_DURATION: 8;
42
47
  readonly AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 1;
43
48
  readonly AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 1;
49
+ readonly AZTEC_TARGET_COMMITTEE_SIZE: 1;
50
+ readonly MAX_BLOCKS_PER_CHECKPOINT: 4;
44
51
  readonly AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 1;
52
+ readonly AZTEC_SLASHING_QUORUM: 17;
53
+ readonly AZTEC_GOVERNANCE_PROPOSER_QUORUM: 151;
45
54
  readonly L1_CHAIN_ID: 11155111;
46
55
  readonly TEST_ACCOUNTS: true;
47
56
  readonly SPONSORED_FPC: true;
@@ -70,7 +79,7 @@ export declare const devnetConfig: {
70
79
  readonly SLASH_INVALID_BLOCK_PENALTY: 10000000000000000000;
71
80
  readonly SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0;
72
81
  readonly SLASH_GRACE_PERIOD_L2_SLOTS: 0;
73
- readonly ENABLE_VERSION_CHECK: true;
82
+ readonly ENABLE_AUTO_SHUTDOWN: false;
74
83
  };
75
84
  export declare const testnetConfig: {
76
85
  readonly ETHEREUM_SLOT_DURATION: 12;
@@ -79,7 +88,7 @@ export declare const testnetConfig: {
79
88
  readonly AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2;
80
89
  readonly AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2;
81
90
  readonly AZTEC_EXIT_DELAY_SECONDS: 172800;
82
- readonly AZTEC_INBOX_LAG: 1;
91
+ readonly AZTEC_INBOX_LAG: 2;
83
92
  readonly AZTEC_PROOF_SUBMISSION_EPOCHS: 1;
84
93
  readonly AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000;
85
94
  readonly AZTEC_SLASHER_ENABLED: true;
@@ -87,6 +96,11 @@ export declare const testnetConfig: {
87
96
  readonly AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5;
88
97
  readonly AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2;
89
98
  readonly AZTEC_SLASHING_DISABLE_DURATION: 432000;
99
+ readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: 0;
100
+ readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE: 0;
101
+ readonly AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN: 48;
102
+ readonly AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT: 2;
103
+ readonly AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE: 48;
90
104
  readonly SLASH_OFFENSE_EXPIRATION_ROUNDS: 4;
91
105
  readonly SLASH_MAX_PAYLOAD_SIZE: 80;
92
106
  readonly SLASH_EXECUTE_ROUNDS_LOOK_BACK: 4;
@@ -96,7 +110,8 @@ export declare const testnetConfig: {
96
110
  readonly SEQ_MIN_TX_PER_BLOCK: 1;
97
111
  readonly SEQ_BUILD_CHECKPOINT_IF_EMPTY: true;
98
112
  readonly SEQ_BLOCK_DURATION_MS: 6000;
99
- readonly SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT: 36;
113
+ readonly MAX_BLOCKS_PER_CHECKPOINT: 10;
114
+ readonly CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 12;
100
115
  readonly DATA_STORE_MAP_SIZE_KB: 134217728;
101
116
  readonly ARCHIVER_STORE_MAP_SIZE_KB: 1073741824;
102
117
  readonly NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824;
@@ -104,6 +119,7 @@ export declare const testnetConfig: {
104
119
  readonly PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824;
105
120
  readonly PUBLIC_OTEL_INCLUDE_METRICS: "aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_";
106
121
  readonly SENTINEL_ENABLED: true;
122
+ readonly OFFENSE_COLLECTION_ENABLED: true;
107
123
  readonly AZTEC_SLOT_DURATION: 72;
108
124
  readonly AZTEC_ACTIVATION_THRESHOLD: 2e+23;
109
125
  readonly AZTEC_EJECTION_THRESHOLD: 1e+23;
@@ -114,10 +130,10 @@ export declare const testnetConfig: {
114
130
  readonly AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 100;
115
131
  readonly AZTEC_GOVERNANCE_PROPOSER_QUORUM: 60;
116
132
  readonly AZTEC_MANA_TARGET: 75000000;
117
- readonly AZTEC_PROVING_COST_PER_MANA: 25000000;
133
+ readonly AZTEC_PROVING_COST_PER_MANA: 12500000;
118
134
  readonly AZTEC_SLASH_AMOUNT_SMALL: 1e+23;
119
- readonly AZTEC_SLASH_AMOUNT_MEDIUM: 1e+23;
120
- readonly AZTEC_SLASH_AMOUNT_LARGE: 1e+23;
135
+ readonly AZTEC_SLASH_AMOUNT_MEDIUM: 2.5e+23;
136
+ readonly AZTEC_SLASH_AMOUNT_LARGE: 2.5e+23;
121
137
  readonly L1_CHAIN_ID: 11155111;
122
138
  readonly TEST_ACCOUNTS: false;
123
139
  readonly SPONSORED_FPC: false;
@@ -126,20 +142,20 @@ export declare const testnetConfig: {
126
142
  readonly PROVER_REAL_PROOFS: true;
127
143
  readonly P2P_MAX_PENDING_TX_COUNT: 1000;
128
144
  readonly P2P_TX_POOL_DELETE_TXS_AFTER_REORG: true;
129
- readonly SLASH_DATA_WITHHOLDING_PENALTY: 10000000000000000000;
145
+ readonly SLASH_DATA_WITHHOLDING_PENALTY: 0;
130
146
  readonly SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.9;
131
147
  readonly SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 1;
132
- readonly SLASH_INACTIVITY_PENALTY: 10000000000000000000;
133
- readonly SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 10000000000000000000;
134
- readonly SLASH_DUPLICATE_PROPOSAL_PENALTY: 10000000000000000000;
135
- readonly SLASH_DUPLICATE_ATTESTATION_PENALTY: 10000000000000000000;
136
- readonly SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 10000000000000000000;
137
- readonly SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 10000000000000000000;
138
- readonly SLASH_UNKNOWN_PENALTY: 10000000000000000000;
139
- readonly SLASH_INVALID_BLOCK_PENALTY: 10000000000000000000;
140
- readonly SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0;
148
+ readonly SLASH_INACTIVITY_PENALTY: 1e+23;
149
+ readonly SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 1e+23;
150
+ readonly SLASH_DUPLICATE_PROPOSAL_PENALTY: 2.5e+23;
151
+ readonly SLASH_DUPLICATE_ATTESTATION_PENALTY: 2.5e+23;
152
+ readonly SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 0;
153
+ readonly SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0;
154
+ readonly SLASH_UNKNOWN_PENALTY: 1e+23;
155
+ readonly SLASH_INVALID_BLOCK_PENALTY: 1e+23;
156
+ readonly SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 1e+23;
141
157
  readonly SLASH_GRACE_PERIOD_L2_SLOTS: 64;
142
- readonly ENABLE_VERSION_CHECK: true;
158
+ readonly ENABLE_AUTO_SHUTDOWN: false;
143
159
  };
144
160
  export declare const mainnetConfig: {
145
161
  readonly ETHEREUM_SLOT_DURATION: 12;
@@ -147,7 +163,7 @@ export declare const mainnetConfig: {
147
163
  readonly AZTEC_TARGET_COMMITTEE_SIZE: 48;
148
164
  readonly AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2;
149
165
  readonly AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2;
150
- readonly AZTEC_INBOX_LAG: 1;
166
+ readonly AZTEC_INBOX_LAG: 2;
151
167
  readonly AZTEC_PROOF_SUBMISSION_EPOCHS: 1;
152
168
  readonly AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000;
153
169
  readonly AZTEC_SLASHER_ENABLED: true;
@@ -162,7 +178,8 @@ export declare const mainnetConfig: {
162
178
  readonly SEQ_MIN_TX_PER_BLOCK: 1;
163
179
  readonly SEQ_BUILD_CHECKPOINT_IF_EMPTY: true;
164
180
  readonly SEQ_BLOCK_DURATION_MS: 6000;
165
- readonly SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT: 36;
181
+ readonly MAX_BLOCKS_PER_CHECKPOINT: 10;
182
+ readonly CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 12;
166
183
  readonly DATA_STORE_MAP_SIZE_KB: 134217728;
167
184
  readonly ARCHIVER_STORE_MAP_SIZE_KB: 1073741824;
168
185
  readonly NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824;
@@ -170,13 +187,14 @@ export declare const mainnetConfig: {
170
187
  readonly PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824;
171
188
  readonly PUBLIC_OTEL_INCLUDE_METRICS: "aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_";
172
189
  readonly SENTINEL_ENABLED: true;
190
+ readonly OFFENSE_COLLECTION_ENABLED: true;
173
191
  readonly AZTEC_SLOT_DURATION: 72;
174
192
  readonly AZTEC_ACTIVATION_THRESHOLD: 2e+23;
175
193
  readonly AZTEC_EJECTION_THRESHOLD: 1e+23;
176
194
  readonly AZTEC_LOCAL_EJECTION_THRESHOLD: 1.9e+23;
177
195
  readonly AZTEC_SLASH_AMOUNT_SMALL: 2e+21;
178
- readonly AZTEC_SLASH_AMOUNT_MEDIUM: 2e+21;
179
- readonly AZTEC_SLASH_AMOUNT_LARGE: 2e+21;
196
+ readonly AZTEC_SLASH_AMOUNT_MEDIUM: 5e+21;
197
+ readonly AZTEC_SLASH_AMOUNT_LARGE: 5e+21;
180
198
  readonly AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 34;
181
199
  readonly AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 28;
182
200
  readonly AZTEC_SLASHING_VETOER: "0xBbB4aF368d02827945748b28CD4b2D42e4A37480";
@@ -184,7 +202,7 @@ export declare const mainnetConfig: {
184
202
  readonly AZTEC_GOVERNANCE_PROPOSER_QUORUM: 600;
185
203
  readonly AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 1000;
186
204
  readonly AZTEC_MANA_TARGET: 75000000;
187
- readonly AZTEC_PROVING_COST_PER_MANA: 25000000;
205
+ readonly AZTEC_PROVING_COST_PER_MANA: 12500000;
188
206
  readonly AZTEC_EXIT_DELAY_SECONDS: 345600;
189
207
  readonly AZTEC_SLASHING_DISABLE_DURATION: 259200;
190
208
  readonly AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: 500;
@@ -203,19 +221,19 @@ export declare const mainnetConfig: {
203
221
  readonly P2P_TX_POOL_DELETE_TXS_AFTER_REORG: true;
204
222
  readonly PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: "";
205
223
  readonly PUBLIC_OTEL_COLLECT_FROM: "";
206
- readonly ENABLE_VERSION_CHECK: false;
224
+ readonly ENABLE_AUTO_SHUTDOWN: false;
207
225
  readonly SLASH_DATA_WITHHOLDING_PENALTY: 0;
208
- readonly SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.8;
226
+ readonly SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.7;
209
227
  readonly SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 2;
210
228
  readonly SLASH_INACTIVITY_PENALTY: 2e+21;
211
229
  readonly SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 2e+21;
212
- readonly SLASH_DUPLICATE_PROPOSAL_PENALTY: 2e+21;
213
- readonly SLASH_DUPLICATE_ATTESTATION_PENALTY: 2e+21;
214
- readonly SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 2e+21;
215
- readonly SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 2e+21;
230
+ readonly SLASH_DUPLICATE_PROPOSAL_PENALTY: 5e+21;
231
+ readonly SLASH_DUPLICATE_ATTESTATION_PENALTY: 5e+21;
232
+ readonly SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 0;
233
+ readonly SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0;
216
234
  readonly SLASH_UNKNOWN_PENALTY: 2e+21;
217
235
  readonly SLASH_INVALID_BLOCK_PENALTY: 2e+21;
218
- readonly SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0;
219
- readonly SLASH_GRACE_PERIOD_L2_SLOTS: 1200;
236
+ readonly SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 2e+21;
237
+ readonly SLASH_GRACE_PERIOD_L2_SLOTS: 8400;
220
238
  };
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvZ2VuZXJhdGVkL25ldHdvcmtzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGVBQU8sTUFBTSxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUVmLENBQUM7QUFFWCxlQUFPLE1BQU0sYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvRWhCLENBQUM7QUFFWCxlQUFPLE1BQU0sYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTRFaEIsQ0FBQyJ9
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvZ2VuZXJhdGVkL25ldHdvcmtzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGVBQU8sTUFBTSxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0ZmLENBQUM7QUFFWCxlQUFPLE1BQU0sYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkVoQixDQUFDO0FBRVgsZUFBTyxNQUFNLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThFaEIsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../../src/config/generated/networks.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEf,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEhB,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EhB,CAAC"}
1
+ {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../../src/config/generated/networks.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFf,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2EhB,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EhB,CAAC"}