@aztec/cli 0.17.0 → 0.77.0-testnet-ignition.17
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.
- package/README.md +10 -16
- package/dest/cmds/contracts/index.d.ts +4 -0
- package/dest/cmds/contracts/index.d.ts.map +1 -0
- package/dest/cmds/contracts/index.js +12 -0
- package/dest/cmds/contracts/inspect_contract.d.ts +3 -0
- package/dest/cmds/contracts/inspect_contract.d.ts.map +1 -0
- package/dest/cmds/contracts/inspect_contract.js +37 -0
- package/dest/cmds/{parse_parameter_struct.d.ts → contracts/parse_parameter_struct.d.ts} +1 -4
- package/dest/cmds/contracts/parse_parameter_struct.d.ts.map +1 -0
- package/dest/cmds/contracts/parse_parameter_struct.js +13 -0
- package/dest/cmds/devnet/bootstrap_network.d.ts +3 -0
- package/dest/cmds/devnet/bootstrap_network.d.ts.map +1 -0
- package/dest/cmds/devnet/bootstrap_network.js +196 -0
- package/dest/cmds/devnet/faucet.d.ts +4 -0
- package/dest/cmds/devnet/faucet.d.ts.map +1 -0
- package/dest/cmds/devnet/faucet.js +26 -0
- package/dest/cmds/devnet/index.d.ts +4 -0
- package/dest/cmds/devnet/index.d.ts.map +1 -0
- package/dest/cmds/devnet/index.js +14 -0
- package/dest/cmds/infrastructure/index.d.ts +4 -0
- package/dest/cmds/infrastructure/index.d.ts.map +1 -0
- package/dest/cmds/infrastructure/index.js +24 -0
- package/dest/cmds/infrastructure/sequencers.d.ts +13 -0
- package/dest/cmds/infrastructure/sequencers.d.ts.map +1 -0
- package/dest/cmds/infrastructure/sequencers.js +93 -0
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts +3 -0
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts.map +1 -0
- package/dest/cmds/infrastructure/setup_l2_contract.js +43 -0
- package/dest/cmds/l1/advance_epoch.d.ts +3 -0
- package/dest/cmds/l1/advance_epoch.d.ts.map +1 -0
- package/dest/cmds/l1/advance_epoch.js +10 -0
- package/dest/cmds/l1/assume_proven_through.d.ts +3 -0
- package/dest/cmds/l1/assume_proven_through.d.ts.map +1 -0
- package/dest/cmds/l1/assume_proven_through.js +12 -0
- package/dest/cmds/l1/bridge_erc20.d.ts +4 -0
- package/dest/cmds/l1/bridge_erc20.d.ts.map +1 -0
- package/dest/cmds/l1/bridge_erc20.js +31 -0
- package/dest/cmds/l1/create_l1_account.d.ts +3 -0
- package/dest/cmds/l1/create_l1_account.d.ts.map +1 -0
- package/dest/cmds/l1/create_l1_account.js +15 -0
- package/dest/cmds/l1/deploy_l1_contracts.d.ts +4 -0
- package/dest/cmds/l1/deploy_l1_contracts.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_l1_contracts.js +29 -0
- package/dest/cmds/l1/deploy_l1_verifier.d.ts +5 -0
- package/dest/cmds/l1/deploy_l1_verifier.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_l1_verifier.js +54 -0
- package/dest/cmds/l1/deploy_new_rollup.d.ts +4 -0
- package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_new_rollup.js +19 -0
- package/dest/cmds/l1/get_l1_addresses.d.ts +4 -0
- package/dest/cmds/l1/get_l1_addresses.d.ts.map +1 -0
- package/dest/cmds/l1/get_l1_addresses.js +18 -0
- package/dest/cmds/l1/get_l1_balance.d.ts +4 -0
- package/dest/cmds/l1/get_l1_balance.d.ts.map +1 -0
- package/dest/cmds/l1/get_l1_balance.js +33 -0
- package/dest/cmds/l1/governance_utils.d.ts +50 -0
- package/dest/cmds/l1/governance_utils.d.ts.map +1 -0
- package/dest/cmds/l1/governance_utils.js +85 -0
- package/dest/cmds/l1/index.d.ts +4 -0
- package/dest/cmds/l1/index.d.ts.map +1 -0
- package/dest/cmds/l1/index.js +208 -0
- package/dest/cmds/l1/prover_stats.d.ts +14 -0
- package/dest/cmds/l1/prover_stats.d.ts.map +1 -0
- package/dest/cmds/l1/prover_stats.js +145 -0
- package/dest/cmds/l1/update_l1_validators.d.ts +30 -0
- package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -0
- package/dest/cmds/l1/update_l1_validators.js +186 -0
- package/dest/cmds/misc/compute_selector.d.ts +3 -0
- package/dest/cmds/misc/compute_selector.d.ts.map +1 -0
- package/dest/cmds/misc/compute_selector.js +5 -0
- package/dest/cmds/misc/example_contracts.d.ts +3 -0
- package/dest/cmds/misc/example_contracts.d.ts.map +1 -0
- package/dest/cmds/misc/example_contracts.js +6 -0
- package/dest/cmds/misc/generate_bootnode_enr.d.ts +3 -0
- package/dest/cmds/misc/generate_bootnode_enr.d.ts.map +1 -0
- package/dest/cmds/misc/generate_bootnode_enr.js +5 -0
- package/dest/cmds/misc/generate_p2p_private_key.d.ts +3 -0
- package/dest/cmds/misc/generate_p2p_private_key.d.ts.map +1 -0
- package/dest/cmds/misc/generate_p2p_private_key.js +7 -0
- package/dest/cmds/misc/generate_secret_and_hash.d.ts +3 -0
- package/dest/cmds/misc/generate_secret_and_hash.d.ts.map +1 -0
- package/dest/cmds/misc/generate_secret_and_hash.js +11 -0
- package/dest/cmds/misc/generate_secret_key.d.ts +5 -0
- package/dest/cmds/misc/generate_secret_key.d.ts.map +1 -0
- package/dest/cmds/misc/generate_secret_key.js +6 -0
- package/dest/cmds/misc/index.d.ts +4 -0
- package/dest/cmds/misc/index.d.ts.map +1 -0
- package/dest/cmds/misc/index.js +44 -0
- package/dest/cmds/misc/setup_contracts.d.ts +7 -0
- package/dest/cmds/misc/setup_contracts.d.ts.map +1 -0
- package/dest/cmds/misc/setup_contracts.js +27 -0
- package/dest/cmds/misc/update/common.d.ts.map +1 -0
- package/dest/cmds/misc/update/common.js +3 -0
- package/dest/cmds/misc/update/github.d.ts.map +1 -0
- package/dest/cmds/misc/update/github.js +3 -0
- package/dest/{update → cmds/misc/update}/noir.d.ts +2 -2
- package/dest/cmds/misc/update/noir.d.ts.map +1 -0
- package/dest/cmds/misc/update/noir.js +45 -0
- package/dest/{update → cmds/misc/update}/npm.d.ts +3 -3
- package/dest/cmds/misc/update/npm.d.ts.map +1 -0
- package/dest/cmds/misc/update/npm.js +127 -0
- package/dest/cmds/misc/update/utils.d.ts +14 -0
- package/dest/cmds/misc/update/utils.d.ts.map +1 -0
- package/dest/cmds/misc/update/utils.js +38 -0
- package/dest/cmds/misc/update.d.ts +3 -0
- package/dest/cmds/misc/update.d.ts.map +1 -0
- package/dest/cmds/misc/update.js +52 -0
- package/dest/cmds/pxe/add_contract.d.ts +5 -0
- package/dest/cmds/pxe/add_contract.d.ts.map +1 -0
- package/dest/cmds/pxe/add_contract.js +29 -0
- package/dest/cmds/pxe/block_number.d.ts +3 -0
- package/dest/cmds/pxe/block_number.d.ts.map +1 -0
- package/dest/cmds/pxe/block_number.js +10 -0
- package/dest/cmds/pxe/get_account.d.ts +4 -0
- package/dest/cmds/pxe/get_account.d.ts.map +1 -0
- package/dest/cmds/pxe/get_account.js +10 -0
- package/dest/cmds/pxe/get_accounts.d.ts +3 -0
- package/dest/cmds/pxe/get_accounts.d.ts.map +1 -0
- package/dest/cmds/pxe/get_accounts.js +25 -0
- package/dest/cmds/pxe/get_block.d.ts +3 -0
- package/dest/cmds/pxe/get_block.d.ts.map +1 -0
- package/dest/cmds/pxe/get_block.js +9 -0
- package/dest/cmds/pxe/get_contract_data.d.ts +4 -0
- package/dest/cmds/pxe/get_contract_data.d.ts.map +1 -0
- package/dest/cmds/pxe/get_contract_data.js +31 -0
- package/dest/cmds/pxe/get_current_base_fee.d.ts +3 -0
- package/dest/cmds/pxe/get_current_base_fee.d.ts.map +1 -0
- package/dest/cmds/pxe/get_current_base_fee.js +7 -0
- package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts +4 -0
- package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts.map +1 -0
- package/dest/cmds/pxe/get_l1_to_l2_message_witness.js +11 -0
- package/dest/cmds/pxe/get_logs.d.ts +4 -0
- package/dest/cmds/pxe/get_logs.d.ts.map +1 -0
- package/dest/cmds/pxe/get_logs.js +51 -0
- package/dest/cmds/pxe/get_node_info.d.ts +3 -0
- package/dest/cmds/pxe/get_node_info.d.ts.map +1 -0
- package/dest/cmds/pxe/get_node_info.js +61 -0
- package/dest/cmds/pxe/get_pxe_info.d.ts +3 -0
- package/dest/cmds/pxe/get_pxe_info.d.ts.map +1 -0
- package/dest/cmds/pxe/get_pxe_info.js +11 -0
- package/dest/cmds/pxe/index.d.ts +4 -0
- package/dest/cmds/pxe/index.d.ts.map +1 -0
- package/dest/cmds/pxe/index.js +55 -0
- package/dest/utils/aztec.d.ts +68 -0
- package/dest/utils/aztec.d.ts.map +1 -0
- package/dest/utils/aztec.js +173 -0
- package/dest/{parse_args.d.ts → utils/commands.d.ts} +50 -12
- package/dest/utils/commands.d.ts.map +1 -0
- package/dest/utils/commands.js +303 -0
- package/dest/{encoding.d.ts → utils/encoding.d.ts} +1 -1
- package/dest/utils/encoding.d.ts.map +1 -0
- package/dest/utils/encoding.js +103 -0
- package/dest/utils/github.d.ts +4 -0
- package/dest/utils/github.d.ts.map +1 -0
- package/dest/utils/github.js +3 -0
- package/dest/utils/index.d.ts +5 -0
- package/dest/utils/index.d.ts.map +1 -0
- package/dest/utils/index.js +4 -0
- package/dest/utils/inspect.d.ts +17 -0
- package/dest/utils/inspect.d.ts.map +1 -0
- package/dest/utils/inspect.js +177 -0
- package/package.json +68 -22
- package/src/cmds/contracts/index.ts +34 -0
- package/src/cmds/contracts/inspect_contract.ts +51 -0
- package/src/cmds/contracts/parse_parameter_struct.ts +27 -0
- package/src/cmds/devnet/bootstrap_network.ts +318 -0
- package/src/cmds/devnet/faucet.ts +33 -0
- package/src/cmds/devnet/index.ts +60 -0
- package/src/cmds/infrastructure/index.ts +55 -0
- package/src/cmds/infrastructure/sequencers.ts +103 -0
- package/src/cmds/infrastructure/setup_l2_contract.ts +47 -0
- package/src/cmds/l1/advance_epoch.ts +12 -0
- package/src/cmds/l1/assume_proven_through.ts +19 -0
- package/src/cmds/l1/bridge_erc20.ts +52 -0
- package/src/cmds/l1/create_l1_account.ts +17 -0
- package/src/cmds/l1/deploy_l1_contracts.ts +63 -0
- package/src/cmds/l1/deploy_l1_verifier.ts +105 -0
- package/src/cmds/l1/deploy_new_rollup.ts +58 -0
- package/src/cmds/l1/get_l1_addresses.ts +30 -0
- package/src/cmds/l1/get_l1_balance.ts +44 -0
- package/src/cmds/l1/governance_utils.ts +187 -0
- package/src/cmds/l1/index.ts +556 -0
- package/src/cmds/l1/prover_stats.ts +202 -0
- package/src/cmds/l1/update_l1_validators.ts +238 -0
- package/src/cmds/misc/compute_selector.ts +7 -0
- package/src/cmds/misc/example_contracts.ts +12 -0
- package/src/cmds/misc/generate_bootnode_enr.ts +12 -0
- package/src/cmds/misc/generate_p2p_private_key.ts +10 -0
- package/src/cmds/misc/generate_secret_and_hash.ts +15 -0
- package/src/cmds/misc/generate_secret_key.ts +5 -0
- package/src/cmds/misc/index.ts +92 -0
- package/src/cmds/misc/setup_contracts.ts +40 -0
- package/src/cmds/misc/update/common.ts +16 -0
- package/src/cmds/misc/update/github.ts +3 -0
- package/src/cmds/misc/update/noir.ts +57 -0
- package/src/cmds/misc/update/npm.ts +154 -0
- package/src/cmds/misc/update/utils.ts +50 -0
- package/src/cmds/misc/update.ts +78 -0
- package/src/cmds/pxe/add_contract.ts +41 -0
- package/src/cmds/pxe/block_number.ts +9 -0
- package/src/cmds/pxe/get_account.ts +16 -0
- package/src/cmds/pxe/get_accounts.ts +35 -0
- package/src/cmds/pxe/get_block.ts +10 -0
- package/src/cmds/pxe/get_contract_data.ts +51 -0
- package/src/cmds/pxe/get_current_base_fee.ts +9 -0
- package/src/cmds/pxe/get_l1_to_l2_message_witness.ts +25 -0
- package/src/cmds/pxe/get_logs.ts +66 -0
- package/src/cmds/pxe/get_node_info.ts +71 -0
- package/src/cmds/pxe/get_pxe_info.ts +13 -0
- package/src/cmds/pxe/index.ts +170 -0
- package/src/utils/aztec.ts +248 -0
- package/src/utils/commands.ts +384 -0
- package/src/utils/encoding.ts +117 -0
- package/src/utils/github.ts +3 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/inspect.ts +208 -0
- package/dest/bin/index.d.ts +0 -3
- package/dest/bin/index.d.ts.map +0 -1
- package/dest/bin/index.js +0 -19
- package/dest/client.d.ts +0 -17
- package/dest/client.d.ts.map +0 -1
- package/dest/client.js +0 -60
- package/dest/cmds/add_contract.d.ts +0 -7
- package/dest/cmds/add_contract.d.ts.map +0 -1
- package/dest/cmds/add_contract.js +0 -15
- package/dest/cmds/add_note.d.ts +0 -8
- package/dest/cmds/add_note.d.ts.map +0 -1
- package/dest/cmds/add_note.js +0 -13
- package/dest/cmds/block_number.d.ts +0 -6
- package/dest/cmds/block_number.d.ts.map +0 -1
- package/dest/cmds/block_number.js +0 -10
- package/dest/cmds/call.d.ts +0 -7
- package/dest/cmds/call.d.ts.map +0 -1
- package/dest/cmds/call.js +0 -18
- package/dest/cmds/check_deploy.d.ts +0 -7
- package/dest/cmds/check_deploy.d.ts.map +0 -1
- package/dest/cmds/check_deploy.js +0 -16
- package/dest/cmds/compute_selector.d.ts +0 -6
- package/dest/cmds/compute_selector.d.ts.map +0 -1
- package/dest/cmds/compute_selector.js +0 -9
- package/dest/cmds/create_account.d.ts +0 -7
- package/dest/cmds/create_account.d.ts.map +0 -1
- package/dest/cmds/create_account.js +0 -31
- package/dest/cmds/deploy.d.ts +0 -7
- package/dest/cmds/deploy.d.ts.map +0 -1
- package/dest/cmds/deploy.js +0 -58
- package/dest/cmds/deploy_l1_contracts.d.ts +0 -6
- package/dest/cmds/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/cmds/deploy_l1_contracts.js +0 -15
- package/dest/cmds/example_contracts.d.ts +0 -6
- package/dest/cmds/example_contracts.d.ts.map +0 -1
- package/dest/cmds/example_contracts.js +0 -10
- package/dest/cmds/generate_p2p_private_key.d.ts +0 -6
- package/dest/cmds/generate_p2p_private_key.d.ts.map +0 -1
- package/dest/cmds/generate_p2p_private_key.js +0 -11
- package/dest/cmds/generate_private_key.d.ts +0 -6
- package/dest/cmds/generate_private_key.d.ts.map +0 -1
- package/dest/cmds/generate_private_key.js +0 -22
- package/dest/cmds/get_account.d.ts +0 -7
- package/dest/cmds/get_account.d.ts.map +0 -1
- package/dest/cmds/get_account.js +0 -15
- package/dest/cmds/get_accounts.d.ts +0 -6
- package/dest/cmds/get_accounts.d.ts.map +0 -1
- package/dest/cmds/get_accounts.js +0 -18
- package/dest/cmds/get_contract_data.d.ts +0 -7
- package/dest/cmds/get_contract_data.d.ts.map +0 -1
- package/dest/cmds/get_contract_data.js +0 -28
- package/dest/cmds/get_logs.d.ts +0 -7
- package/dest/cmds/get_logs.d.ts.map +0 -1
- package/dest/cmds/get_logs.js +0 -54
- package/dest/cmds/get_node_info.d.ts +0 -6
- package/dest/cmds/get_node_info.d.ts.map +0 -1
- package/dest/cmds/get_node_info.js +0 -15
- package/dest/cmds/get_recipient.d.ts +0 -7
- package/dest/cmds/get_recipient.d.ts.map +0 -1
- package/dest/cmds/get_recipient.js +0 -15
- package/dest/cmds/get_recipients.d.ts +0 -6
- package/dest/cmds/get_recipients.d.ts.map +0 -1
- package/dest/cmds/get_recipients.js +0 -18
- package/dest/cmds/get_tx_receipt.d.ts +0 -7
- package/dest/cmds/get_tx_receipt.d.ts.map +0 -1
- package/dest/cmds/get_tx_receipt.js +0 -16
- package/dest/cmds/inspect_contract.d.ts +0 -6
- package/dest/cmds/inspect_contract.d.ts.map +0 -1
- package/dest/cmds/inspect_contract.js +0 -19
- package/dest/cmds/parse_parameter_struct.d.ts.map +0 -1
- package/dest/cmds/parse_parameter_struct.js +0 -20
- package/dest/cmds/register_account.d.ts +0 -7
- package/dest/cmds/register_account.d.ts.map +0 -1
- package/dest/cmds/register_account.js +0 -13
- package/dest/cmds/register_recipient.d.ts +0 -7
- package/dest/cmds/register_recipient.d.ts.map +0 -1
- package/dest/cmds/register_recipient.js +0 -11
- package/dest/cmds/send.d.ts +0 -7
- package/dest/cmds/send.d.ts.map +0 -1
- package/dest/cmds/send.js +0 -27
- package/dest/cmds/unbox.d.ts +0 -7
- package/dest/cmds/unbox.d.ts.map +0 -1
- package/dest/cmds/unbox.js +0 -133
- package/dest/encoding.d.ts.map +0 -1
- package/dest/encoding.js +0 -114
- package/dest/github.d.ts.map +0 -1
- package/dest/github.js +0 -4
- package/dest/index.d.ts +0 -10
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -321
- package/dest/parse_args.d.ts.map +0 -1
- package/dest/parse_args.js +0 -233
- package/dest/test/mocks.d.ts +0 -3
- package/dest/test/mocks.d.ts.map +0 -1
- package/dest/test/mocks.js +0 -65
- package/dest/update/common.d.ts.map +0 -1
- package/dest/update/common.js +0 -2
- package/dest/update/noir.d.ts.map +0 -1
- package/dest/update/noir.js +0 -63
- package/dest/update/npm.d.ts.map +0 -1
- package/dest/update/npm.js +0 -125
- package/dest/update/update.d.ts +0 -3
- package/dest/update/update.d.ts.map +0 -1
- package/dest/update/update.js +0 -58
- package/dest/utils.d.ts +0 -70
- package/dest/utils.d.ts.map +0 -1
- package/dest/utils.js +0 -168
- /package/dest/{update → cmds/misc/update}/common.d.ts +0 -0
- /package/dest/{github.d.ts → cmds/misc/update/github.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -4,19 +4,13 @@ The Aztec CLI `aztec-cli` is a command-line interface (CLI) tool for interacting
|
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
1. In your terminal, download the sandbox by running
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
```shell
|
|
14
|
-
npm install -g @aztec/cli
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
This will install the `aztec-cli` globally, making it accessible from any location in your terminal.
|
|
9
|
+
```
|
|
10
|
+
bash -i <(curl -s https://install.aztec.network)
|
|
11
|
+
```
|
|
18
12
|
|
|
19
|
-
|
|
13
|
+
2. Verify the installation: After the installation is complete, run the following command to verify that `aztec-cli` is installed correctly:
|
|
20
14
|
|
|
21
15
|
```shell
|
|
22
16
|
aztec-cli --version
|
|
@@ -41,11 +35,10 @@ Replace `<command>` with the actual command you want to execute and `[options]`
|
|
|
41
35
|
Some options can be set globally as environment variables to avoid having to re-enter them every time you call `aztec-cli.`
|
|
42
36
|
These options are:
|
|
43
37
|
|
|
44
|
-
- `
|
|
38
|
+
- `SECRET_KEY` -> `-sk, --secret-key` for all commands that require an Aztec secret key.
|
|
45
39
|
- `PUBLIC_KEY` -> `-k, --public-key` for all commands that require a public key.
|
|
46
40
|
- `PXE_URL` -> `-u, --rpc-url` for commands that require a PXE
|
|
47
|
-
- `
|
|
48
|
-
- `ETHEREUM_RPC_HOST` -> `-u, --rpc-url` for `deploy-l1-contracts`.
|
|
41
|
+
- `ETHEREUM_HOSTS` -> `-u, --rpc-urls` or `--l1-rpc-urls` for `deploy-l1-contracts`.
|
|
49
42
|
|
|
50
43
|
So if for example you are running your Private eXecution Environment (PXE) remotely you can do:
|
|
51
44
|
|
|
@@ -76,7 +69,7 @@ aztec-cli deploy-l1-contracts [rpcUrl] [options]
|
|
|
76
69
|
|
|
77
70
|
Options:
|
|
78
71
|
|
|
79
|
-
- `-a, --
|
|
72
|
+
- `-a, --l1-chain-id <string>`: Chain ID for the Ethereum host.
|
|
80
73
|
- `-p, --private-key <string>`: The private key to use for deployment.
|
|
81
74
|
- `-m, --mnemonic <string>`: The mnemonic to use in deployment. Default: `test test test test test test test test test test test junk`.
|
|
82
75
|
|
|
@@ -395,6 +388,7 @@ Syntax:
|
|
|
395
388
|
```shell
|
|
396
389
|
aztec-cli get-logs --fromBlock <number>
|
|
397
390
|
```
|
|
391
|
+
|
|
398
392
|
Options:
|
|
399
393
|
|
|
400
394
|
- `-u, --rpc-url <string>`: URL of PXE Service. Default: `http://localhost:8080`.
|
|
@@ -428,7 +422,7 @@ This command retrieves and displays the current Aztec L2 block number.
|
|
|
428
422
|
|
|
429
423
|
### example-contracts
|
|
430
424
|
|
|
431
|
-
Lists the contracts available in [@aztec/noir-contracts](https://github.com/AztecProtocol/aztec-packages/tree/master/
|
|
425
|
+
Lists the contracts available in [@aztec/noir-contracts](https://github.com/AztecProtocol/aztec-packages/tree/master/noir-contracts)
|
|
432
426
|
|
|
433
427
|
Syntax:
|
|
434
428
|
|
|
@@ -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,12 @@
|
|
|
1
|
+
export function injectCommands(program, log, debugLogger) {
|
|
2
|
+
program.command('inspect-contract').description('Shows list of external callable functions for a contract').argument('<contractArtifactFile>', `A compiled Noir contract's artifact in JSON format or name of a contract artifact exported by @aztec/noir-contracts.js`).action(async (contractArtifactFile)=>{
|
|
3
|
+
const { inspectContract } = await import('./inspect_contract.js');
|
|
4
|
+
await inspectContract(contractArtifactFile, debugLogger, log);
|
|
5
|
+
});
|
|
6
|
+
// Helper for users to decode hex strings into structs if needed.
|
|
7
|
+
program.command('parse-parameter-struct').description("Helper for parsing an encoded string into a contract's parameter struct.").argument('<encodedString>', 'The encoded hex string').requiredOption('-c, --contract-artifact <fileLocation>', "A compiled Aztec.nr contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts.js").requiredOption('-p, --parameter <parameterName>', 'The name of the struct parameter to decode into').action(async (encodedString, options)=>{
|
|
8
|
+
const { parseParameterStruct } = await import('./parse_parameter_struct.js');
|
|
9
|
+
await parseParameterStruct(encodedString, options.contractArtifact, options.parameter, log);
|
|
10
|
+
});
|
|
11
|
+
return program;
|
|
12
|
+
}
|
|
@@ -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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { sha256 } from '@aztec/foundation/crypto';
|
|
2
|
+
import { FunctionSelector, decodeFunctionSignature, decodeFunctionSignatureWithParameterNames } from '@aztec/stdlib/abi';
|
|
3
|
+
import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
4
|
+
import { getContractArtifact } from '../../utils/aztec.js';
|
|
5
|
+
export async function inspectContract(contractArtifactFile, debugLogger, log) {
|
|
6
|
+
const contractArtifact = await getContractArtifact(contractArtifactFile, log);
|
|
7
|
+
const contractFns = contractArtifact.functions;
|
|
8
|
+
if (contractFns.length === 0) {
|
|
9
|
+
log(`No functions found for contract ${contractArtifact.name}`);
|
|
10
|
+
}
|
|
11
|
+
const contractClass = await getContractClassFromArtifact(contractArtifact);
|
|
12
|
+
const bytecodeLengthInFields = 1 + Math.ceil(contractClass.packedBytecode.length / 31);
|
|
13
|
+
log(`Contract class details:`);
|
|
14
|
+
log(`\tidentifier: ${contractClass.id.toString()}`);
|
|
15
|
+
log(`\tartifact hash: ${contractClass.artifactHash.toString()}`);
|
|
16
|
+
log(`\tprivate function tree root: ${contractClass.privateFunctionsRoot.toString()}`);
|
|
17
|
+
log(`\tpublic bytecode commitment: ${contractClass.publicBytecodeCommitment.toString()}`);
|
|
18
|
+
log(`\tpublic bytecode length: ${contractClass.packedBytecode.length} bytes (${bytecodeLengthInFields} fields)`);
|
|
19
|
+
const externalFunctions = contractFns.filter((f)=>!f.isInternal);
|
|
20
|
+
if (externalFunctions.length > 0) {
|
|
21
|
+
log(`\nExternal functions:`);
|
|
22
|
+
await Promise.all(externalFunctions.map((f)=>logFunction(f, log)));
|
|
23
|
+
}
|
|
24
|
+
const internalFunctions = contractFns.filter((f)=>f.isInternal);
|
|
25
|
+
if (internalFunctions.length > 0) {
|
|
26
|
+
log(`\nInternal functions:`);
|
|
27
|
+
await Promise.all(internalFunctions.map((f)=>logFunction(f, log)));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function logFunction(fn, log) {
|
|
31
|
+
const signatureWithParameterNames = decodeFunctionSignatureWithParameterNames(fn.name, fn.parameters);
|
|
32
|
+
const signature = decodeFunctionSignature(fn.name, fn.parameters);
|
|
33
|
+
const selector = await FunctionSelector.fromSignature(signature);
|
|
34
|
+
const bytecodeSize = fn.bytecode.length;
|
|
35
|
+
const bytecodeHash = sha256(fn.bytecode).toString('hex');
|
|
36
|
+
log(`${fn.functionType} ${signatureWithParameterNames} \n\tfunction signature: ${signature}\n\tselector: ${selector}\n\tbytecode: ${bytecodeSize} bytes (sha256 ${bytecodeHash})`);
|
|
37
|
+
}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { LogFn } from '@aztec/foundation/log';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
*/
|
|
1
|
+
import type { LogFn } from '@aztec/foundation/log';
|
|
5
2
|
export declare function parseParameterStruct(encodedString: string, contractArtifactPath: string, parameterName: string, log: LogFn): Promise<void>;
|
|
6
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,13 @@
|
|
|
1
|
+
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
2
|
+
import { getContractArtifact } from '../../utils/aztec.js';
|
|
3
|
+
import { parseStructString } from '../../utils/encoding.js';
|
|
4
|
+
export async function parseParameterStruct(encodedString, contractArtifactPath, parameterName, log) {
|
|
5
|
+
const contractArtifact = await getContractArtifact(contractArtifactPath, log);
|
|
6
|
+
const parameterAbitype = contractArtifact.functions.map(({ parameters })=>parameters).flat().find(({ name, type })=>name === parameterName && type.kind === 'struct');
|
|
7
|
+
if (!parameterAbitype) {
|
|
8
|
+
log(`No struct parameter found with name ${parameterName}`);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const data = parseStructString(encodedString, parameterAbitype.type);
|
|
12
|
+
log(`\nStruct Data: \n${jsonStringify(data, true)}\n`);
|
|
13
|
+
}
|
|
@@ -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"}
|
|
@@ -0,0 +1,196 @@
|
|
|
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
|
+
import { createEthereumChain, createL1Clients, deployL1Contract } from '@aztec/ethereum';
|
|
5
|
+
import { getContract } from 'viem';
|
|
6
|
+
import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
7
|
+
const waitOpts = {
|
|
8
|
+
timeout: 120,
|
|
9
|
+
provenTimeout: 4800,
|
|
10
|
+
interval: 1
|
|
11
|
+
};
|
|
12
|
+
export async function bootstrapNetwork(pxeUrl, l1Urls, l1ChainId, l1PrivateKey, l1Mnemonic, addressIndex, json, log, debugLog) {
|
|
13
|
+
const pxe = await createCompatibleClient(pxeUrl, debugLog);
|
|
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);
|
|
19
|
+
const { erc20Address, portalAddress } = await deployERC20(l1Clients);
|
|
20
|
+
const { token, bridge } = await deployToken(wallet, portalAddress);
|
|
21
|
+
await initPortal(pxe, l1Clients, erc20Address, portalAddress, bridge.address);
|
|
22
|
+
const fpcAdmin = wallet.getAddress();
|
|
23
|
+
const fpc = await deployFPC(wallet, token.address, fpcAdmin);
|
|
24
|
+
const counter = await deployCounter(wallet);
|
|
25
|
+
await fundFPC(counter.address, wallet, l1Clients, fpc.address, debugLog);
|
|
26
|
+
if (json) {
|
|
27
|
+
log(JSON.stringify({
|
|
28
|
+
devCoinL1: erc20Address.toString(),
|
|
29
|
+
devCoinPortalL1: portalAddress.toString(),
|
|
30
|
+
devCoin: {
|
|
31
|
+
address: token.address.toString(),
|
|
32
|
+
initHash: token.initHash.toString(),
|
|
33
|
+
salt: token.salt.toString()
|
|
34
|
+
},
|
|
35
|
+
devCoinBridge: {
|
|
36
|
+
address: bridge.address.toString(),
|
|
37
|
+
initHash: bridge.initHash.toString(),
|
|
38
|
+
salt: bridge.salt.toString()
|
|
39
|
+
},
|
|
40
|
+
devCoinFpc: {
|
|
41
|
+
address: fpc.address.toString(),
|
|
42
|
+
initHash: fpc.initHash.toString(),
|
|
43
|
+
salt: fpc.salt.toString()
|
|
44
|
+
},
|
|
45
|
+
counter: {
|
|
46
|
+
address: counter.address.toString(),
|
|
47
|
+
initHash: counter.initHash.toString(),
|
|
48
|
+
salt: counter.salt.toString()
|
|
49
|
+
}
|
|
50
|
+
}, null, 2));
|
|
51
|
+
} else {
|
|
52
|
+
log(`DevCoin L1: ${erc20Address}`);
|
|
53
|
+
log(`DevCoin L1 Portal: ${portalAddress}`);
|
|
54
|
+
log(`DevCoin L2: ${token.address}`);
|
|
55
|
+
log(`DevCoin L2 init hash: ${token.initHash}`);
|
|
56
|
+
log(`DevCoin L2 salt: ${token.salt}`);
|
|
57
|
+
log(`DevCoin L2 Bridge: ${bridge.address}`);
|
|
58
|
+
log(`DevCoin L2 Bridge init hash: ${bridge.initHash}`);
|
|
59
|
+
log(`DevCoin L2 Bridge salt: ${bridge.salt}`);
|
|
60
|
+
log(`DevCoin FPC: ${fpc.address}`);
|
|
61
|
+
log(`DevCoin FPC init hash: ${fpc.initHash}`);
|
|
62
|
+
log(`DevCoin FPC salt: ${fpc.salt}`);
|
|
63
|
+
log(`Counter: ${counter.address}`);
|
|
64
|
+
log(`Counter init hash: ${counter.initHash}`);
|
|
65
|
+
log(`Counter salt: ${counter.salt}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Step 1. Deploy the L1 contracts, but don't initialize
|
|
70
|
+
*/ async function deployERC20({ walletClient, publicClient }) {
|
|
71
|
+
const { TestERC20Abi, TestERC20Bytecode, TokenPortalAbi, TokenPortalBytecode } = await import('@aztec/l1-artifacts');
|
|
72
|
+
const erc20 = {
|
|
73
|
+
contractAbi: TestERC20Abi,
|
|
74
|
+
contractBytecode: TestERC20Bytecode
|
|
75
|
+
};
|
|
76
|
+
const portal = {
|
|
77
|
+
contractAbi: TokenPortalAbi,
|
|
78
|
+
contractBytecode: TokenPortalBytecode
|
|
79
|
+
};
|
|
80
|
+
const { address: erc20Address } = await deployL1Contract(walletClient, publicClient, erc20.contractAbi, erc20.contractBytecode, [
|
|
81
|
+
'DevCoin',
|
|
82
|
+
'DEV',
|
|
83
|
+
walletClient.account.address
|
|
84
|
+
]);
|
|
85
|
+
const { address: portalAddress } = await deployL1Contract(walletClient, publicClient, portal.contractAbi, portal.contractBytecode);
|
|
86
|
+
return {
|
|
87
|
+
erc20Address,
|
|
88
|
+
portalAddress
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Step 2. Deploy the L2 contracts
|
|
93
|
+
*/ async function deployToken(wallet, l1Portal) {
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
95
|
+
// @ts-ignore - Importing noir-contracts.js even in devDeps results in a circular dependency error. Need to ignore because this line doesn't cause an error in a dev environment
|
|
96
|
+
const { TokenContract } = await import('@aztec/noir-contracts.js/Token');
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
98
|
+
// @ts-ignore - Importing noir-contracts.js even in devDeps results in a circular dependency error. Need to ignore because this line doesn't cause an error in a dev environment
|
|
99
|
+
const { TokenBridgeContract } = await import('@aztec/noir-contracts.js/TokenBridge');
|
|
100
|
+
const devCoin = await TokenContract.deploy(wallet, wallet.getAddress(), 'DevCoin', 'DEV', 18).send({
|
|
101
|
+
universalDeploy: true
|
|
102
|
+
}).deployed(waitOpts);
|
|
103
|
+
const bridge = await TokenBridgeContract.deploy(wallet, devCoin.address, l1Portal).send({
|
|
104
|
+
universalDeploy: true
|
|
105
|
+
}).deployed(waitOpts);
|
|
106
|
+
await new BatchCall(wallet, [
|
|
107
|
+
await devCoin.methods.set_minter(bridge.address, true).request(),
|
|
108
|
+
await devCoin.methods.set_admin(bridge.address).request()
|
|
109
|
+
]).send().wait(waitOpts);
|
|
110
|
+
return {
|
|
111
|
+
token: {
|
|
112
|
+
address: devCoin.address,
|
|
113
|
+
initHash: devCoin.instance.initializationHash,
|
|
114
|
+
salt: devCoin.instance.salt
|
|
115
|
+
},
|
|
116
|
+
bridge: {
|
|
117
|
+
address: bridge.address,
|
|
118
|
+
initHash: bridge.instance.initializationHash,
|
|
119
|
+
salt: bridge.instance.salt
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Step 3. Initialize DevCoin's L1 portal
|
|
125
|
+
*/ async function initPortal(pxe, { walletClient, publicClient }, erc20, portal, bridge) {
|
|
126
|
+
const { TokenPortalAbi } = await import('@aztec/l1-artifacts');
|
|
127
|
+
const { l1ContractAddresses: { registryAddress } } = await pxe.getNodeInfo();
|
|
128
|
+
const contract = getContract({
|
|
129
|
+
abi: TokenPortalAbi,
|
|
130
|
+
address: portal.toString(),
|
|
131
|
+
client: walletClient
|
|
132
|
+
});
|
|
133
|
+
const hash = await contract.write.initialize([
|
|
134
|
+
registryAddress.toString(),
|
|
135
|
+
erc20.toString(),
|
|
136
|
+
bridge.toString()
|
|
137
|
+
]);
|
|
138
|
+
await publicClient.waitForTransactionReceipt({
|
|
139
|
+
hash
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
async function deployFPC(wallet, tokenAddress, admin) {
|
|
143
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
144
|
+
// @ts-ignore - Importing noir-contracts.js even in devDeps results in a circular dependency error. Need to ignore because this line doesn't cause an error in a dev environment
|
|
145
|
+
const { FPCContract } = await import('@aztec/noir-contracts.js/FPC');
|
|
146
|
+
const fpc = await FPCContract.deploy(wallet, tokenAddress, admin).send({
|
|
147
|
+
universalDeploy: true
|
|
148
|
+
}).deployed(waitOpts);
|
|
149
|
+
const info = {
|
|
150
|
+
address: fpc.address,
|
|
151
|
+
initHash: fpc.instance.initializationHash,
|
|
152
|
+
salt: fpc.instance.salt
|
|
153
|
+
};
|
|
154
|
+
return info;
|
|
155
|
+
}
|
|
156
|
+
async function deployCounter(wallet) {
|
|
157
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
158
|
+
// @ts-ignore - Importing noir-contracts.js even in devDeps results in a circular dependency error. Need to ignore because this line doesn't cause an error in a dev environment
|
|
159
|
+
const { CounterContract } = await import('@aztec/noir-contracts.js/Counter');
|
|
160
|
+
const counter = await CounterContract.deploy(wallet, 1, wallet.getAddress()).send({
|
|
161
|
+
universalDeploy: true
|
|
162
|
+
}).deployed(waitOpts);
|
|
163
|
+
const info = {
|
|
164
|
+
address: counter.address,
|
|
165
|
+
initHash: counter.instance.initializationHash,
|
|
166
|
+
salt: counter.instance.salt
|
|
167
|
+
};
|
|
168
|
+
return info;
|
|
169
|
+
}
|
|
170
|
+
// NOTE: Disabling for now in order to get devnet running
|
|
171
|
+
async function fundFPC(counterAddress, wallet, l1Clients, fpcAddress, debugLog) {
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
173
|
+
// @ts-ignore - Importing noir-contracts.js even in devDeps results in a circular dependency error. Need to ignore because this line doesn't cause an error in a dev environment
|
|
174
|
+
const { FeeJuiceContract } = await import('@aztec/noir-contracts.js/FeeJuice');
|
|
175
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
176
|
+
// @ts-ignore - Importing noir-contracts.js even in devDeps results in a circular dependency error. Need to ignore because this line doesn't cause an error in a dev environment
|
|
177
|
+
const { CounterContract } = await import('@aztec/noir-contracts.js/Counter');
|
|
178
|
+
const { protocolContractAddresses: { feeJuice } } = await wallet.getPXEInfo();
|
|
179
|
+
const feeJuiceContract = await FeeJuiceContract.at(feeJuice, wallet);
|
|
180
|
+
const feeJuicePortal = await L1FeeJuicePortalManager.new(wallet, l1Clients.publicClient, l1Clients.walletClient, debugLog);
|
|
181
|
+
const amount = FEE_FUNDING_FOR_TESTER_ACCOUNT;
|
|
182
|
+
const { claimAmount, claimSecret, messageLeafIndex, messageHash } = await feeJuicePortal.bridgeTokensPublic(fpcAddress, amount, true);
|
|
183
|
+
await retryUntil(async ()=>await wallet.isL1ToL2MessageSynced(Fr.fromHexString(messageHash)), 'message sync', 600, 1);
|
|
184
|
+
const counter = await CounterContract.at(counterAddress, wallet);
|
|
185
|
+
debugLog.info('Incrementing Counter');
|
|
186
|
+
// TODO (alexg) remove this once sequencer builds blocks continuously
|
|
187
|
+
// advance the chain
|
|
188
|
+
await counter.methods.increment(wallet.getAddress(), wallet.getAddress()).send().wait(waitOpts);
|
|
189
|
+
await counter.methods.increment(wallet.getAddress(), wallet.getAddress()).send().wait(waitOpts);
|
|
190
|
+
debugLog.info('Claiming FPC');
|
|
191
|
+
await feeJuiceContract.methods.claim(fpcAddress, claimAmount, claimSecret, messageLeafIndex).send().wait({
|
|
192
|
+
...waitOpts,
|
|
193
|
+
proven: true
|
|
194
|
+
});
|
|
195
|
+
debugLog.info('Finished claiming FPC');
|
|
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,26 @@
|
|
|
1
|
+
import { prettyPrintJSON } from '../../utils/commands.js';
|
|
2
|
+
export async function dripFaucet(faucetUrl, asset, account, json, log) {
|
|
3
|
+
const url = new URL(`/drip/${account.toString()}`, faucetUrl);
|
|
4
|
+
url.searchParams.set('asset', asset);
|
|
5
|
+
const res = await fetch(url);
|
|
6
|
+
if (res.status === 200) {
|
|
7
|
+
if (json) {
|
|
8
|
+
log(prettyPrintJSON({
|
|
9
|
+
ok: true
|
|
10
|
+
}));
|
|
11
|
+
} else {
|
|
12
|
+
log(`Dripped ${asset} for ${account.toString()}`);
|
|
13
|
+
}
|
|
14
|
+
} else {
|
|
15
|
+
if (json) {
|
|
16
|
+
log(prettyPrintJSON({
|
|
17
|
+
ok: false
|
|
18
|
+
}));
|
|
19
|
+
} else if (res.status === 429) {
|
|
20
|
+
log(`Rate limited when dripping ${asset} for ${account.toString()}`);
|
|
21
|
+
} else {
|
|
22
|
+
log(`Failed to drip ${asset} for ${account.toString()}`);
|
|
23
|
+
}
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ETHEREUM_HOSTS, l1ChainIdOption, parseEthereumAddress, pxeOption } from '../../utils/commands.js';
|
|
2
|
+
export function injectCommands(program, log, debugLogger) {
|
|
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)=>{
|
|
6
|
+
const { bootstrapNetwork } = await import('./bootstrap_network.js');
|
|
7
|
+
await bootstrapNetwork(options[pxeOption.attributeName()], options.l1RpcUrls, options[l1ChainIdOption.attributeName()], options.l1PrivateKey, options.mnemonic, options.addressIndex, options.json, log, debugLogger);
|
|
8
|
+
});
|
|
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)=>{
|
|
10
|
+
const { dripFaucet } = await import('./faucet.js');
|
|
11
|
+
await dripFaucet(options.faucetUrl, options.token, options.address, options.json, log);
|
|
12
|
+
});
|
|
13
|
+
return program;
|
|
14
|
+
}
|
|
@@ -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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ETHEREUM_HOSTS, l1ChainIdOption, parseOptionalInteger, pxeOption } from '../../utils/commands.js';
|
|
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).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
|
+
});
|
|
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)=>{
|
|
10
|
+
const { sequencers } = await import('./sequencers.js');
|
|
11
|
+
await sequencers({
|
|
12
|
+
command: command,
|
|
13
|
+
who,
|
|
14
|
+
mnemonic: options.mnemonic,
|
|
15
|
+
rpcUrl: options.rpcUrl,
|
|
16
|
+
l1RpcUrls: options.l1RpcUrls.split(','),
|
|
17
|
+
chainId: options.l1ChainId,
|
|
18
|
+
blockNumber: options.blockNumber,
|
|
19
|
+
log,
|
|
20
|
+
debugLogger
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
return program;
|
|
24
|
+
}
|
|
@@ -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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { createCompatibleClient } from '@aztec/aztec.js';
|
|
2
|
+
import { createEthereumChain, getL1ContractsConfigEnvVars } from '@aztec/ethereum';
|
|
3
|
+
import { RollupAbi, TestERC20Abi } from '@aztec/l1-artifacts';
|
|
4
|
+
import { createPublicClient, createWalletClient, fallback, getContract, http } from 'viem';
|
|
5
|
+
import { mnemonicToAccount } from 'viem/accounts';
|
|
6
|
+
export async function sequencers(opts) {
|
|
7
|
+
const { command, who: maybeWho, mnemonic, rpcUrl, l1RpcUrls, chainId, log, debugLogger } = opts;
|
|
8
|
+
const client = await createCompatibleClient(rpcUrl, debugLogger);
|
|
9
|
+
const { l1ContractAddresses } = await client.getNodeInfo();
|
|
10
|
+
const chain = createEthereumChain(l1RpcUrls, chainId);
|
|
11
|
+
const publicClient = createPublicClient({
|
|
12
|
+
chain: chain.chainInfo,
|
|
13
|
+
transport: fallback(l1RpcUrls.map((url)=>http(url)))
|
|
14
|
+
});
|
|
15
|
+
const walletClient = mnemonic ? createWalletClient({
|
|
16
|
+
account: mnemonicToAccount(mnemonic),
|
|
17
|
+
chain: chain.chainInfo,
|
|
18
|
+
transport: fallback(l1RpcUrls.map((url)=>http(url)))
|
|
19
|
+
}) : undefined;
|
|
20
|
+
const rollup = getContract({
|
|
21
|
+
address: l1ContractAddresses.rollupAddress.toString(),
|
|
22
|
+
abi: RollupAbi,
|
|
23
|
+
client: publicClient
|
|
24
|
+
});
|
|
25
|
+
const writeableRollup = walletClient ? getContract({
|
|
26
|
+
address: l1ContractAddresses.rollupAddress.toString(),
|
|
27
|
+
abi: RollupAbi,
|
|
28
|
+
client: walletClient
|
|
29
|
+
}) : undefined;
|
|
30
|
+
const who = maybeWho ?? walletClient?.account.address.toString();
|
|
31
|
+
if (command === 'list') {
|
|
32
|
+
const sequencers = await rollup.read.getAttesters();
|
|
33
|
+
if (sequencers.length === 0) {
|
|
34
|
+
log(`No sequencers registered on rollup`);
|
|
35
|
+
} else {
|
|
36
|
+
log(`Registered sequencers on rollup:`);
|
|
37
|
+
for (const sequencer of sequencers){
|
|
38
|
+
log(' ' + sequencer.toString());
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
} else if (command === 'add') {
|
|
42
|
+
if (!who || !writeableRollup || !walletClient) {
|
|
43
|
+
throw new Error(`Missing sequencer address`);
|
|
44
|
+
}
|
|
45
|
+
log(`Adding ${who} as sequencer`);
|
|
46
|
+
const stakingAsset = getContract({
|
|
47
|
+
address: await rollup.read.getStakingAsset(),
|
|
48
|
+
abi: TestERC20Abi,
|
|
49
|
+
client: walletClient
|
|
50
|
+
});
|
|
51
|
+
const config = getL1ContractsConfigEnvVars();
|
|
52
|
+
await Promise.all([
|
|
53
|
+
await stakingAsset.write.mint([
|
|
54
|
+
walletClient.account.address,
|
|
55
|
+
config.minimumStake
|
|
56
|
+
], {}),
|
|
57
|
+
await stakingAsset.write.approve([
|
|
58
|
+
rollup.address,
|
|
59
|
+
config.minimumStake
|
|
60
|
+
], {})
|
|
61
|
+
].map((txHash)=>publicClient.waitForTransactionReceipt({
|
|
62
|
+
hash: txHash
|
|
63
|
+
})));
|
|
64
|
+
const hash = await writeableRollup.write.deposit([
|
|
65
|
+
who,
|
|
66
|
+
who,
|
|
67
|
+
who,
|
|
68
|
+
config.minimumStake
|
|
69
|
+
]);
|
|
70
|
+
await publicClient.waitForTransactionReceipt({
|
|
71
|
+
hash
|
|
72
|
+
});
|
|
73
|
+
log(`Added in tx ${hash}`);
|
|
74
|
+
} else if (command === 'remove') {
|
|
75
|
+
if (!who || !writeableRollup) {
|
|
76
|
+
throw new Error(`Missing sequencer address`);
|
|
77
|
+
}
|
|
78
|
+
log(`Removing ${who} as sequencer`);
|
|
79
|
+
const hash = await writeableRollup.write.initiateWithdraw([
|
|
80
|
+
who,
|
|
81
|
+
who
|
|
82
|
+
]);
|
|
83
|
+
await publicClient.waitForTransactionReceipt({
|
|
84
|
+
hash
|
|
85
|
+
});
|
|
86
|
+
log(`Removed in tx ${hash}`);
|
|
87
|
+
} else if (command === 'who-next') {
|
|
88
|
+
const next = await rollup.read.getCurrentProposer();
|
|
89
|
+
log(`Sequencer expected to build is ${next}`);
|
|
90
|
+
} else {
|
|
91
|
+
throw new Error(`Unknown command ${command}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -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 @@
|
|
|
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"}
|