@aztec-labs/cli 6.0.0-rc.3 → 6.0.0-rc.4

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 (89) hide show
  1. package/dest/cmds/infrastructure/index.d.ts +1 -1
  2. package/dest/cmds/infrastructure/index.d.ts.map +1 -1
  3. package/dest/cmds/infrastructure/index.js +3 -2
  4. package/dest/cmds/infrastructure/sequencers.d.ts +4 -1
  5. package/dest/cmds/infrastructure/sequencers.d.ts.map +1 -1
  6. package/dest/cmds/infrastructure/sequencers.js +10 -3
  7. package/dest/cmds/l1/deploy_l1_contracts_cmd.d.ts +1 -1
  8. package/dest/cmds/l1/deploy_l1_contracts_cmd.d.ts.map +1 -1
  9. package/dest/cmds/l1/deploy_l1_contracts_cmd.js +1 -0
  10. package/dest/cmds/l1/index.d.ts +1 -1
  11. package/dest/cmds/l1/index.d.ts.map +1 -1
  12. package/dest/cmds/l1/index.js +2 -1
  13. package/dest/cmds/l1/l1_rpc_test_utils.d.ts +10 -2
  14. package/dest/cmds/l1/l1_rpc_test_utils.d.ts.map +1 -1
  15. package/dest/cmds/l1/l1_rpc_test_utils.js +35 -1
  16. package/dest/cmds/l1/prover_stats.d.ts +1 -1
  17. package/dest/cmds/l1/prover_stats.d.ts.map +1 -1
  18. package/dest/cmds/l1/prover_stats.js +3 -4
  19. package/dest/cmds/l1/update_l1_validators.d.ts +3 -2
  20. package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -1
  21. package/dest/cmds/l1/update_l1_validators.js +6 -4
  22. package/dest/cmds/misc/generate_p2p_private_key.d.ts +1 -1
  23. package/dest/cmds/misc/generate_p2p_private_key.d.ts.map +1 -1
  24. package/dest/cmds/misc/generate_p2p_private_key.js +1 -0
  25. package/dest/cmds/validator_keys/add.d.ts +1 -1
  26. package/dest/cmds/validator_keys/add.d.ts.map +1 -1
  27. package/dest/cmds/validator_keys/add.js +14 -4
  28. package/dest/cmds/validator_keys/bls_key_derivation.d.ts +89 -0
  29. package/dest/cmds/validator_keys/bls_key_derivation.d.ts.map +1 -0
  30. package/dest/cmds/validator_keys/bls_key_derivation.js +122 -0
  31. package/dest/cmds/validator_keys/generate_bls_keypair.d.ts +3 -2
  32. package/dest/cmds/validator_keys/generate_bls_keypair.d.ts.map +1 -1
  33. package/dest/cmds/validator_keys/generate_bls_keypair.js +16 -3
  34. package/dest/cmds/validator_keys/index.d.ts +1 -1
  35. package/dest/cmds/validator_keys/index.d.ts.map +1 -1
  36. package/dest/cmds/validator_keys/index.js +14 -3
  37. package/dest/cmds/validator_keys/new.d.ts +3 -2
  38. package/dest/cmds/validator_keys/new.d.ts.map +1 -1
  39. package/dest/cmds/validator_keys/new.js +47 -33
  40. package/dest/cmds/validator_keys/shared.d.ts +28 -3
  41. package/dest/cmds/validator_keys/shared.d.ts.map +1 -1
  42. package/dest/cmds/validator_keys/shared.js +48 -7
  43. package/dest/cmds/validator_keys/staker.d.ts +6 -1
  44. package/dest/cmds/validator_keys/staker.d.ts.map +1 -1
  45. package/dest/cmds/validator_keys/staker.js +32 -0
  46. package/dest/config/chain_l2_config.d.ts +1 -1
  47. package/dest/config/chain_l2_config.d.ts.map +1 -1
  48. package/dest/config/chain_l2_config.js +1 -1
  49. package/dest/config/enrich_env.d.ts +1 -1
  50. package/dest/config/enrich_env.d.ts.map +1 -1
  51. package/dest/config/enrich_env.js +1 -1
  52. package/dest/config/get_l1_config.d.ts +1 -1
  53. package/dest/config/get_l1_config.d.ts.map +1 -1
  54. package/dest/config/get_l1_config.js +2 -1
  55. package/dest/config/network_config.d.ts +1 -1
  56. package/dest/config/network_config.d.ts.map +1 -1
  57. package/dest/config/network_config.js +4 -2
  58. package/dest/utils/aztec.d.ts +1 -1
  59. package/dest/utils/aztec.d.ts.map +1 -1
  60. package/dest/utils/aztec.js +1 -0
  61. package/dest/utils/commands.d.ts +1 -1
  62. package/dest/utils/commands.d.ts.map +1 -1
  63. package/dest/utils/commands.js +3 -1
  64. package/dest/utils/encoding.d.ts +1 -1
  65. package/dest/utils/encoding.d.ts.map +1 -1
  66. package/dest/utils/encoding.js +1 -0
  67. package/package.json +25 -25
  68. package/src/cmds/infrastructure/index.ts +13 -1
  69. package/src/cmds/infrastructure/sequencers.ts +14 -4
  70. package/src/cmds/l1/deploy_l1_contracts_cmd.ts +1 -0
  71. package/src/cmds/l1/index.ts +6 -0
  72. package/src/cmds/l1/l1_rpc_test_utils.ts +25 -2
  73. package/src/cmds/l1/prover_stats.ts +3 -2
  74. package/src/cmds/l1/update_l1_validators.ts +10 -4
  75. package/src/cmds/misc/generate_p2p_private_key.ts +1 -0
  76. package/src/cmds/validator_keys/add.ts +15 -2
  77. package/src/cmds/validator_keys/bls_key_derivation.ts +209 -0
  78. package/src/cmds/validator_keys/generate_bls_keypair.ts +26 -5
  79. package/src/cmds/validator_keys/index.ts +32 -0
  80. package/src/cmds/validator_keys/new.ts +50 -32
  81. package/src/cmds/validator_keys/shared.ts +70 -8
  82. package/src/cmds/validator_keys/staker.ts +56 -0
  83. package/src/config/chain_l2_config.ts +1 -0
  84. package/src/config/enrich_env.ts +1 -0
  85. package/src/config/get_l1_config.ts +2 -1
  86. package/src/config/network_config.ts +4 -2
  87. package/src/utils/aztec.ts +1 -0
  88. package/src/utils/commands.ts +3 -1
  89. package/src/utils/encoding.ts +1 -0
@@ -1,4 +1,4 @@
1
1
  import type { LogFn } from '@aztec-labs/foundation/log';
2
2
  import type { Command } from 'commander';
3
3
  export declare function injectCommands(program: Command, log: LogFn): Command;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2luZnJhc3RydWN0dXJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUl6Qyx3QkFBZ0IsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssV0E2QzFEIn0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2luZnJhc3RydWN0dXJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVV6Qyx3QkFBZ0IsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssV0FtRDFEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmds/infrastructure/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,WA6C1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmds/infrastructure/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,WAmD1D"}
@@ -1,16 +1,17 @@
1
- import { ETHEREUM_HOSTS, l1ChainIdOption, nodeOption, parseOptionalInteger } from '../../utils/commands.js';
1
+ import { ETHEREUM_HOSTS, l1ChainIdOption, nodeOption, parseEthereumAddress, parseOptionalInteger } from '../../utils/commands.js';
2
2
  export function injectCommands(program, log) {
3
3
  program.command('setup-protocol-contracts').description('Bootstrap the blockchain by initializing all the protocol contracts').addOption(nodeOption).option('--testAccounts', 'Deploy funded test accounts.').option('--json', 'Output the contract addresses in JSON format').action(async (options)=>{
4
4
  const { setupL2Contracts } = await import('./setup_l2_contract.js');
5
5
  await setupL2Contracts(options.nodeUrl, options.testAccounts, options.json, log);
6
6
  });
7
- program.command('sequencers').argument('<command>', 'Command to run: list, add, remove, who-next').argument('[who]', 'Who to add/remove').description('Manages or queries registered sequencers on the L1 rollup contract.').requiredOption('--l1-rpc-urls <string>', 'List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated)', (arg)=>arg.split(','), [
7
+ program.command('sequencers').argument('<command>', 'Command to run: list, add, remove, who-next').argument('[who]', 'Who to add/remove').option('--recipient <address>', 'For remove (required): address that receives the withdrawn stake; it cannot be changed once set', parseEthereumAddress).description('Manages or queries registered sequencers on the L1 rollup contract.').requiredOption('--l1-rpc-urls <string>', 'List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated)', (arg)=>arg.split(','), [
8
8
  ETHEREUM_HOSTS
9
9
  ]).option('-m, --mnemonic <string>', 'The mnemonic for the sender of the tx', 'test test test test test test test test test test test junk').option('--block-number <number>', 'Block number to query next sequencer for', parseOptionalInteger).addOption(nodeOption).addOption(l1ChainIdOption).action(async (command, who, options)=>{
10
10
  const { sequencers } = await import('./sequencers.js');
11
11
  await sequencers({
12
12
  command: command,
13
13
  who,
14
+ recipient: options.recipient,
14
15
  mnemonic: options.mnemonic,
15
16
  nodeUrl: options.nodeUrl,
16
17
  l1RpcUrls: options.l1RpcUrls,
@@ -1,7 +1,10 @@
1
+ import type { EthAddress } from '@aztec-labs/foundation/eth-address';
1
2
  import type { LogFn } from '@aztec-labs/foundation/log';
2
3
  export declare function sequencers(opts: {
3
4
  command: 'list' | 'add' | 'remove' | 'who-next' | 'flush';
4
5
  who?: string;
6
+ /** Address that receives the withdrawn stake. Required for `remove`. */
7
+ recipient?: EthAddress;
5
8
  mnemonic?: string;
6
9
  bn254SecretKey?: bigint;
7
10
  nodeUrl: string;
@@ -9,4 +12,4 @@ export declare function sequencers(opts: {
9
12
  chainId: number;
10
13
  log: LogFn;
11
14
  }): Promise<void>;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2Vycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NtZHMvaW5mcmFzdHJ1Y3R1cmUvc2VxdWVuY2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUl4RCx3QkFBc0IsVUFBVSxDQUFDLElBQUksRUFBRTtJQUNyQyxPQUFPLEVBQUUsTUFBTSxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQUcsVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUMxRCxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsR0FBRyxFQUFFLEtBQUssQ0FBQztDQUNaLGlCQXFHQSJ9
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2Vycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NtZHMvaW5mcmFzdHJ1Y3R1cmUvc2VxdWVuY2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUl4RCx3QkFBc0IsVUFBVSxDQUFDLElBQUksRUFBRTtJQUNyQyxPQUFPLEVBQUUsTUFBTSxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQUcsVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUMxRCxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYix3RUFBd0U7SUFDeEUsU0FBUyxDQUFDLEVBQUUsVUFBVSxDQUFDO0lBQ3ZCLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNsQixjQUFjLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDcEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixHQUFHLEVBQUUsS0FBSyxDQUFDO0NBQ1osaUJBNEdBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"sequencers.d.ts","sourceRoot":"","sources":["../../../src/cmds/infrastructure/sequencers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAIxD,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,KAAK,CAAC;CACZ,iBAqGA"}
1
+ {"version":3,"file":"sequencers.d.ts","sourceRoot":"","sources":["../../../src/cmds/infrastructure/sequencers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAIxD,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,KAAK,CAAC;CACZ,iBA4GA"}
@@ -7,7 +7,11 @@ import { GSEContract, RollupContract } from '@aztec-labs/ethereum/contracts';
7
7
  import { createPublicClient, createWalletClient, fallback, getContract, http } from 'viem';
8
8
  import { mnemonicToAccount } from 'viem/accounts';
9
9
  export async function sequencers(opts) {
10
- const { command, who: maybeWho, mnemonic, bn254SecretKey, nodeUrl, l1RpcUrls, chainId, log } = opts;
10
+ const { command, who: maybeWho, recipient, mnemonic, bn254SecretKey, nodeUrl, l1RpcUrls, chainId, log } = opts;
11
+ const missingRecipient = 'Missing --recipient: the address that receives the withdrawn stake';
12
+ if (command === 'remove' && !recipient) {
13
+ throw new Error(missingRecipient);
14
+ }
11
15
  const client = createAztecNodeClient(nodeUrl);
12
16
  const { l1ContractAddresses } = await client.getNodeInfo();
13
17
  const chain = createEthereumChain(l1RpcUrls, chainId);
@@ -95,10 +99,13 @@ export async function sequencers(opts) {
95
99
  if (!who || !writeableRollup) {
96
100
  throw new Error(`Missing sequencer address`);
97
101
  }
98
- log(`Removing ${who} as sequencer`);
102
+ if (!recipient) {
103
+ throw new Error(missingRecipient);
104
+ }
105
+ log(`Removing ${who} as sequencer, withdrawing its stake to ${recipient}`);
99
106
  const hash = await writeableRollup.write.initiateWithdraw([
100
107
  who,
101
- who
108
+ recipient.toString()
102
109
  ]);
103
110
  await publicClient.waitForTransactionReceipt({
104
111
  hash
@@ -1,4 +1,4 @@
1
1
  import type { EthAddress } from '@aztec-labs/aztec.js/addresses';
2
2
  import type { LogFn, Logger } from '@aztec-labs/foundation/log';
3
3
  export declare function deployL1ContractsCmd(rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, testAccounts: boolean, sponsoredFPC: boolean, json: boolean, initialValidators: EthAddress[], realVerifier: boolean, existingToken: EthAddress | undefined, log: LogFn, debugLogger: Logger): Promise<void>;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2wxX2NvbnRyYWN0c19jbWQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL2RlcGxveV9sMV9jb250cmFjdHNfY21kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQVFoRSx3QkFBc0Isb0JBQW9CLENBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsT0FBTyxFQUFFLE1BQU0sRUFDZixVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDOUIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsYUFBYSxFQUFFLE1BQU0sRUFDckIsWUFBWSxFQUFFLE9BQU8sRUFDckIsWUFBWSxFQUFFLE9BQU8sRUFDckIsSUFBSSxFQUFFLE9BQU8sRUFDYixpQkFBaUIsRUFBRSxVQUFVLEVBQUUsRUFDL0IsWUFBWSxFQUFFLE9BQU8sRUFDckIsYUFBYSxFQUFFLFVBQVUsR0FBRyxTQUFTLEVBQ3JDLEdBQUcsRUFBRSxLQUFLLEVBQ1YsV0FBVyxFQUFFLE1BQU0saUJBNkVwQiJ9
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X2wxX2NvbnRyYWN0c19jbWQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL2RlcGxveV9sMV9jb250cmFjdHNfY21kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQVNoRSx3QkFBc0Isb0JBQW9CLENBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsT0FBTyxFQUFFLE1BQU0sRUFDZixVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDOUIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsYUFBYSxFQUFFLE1BQU0sRUFDckIsWUFBWSxFQUFFLE9BQU8sRUFDckIsWUFBWSxFQUFFLE9BQU8sRUFDckIsSUFBSSxFQUFFLE9BQU8sRUFDYixpQkFBaUIsRUFBRSxVQUFVLEVBQUUsRUFDL0IsWUFBWSxFQUFFLE9BQU8sRUFDckIsYUFBYSxFQUFFLFVBQVUsR0FBRyxTQUFTLEVBQ3JDLEdBQUcsRUFBRSxLQUFLLEVBQ1YsV0FBVyxFQUFFLE1BQU0saUJBNkVwQiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"deploy_l1_contracts_cmd.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_l1_contracts_cmd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAKjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQhE,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,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,OAAO,EACb,iBAAiB,EAAE,UAAU,EAAE,EAC/B,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,UAAU,GAAG,SAAS,EACrC,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBA6EpB"}
1
+ {"version":3,"file":"deploy_l1_contracts_cmd.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_l1_contracts_cmd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAKjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAShE,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,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,OAAO,EACb,iBAAiB,EAAE,UAAU,EAAE,EAC/B,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,UAAU,GAAG,SAAS,EACrC,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBA6EpB"}
@@ -5,6 +5,7 @@ import { deployAztecL1Contracts } from '@aztec-labs/ethereum/deploy-aztec-l1-con
5
5
  import { SecretValue } from '@aztec-labs/foundation/config';
6
6
  import { protocolContractsHash } from '@aztec-labs/protocol-contracts';
7
7
  import { getGenesisValues } from '@aztec-labs/world-state/testing';
8
+ import { Buffer } from 'buffer';
8
9
  import { mnemonicToAccount } from 'viem/accounts';
9
10
  import { addLeadingHex } from '../../utils/aztec.js';
10
11
  import { getSponsoredFPCAddress } from '../../utils/setup_contracts.js';
@@ -1,4 +1,4 @@
1
1
  import type { LogFn, Logger } from '@aztec-labs/foundation/log';
2
2
  import { type Command } from 'commander';
3
3
  export declare function injectCommands(program: Command, log: LogFn, debugLogger: Logger): Command;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQVUsTUFBTSxXQUFXLENBQUM7QUF3QmpELHdCQUFnQixjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBbW1CL0UifQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxPQUFPLEVBQVUsTUFBTSxXQUFXLENBQUM7QUF3QmpELHdCQUFnQixjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBeW1CL0UifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AAwBjD,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAmmB/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AAwBjD,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAymB/E"}
@@ -186,7 +186,7 @@ Note: DEADLINE is a future Unix timestamp in seconds. Run append commands sequen
186
186
  debugLogger
187
187
  });
188
188
  });
189
- program.command('remove-l1-validator').description('Removes a validator to the L1 rollup contract.').addOption(l1RpcUrlsOption).option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY).option('-m, --mnemonic <string>', 'The mnemonic to use in deployment', 'test test test test test test test test test test test junk').addOption(l1ChainIdOption).option('--validator <address>', 'ethereum address of the validator', parseEthereumAddress).option('--rollup <address>', 'ethereum address of the rollup contract', parseEthereumAddress).action(async (options)=>{
189
+ program.command('remove-l1-validator').description('Removes a validator to the L1 rollup contract.').addOption(l1RpcUrlsOption).option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY).option('-m, --mnemonic <string>', 'The mnemonic to use in deployment', 'test test test test test test test test test test test junk').addOption(l1ChainIdOption).option('--validator <address>', 'ethereum address of the validator', parseEthereumAddress).requiredOption('--recipient <address>', 'Address that receives the withdrawn stake; it cannot be changed once set', parseEthereumAddress).option('--rollup <address>', 'ethereum address of the rollup contract', parseEthereumAddress).action(async (options)=>{
190
190
  const { removeL1Validator } = await import('./update_l1_validators.js');
191
191
  await removeL1Validator({
192
192
  rpcUrls: options.l1RpcUrls,
@@ -194,6 +194,7 @@ Note: DEADLINE is a future Unix timestamp in seconds. Run append commands sequen
194
194
  privateKey: options.privateKey,
195
195
  mnemonic: options.mnemonic,
196
196
  validatorAddress: options.validator,
197
+ recipientAddress: options.recipient,
197
198
  rollupAddress: options.rollup,
198
199
  log,
199
200
  debugLogger
@@ -1,4 +1,4 @@
1
- import type { EthAddress } from '@aztec-labs/foundation/eth-address';
1
+ import { EthAddress } from '@aztec-labs/foundation/eth-address';
2
2
  /**
3
3
  * Starts a JSON-RPC server that reports `chainId` and, when `canonicalRollup` is given, answers every `eth_call` with
4
4
  * that address and records the call. Any other method gets an error.
@@ -11,4 +11,12 @@ export declare function serveL1Rpc(chainId: number, canonicalRollup?: EthAddress
11
11
  }[];
12
12
  close: () => Promise<unknown>;
13
13
  }>;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfcnBjX3Rlc3RfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL2wxX3JwY190ZXN0X3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXJFOzs7R0FHRztBQUNILHdCQUFzQixVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsRUFBRSxVQUFVOzs7Ozs7O0dBa0M3RSJ9
14
+ /**
15
+ * Returns the `(attester, recipient)` arguments of the `initiateWithdraw` call that the latest block on an anvil chain
16
+ * sent to `rollup`, failing if that block holds no such call.
17
+ */
18
+ export declare function getLatestInitiateWithdrawArgs(rpcUrl: string, rollup: EthAddress): Promise<{
19
+ attester: EthAddress;
20
+ recipient: EthAddress;
21
+ }>;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfcnBjX3Rlc3RfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL2wxX3JwY190ZXN0X3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUtoRTs7O0dBR0c7QUFDSCx3QkFBc0IsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLEVBQUUsVUFBVTs7Ozs7OztHQWtDN0U7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsNkJBQTZCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVTs7O0dBYXJGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"l1_rpc_test_utils.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/l1_rpc_test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAIrE;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,UAAU;;;;;;;GAkC7E"}
1
+ {"version":3,"file":"l1_rpc_test_utils.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/l1_rpc_test_utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAKhE;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,UAAU;;;;;;;GAkC7E;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;;;GAarF"}
@@ -1,5 +1,9 @@
1
+ import { RollupAbi } from '@aztec-foundation/l1-artifacts';
2
+ import { getPublicClient } from '@aztec-labs/ethereum/client';
3
+ import { EthAddress } from '@aztec-labs/foundation/eth-address';
1
4
  import { createServer } from 'node:http';
2
- import { encodeAbiParameters } from 'viem';
5
+ import { decodeFunctionData, encodeAbiParameters } from 'viem';
6
+ import { foundry } from 'viem/chains';
3
7
  /**
4
8
  * Starts a JSON-RPC server that reports `chainId` and, when `canonicalRollup` is given, answers every `eth_call` with
5
9
  * that address and records the call. Any other method gets an error.
@@ -56,3 +60,33 @@ import { encodeAbiParameters } from 'viem';
56
60
  close: ()=>new Promise((resolve)=>server.close(resolve))
57
61
  };
58
62
  }
63
+ /**
64
+ * Returns the `(attester, recipient)` arguments of the `initiateWithdraw` call that the latest block on an anvil chain
65
+ * sent to `rollup`, failing if that block holds no such call.
66
+ */ export async function getLatestInitiateWithdrawArgs(rpcUrl, rollup) {
67
+ const client = getPublicClient({
68
+ l1RpcUrls: [
69
+ rpcUrl
70
+ ],
71
+ l1ChainId: foundry.id
72
+ });
73
+ const block = await client.getBlock({
74
+ includeTransactions: true
75
+ });
76
+ const tx = block.transactions.find(({ to })=>to !== null && rollup.equals(EthAddress.fromString(to)));
77
+ if (!tx) {
78
+ throw new Error(`No transaction to ${rollup} in the latest block`);
79
+ }
80
+ const decoded = decodeFunctionData({
81
+ abi: RollupAbi,
82
+ data: tx.input
83
+ });
84
+ if (decoded.functionName !== 'initiateWithdraw') {
85
+ throw new Error(`Expected initiateWithdraw, got ${decoded.functionName}`);
86
+ }
87
+ const [attester, recipient] = decoded.args;
88
+ return {
89
+ attester: EthAddress.fromString(attester),
90
+ recipient: EthAddress.fromString(recipient)
91
+ };
92
+ }
@@ -11,4 +11,4 @@ export declare function proverStats(opts: {
11
11
  provingTimeout: bigint | undefined;
12
12
  rawLogs: boolean;
13
13
  }): Promise<void>;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyX3N0YXRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kcy9sMS9wcm92ZXJfc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLEtBQUssS0FBSyxFQUE2QixNQUFNLDRCQUE0QixDQUFDO0FBTW5GLHdCQUFzQixXQUFXLENBQUMsSUFBSSxFQUFFO0lBQ3RDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNwQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLGVBQWUsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLE9BQU8sRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzVCLEdBQUcsRUFBRSxLQUFLLENBQUM7SUFDWCxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFFBQVEsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsY0FBYyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbkMsT0FBTyxFQUFFLE9BQU8sQ0FBQztDQUNsQixpQkEwSUEifQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyX3N0YXRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kcy9sMS9wcm92ZXJfc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLEtBQUssS0FBSyxFQUE2QixNQUFNLDRCQUE0QixDQUFDO0FBTW5GLHdCQUFzQixXQUFXLENBQUMsSUFBSSxFQUFFO0lBQ3RDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNwQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLGVBQWUsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLE9BQU8sRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzVCLEdBQUcsRUFBRSxLQUFLLENBQUM7SUFDWCxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFFBQVEsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsY0FBYyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbkMsT0FBTyxFQUFFLE9BQU8sQ0FBQztDQUNsQixpQkEwSUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"prover_stats.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/prover_stats.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,KAAK,EAA6B,MAAM,4BAA4B,CAAC;AAMnF,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,KAAK,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB,iBA0IA"}
1
+ {"version":3,"file":"prover_stats.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/prover_stats.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,KAAK,EAA6B,MAAM,4BAA4B,CAAC;AAMnF,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,KAAK,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB,iBA0IA"}
@@ -1,13 +1,14 @@
1
1
  import { RollupAbi } from '@aztec-foundation/l1-artifacts';
2
2
  import { retrieveL2ProofVerifiedEvents } from '@aztec-labs/archiver';
3
3
  import { createEthereumChain } from '@aztec-labs/ethereum/chain';
4
+ import { makeL1HttpTransport } from '@aztec-labs/ethereum/client';
4
5
  import { compactArray, mapValues, unique } from '@aztec-labs/foundation/collection';
5
6
  import { EthAddress } from '@aztec-labs/foundation/eth-address';
6
7
  import { createLogger } from '@aztec-labs/foundation/log';
7
8
  import { createAztecNodeClient } from '@aztec-labs/stdlib/interfaces/client';
8
9
  import chunk from 'lodash.chunk';
9
10
  import groupBy from 'lodash.groupby';
10
- import { createPublicClient, fallback, getAbiItem, getAddress, http } from 'viem';
11
+ import { createPublicClient, getAbiItem, getAddress } from 'viem';
11
12
  export async function proverStats(opts) {
12
13
  const debugLog = createLogger('cli:prover_stats');
13
14
  const { startBlock, chainId, l1RpcUrls, l1RollupAddress, batchSize, nodeUrl, provingTimeout, endBlock, rawLogs, log } = opts;
@@ -18,9 +19,7 @@ export async function proverStats(opts) {
18
19
  const chain = createEthereumChain(l1RpcUrls, chainId).chainInfo;
19
20
  const publicClient = createPublicClient({
20
21
  chain,
21
- transport: fallback(l1RpcUrls.map((url)=>http(url, {
22
- batch: false
23
- })))
22
+ transport: makeL1HttpTransport(l1RpcUrls)
24
23
  });
25
24
  const lastBlockNum = endBlock ?? await publicClient.getBlockNumber();
26
25
  debugLog.verbose(`Querying events on rollup at ${rollup.toString()} from ${startBlock} up to ${lastBlockNum}`);
@@ -42,8 +42,9 @@ export declare function addL1ValidatorViaRollup({ rpcUrls, chainId, privateKey,
42
42
  attesterAddress: EthAddress;
43
43
  moveWithLatestRollup: boolean;
44
44
  }): Promise<void>;
45
- export declare function removeL1Validator({ rpcUrls, chainId, privateKey, mnemonic, validatorAddress, rollupAddress, log, debugLogger }: RollupCommandArgs & LoggerArgs & {
45
+ export declare function removeL1Validator({ rpcUrls, chainId, privateKey, mnemonic, validatorAddress, recipientAddress, rollupAddress, log, debugLogger }: RollupCommandArgs & LoggerArgs & {
46
46
  validatorAddress: EthAddress;
47
+ recipientAddress: EthAddress;
47
48
  }): Promise<void>;
48
49
  /** Chain ID and registry published for a network; both are undefined when it publishes none, as for `local`. */
49
50
  export type AttesterExitNetwork = {
@@ -97,4 +98,4 @@ export declare function fastForwardEpochs({ rpcUrls, chainId, rollupAddress, num
97
98
  numEpochs: bigint;
98
99
  }): Promise<void>;
99
100
  export declare function debugRollup({ rpcUrls, chainId, rollupAddress, log }: RollupCommandArgs & LoggerArgs): Promise<void>;
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX2wxX3ZhbGlkYXRvcnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL3VwZGF0ZV9sMV92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFDTCxLQUFLLHlCQUF5QixFQUkvQixNQUFNLGdDQUFnQyxDQUFDO0FBSXhDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVoRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFZaEUsTUFBTSxXQUFXLGlCQUFpQjtJQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixVQUFVLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDcEIsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGFBQWEsRUFBRSxVQUFVLENBQUM7SUFDMUIsaUJBQWlCLENBQUMsRUFBRSxVQUFVLENBQUM7Q0FDaEM7QUFFRCxzRUFBc0U7QUFDdEUsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0lBQzlCLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNwQixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN2QixDQUFDO0FBRUYsTUFBTSxXQUFXLDhCQUE4QjtJQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixVQUFVLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDcEIsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLDBCQUEwQixFQUFFLFVBQVUsQ0FBQztDQUN4QztBQUVELE1BQU0sV0FBVyxVQUFVO0lBQ3pCLEdBQUcsRUFBRSxLQUFLLENBQUM7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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX2wxX3ZhbGlkYXRvcnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL3VwZGF0ZV9sMV92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFDTCxLQUFLLHlCQUF5QixFQUkvQixNQUFNLGdDQUFnQyxDQUFDO0FBS3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVoRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFZaEUsTUFBTSxXQUFXLGlCQUFpQjtJQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixVQUFVLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDcEIsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGFBQWEsRUFBRSxVQUFVLENBQUM7SUFDMUIsaUJBQWlCLENBQUMsRUFBRSxVQUFVLENBQUM7Q0FDaEM7QUFFRCxzRUFBc0U7QUFDdEUsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0lBQzlCLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNwQixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN2QixDQUFDO0FBRUYsTUFBTSxXQUFXLDhCQUE4QjtJQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixVQUFVLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDcEIsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLDBCQUEwQixFQUFFLFVBQVUsQ0FBQztDQUN4QztBQUVELE1BQU0sV0FBVyxVQUFVO0lBQ3pCLEdBQUcsRUFBRSxLQUFLLENBQUM7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
@@ -1 +1 @@
1
- {"version":3,"file":"update_l1_validators.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/update_l1_validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update_l1_validators.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/update_l1_validators.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { GSEContract, RegistryContract, RollupContract } from '@aztec-labs/ether
6
6
  import { createL1TxUtils } from '@aztec-labs/ethereum/l1-tx-utils';
7
7
  import { EthCheatCodes } from '@aztec-labs/ethereum/test';
8
8
  import { getActiveNetworkName } from '@aztec-labs/foundation/config';
9
+ import { getEnv } from '@aztec-labs/foundation/config/env';
9
10
  import { EthAddress } from '@aztec-labs/foundation/eth-address';
10
11
  import { Signature } from '@aztec-labs/foundation/eth-signature';
11
12
  import { DateProvider } from '@aztec-labs/foundation/timer';
@@ -174,7 +175,7 @@ export async function addL1ValidatorViaRollup({ rpcUrls, chainId, privateKey, mn
174
175
  }
175
176
  }
176
177
  }
177
- export async function removeL1Validator({ rpcUrls, chainId, privateKey, mnemonic, validatorAddress, rollupAddress, log, debugLogger }) {
178
+ export async function removeL1Validator({ rpcUrls, chainId, privateKey, mnemonic, validatorAddress, recipientAddress, rollupAddress, log, debugLogger }) {
178
179
  const dualLog = makeDualLog(log, debugLogger);
179
180
  const account = getAccount(privateKey, mnemonic);
180
181
  const chain = createEthereumChain(rpcUrls, chainId);
@@ -182,7 +183,7 @@ export async function removeL1Validator({ rpcUrls, chainId, privateKey, mnemonic
182
183
  const l1TxUtils = createL1TxUtils(l1Client, {
183
184
  logger: debugLogger
184
185
  });
185
- dualLog(`Removing validator ${validatorAddress.toString()} from rollup ${rollupAddress.toString()}`);
186
+ dualLog(`Removing validator ${validatorAddress.toString()} from rollup ${rollupAddress.toString()}, ` + `withdrawing its stake to ${recipientAddress.toString()}`);
186
187
  const { receipt } = await l1TxUtils.sendAndMonitorTransaction({
187
188
  to: rollupAddress.toString(),
188
189
  data: encodeFunctionData({
@@ -190,7 +191,7 @@ export async function removeL1Validator({ rpcUrls, chainId, privateKey, mnemonic
190
191
  functionName: 'initiateWithdraw',
191
192
  args: [
192
193
  validatorAddress.toString(),
193
- validatorAddress.toString()
194
+ recipientAddress.toString()
194
195
  ]
195
196
  })
196
197
  });
@@ -198,7 +199,8 @@ export async function removeL1Validator({ rpcUrls, chainId, privateKey, mnemonic
198
199
  }
199
200
  /** Loads the published config of the network selected with --network, which takes precedence over the environment. */ export async function getAttesterExitNetwork(name) {
200
201
  const networkName = getActiveNetworkName(name);
201
- const cacheDir = process.env.DATA_DIRECTORY ? join(process.env.DATA_DIRECTORY, 'cache') : undefined;
202
+ const { DATA_DIRECTORY } = getEnv();
203
+ const cacheDir = DATA_DIRECTORY ? join(DATA_DIRECTORY, 'cache') : undefined;
202
204
  const config = networkName === 'local' ? undefined : await getNetworkConfig(networkName, cacheDir);
203
205
  if (networkName !== 'local' && !config) {
204
206
  throw new Error(`Network ${networkName} has no published config`);
@@ -1,3 +1,3 @@
1
1
  import type { LogFn } from '@aztec-labs/foundation/log';
2
2
  export declare function generateP2PPrivateKey(log: LogFn): Promise<void>;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfcDJwX3ByaXZhdGVfa2V5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kcy9taXNjL2dlbmVyYXRlX3AycF9wcml2YXRlX2tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd4RCx3QkFBc0IscUJBQXFCLENBQUMsR0FBRyxFQUFFLEtBQUssaUJBS3JEIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfcDJwX3ByaXZhdGVfa2V5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kcy9taXNjL2dlbmVyYXRlX3AycF9wcml2YXRlX2tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUl4RCx3QkFBc0IscUJBQXFCLENBQUMsR0FBRyxFQUFFLEtBQUssaUJBS3JEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"generate_p2p_private_key.d.ts","sourceRoot":"","sources":["../../../src/cmds/misc/generate_p2p_private_key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAGxD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,KAAK,iBAKrD"}
1
+ {"version":3,"file":"generate_p2p_private_key.d.ts","sourceRoot":"","sources":["../../../src/cmds/misc/generate_p2p_private_key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAIxD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,KAAK,iBAKrD"}
@@ -1,4 +1,5 @@
1
1
  import { createSecp256k1PeerId } from '@libp2p/peer-id-factory';
2
+ import { Buffer } from 'buffer';
2
3
  export async function generateP2PPrivateKey(log) {
3
4
  const peerId = await createSecp256k1PeerId();
4
5
  const exportedPeerId = Buffer.from(peerId.privateKey).toString('hex');
@@ -2,4 +2,4 @@ import type { LogFn } from '@aztec-labs/foundation/log';
2
2
  import type { NewValidatorKeystoreOptions } from './new.js';
3
3
  export type AddValidatorKeysOptions = NewValidatorKeystoreOptions;
4
4
  export declare function addValidatorKeys(existing: string, options: AddValidatorKeysOptions, log: LogFn): Promise<void>;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kcy92YWxpZGF0b3Jfa2V5cy9hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFPeEQsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFXNUQsTUFBTSxNQUFNLHVCQUF1QixHQUFHLDJCQUEyQixDQUFDO0FBRWxFLHdCQUFzQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsS0FBSyxpQkFvR3BHIn0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kcy92YWxpZGF0b3Jfa2V5cy9hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFReEQsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFhNUQsTUFBTSxNQUFNLHVCQUF1QixHQUFHLDJCQUEyQixDQUFDO0FBRWxFLHdCQUFzQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsS0FBSyxpQkE4R3BHIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator_keys/add.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAOxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAW5D,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAElE,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,GAAG,EAAE,KAAK,iBAoGpG"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator_keys/add.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAQxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAa5D,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAElE,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,GAAG,EAAE,KAAK,iBA8GpG"}
@@ -2,7 +2,8 @@ import { loadKeystoreFile } from '@aztec-labs/node-keystore/loader';
2
2
  import { wordlist } from '@scure/bip39/wordlists/english.js';
3
3
  import { dirname, isAbsolute, join } from 'path';
4
4
  import { generateMnemonic } from 'viem/accounts';
5
- import { buildValidatorEntries, logValidatorSummaries, maybePrintJson, writeBlsBn254ToFile, writeEthJsonV3ToFile, writeKeystoreFile } from './shared.js';
5
+ import { resolveBlsKeyDerivationPolicy } from './bls_key_derivation.js';
6
+ import { buildValidatorEntries, getBlsDerivationPaths, getBlsKeyCandidates, logValidatorSummaries, maybePrintJson, writeBlsBn254ToFile, writeEthJsonV3ToFile, writeKeystoreFile } from './shared.js';
6
7
  import { validateBlsPathOptions, validatePublisherOptions, validateRemoteSignerOptions } from './utils.js';
7
8
  export async function addValidatorKeys(existing, options, log) {
8
9
  // validate bls-path inputs before proceeding with key generation
@@ -11,6 +12,7 @@ export async function addValidatorKeys(existing, options, log) {
11
12
  validatePublisherOptions(options);
12
13
  // validate remote signer options
13
14
  validateRemoteSignerOptions(options);
15
+ const blsKeyDerivation = resolveBlsKeyDerivationPolicy(options);
14
16
  const { dataDir, file, count, publisherCount = 0, publishers, mnemonic, accountIndex = 0, addressIndex, ikm, blsPath, json, feeRecipient: feeRecipientOpt, coinbase: coinbaseOpt, remoteSigner: remoteSignerOpt, password, encryptedKeystoreDir } = options;
15
17
  const validatorCount = typeof count === 'number' && Number.isFinite(count) && count > 0 ? Math.floor(count) : 1;
16
18
  const baseAddressIndex = addressIndex ?? 0;
@@ -41,7 +43,10 @@ export async function addValidatorKeys(existing, options, log) {
41
43
  blsPath,
42
44
  feeRecipient,
43
45
  coinbase,
44
- remoteSigner
46
+ remoteSigner,
47
+ blsKeyDerivation,
48
+ // `add` never prints the mnemonic it generates.
49
+ generatedMnemonic: mnemonic ? undefined : 'hidden'
45
50
  });
46
51
  keystore.validators.push(...validators);
47
52
  // If password provided, write ETH JSON V3 and BLS BN254 keystores and replace plaintext
@@ -61,7 +66,7 @@ export async function addValidatorKeys(existing, options, log) {
61
66
  await writeBlsBn254ToFile(keystore.validators, {
62
67
  outDir: targetDir,
63
68
  password,
64
- blsPath
69
+ derivationPaths: getBlsDerivationPaths(summaries)
65
70
  });
66
71
  }
67
72
  let outputPath = existing;
@@ -79,5 +84,10 @@ export async function addValidatorKeys(existing, options, log) {
79
84
  log(`Updated keystore ${outputPath} with ${validators.length} new validator(s)`);
80
85
  logValidatorSummaries(log, summaries);
81
86
  }
82
- maybePrintJson(log, !!json, keystore);
87
+ const blsKeyCandidates = getBlsKeyCandidates(summaries);
88
+ const outputData = blsKeyCandidates.length > 0 ? {
89
+ ...keystore,
90
+ blsKeyCandidates
91
+ } : keystore;
92
+ maybePrintJson(log, !!json, outputData);
83
93
  }
@@ -0,0 +1,89 @@
1
+ import { type ProofOfPossessionGasModel } from '@aztec-labs/ethereum/bn254';
2
+ import type { Hex } from '@aztec-labs/foundation/string';
3
+ /** What a BLS key derivation version checks: a key fits if its estimated minimum stipend is at most `budget`. */
4
+ export type BlsKeyDerivationVersion = {
5
+ version: number;
6
+ gasModel: ProofOfPossessionGasModel;
7
+ budget: number;
8
+ };
9
+ /**
10
+ * BLS key derivation v6. The gas model is a frozen copy of `AMSTERDAM_PROOF_OF_POSSESSION_GAS_MODEL` from
11
+ * `@aztec-labs/ethereum/bn254`. The budget is the 300,000 gas `proofOfPossessionGasLimit` that the v6 upgrade
12
+ * payload sets on the GSE, minus a 10% margin.
13
+ *
14
+ * With per-attempt probabilities 0.189030554816 of reaching the square root and 0.094515277408 of succeeding, about
15
+ * 5.8243e-6 of keys (1 in 171,694) estimate over the budget, so they move to a later candidate under v6.
16
+ *
17
+ * Frozen once a CLI release ships it: changing any value changes which BLS key `--bls-key-derivation-v6` selects for
18
+ * the same mnemonic and indices, so operators could no longer regenerate their keys. Add a new version instead.
19
+ */
20
+ export declare const BLS_KEY_DERIVATION_V6: BlsKeyDerivationVersion;
21
+ /** Version checked when no derivation flag is given. A future version gets its own flag next to `--bls-key-derivation-v6`. */
22
+ export declare const LATEST_BLS_KEY_DERIVATION: BlsKeyDerivationVersion;
23
+ /** Number of candidates tried per validator before key selection gives up. */
24
+ export declare const MAX_BLS_KEY_CANDIDATES = 256;
25
+ /**
26
+ * How a validator's BLS key is chosen among its candidates. The budget is `maxGas` when set (a stricter, user-chosen
27
+ * value), or the version's budget otherwise.
28
+ * - `check`: candidate 0, failing if it estimates over the budget (no `--bls-key-derivation-v6`).
29
+ * - `retry`: the first candidate within the budget (`--bls-key-derivation-v6`).
30
+ * - `none`: candidate 0, unchecked (`--skip-bls-key-gas-check`).
31
+ */
32
+ export type BlsKeyDerivationPolicy = {
33
+ mode: 'check';
34
+ version: BlsKeyDerivationVersion;
35
+ maxGas?: number;
36
+ } | {
37
+ mode: 'retry';
38
+ version: BlsKeyDerivationVersion;
39
+ maxGas?: number;
40
+ } | {
41
+ mode: 'none';
42
+ };
43
+ /** CLI options that choose the BLS key derivation policy. */
44
+ export type BlsKeyDerivationOptions = {
45
+ blsKeyDerivationV6?: boolean;
46
+ blsKeyDerivationMaxGas?: number;
47
+ skipBlsKeyGasCheck?: boolean;
48
+ };
49
+ /** A BLS key chosen for a validator, with the derivation path and candidate that produced it. */
50
+ export type SelectedBlsKey = {
51
+ privateKey: Hex<32>;
52
+ /** Full derivation path, including the candidate component when the candidate is not 0. */
53
+ path: string;
54
+ candidate: number;
55
+ /** The `--bls-key-derivation-max-gas` value, when it took part in selecting a candidate other than 0. */
56
+ maxGas?: number;
57
+ };
58
+ /**
59
+ * How the CLI handled a mnemonic it generated because none was passed: `shown` when it printed the mnemonic before key
60
+ * derivation, so the operator can pass it back, and `hidden` otherwise.
61
+ */
62
+ export type GeneratedMnemonic = 'shown' | 'hidden';
63
+ /** Thrown when candidate 0 estimates over the budget and no flag says what to do about it. */
64
+ export declare class BlsKeyOverGasBudgetError extends Error {
65
+ readonly path: string;
66
+ readonly estimatedGas: number;
67
+ readonly version: BlsKeyDerivationVersion;
68
+ readonly maxGas: number | undefined;
69
+ constructor(path: string, estimatedGas: number, version: BlsKeyDerivationVersion, maxGas: number | undefined, generatedMnemonic: GeneratedMnemonic | undefined);
70
+ }
71
+ /** Validates the BLS key derivation flags and turns them into a policy. */
72
+ export declare function resolveBlsKeyDerivationPolicy(options: BlsKeyDerivationOptions): BlsKeyDerivationPolicy;
73
+ /** Derivation path of a candidate: candidate 0 is the per-validator path itself, others append `/<candidate>`. */
74
+ export declare function blsCandidatePath(perValidatorPath: string, candidate: number): string;
75
+ /** Inputs to {@link selectBlsKey}. */
76
+ export type SelectBlsKeyInput = {
77
+ mnemonic?: string;
78
+ ikm?: string;
79
+ perValidatorPath: string;
80
+ /** Set when the CLI generated `mnemonic` in this run, to tell the operator how to keep or replace it on error. */
81
+ generatedMnemonic?: GeneratedMnemonic;
82
+ maxCandidates?: number;
83
+ };
84
+ /**
85
+ * Derives a validator's BLS key from `perValidatorPath` under the given policy. Only the mnemonic or IKM, the path
86
+ * and the policy decide the result, so re-running with the same inputs regenerates the same key.
87
+ */
88
+ export declare function selectBlsKey(policy: BlsKeyDerivationPolicy, input: SelectBlsKeyInput): SelectedBlsKey;
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxzX2tleV9kZXJpdmF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kcy92YWxpZGF0b3Jfa2V5cy9ibHNfa2V5X2Rlcml2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUsseUJBQXlCLEVBRy9CLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekQsaUhBQWlIO0FBQ2pILE1BQU0sTUFBTSx1QkFBdUIsR0FBRztJQUNwQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQztJQUNwQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0NBQ2hCLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsZUFBTyxNQUFNLHFCQUFxQixFQUFFLHVCQVVuQyxDQUFDO0FBRUYsOEhBQThIO0FBQzlILGVBQU8sTUFBTSx5QkFBeUIseUJBQXdCLENBQUM7QUFFL0QsOEVBQThFO0FBQzlFLGVBQU8sTUFBTSxzQkFBc0IsTUFBTSxDQUFDO0FBRTFDOzs7Ozs7R0FNRztBQUNILE1BQU0sTUFBTSxzQkFBc0IsR0FDOUI7SUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDO0lBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsR0FDcEU7SUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDO0lBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsR0FDcEU7SUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFBO0NBQUUsQ0FBQztBQUVyQiw2REFBNkQ7QUFDN0QsTUFBTSxNQUFNLHVCQUF1QixHQUFHO0lBQ3BDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzdCLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2hDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQzlCLENBQUM7QUFFRixpR0FBaUc7QUFDakcsTUFBTSxNQUFNLGNBQWMsR0FBRztJQUMzQixVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLDJGQUEyRjtJQUMzRixJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQix5R0FBeUc7SUFDekcsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2pCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxHQUFHLFFBQVEsQ0FBQztBQVNuRCw4RkFBOEY7QUFDOUYscUJBQWEsd0JBQXlCLFNBQVEsS0FBSzthQUUvQixJQUFJLEVBQUUsTUFBTTthQUNaLFlBQVksRUFBRSxNQUFNO2FBQ3BCLE9BQU8sRUFBRSx1QkFBdUI7YUFDaEMsTUFBTSxFQUFFLE1BQU0sR0FBRyxTQUFTO0lBSjVDLFlBQ2tCLElBQUksRUFBRSxNQUFNLEVBQ1osWUFBWSxFQUFFLE1BQU0sRUFDcEIsT0FBTyxFQUFFLHVCQUF1QixFQUNoQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDMUMsaUJBQWlCLEVBQUUsaUJBQWlCLEdBQUcsU0FBUyxFQWtCakQ7Q0FDRjtBQUVELDJFQUEyRTtBQUMzRSx3QkFBZ0IsNkJBQTZCLENBQUMsT0FBTyxFQUFFLHVCQUF1QixHQUFHLHNCQUFzQixDQWlDdEc7QUFFRCxrSEFBa0g7QUFDbEgsd0JBQWdCLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFcEY7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0lBQzlCLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNsQixHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYixnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFDekIsa0hBQWtIO0lBQ2xILGlCQUFpQixDQUFDLEVBQUUsaUJBQWlCLENBQUM7SUFDdEMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3hCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCx3QkFBZ0IsWUFBWSxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEdBQUcsY0FBYyxDQXVDckcifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bls_key_derivation.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator_keys/bls_key_derivation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAG/B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AAEzD,iHAAiH;AACjH,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,EAAE,uBAUnC,CAAC;AAEF,8HAA8H;AAC9H,eAAO,MAAM,yBAAyB,yBAAwB,CAAC;AAE/D,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,6DAA6D;AAC7D,MAAM,MAAM,uBAAuB,GAAG;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,iGAAiG;AACjG,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,yGAAyG;IACzG,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,CAAC;AASnD,8FAA8F;AAC9F,qBAAa,wBAAyB,SAAQ,KAAK;aAE/B,IAAI,EAAE,MAAM;aACZ,YAAY,EAAE,MAAM;aACpB,OAAO,EAAE,uBAAuB;aAChC,MAAM,EAAE,MAAM,GAAG,SAAS;IAJ5C,YACkB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1C,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,EAkBjD;CACF;AAED,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAiCtG;AAED,kHAAkH;AAClH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,sCAAsC;AACtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,kHAAkH;IAClH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAuCrG"}