@aztec/cli 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.77.0-testnet-ignition.21

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 (191) hide show
  1. package/README.md +1 -1
  2. package/dest/cmds/contracts/index.d.ts +4 -0
  3. package/dest/cmds/contracts/index.d.ts.map +1 -0
  4. package/dest/cmds/contracts/inspect_contract.d.ts +3 -0
  5. package/dest/cmds/contracts/inspect_contract.d.ts.map +1 -0
  6. package/dest/cmds/contracts/inspect_contract.js +3 -3
  7. package/dest/cmds/contracts/parse_parameter_struct.d.ts +3 -0
  8. package/dest/cmds/contracts/parse_parameter_struct.d.ts.map +1 -0
  9. package/dest/cmds/devnet/bootstrap_network.d.ts +3 -0
  10. package/dest/cmds/devnet/bootstrap_network.d.ts.map +1 -0
  11. package/dest/cmds/devnet/bootstrap_network.js +13 -10
  12. package/dest/cmds/devnet/faucet.d.ts +4 -0
  13. package/dest/cmds/devnet/faucet.d.ts.map +1 -0
  14. package/dest/cmds/devnet/index.d.ts +4 -0
  15. package/dest/cmds/devnet/index.d.ts.map +1 -0
  16. package/dest/cmds/devnet/index.js +5 -3
  17. package/dest/cmds/infrastructure/index.d.ts +4 -0
  18. package/dest/cmds/infrastructure/index.d.ts.map +1 -0
  19. package/dest/cmds/infrastructure/index.js +8 -6
  20. package/dest/cmds/infrastructure/sequencers.d.ts +13 -0
  21. package/dest/cmds/infrastructure/sequencers.d.ts.map +1 -0
  22. package/dest/cmds/infrastructure/sequencers.js +5 -5
  23. package/dest/cmds/infrastructure/setup_l2_contract.d.ts +3 -0
  24. package/dest/cmds/infrastructure/setup_l2_contract.d.ts.map +1 -0
  25. package/dest/cmds/infrastructure/setup_l2_contract.js +43 -0
  26. package/dest/cmds/l1/advance_epoch.d.ts +3 -0
  27. package/dest/cmds/l1/advance_epoch.d.ts.map +1 -0
  28. package/dest/cmds/l1/advance_epoch.js +3 -3
  29. package/dest/cmds/l1/assume_proven_through.d.ts +3 -0
  30. package/dest/cmds/l1/assume_proven_through.d.ts.map +1 -0
  31. package/dest/cmds/l1/assume_proven_through.js +8 -8
  32. package/dest/cmds/l1/bridge_erc20.d.ts +4 -0
  33. package/dest/cmds/l1/bridge_erc20.d.ts.map +1 -0
  34. package/dest/cmds/l1/bridge_erc20.js +3 -3
  35. package/dest/cmds/l1/create_l1_account.d.ts +3 -0
  36. package/dest/cmds/l1/create_l1_account.d.ts.map +1 -0
  37. package/dest/cmds/l1/deploy_l1_contracts.d.ts +4 -0
  38. package/dest/cmds/l1/deploy_l1_contracts.d.ts.map +1 -0
  39. package/dest/cmds/l1/deploy_l1_contracts.js +7 -3
  40. package/dest/cmds/l1/deploy_l1_verifier.d.ts +5 -0
  41. package/dest/cmds/l1/deploy_l1_verifier.d.ts.map +1 -0
  42. package/dest/cmds/l1/deploy_l1_verifier.js +4 -4
  43. package/dest/cmds/l1/deploy_new_rollup.d.ts +4 -0
  44. package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -0
  45. package/dest/cmds/l1/deploy_new_rollup.js +19 -0
  46. package/dest/cmds/l1/get_l1_addresses.d.ts +4 -0
  47. package/dest/cmds/l1/get_l1_addresses.d.ts.map +1 -0
  48. package/dest/cmds/l1/get_l1_addresses.js +18 -0
  49. package/dest/cmds/l1/get_l1_balance.d.ts +4 -0
  50. package/dest/cmds/l1/get_l1_balance.d.ts.map +1 -0
  51. package/dest/cmds/l1/get_l1_balance.js +4 -4
  52. package/dest/cmds/l1/governance_utils.d.ts +50 -0
  53. package/dest/cmds/l1/governance_utils.d.ts.map +1 -0
  54. package/dest/cmds/l1/governance_utils.js +85 -0
  55. package/dest/cmds/l1/index.d.ts +4 -0
  56. package/dest/cmds/l1/index.d.ts.map +1 -0
  57. package/dest/cmds/l1/index.js +108 -27
  58. package/dest/cmds/l1/prover_stats.d.ts +14 -0
  59. package/dest/cmds/l1/prover_stats.d.ts.map +1 -0
  60. package/dest/cmds/l1/prover_stats.js +6 -6
  61. package/dest/cmds/l1/update_l1_validators.d.ts +30 -0
  62. package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -0
  63. package/dest/cmds/l1/update_l1_validators.js +22 -22
  64. package/dest/cmds/misc/compute_selector.d.ts +3 -0
  65. package/dest/cmds/misc/compute_selector.d.ts.map +1 -0
  66. package/dest/cmds/misc/compute_selector.js +1 -1
  67. package/dest/cmds/misc/example_contracts.d.ts +3 -0
  68. package/dest/cmds/misc/example_contracts.d.ts.map +1 -0
  69. package/dest/cmds/misc/generate_bootnode_enr.d.ts +3 -0
  70. package/dest/cmds/misc/generate_bootnode_enr.d.ts.map +1 -0
  71. package/dest/cmds/misc/generate_bootnode_enr.js +5 -0
  72. package/dest/cmds/misc/generate_p2p_private_key.d.ts +3 -0
  73. package/dest/cmds/misc/generate_p2p_private_key.d.ts.map +1 -0
  74. package/dest/cmds/misc/generate_secret_and_hash.d.ts +3 -0
  75. package/dest/cmds/misc/generate_secret_and_hash.d.ts.map +1 -0
  76. package/dest/cmds/misc/generate_secret_key.d.ts +5 -0
  77. package/dest/cmds/misc/generate_secret_key.d.ts.map +1 -0
  78. package/dest/cmds/misc/index.d.ts +4 -0
  79. package/dest/cmds/misc/index.d.ts.map +1 -0
  80. package/dest/cmds/misc/index.js +9 -1
  81. package/dest/cmds/misc/setup_contracts.d.ts +7 -0
  82. package/dest/cmds/misc/setup_contracts.d.ts.map +1 -0
  83. package/dest/cmds/misc/setup_contracts.js +5 -3
  84. package/dest/cmds/misc/update/common.d.ts +17 -0
  85. package/dest/cmds/misc/update/common.d.ts.map +1 -0
  86. package/dest/cmds/misc/update/github.d.ts +4 -0
  87. package/dest/cmds/misc/update/github.d.ts.map +1 -0
  88. package/dest/cmds/misc/update/noir.d.ts +10 -0
  89. package/dest/cmds/misc/update/noir.d.ts.map +1 -0
  90. package/dest/cmds/misc/update/npm.d.ts +34 -0
  91. package/dest/cmds/misc/update/npm.d.ts.map +1 -0
  92. package/dest/cmds/misc/update/utils.d.ts +14 -0
  93. package/dest/cmds/misc/update/utils.d.ts.map +1 -0
  94. package/dest/cmds/misc/update.d.ts +3 -0
  95. package/dest/cmds/misc/update.d.ts.map +1 -0
  96. package/dest/cmds/pxe/add_contract.d.ts +5 -0
  97. package/dest/cmds/pxe/add_contract.d.ts.map +1 -0
  98. package/dest/cmds/pxe/add_contract.js +6 -4
  99. package/dest/cmds/pxe/block_number.d.ts +3 -0
  100. package/dest/cmds/pxe/block_number.d.ts.map +1 -0
  101. package/dest/cmds/pxe/get_account.d.ts +4 -0
  102. package/dest/cmds/pxe/get_account.d.ts.map +1 -0
  103. package/dest/cmds/pxe/get_accounts.d.ts +3 -0
  104. package/dest/cmds/pxe/get_accounts.d.ts.map +1 -0
  105. package/dest/cmds/pxe/get_block.d.ts +3 -0
  106. package/dest/cmds/pxe/get_block.d.ts.map +1 -0
  107. package/dest/cmds/pxe/get_contract_data.d.ts +4 -0
  108. package/dest/cmds/pxe/get_contract_data.d.ts.map +1 -0
  109. package/dest/cmds/pxe/get_contract_data.js +1 -1
  110. package/dest/cmds/pxe/get_current_base_fee.d.ts +3 -0
  111. package/dest/cmds/pxe/get_current_base_fee.d.ts.map +1 -0
  112. package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts +4 -0
  113. package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts.map +1 -0
  114. package/dest/cmds/pxe/get_logs.d.ts +4 -0
  115. package/dest/cmds/pxe/get_logs.d.ts.map +1 -0
  116. package/dest/cmds/pxe/get_node_info.d.ts +3 -0
  117. package/dest/cmds/pxe/get_node_info.d.ts.map +1 -0
  118. package/dest/cmds/pxe/get_node_info.js +2 -2
  119. package/dest/cmds/pxe/get_pxe_info.d.ts +3 -0
  120. package/dest/cmds/pxe/get_pxe_info.d.ts.map +1 -0
  121. package/dest/cmds/pxe/index.d.ts +4 -0
  122. package/dest/cmds/pxe/index.d.ts.map +1 -0
  123. package/dest/cmds/pxe/index.js +1 -1
  124. package/dest/utils/aztec.d.ts +68 -0
  125. package/dest/utils/aztec.d.ts.map +1 -0
  126. package/dest/utils/aztec.js +34 -23
  127. package/dest/utils/commands.d.ts +143 -0
  128. package/dest/utils/commands.d.ts.map +1 -0
  129. package/dest/utils/commands.js +2 -2
  130. package/dest/utils/encoding.d.ts +15 -0
  131. package/dest/utils/encoding.d.ts.map +1 -0
  132. package/dest/utils/encoding.js +6 -13
  133. package/dest/utils/github.d.ts +4 -0
  134. package/dest/utils/github.d.ts.map +1 -0
  135. package/dest/utils/index.d.ts +5 -0
  136. package/dest/utils/index.d.ts.map +1 -0
  137. package/dest/utils/inspect.d.ts +17 -0
  138. package/dest/utils/inspect.d.ts.map +1 -0
  139. package/dest/utils/inspect.js +4 -4
  140. package/package.json +21 -20
  141. package/src/cmds/contracts/index.ts +2 -2
  142. package/src/cmds/contracts/inspect_contract.ts +5 -5
  143. package/src/cmds/contracts/parse_parameter_struct.ts +2 -2
  144. package/src/cmds/devnet/bootstrap_network.ts +24 -12
  145. package/src/cmds/devnet/faucet.ts +2 -2
  146. package/src/cmds/devnet/index.ts +16 -8
  147. package/src/cmds/infrastructure/index.ts +12 -11
  148. package/src/cmds/infrastructure/sequencers.ts +10 -7
  149. package/src/cmds/infrastructure/setup_l2_contract.ts +47 -0
  150. package/src/cmds/l1/advance_epoch.ts +4 -4
  151. package/src/cmds/l1/assume_proven_through.ts +8 -14
  152. package/src/cmds/l1/bridge_erc20.ts +5 -6
  153. package/src/cmds/l1/create_l1_account.ts +1 -1
  154. package/src/cmds/l1/deploy_l1_contracts.ts +13 -5
  155. package/src/cmds/l1/deploy_l1_verifier.ts +7 -7
  156. package/src/cmds/l1/deploy_new_rollup.ts +58 -0
  157. package/src/cmds/l1/get_l1_addresses.ts +30 -0
  158. package/src/cmds/l1/get_l1_balance.ts +9 -6
  159. package/src/cmds/l1/governance_utils.ts +187 -0
  160. package/src/cmds/l1/index.ts +238 -97
  161. package/src/cmds/l1/prover_stats.ts +21 -11
  162. package/src/cmds/l1/update_l1_validators.ts +25 -25
  163. package/src/cmds/misc/compute_selector.ts +2 -2
  164. package/src/cmds/misc/example_contracts.ts +1 -1
  165. package/src/cmds/misc/generate_bootnode_enr.ts +12 -0
  166. package/src/cmds/misc/generate_p2p_private_key.ts +1 -1
  167. package/src/cmds/misc/generate_secret_and_hash.ts +1 -1
  168. package/src/cmds/misc/index.ts +25 -3
  169. package/src/cmds/misc/setup_contracts.ts +6 -4
  170. package/src/cmds/misc/update/noir.ts +2 -2
  171. package/src/cmds/misc/update/npm.ts +2 -2
  172. package/src/cmds/misc/update/utils.ts +1 -1
  173. package/src/cmds/misc/update.ts +2 -2
  174. package/src/cmds/pxe/add_contract.ts +7 -5
  175. package/src/cmds/pxe/block_number.ts +1 -1
  176. package/src/cmds/pxe/get_account.ts +2 -2
  177. package/src/cmds/pxe/get_accounts.ts +1 -1
  178. package/src/cmds/pxe/get_block.ts +1 -1
  179. package/src/cmds/pxe/get_contract_data.ts +5 -3
  180. package/src/cmds/pxe/get_current_base_fee.ts +1 -1
  181. package/src/cmds/pxe/get_l1_to_l2_message_witness.ts +1 -1
  182. package/src/cmds/pxe/get_logs.ts +2 -2
  183. package/src/cmds/pxe/get_node_info.ts +3 -3
  184. package/src/cmds/pxe/get_pxe_info.ts +1 -1
  185. package/src/cmds/pxe/index.ts +3 -3
  186. package/src/utils/aztec.ts +74 -44
  187. package/src/utils/commands.ts +4 -4
  188. package/src/utils/encoding.ts +7 -13
  189. package/src/utils/inspect.ts +8 -7
  190. package/dest/cmds/infrastructure/setup_protocol_contract.js +0 -31
  191. package/src/cmds/infrastructure/setup_protocol_contract.ts +0 -36
package/README.md CHANGED
@@ -38,7 +38,7 @@ These options are:
38
38
  - `SECRET_KEY` -> `-sk, --secret-key` for all commands that require an Aztec secret key.
39
39
  - `PUBLIC_KEY` -> `-k, --public-key` for all commands that require a public key.
40
40
  - `PXE_URL` -> `-u, --rpc-url` for commands that require a PXE
41
- - `ETHEREUM_RPC_HOST` -> `-u, --rpc-url` for `deploy-l1-contracts`.
41
+ - `ETHEREUM_HOSTS` -> `-u, --rpc-urls` or `--l1-rpc-urls` for `deploy-l1-contracts`.
42
42
 
43
43
  So if for example you are running your Private eXecution Environment (PXE) remotely you can do:
44
44
 
@@ -0,0 +1,4 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ import type { Command } from 'commander';
3
+ export declare function injectCommands(program: Command, log: LogFn, debugLogger: Logger): Command;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmds/contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WA6B/E"}
@@ -0,0 +1,3 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ export declare function inspectContract(contractArtifactFile: string, debugLogger: Logger, log: LogFn): Promise<void>;
3
+ //# sourceMappingURL=inspect_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect_contract.d.ts","sourceRoot":"","sources":["../../../src/cmds/contracts/inspect_contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAW3D,wBAAsB,eAAe,CAAC,oBAAoB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBA2BlG"}
@@ -1,10 +1,10 @@
1
- import { getContractClassFromArtifact } from '@aztec/circuits.js';
2
- import { FunctionSelector, decodeFunctionSignature, decodeFunctionSignatureWithParameterNames } from '@aztec/foundation/abi';
3
1
  import { sha256 } from '@aztec/foundation/crypto';
2
+ import { FunctionSelector, decodeFunctionSignature, decodeFunctionSignatureWithParameterNames } from '@aztec/stdlib/abi';
3
+ import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
4
4
  import { getContractArtifact } from '../../utils/aztec.js';
5
5
  export async function inspectContract(contractArtifactFile, debugLogger, log) {
6
6
  const contractArtifact = await getContractArtifact(contractArtifactFile, log);
7
- const contractFns = contractArtifact.functions.filter((f)=>f.name !== 'compute_note_hash_and_optionally_a_nullifier');
7
+ const contractFns = contractArtifact.functions;
8
8
  if (contractFns.length === 0) {
9
9
  log(`No functions found for contract ${contractArtifact.name}`);
10
10
  }
@@ -0,0 +1,3 @@
1
+ import type { LogFn } from '@aztec/foundation/log';
2
+ export declare function parseParameterStruct(encodedString: string, contractArtifactPath: string, parameterName: string, log: LogFn): Promise<void>;
3
+ //# sourceMappingURL=parse_parameter_struct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse_parameter_struct.d.ts","sourceRoot":"","sources":["../../../src/cmds/contracts/parse_parameter_struct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAMnD,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,MAAM,EAC5B,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,KAAK,iBAeX"}
@@ -0,0 +1,3 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ export declare function bootstrapNetwork(pxeUrl: string, l1Urls: string[], l1ChainId: string, l1PrivateKey: `0x${string}` | undefined, l1Mnemonic: string, addressIndex: number, json: boolean, log: LogFn, debugLog: Logger): Promise<void>;
3
+ //# sourceMappingURL=bootstrap_network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap_network.d.ts","sourceRoot":"","sources":["../../../src/cmds/devnet/bootstrap_network.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAiB3D,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,EACvC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,MAAM,iBA4EjB"}
@@ -1,27 +1,27 @@
1
- import { getSchnorrAccount } from '@aztec/accounts/schnorr';
2
- import { BatchCall, L1FeeJuicePortalManager, createCompatibleClient, retryUntil } from '@aztec/aztec.js';
3
- import { FEE_FUNDING_FOR_TESTER_ACCOUNT, Fq, Fr } from '@aztec/circuits.js';
1
+ import { getDeployedTestAccountsWallets } from '@aztec/accounts/testing';
2
+ import { BatchCall, Fr, L1FeeJuicePortalManager, createCompatibleClient, retryUntil } from '@aztec/aztec.js';
3
+ import { FEE_FUNDING_FOR_TESTER_ACCOUNT } from '@aztec/constants';
4
4
  import { createEthereumChain, createL1Clients, deployL1Contract } from '@aztec/ethereum';
5
5
  import { getContract } from 'viem';
6
- import { privateKeyToAccount } from 'viem/accounts';
6
+ import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
7
7
  const waitOpts = {
8
8
  timeout: 120,
9
9
  provenTimeout: 4800,
10
10
  interval: 1
11
11
  };
12
- export async function bootstrapNetwork(pxeUrl, l1Url, l1ChainId, l1PrivateKey, l1Mnemonic, json, log, debugLog) {
12
+ export async function bootstrapNetwork(pxeUrl, l1Urls, l1ChainId, l1PrivateKey, l1Mnemonic, addressIndex, json, log, debugLog) {
13
13
  const pxe = await createCompatibleClient(pxeUrl, debugLog);
14
- // setup a one-off account contract
15
- const account = await getSchnorrAccount(pxe, Fr.random(), Fq.random(), Fr.random());
16
- const wallet = await account.deploy().getWallet();
17
- const l1Clients = createL1Clients(l1Url, l1PrivateKey ? privateKeyToAccount(l1PrivateKey) : l1Mnemonic, createEthereumChain(l1Url, +l1ChainId).chainInfo);
14
+ const [wallet] = await getDeployedTestAccountsWallets(pxe);
15
+ const l1Clients = createL1Clients(l1Urls, l1PrivateKey ? privateKeyToAccount(l1PrivateKey) : // Note that this account needs to be funded on L1 !
16
+ mnemonicToAccount(l1Mnemonic, {
17
+ addressIndex
18
+ }), createEthereumChain(l1Urls, +l1ChainId).chainInfo);
18
19
  const { erc20Address, portalAddress } = await deployERC20(l1Clients);
19
20
  const { token, bridge } = await deployToken(wallet, portalAddress);
20
21
  await initPortal(pxe, l1Clients, erc20Address, portalAddress, bridge.address);
21
22
  const fpcAdmin = wallet.getAddress();
22
23
  const fpc = await deployFPC(wallet, token.address, fpcAdmin);
23
24
  const counter = await deployCounter(wallet);
24
- // NOTE: Disabling for now in order to get devnet running
25
25
  await fundFPC(counter.address, wallet, l1Clients, fpc.address, debugLog);
26
26
  if (json) {
27
27
  log(JSON.stringify({
@@ -182,12 +182,15 @@ async function fundFPC(counterAddress, wallet, l1Clients, fpcAddress, debugLog)
182
182
  const { claimAmount, claimSecret, messageLeafIndex, messageHash } = await feeJuicePortal.bridgeTokensPublic(fpcAddress, amount, true);
183
183
  await retryUntil(async ()=>await wallet.isL1ToL2MessageSynced(Fr.fromHexString(messageHash)), 'message sync', 600, 1);
184
184
  const counter = await CounterContract.at(counterAddress, wallet);
185
+ debugLog.info('Incrementing Counter');
185
186
  // TODO (alexg) remove this once sequencer builds blocks continuously
186
187
  // advance the chain
187
188
  await counter.methods.increment(wallet.getAddress(), wallet.getAddress()).send().wait(waitOpts);
188
189
  await counter.methods.increment(wallet.getAddress(), wallet.getAddress()).send().wait(waitOpts);
190
+ debugLog.info('Claiming FPC');
189
191
  await feeJuiceContract.methods.claim(fpcAddress, claimAmount, claimSecret, messageLeafIndex).send().wait({
190
192
  ...waitOpts,
191
193
  proven: true
192
194
  });
195
+ debugLog.info('Finished claiming FPC');
193
196
  }
@@ -0,0 +1,4 @@
1
+ import type { EthAddress } from '@aztec/foundation/eth-address';
2
+ import type { LogFn } from '@aztec/foundation/log';
3
+ export declare function dripFaucet(faucetUrl: string, asset: string, account: EthAddress, json: boolean, log: LogFn): Promise<void>;
4
+ //# sourceMappingURL=faucet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faucet.d.ts","sourceRoot":"","sources":["../../../src/cmds/devnet/faucet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,KAAK,GACT,OAAO,CAAC,IAAI,CAAC,CAqBf"}
@@ -0,0 +1,4 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ import type { Command } from 'commander';
3
+ export declare function injectCommands(program: Command, log: LogFn, debugLogger: Logger): Command;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmds/devnet/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAqD/E"}
@@ -1,8 +1,10 @@
1
- import { ETHEREUM_HOST, l1ChainIdOption, parseEthereumAddress, pxeOption } from '../../utils/commands.js';
1
+ import { ETHEREUM_HOSTS, l1ChainIdOption, parseEthereumAddress, pxeOption } from '../../utils/commands.js';
2
2
  export function injectCommands(program, log, debugLogger) {
3
- program.command('bootstrap-network').description('Bootstrap a new network').addOption(pxeOption).addOption(l1ChainIdOption).requiredOption('--l1-rpc-url <string>', 'Url of the ethereum host. Chain identifiers localhost and testnet can be used', ETHEREUM_HOST).option('--l1-private-key <string>', 'The private key to use for deployment', process.env.PRIVATE_KEY).option('-m, --mnemonic <string>', 'The mnemonic to use in deployment', 'test test test test test test test test test test test junk').option('--json', 'Output the result as JSON').action(async (options)=>{
3
+ program.command('bootstrap-network').description('Bootstrap a new network').addOption(pxeOption).addOption(l1ChainIdOption).requiredOption('--l1-rpc-urls <string>', 'List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated)', (arg)=>arg.split(','), [
4
+ ETHEREUM_HOSTS
5
+ ]).option('--l1-private-key <string>', 'The private key to use for deployment', process.env.PRIVATE_KEY).option('-m, --mnemonic <string>', 'The mnemonic to use in deployment', 'test test test test test test test test test test test junk').option('-ai, --address-index <number>', 'The address index to use when calculating an address', (arg)=>BigInt(arg), 0n).option('--json', 'Output the result as JSON').action(async (options)=>{
4
6
  const { bootstrapNetwork } = await import('./bootstrap_network.js');
5
- await bootstrapNetwork(options[pxeOption.attributeName()], options.l1RpcUrl, options[l1ChainIdOption.attributeName()], options.l1PrivateKey, options.mnemonic, options.json, log, debugLogger);
7
+ await bootstrapNetwork(options[pxeOption.attributeName()], options.l1RpcUrls, options[l1ChainIdOption.attributeName()], options.l1PrivateKey, options.mnemonic, options.addressIndex, options.json, log, debugLogger);
6
8
  });
7
9
  program.command('drip-faucet').description('Drip the faucet').requiredOption('-u, --faucet-url <string>', 'Url of the faucet', 'http://localhost:8082').requiredOption('-t, --token <string>', 'The asset to drip', 'eth').requiredOption('-a, --address <string>', 'The Ethereum address to drip to', parseEthereumAddress).option('--json', 'Output the result as JSON').action(async (options)=>{
8
10
  const { dripFaucet } = await import('./faucet.js');
@@ -0,0 +1,4 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ import type { Command } from 'commander';
3
+ export declare function injectCommands(program: Command, log: LogFn, debugLogger: Logger): Command;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cmds/infrastructure/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAgD/E"}
@@ -1,17 +1,19 @@
1
- import { ETHEREUM_HOST, l1ChainIdOption, parseOptionalInteger, pxeOption } from '../../utils/commands.js';
1
+ import { ETHEREUM_HOSTS, l1ChainIdOption, parseOptionalInteger, pxeOption } from '../../utils/commands.js';
2
2
  export function injectCommands(program, log, debugLogger) {
3
- program.command('setup-protocol-contracts').description('Bootstrap the blockchain by initializing all the protocol contracts').addOption(pxeOption).addOption(l1ChainIdOption).option('--json', 'Output the contract addresses in JSON format').option('--skipProofWait', "Don't wait for proofs to land.").action(async (options)=>{
4
- const { setupProtocolContracts } = await import('./setup_protocol_contract.js');
5
- await setupProtocolContracts(options.rpcUrl, options.l1ChainId, options.json, options.skipProofWait, log);
3
+ program.command('setup-protocol-contracts').description('Bootstrap the blockchain by initializing all the protocol contracts').addOption(pxeOption).option('--testAccounts', 'Deploy funded test accounts.').option('--json', 'Output the contract addresses in JSON format').option('--skipProofWait', "Don't wait for proofs to land.").action(async (options)=>{
4
+ const { setupL2Contracts } = await import('./setup_l2_contract.js');
5
+ await setupL2Contracts(options.rpcUrl, options.testAccounts, options.json, options.skipProofWait, 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-url <string>', 'Url of the ethereum host. Chain identifiers localhost and testnet can be used', ETHEREUM_HOST).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(pxeOption).addOption(l1ChainIdOption).action(async (command, who, options)=>{
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(','), [
8
+ ETHEREUM_HOSTS
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(pxeOption).addOption(l1ChainIdOption).action(async (command, who, options)=>{
8
10
  const { sequencers } = await import('./sequencers.js');
9
11
  await sequencers({
10
12
  command: command,
11
13
  who,
12
14
  mnemonic: options.mnemonic,
13
15
  rpcUrl: options.rpcUrl,
14
- l1RpcUrl: options.l1RpcUrl,
16
+ l1RpcUrls: options.l1RpcUrls.split(','),
15
17
  chainId: options.l1ChainId,
16
18
  blockNumber: options.blockNumber,
17
19
  log,
@@ -0,0 +1,13 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ export declare function sequencers(opts: {
3
+ command: 'list' | 'add' | 'remove' | 'who-next';
4
+ who?: string;
5
+ mnemonic?: string;
6
+ rpcUrl: string;
7
+ l1RpcUrls: string[];
8
+ chainId: number;
9
+ blockNumber?: number;
10
+ log: LogFn;
11
+ debugLogger: Logger;
12
+ }): Promise<void>;
13
+ //# sourceMappingURL=sequencers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequencers.d.ts","sourceRoot":"","sources":["../../../src/cmds/infrastructure/sequencers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAM3D,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,KAAK,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB,iBAoFA"}
@@ -1,21 +1,21 @@
1
1
  import { createCompatibleClient } from '@aztec/aztec.js';
2
2
  import { createEthereumChain, getL1ContractsConfigEnvVars } from '@aztec/ethereum';
3
3
  import { RollupAbi, TestERC20Abi } from '@aztec/l1-artifacts';
4
- import { createPublicClient, createWalletClient, getContract, http } from 'viem';
4
+ import { createPublicClient, createWalletClient, fallback, getContract, http } from 'viem';
5
5
  import { mnemonicToAccount } from 'viem/accounts';
6
6
  export async function sequencers(opts) {
7
- const { command, who: maybeWho, mnemonic, rpcUrl, l1RpcUrl, chainId, log, debugLogger } = opts;
7
+ const { command, who: maybeWho, mnemonic, rpcUrl, l1RpcUrls, chainId, log, debugLogger } = opts;
8
8
  const client = await createCompatibleClient(rpcUrl, debugLogger);
9
9
  const { l1ContractAddresses } = await client.getNodeInfo();
10
- const chain = createEthereumChain(l1RpcUrl, chainId);
10
+ const chain = createEthereumChain(l1RpcUrls, chainId);
11
11
  const publicClient = createPublicClient({
12
12
  chain: chain.chainInfo,
13
- transport: http(chain.rpcUrl)
13
+ transport: fallback(l1RpcUrls.map((url)=>http(url)))
14
14
  });
15
15
  const walletClient = mnemonic ? createWalletClient({
16
16
  account: mnemonicToAccount(mnemonic),
17
17
  chain: chain.chainInfo,
18
- transport: http(chain.rpcUrl)
18
+ transport: fallback(l1RpcUrls.map((url)=>http(url)))
19
19
  }) : undefined;
20
20
  const rollup = getContract({
21
21
  address: l1ContractAddresses.rollupAddress.toString(),
@@ -0,0 +1,3 @@
1
+ import type { LogFn } from '@aztec/foundation/log';
2
+ export declare function setupL2Contracts(rpcUrl: string, testAccounts: boolean, json: boolean, skipProofWait: boolean, log: LogFn): Promise<void>;
3
+ //# sourceMappingURL=setup_l2_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup_l2_contract.d.ts","sourceRoot":"","sources":["../../../src/cmds/infrastructure/setup_l2_contract.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKnD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,OAAO,EACtB,GAAG,EAAE,KAAK,iBAiCX"}
@@ -0,0 +1,43 @@
1
+ import { deployFundedSchnorrAccounts, getInitialTestAccounts } from '@aztec/accounts/testing';
2
+ import { SignerlessWallet, createPXEClient, makeFetch } from '@aztec/aztec.js';
3
+ import { jsonStringify } from '@aztec/foundation/json-rpc';
4
+ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
5
+ import { setupCanonicalL2FeeJuice } from '../misc/setup_contracts.js';
6
+ export async function setupL2Contracts(rpcUrl, testAccounts, json, skipProofWait, log) {
7
+ const waitOpts = {
8
+ timeout: 180,
9
+ interval: 1,
10
+ proven: !skipProofWait,
11
+ provenTimeout: 600
12
+ };
13
+ log('setupL2Contracts: Wait options' + jsonStringify(waitOpts));
14
+ log('setupL2Contracts: Creating PXE client...');
15
+ const pxe = createPXEClient(rpcUrl, {}, makeFetch([
16
+ 1,
17
+ 1,
18
+ 1,
19
+ 1,
20
+ 1
21
+ ], false));
22
+ const wallet = new SignerlessWallet(pxe);
23
+ log('setupL2Contracts: Getting fee juice portal address...');
24
+ // Deploy Fee Juice
25
+ const feeJuicePortalAddress = (await wallet.getNodeInfo()).l1ContractAddresses.feeJuicePortalAddress;
26
+ log('setupL2Contracts: Setting up fee juice portal...');
27
+ await setupCanonicalL2FeeJuice(wallet, feeJuicePortalAddress, waitOpts, log);
28
+ let deployedAccounts = [];
29
+ if (testAccounts) {
30
+ log('setupL2Contracts: Deploying test accounts...');
31
+ deployedAccounts = await getInitialTestAccounts();
32
+ await deployFundedSchnorrAccounts(pxe, deployedAccounts, waitOpts);
33
+ }
34
+ if (json) {
35
+ const toPrint = {
36
+ ...ProtocolContractAddress
37
+ };
38
+ deployedAccounts.forEach((a, i)=>{
39
+ toPrint[`testAccount${i}`] = a.address;
40
+ });
41
+ log(JSON.stringify(toPrint, null, 2));
42
+ }
43
+ }
@@ -0,0 +1,3 @@
1
+ import type { LogFn } from '@aztec/foundation/log';
2
+ export declare function advanceEpoch(l1RpcUrls: string[], rpcUrl: string, log: LogFn): Promise<void>;
3
+ //# sourceMappingURL=advance_epoch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advance_epoch.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/advance_epoch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAQjF"}
@@ -1,8 +1,8 @@
1
1
  import { CheatCodes, createPXEClient, makeFetch } from '@aztec/aztec.js';
2
- export async function advanceEpoch(l1RpcUrl, rpcUrl, log) {
3
- const pxe = createPXEClient(rpcUrl, makeFetch([], true));
2
+ export async function advanceEpoch(l1RpcUrls, rpcUrl, log) {
3
+ const pxe = createPXEClient(rpcUrl, {}, makeFetch([], true));
4
4
  const rollupAddress = await pxe.getNodeInfo().then((i)=>i.l1ContractAddresses.rollupAddress);
5
- const cheat = CheatCodes.createRollup(l1RpcUrl, {
5
+ const cheat = CheatCodes.createRollup(l1RpcUrls, {
6
6
  rollupAddress
7
7
  });
8
8
  await cheat.advanceToNextEpoch();
@@ -0,0 +1,3 @@
1
+ import type { LogFn } from '@aztec/foundation/log';
2
+ export declare function assumeProvenThrough(blockNumberOrLatest: number | undefined, l1RpcUrls: string[], rpcUrl: string, log: LogFn): Promise<void>;
3
+ //# sourceMappingURL=assume_proven_through.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assume_proven_through.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/assume_proven_through.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,wBAAsB,mBAAmB,CACvC,mBAAmB,EAAE,MAAM,GAAG,SAAS,EACvC,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,KAAK,iBAWX"}
@@ -1,12 +1,12 @@
1
- import { createPXEClient, makeFetch } from '@aztec/aztec.js';
2
- import { createEthereumChain, createL1Clients } from '@aztec/ethereum';
3
- import { setAssumeProvenThrough } from '../../utils/aztec.js';
4
- export async function assumeProvenThrough(blockNumberOrLatest, l1RpcUrl, rpcUrl, chainId, privateKey, mnemonic, log) {
5
- const chain = createEthereumChain(l1RpcUrl, chainId);
6
- const { walletClient } = createL1Clients(chain.rpcUrl, privateKey ?? mnemonic, chain.chainInfo);
7
- const pxe = createPXEClient(rpcUrl, makeFetch([], true));
1
+ import { EthCheatCodes, RollupCheatCodes, createPXEClient, makeFetch } from '@aztec/aztec.js';
2
+ export async function assumeProvenThrough(blockNumberOrLatest, l1RpcUrls, rpcUrl, log) {
3
+ const pxe = createPXEClient(rpcUrl, {}, makeFetch([], true));
8
4
  const rollupAddress = await pxe.getNodeInfo().then((i)=>i.l1ContractAddresses.rollupAddress);
9
5
  const blockNumber = blockNumberOrLatest ?? await pxe.getBlockNumber();
10
- await setAssumeProvenThrough(blockNumber, rollupAddress, walletClient);
6
+ const ethCheatCode = new EthCheatCodes(l1RpcUrls);
7
+ const rollupCheatCodes = new RollupCheatCodes(ethCheatCode, {
8
+ rollupAddress
9
+ });
10
+ await rollupCheatCodes.markAsProven(blockNumber);
11
11
  log(`Assumed proven through block ${blockNumber}`);
12
12
  }
@@ -0,0 +1,4 @@
1
+ import { type AztecAddress, type EthAddress } from '@aztec/aztec.js';
2
+ import type { LogFn, Logger } from '@aztec/foundation/log';
3
+ export declare function bridgeERC20(amount: bigint, recipient: AztecAddress, l1RpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, tokenAddress: EthAddress, portalAddress: EthAddress, privateTransfer: boolean, mint: boolean, json: boolean, log: LogFn, debugLogger: Logger): Promise<void>;
4
+ //# sourceMappingURL=bridge_erc20.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge_erc20.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/bridge_erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAqC,MAAM,iBAAiB,CAAC;AAExG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,UAAU,EACxB,aAAa,EAAE,UAAU,EACzB,eAAe,EAAE,OAAO,EACxB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBAgCpB"}
@@ -1,10 +1,10 @@
1
1
  import { L1ToL2TokenPortalManager } from '@aztec/aztec.js';
2
2
  import { createEthereumChain, createL1Clients } from '@aztec/ethereum';
3
3
  import { prettyPrintJSON } from '../../utils/commands.js';
4
- export async function bridgeERC20(amount, recipient, l1RpcUrl, chainId, privateKey, mnemonic, tokenAddress, portalAddress, privateTransfer, mint, json, log, debugLogger) {
4
+ export async function bridgeERC20(amount, recipient, l1RpcUrls, chainId, privateKey, mnemonic, tokenAddress, portalAddress, privateTransfer, mint, json, log, debugLogger) {
5
5
  // Prepare L1 client
6
- const chain = createEthereumChain(l1RpcUrl, chainId);
7
- const { publicClient, walletClient } = createL1Clients(chain.rpcUrl, privateKey ?? mnemonic, chain.chainInfo);
6
+ const chain = createEthereumChain(l1RpcUrls, chainId);
7
+ const { publicClient, walletClient } = createL1Clients(chain.rpcUrls, privateKey ?? mnemonic, chain.chainInfo);
8
8
  // Setup portal manager
9
9
  const manager = new L1ToL2TokenPortalManager(portalAddress, tokenAddress, publicClient, walletClient, debugLogger);
10
10
  let claimSecret;
@@ -0,0 +1,3 @@
1
+ import type { LogFn } from '@aztec/foundation/log';
2
+ export declare function createL1Account(json: boolean, log: LogFn): void;
3
+ //# sourceMappingURL=create_l1_account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_l1_account.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/create_l1_account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAMnD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,QAUxD"}
@@ -0,0 +1,4 @@
1
+ import type { EthAddress } from '@aztec/foundation/eth-address';
2
+ import type { LogFn, Logger } from '@aztec/foundation/log';
3
+ export declare function deployL1Contracts(rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, testAccounts: boolean, json: boolean, initialValidators: EthAddress[], log: LogFn, debugLogger: Logger): Promise<void>;
4
+ //# sourceMappingURL=deploy_l1_contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy_l1_contracts.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_l1_contracts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAK3D,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,OAAO,EACb,iBAAiB,EAAE,UAAU,EAAE,EAC/B,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBA2CpB"}
@@ -1,8 +1,12 @@
1
+ import { getInitialTestAccounts } from '@aztec/accounts/testing';
1
2
  import { getL1ContractsConfigEnvVars } from '@aztec/ethereum';
3
+ import { getGenesisValues } from '@aztec/world-state/testing';
2
4
  import { deployAztecContracts } from '../../utils/aztec.js';
3
- export async function deployL1Contracts(rpcUrl, chainId, privateKey, mnemonic, mnemonicIndex, salt, json, initialValidators, log, debugLogger) {
5
+ export async function deployL1Contracts(rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, salt, testAccounts, json, initialValidators, log, debugLogger) {
4
6
  const config = getL1ContractsConfigEnvVars();
5
- const { l1ContractAddresses } = await deployAztecContracts(rpcUrl, chainId, privateKey, mnemonic, mnemonicIndex, salt, initialValidators, config, debugLogger);
7
+ const initialFundedAccounts = testAccounts ? await getInitialTestAccounts() : [];
8
+ const { genesisBlockHash, genesisArchiveRoot } = await getGenesisValues(initialFundedAccounts.map((a)=>a.address));
9
+ const { l1ContractAddresses } = await deployAztecContracts(rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, salt, initialValidators, genesisArchiveRoot, genesisBlockHash, config, debugLogger);
6
10
  if (json) {
7
11
  log(JSON.stringify(Object.fromEntries(Object.entries(l1ContractAddresses).map(([k, v])=>[
8
12
  k,
@@ -20,6 +24,6 @@ export async function deployL1Contracts(rpcUrl, chainId, privateKey, mnemonic, m
20
24
  log(`RewardDistributor Address: ${l1ContractAddresses.rewardDistributorAddress.toString()}`);
21
25
  log(`GovernanceProposer Address: ${l1ContractAddresses.governanceProposerAddress.toString()}`);
22
26
  log(`Governance Address: ${l1ContractAddresses.governanceAddress.toString()}`);
23
- log(`SlashFactory Address: ${l1ContractAddresses.slashFactoryAddress.toString()}`);
27
+ log(`SlashFactory Address: ${l1ContractAddresses.slashFactoryAddress?.toString()}`);
24
28
  }
25
29
  }
@@ -0,0 +1,5 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ import { type Hex } from 'viem';
3
+ export declare function deployUltraHonkVerifier(rollupAddress: Hex | undefined, ethRpcUrls: string[], l1ChainId: string, privateKey: string | undefined, mnemonic: string, pxeRpcUrl: string, bbBinaryPath: string, bbWorkingDirectory: string, log: LogFn, debugLogger: Logger): Promise<void>;
4
+ export declare function deployMockVerifier(rollupAddress: Hex | undefined, ethRpcUrls: string[], l1ChainId: string, privateKey: string | undefined, mnemonic: string, pxeRpcUrl: string, log: LogFn, debugLogger: Logger): Promise<void>;
5
+ //# sourceMappingURL=deploy_l1_verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy_l1_verifier.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_l1_verifier.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAE7C,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,GAAG,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBAyCpB;AAED,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,GAAG,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBAmCpB"}
@@ -3,11 +3,11 @@ import { createEthereumChain, createL1Clients, deployL1Contract } from '@aztec/e
3
3
  import { HonkVerifierAbi, HonkVerifierBytecode } from '@aztec/l1-artifacts';
4
4
  import { InvalidOptionArgumentError } from 'commander';
5
5
  import { getContract } from 'viem';
6
- export async function deployUltraHonkVerifier(rollupAddress, ethRpcUrl, l1ChainId, privateKey, mnemonic, pxeRpcUrl, bbBinaryPath, bbWorkingDirectory, log, debugLogger) {
6
+ export async function deployUltraHonkVerifier(rollupAddress, ethRpcUrls, l1ChainId, privateKey, mnemonic, pxeRpcUrl, bbBinaryPath, bbWorkingDirectory, log, debugLogger) {
7
7
  if (!bbBinaryPath || !bbWorkingDirectory) {
8
8
  throw new InvalidOptionArgumentError('Missing path to bb binary and working directory');
9
9
  }
10
- const { publicClient, walletClient } = createL1Clients(ethRpcUrl, privateKey ?? mnemonic, createEthereumChain(ethRpcUrl, l1ChainId).chainInfo);
10
+ const { publicClient, walletClient } = createL1Clients(ethRpcUrls, privateKey ?? mnemonic, createEthereumChain(ethRpcUrls, l1ChainId).chainInfo);
11
11
  if (!rollupAddress && pxeRpcUrl) {
12
12
  const pxe = await createCompatibleClient(pxeRpcUrl, debugLogger);
13
13
  const { l1ContractAddresses } = await pxe.getNodeInfo();
@@ -29,8 +29,8 @@ export async function deployUltraHonkVerifier(rollupAddress, ethRpcUrl, l1ChainI
29
29
  ]);
30
30
  log(`Rollup accepts only real proofs now`);
31
31
  }
32
- export async function deployMockVerifier(rollupAddress, ethRpcUrl, l1ChainId, privateKey, mnemonic, pxeRpcUrl, log, debugLogger) {
33
- const { publicClient, walletClient } = createL1Clients(ethRpcUrl, privateKey ?? mnemonic, createEthereumChain(ethRpcUrl, l1ChainId).chainInfo);
32
+ export async function deployMockVerifier(rollupAddress, ethRpcUrls, l1ChainId, privateKey, mnemonic, pxeRpcUrl, log, debugLogger) {
33
+ const { publicClient, walletClient } = createL1Clients(ethRpcUrls, privateKey ?? mnemonic, createEthereumChain(ethRpcUrls, l1ChainId).chainInfo);
34
34
  const { MockVerifierAbi, MockVerifierBytecode, RollupAbi } = await import('@aztec/l1-artifacts');
35
35
  const { address: mockVerifierAddress } = await deployL1Contract(walletClient, publicClient, MockVerifierAbi, MockVerifierBytecode);
36
36
  log(`Deployed MockVerifier at ${mockVerifierAddress.toString()}`);
@@ -0,0 +1,4 @@
1
+ import type { EthAddress } from '@aztec/foundation/eth-address';
2
+ import type { LogFn, Logger } from '@aztec/foundation/log';
3
+ export declare function deployNewRollup(registryAddress: EthAddress, rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, testAccounts: boolean, json: boolean, initialValidators: EthAddress[], log: LogFn, debugLogger: Logger): Promise<void>;
4
+ //# sourceMappingURL=deploy_new_rollup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy_new_rollup.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_new_rollup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAK3D,wBAAsB,eAAe,CACnC,eAAe,EAAE,UAAU,EAC3B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,OAAO,EACb,iBAAiB,EAAE,UAAU,EAAE,EAC/B,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBAqCpB"}
@@ -0,0 +1,19 @@
1
+ import { getInitialTestAccounts } from '@aztec/accounts/testing';
2
+ import { getL1ContractsConfigEnvVars } from '@aztec/ethereum';
3
+ import { getGenesisValues } from '@aztec/world-state/testing';
4
+ import { deployNewRollupContracts } from '../../utils/aztec.js';
5
+ export async function deployNewRollup(registryAddress, rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, salt, testAccounts, json, initialValidators, log, debugLogger) {
6
+ const config = getL1ContractsConfigEnvVars();
7
+ const initialFundedAccounts = testAccounts ? await getInitialTestAccounts() : [];
8
+ const { genesisBlockHash, genesisArchiveRoot } = await getGenesisValues(initialFundedAccounts.map((a)=>a.address));
9
+ const { payloadAddress, rollup } = await deployNewRollupContracts(registryAddress, rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, salt, initialValidators, genesisArchiveRoot, genesisBlockHash, config, debugLogger);
10
+ if (json) {
11
+ log(JSON.stringify({
12
+ payloadAddress: payloadAddress.toString(),
13
+ rollupAddress: rollup.address
14
+ }, null, 2));
15
+ } else {
16
+ log(`Payload Address: ${payloadAddress.toString()}`);
17
+ log(`Rollup Address: ${rollup.address}`);
18
+ }
19
+ }
@@ -0,0 +1,4 @@
1
+ import { EthAddress } from '@aztec/aztec.js';
2
+ import type { LogFn } from '@aztec/foundation/log';
3
+ export declare function getL1Addresses(registryAddress: EthAddress, rollupVersion: number | bigint | 'canonical', rpcUrls: string[], chainId: number, json: boolean, log: LogFn): Promise<void>;
4
+ //# sourceMappingURL=get_l1_addresses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_l1_addresses.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/get_l1_addresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD,wBAAsB,cAAc,CAClC,eAAe,EAAE,UAAU,EAC3B,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,EAC5C,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,KAAK,iBAiBX"}
@@ -0,0 +1,18 @@
1
+ import { RegistryContract, createEthereumChain } from '@aztec/ethereum';
2
+ import { createPublicClient, fallback, http } from 'viem';
3
+ export async function getL1Addresses(registryAddress, rollupVersion, rpcUrls, chainId, json, log) {
4
+ const chain = createEthereumChain(rpcUrls, chainId);
5
+ const publicClient = createPublicClient({
6
+ chain: chain.chainInfo,
7
+ transport: fallback(rpcUrls.map((url)=>http(url))),
8
+ pollingInterval: 100
9
+ });
10
+ const addresses = await RegistryContract.collectAddresses(publicClient, registryAddress.toString(), rollupVersion);
11
+ if (json) {
12
+ log(JSON.stringify(addresses, null, 2));
13
+ } else {
14
+ for (const [key, value] of Object.entries(addresses)){
15
+ log(`${key}: ${value.toString()}`);
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,4 @@
1
+ import type { EthAddress } from '@aztec/foundation/eth-address';
2
+ import type { LogFn } from '@aztec/foundation/log';
3
+ export declare function getL1Balance(who: EthAddress, token: EthAddress | undefined, l1RpcUrls: string[], chainId: number, json: boolean, log: LogFn): Promise<void>;
4
+ //# sourceMappingURL=get_l1_balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_l1_balance.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/get_l1_balance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAOnD,wBAAsB,YAAY,CAChC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,KAAK,iBA4BX"}
@@ -1,12 +1,12 @@
1
1
  import { createEthereumChain } from '@aztec/ethereum';
2
2
  import { TestERC20Abi } from '@aztec/l1-artifacts';
3
- import { createPublicClient, getContract, http } from 'viem';
3
+ import { createPublicClient, fallback, getContract, http } from 'viem';
4
4
  import { prettyPrintJSON } from '../../utils/commands.js';
5
- export async function getL1Balance(who, token, l1RpcUrl, chainId, json, log) {
6
- const chain = createEthereumChain(l1RpcUrl, chainId);
5
+ export async function getL1Balance(who, token, l1RpcUrls, chainId, json, log) {
6
+ const chain = createEthereumChain(l1RpcUrls, chainId);
7
7
  const publicClient = createPublicClient({
8
8
  chain: chain.chainInfo,
9
- transport: http(chain.rpcUrl)
9
+ transport: fallback(l1RpcUrls.map((url)=>http(url)))
10
10
  });
11
11
  let balance = 0n;
12
12
  if (token) {
@@ -0,0 +1,50 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ export declare function depositGovernanceTokens({ registryAddress, rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, recipient, amount, debugLogger, mint, }: {
3
+ registryAddress: `0x${string}`;
4
+ rpcUrls: string[];
5
+ chainId: number;
6
+ privateKey: string | undefined;
7
+ mnemonic: string;
8
+ mnemonicIndex: number;
9
+ recipient: `0x${string}`;
10
+ amount: bigint;
11
+ debugLogger: Logger;
12
+ mint: boolean;
13
+ }): Promise<void>;
14
+ export declare function proposeWithLock({ payloadAddress, registryAddress, rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, json, debugLogger, log, }: {
15
+ payloadAddress: `0x${string}`;
16
+ registryAddress: `0x${string}`;
17
+ rpcUrls: string[];
18
+ chainId: number;
19
+ privateKey: string | undefined;
20
+ mnemonic: string;
21
+ mnemonicIndex: number;
22
+ debugLogger: Logger;
23
+ log: LogFn;
24
+ json: boolean;
25
+ }): Promise<void>;
26
+ export declare function voteOnGovernanceProposal({ proposalId, voteAmount, inFavor, waitTilActive, registryAddress, rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, debugLogger, }: {
27
+ proposalId: bigint;
28
+ voteAmount: bigint | undefined;
29
+ inFavor: boolean;
30
+ waitTilActive: boolean;
31
+ registryAddress: `0x${string}`;
32
+ rpcUrls: string[];
33
+ chainId: number;
34
+ privateKey: string | undefined;
35
+ mnemonic: string;
36
+ mnemonicIndex: number;
37
+ debugLogger: Logger;
38
+ }): Promise<void>;
39
+ export declare function executeGovernanceProposal({ proposalId, waitTilExecutable, registryAddress, rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, debugLogger, }: {
40
+ proposalId: bigint;
41
+ waitTilExecutable: boolean;
42
+ registryAddress: `0x${string}`;
43
+ rpcUrls: string[];
44
+ chainId: number;
45
+ privateKey: string | undefined;
46
+ mnemonic: string;
47
+ mnemonicIndex: number;
48
+ debugLogger: Logger;
49
+ }): Promise<void>;
50
+ //# sourceMappingURL=governance_utils.d.ts.map