@aztec/cli 0.0.0-test.0 → 0.0.1-fake-c83136db25
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 +1 -427
- package/dest/cmds/aztec_node/block_number.d.ts +3 -0
- package/dest/cmds/aztec_node/block_number.d.ts.map +1 -0
- package/dest/cmds/aztec_node/block_number.js +10 -0
- package/dest/cmds/aztec_node/get_block.d.ts +3 -0
- package/dest/cmds/aztec_node/get_block.d.ts.map +1 -0
- package/dest/cmds/aztec_node/get_block.js +9 -0
- package/dest/cmds/aztec_node/get_current_base_fee.d.ts +3 -0
- package/dest/cmds/aztec_node/get_current_base_fee.d.ts.map +1 -0
- package/dest/cmds/aztec_node/get_current_base_fee.js +7 -0
- package/dest/cmds/aztec_node/get_l1_to_l2_message_witness.d.ts +5 -0
- package/dest/cmds/aztec_node/get_l1_to_l2_message_witness.d.ts.map +1 -0
- package/dest/cmds/aztec_node/get_l1_to_l2_message_witness.js +12 -0
- package/dest/cmds/aztec_node/get_logs.d.ts +6 -0
- package/dest/cmds/aztec_node/get_logs.d.ts.map +1 -0
- package/dest/cmds/{pxe → aztec_node}/get_logs.js +4 -4
- package/dest/cmds/aztec_node/get_node_info.d.ts +3 -0
- package/dest/cmds/aztec_node/get_node_info.d.ts.map +1 -0
- package/dest/cmds/{pxe → aztec_node}/get_node_info.js +14 -15
- package/dest/cmds/aztec_node/index.d.ts.map +1 -0
- package/dest/cmds/aztec_node/index.js +28 -0
- package/dest/cmds/contracts/inspect_contract.d.ts.map +1 -1
- package/dest/cmds/contracts/inspect_contract.js +9 -5
- package/dest/cmds/infrastructure/index.d.ts +2 -2
- package/dest/cmds/infrastructure/index.d.ts.map +1 -1
- package/dest/cmds/infrastructure/index.js +8 -9
- package/dest/cmds/infrastructure/sequencers.d.ts +4 -4
- package/dest/cmds/infrastructure/sequencers.d.ts.map +1 -1
- package/dest/cmds/infrastructure/sequencers.js +29 -16
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts +1 -1
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts.map +1 -1
- package/dest/cmds/infrastructure/setup_l2_contract.js +11 -24
- package/dest/cmds/l1/advance_epoch.d.ts +1 -1
- package/dest/cmds/l1/advance_epoch.d.ts.map +1 -1
- package/dest/cmds/l1/advance_epoch.js +8 -6
- package/dest/cmds/l1/assume_proven_through.d.ts +1 -1
- package/dest/cmds/l1/assume_proven_through.d.ts.map +1 -1
- package/dest/cmds/l1/assume_proven_through.js +9 -8
- package/dest/cmds/l1/bridge_erc20.d.ts +2 -2
- package/dest/cmds/l1/bridge_erc20.d.ts.map +1 -1
- package/dest/cmds/l1/bridge_erc20.js +5 -5
- package/dest/cmds/l1/deploy_l1_contracts.d.ts +2 -2
- package/dest/cmds/l1/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/cmds/l1/deploy_l1_contracts.js +23 -6
- package/dest/cmds/l1/deploy_new_rollup.d.ts +2 -1
- package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -1
- package/dest/cmds/l1/deploy_new_rollup.js +17 -8
- package/dest/cmds/l1/get_l1_addresses.d.ts +1 -1
- package/dest/cmds/l1/get_l1_addresses.d.ts.map +1 -1
- package/dest/cmds/l1/governance_utils.d.ts.map +1 -1
- package/dest/cmds/l1/governance_utils.js +17 -17
- package/dest/cmds/l1/index.d.ts +1 -0
- package/dest/cmds/l1/index.d.ts.map +1 -1
- package/dest/cmds/l1/index.js +33 -43
- package/dest/cmds/l1/trigger_seed_snapshot.d.ts +6 -0
- package/dest/cmds/l1/trigger_seed_snapshot.d.ts.map +1 -0
- package/dest/cmds/l1/trigger_seed_snapshot.js +19 -0
- package/dest/cmds/l1/update_l1_validators.d.ts +17 -2
- package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -1
- package/dest/cmds/l1/update_l1_validators.js +159 -103
- package/dest/cmds/misc/generate_bootnode_enr.d.ts +1 -1
- package/dest/cmds/misc/generate_bootnode_enr.d.ts.map +1 -1
- package/dest/cmds/misc/generate_bootnode_enr.js +2 -2
- package/dest/cmds/misc/generate_secret_and_hash.d.ts +1 -1
- package/dest/cmds/misc/generate_secret_and_hash.d.ts.map +1 -1
- package/dest/cmds/misc/generate_secret_and_hash.js +3 -3
- package/dest/cmds/misc/generate_secret_key.d.ts +1 -1
- package/dest/cmds/misc/generate_secret_key.d.ts.map +1 -1
- package/dest/cmds/misc/generate_secret_key.js +1 -1
- package/dest/cmds/misc/get_canonical_sponsored_fpc_address.d.ts +3 -0
- package/dest/cmds/misc/get_canonical_sponsored_fpc_address.d.ts.map +1 -0
- package/dest/cmds/misc/get_canonical_sponsored_fpc_address.js +4 -0
- package/dest/cmds/misc/index.d.ts.map +1 -1
- package/dest/cmds/misc/index.js +7 -3
- package/dest/cmds/misc/update/github.d.ts +0 -1
- package/dest/cmds/misc/update/github.d.ts.map +1 -1
- package/dest/cmds/misc/update/github.js +0 -1
- package/dest/cmds/misc/update.d.ts.map +1 -1
- package/dest/cmds/misc/update.js +2 -3
- package/dest/config/cached_fetch.d.ts +18 -0
- package/dest/config/cached_fetch.d.ts.map +1 -0
- package/dest/config/cached_fetch.js +54 -0
- package/dest/config/chain_l2_config.d.ts +39 -0
- package/dest/config/chain_l2_config.d.ts.map +1 -0
- package/dest/config/chain_l2_config.js +452 -0
- package/dest/config/enrich_env.d.ts +4 -0
- package/dest/config/enrich_env.d.ts.map +1 -0
- package/dest/config/enrich_env.js +12 -0
- package/dest/config/get_l1_config.d.ts +8 -0
- package/dest/config/get_l1_config.d.ts.map +1 -0
- package/dest/config/get_l1_config.js +22 -0
- package/dest/config/index.d.ts +5 -0
- package/dest/config/index.d.ts.map +1 -0
- package/dest/config/index.js +4 -0
- package/dest/config/network_config.d.ts +19 -0
- package/dest/config/network_config.d.ts.map +1 -0
- package/dest/config/network_config.js +79 -0
- package/dest/utils/aztec.d.ts +12 -17
- package/dest/utils/aztec.d.ts.map +1 -1
- package/dest/utils/aztec.js +54 -49
- package/dest/utils/commands.d.ts +7 -8
- package/dest/utils/commands.d.ts.map +1 -1
- package/dest/utils/commands.js +10 -11
- package/dest/utils/encoding.js +1 -1
- package/dest/utils/github.d.ts +0 -1
- package/dest/utils/github.d.ts.map +1 -1
- package/dest/utils/github.js +0 -1
- package/dest/utils/index.d.ts +1 -0
- package/dest/utils/index.d.ts.map +1 -1
- package/dest/utils/index.js +1 -0
- package/dest/utils/inspect.d.ts +3 -10
- package/dest/utils/inspect.d.ts.map +1 -1
- package/dest/utils/inspect.js +19 -109
- package/dest/utils/setup_contracts.d.ts +3 -0
- package/dest/utils/setup_contracts.d.ts.map +1 -0
- package/dest/utils/setup_contracts.js +16 -0
- package/package.json +40 -33
- package/src/cmds/aztec_node/block_number.ts +9 -0
- package/src/cmds/aztec_node/get_block.ts +10 -0
- package/src/cmds/aztec_node/get_current_base_fee.ts +9 -0
- package/src/cmds/aztec_node/get_l1_to_l2_message_witness.ts +27 -0
- package/src/cmds/{pxe → aztec_node}/get_logs.ts +8 -7
- package/src/cmds/{pxe → aztec_node}/get_node_info.ts +15 -23
- package/src/cmds/aztec_node/index.ts +87 -0
- package/src/cmds/contracts/inspect_contract.ts +16 -6
- package/src/cmds/infrastructure/index.ts +8 -10
- package/src/cmds/infrastructure/sequencers.ts +36 -19
- package/src/cmds/infrastructure/setup_l2_contract.ts +13 -25
- package/src/cmds/l1/advance_epoch.ts +7 -5
- package/src/cmds/l1/assume_proven_through.ts +8 -7
- package/src/cmds/l1/bridge_erc20.ts +7 -4
- package/src/cmds/l1/deploy_l1_contracts.ts +32 -7
- package/src/cmds/l1/deploy_new_rollup.ts +23 -9
- package/src/cmds/l1/get_l1_addresses.ts +1 -1
- package/src/cmds/l1/governance_utils.ts +18 -17
- package/src/cmds/l1/index.ts +74 -101
- package/src/cmds/l1/trigger_seed_snapshot.ts +31 -0
- package/src/cmds/l1/update_l1_validators.ts +194 -94
- package/src/cmds/misc/generate_bootnode_enr.ts +3 -2
- package/src/cmds/misc/generate_secret_and_hash.ts +3 -3
- package/src/cmds/misc/generate_secret_key.ts +1 -1
- package/src/cmds/misc/get_canonical_sponsored_fpc_address.ts +7 -0
- package/src/cmds/misc/index.ts +13 -4
- package/src/cmds/misc/update/github.ts +0 -1
- package/src/cmds/misc/update.ts +1 -7
- package/src/config/cached_fetch.ts +67 -0
- package/src/config/chain_l2_config.ts +597 -0
- package/src/config/enrich_env.ts +15 -0
- package/src/config/get_l1_config.ts +28 -0
- package/src/config/index.ts +4 -0
- package/src/config/network_config.ts +102 -0
- package/src/utils/aztec.ts +78 -65
- package/src/utils/commands.ts +13 -15
- package/src/utils/encoding.ts +1 -1
- package/src/utils/github.ts +0 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/inspect.ts +23 -123
- package/src/utils/setup_contracts.ts +19 -0
- package/dest/cmds/devnet/bootstrap_network.d.ts +0 -3
- package/dest/cmds/devnet/bootstrap_network.d.ts.map +0 -1
- package/dest/cmds/devnet/bootstrap_network.js +0 -196
- package/dest/cmds/devnet/faucet.d.ts +0 -4
- package/dest/cmds/devnet/faucet.d.ts.map +0 -1
- package/dest/cmds/devnet/faucet.js +0 -26
- package/dest/cmds/devnet/index.d.ts.map +0 -1
- package/dest/cmds/devnet/index.js +0 -14
- package/dest/cmds/l1/deploy_l1_verifier.d.ts +0 -5
- package/dest/cmds/l1/deploy_l1_verifier.d.ts.map +0 -1
- package/dest/cmds/l1/deploy_l1_verifier.js +0 -54
- package/dest/cmds/misc/setup_contracts.d.ts +0 -7
- package/dest/cmds/misc/setup_contracts.d.ts.map +0 -1
- package/dest/cmds/misc/setup_contracts.js +0 -27
- package/dest/cmds/pxe/add_contract.d.ts +0 -5
- package/dest/cmds/pxe/add_contract.d.ts.map +0 -1
- package/dest/cmds/pxe/add_contract.js +0 -29
- package/dest/cmds/pxe/block_number.d.ts +0 -3
- package/dest/cmds/pxe/block_number.d.ts.map +0 -1
- package/dest/cmds/pxe/block_number.js +0 -10
- package/dest/cmds/pxe/get_account.d.ts +0 -4
- package/dest/cmds/pxe/get_account.d.ts.map +0 -1
- package/dest/cmds/pxe/get_account.js +0 -10
- package/dest/cmds/pxe/get_accounts.d.ts +0 -3
- package/dest/cmds/pxe/get_accounts.d.ts.map +0 -1
- package/dest/cmds/pxe/get_accounts.js +0 -25
- package/dest/cmds/pxe/get_block.d.ts +0 -3
- package/dest/cmds/pxe/get_block.d.ts.map +0 -1
- package/dest/cmds/pxe/get_block.js +0 -9
- package/dest/cmds/pxe/get_contract_data.d.ts +0 -4
- package/dest/cmds/pxe/get_contract_data.d.ts.map +0 -1
- package/dest/cmds/pxe/get_contract_data.js +0 -31
- package/dest/cmds/pxe/get_current_base_fee.d.ts +0 -3
- package/dest/cmds/pxe/get_current_base_fee.d.ts.map +0 -1
- package/dest/cmds/pxe/get_current_base_fee.js +0 -7
- package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts +0 -4
- package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts.map +0 -1
- package/dest/cmds/pxe/get_l1_to_l2_message_witness.js +0 -11
- package/dest/cmds/pxe/get_logs.d.ts +0 -4
- package/dest/cmds/pxe/get_logs.d.ts.map +0 -1
- package/dest/cmds/pxe/get_node_info.d.ts +0 -3
- package/dest/cmds/pxe/get_node_info.d.ts.map +0 -1
- package/dest/cmds/pxe/get_pxe_info.d.ts +0 -3
- package/dest/cmds/pxe/get_pxe_info.d.ts.map +0 -1
- package/dest/cmds/pxe/get_pxe_info.js +0 -11
- package/dest/cmds/pxe/index.d.ts +0 -4
- package/dest/cmds/pxe/index.d.ts.map +0 -1
- package/dest/cmds/pxe/index.js +0 -55
- package/src/cmds/devnet/bootstrap_network.ts +0 -318
- package/src/cmds/devnet/faucet.ts +0 -33
- package/src/cmds/devnet/index.ts +0 -60
- package/src/cmds/l1/deploy_l1_verifier.ts +0 -105
- package/src/cmds/misc/setup_contracts.ts +0 -40
- package/src/cmds/pxe/add_contract.ts +0 -41
- package/src/cmds/pxe/block_number.ts +0 -9
- package/src/cmds/pxe/get_account.ts +0 -16
- package/src/cmds/pxe/get_accounts.ts +0 -35
- package/src/cmds/pxe/get_block.ts +0 -10
- package/src/cmds/pxe/get_contract_data.ts +0 -51
- package/src/cmds/pxe/get_current_base_fee.ts +0 -9
- package/src/cmds/pxe/get_l1_to_l2_message_witness.ts +0 -25
- package/src/cmds/pxe/get_pxe_info.ts +0 -13
- package/src/cmds/pxe/index.ts +0 -170
- /package/dest/cmds/{devnet → aztec_node}/index.d.ts +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
2
|
+
import { RollupCheatCodes } from '@aztec/ethereum/test';
|
|
2
3
|
import type { LogFn } from '@aztec/foundation/log';
|
|
4
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
3
5
|
|
|
4
|
-
export async function advanceEpoch(l1RpcUrls: string[],
|
|
5
|
-
const
|
|
6
|
-
const rollupAddress = await
|
|
6
|
+
export async function advanceEpoch(l1RpcUrls: string[], nodeUrl: string, log: LogFn) {
|
|
7
|
+
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
8
|
+
const rollupAddress = await aztecNode.getNodeInfo().then(i => i.l1ContractAddresses.rollupAddress);
|
|
7
9
|
|
|
8
|
-
const cheat =
|
|
10
|
+
const cheat = RollupCheatCodes.create(l1RpcUrls, { rollupAddress }, new DateProvider());
|
|
9
11
|
|
|
10
12
|
await cheat.advanceToNextEpoch();
|
|
11
13
|
log(`Warped time to advance to next epoch`);
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
2
|
+
import { RollupCheatCodes } from '@aztec/ethereum/test';
|
|
2
3
|
import type { LogFn } from '@aztec/foundation/log';
|
|
4
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
3
5
|
|
|
4
6
|
export async function assumeProvenThrough(
|
|
5
7
|
blockNumberOrLatest: number | undefined,
|
|
6
8
|
l1RpcUrls: string[],
|
|
7
|
-
|
|
9
|
+
nodeUrl: string,
|
|
8
10
|
log: LogFn,
|
|
9
11
|
) {
|
|
10
|
-
const
|
|
11
|
-
const rollupAddress = await
|
|
12
|
-
const blockNumber = blockNumberOrLatest ?? (await
|
|
12
|
+
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
13
|
+
const rollupAddress = await aztecNode.getNodeInfo().then(i => i.l1ContractAddresses.rollupAddress);
|
|
14
|
+
const blockNumber = blockNumberOrLatest ?? (await aztecNode.getBlockNumber());
|
|
13
15
|
|
|
14
|
-
const
|
|
15
|
-
const rollupCheatCodes = new RollupCheatCodes(ethCheatCode, { rollupAddress });
|
|
16
|
+
const rollupCheatCodes = RollupCheatCodes.create(l1RpcUrls, { rollupAddress }, new DateProvider());
|
|
16
17
|
|
|
17
18
|
await rollupCheatCodes.markAsProven(blockNumber);
|
|
18
19
|
log(`Assumed proven through block ${blockNumber}`);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { L1ToL2TokenPortalManager } from '@aztec/aztec.js/ethereum';
|
|
3
|
+
import type { Fr } from '@aztec/aztec.js/fields';
|
|
4
|
+
import { createEthereumChain, createExtendedL1Client } from '@aztec/ethereum';
|
|
3
5
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
4
6
|
|
|
5
7
|
import { prettyPrintJSON } from '../../utils/commands.js';
|
|
@@ -12,6 +14,7 @@ export async function bridgeERC20(
|
|
|
12
14
|
privateKey: string | undefined,
|
|
13
15
|
mnemonic: string,
|
|
14
16
|
tokenAddress: EthAddress,
|
|
17
|
+
handlerAddress: EthAddress | undefined,
|
|
15
18
|
portalAddress: EthAddress,
|
|
16
19
|
privateTransfer: boolean,
|
|
17
20
|
mint: boolean,
|
|
@@ -21,10 +24,10 @@ export async function bridgeERC20(
|
|
|
21
24
|
) {
|
|
22
25
|
// Prepare L1 client
|
|
23
26
|
const chain = createEthereumChain(l1RpcUrls, chainId);
|
|
24
|
-
const
|
|
27
|
+
const l1Client = createExtendedL1Client(chain.rpcUrls, privateKey ?? mnemonic, chain.chainInfo);
|
|
25
28
|
|
|
26
29
|
// Setup portal manager
|
|
27
|
-
const manager = new L1ToL2TokenPortalManager(portalAddress, tokenAddress,
|
|
30
|
+
const manager = new L1ToL2TokenPortalManager(portalAddress, tokenAddress, handlerAddress, l1Client, debugLogger);
|
|
28
31
|
let claimSecret: Fr;
|
|
29
32
|
let messageHash: `0x${string}`;
|
|
30
33
|
if (privateTransfer) {
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
2
|
+
import type { EthAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
2
4
|
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum';
|
|
3
|
-
import
|
|
5
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
4
6
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
5
7
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
6
8
|
|
|
7
9
|
import { deployAztecContracts } from '../../utils/aztec.js';
|
|
10
|
+
import { getSponsoredFPCAddress } from '../../utils/setup_contracts.js';
|
|
8
11
|
|
|
9
12
|
export async function deployL1Contracts(
|
|
10
13
|
rpcUrls: string[],
|
|
@@ -14,16 +17,28 @@ export async function deployL1Contracts(
|
|
|
14
17
|
mnemonicIndex: number,
|
|
15
18
|
salt: number | undefined,
|
|
16
19
|
testAccounts: boolean,
|
|
20
|
+
sponsoredFPC: boolean,
|
|
17
21
|
acceleratedTestDeployments: boolean,
|
|
18
22
|
json: boolean,
|
|
23
|
+
createVerificationJson: string | false,
|
|
19
24
|
initialValidators: EthAddress[],
|
|
25
|
+
realVerifier: boolean,
|
|
26
|
+
existingToken: EthAddress | undefined,
|
|
20
27
|
log: LogFn,
|
|
21
28
|
debugLogger: Logger,
|
|
22
29
|
) {
|
|
23
30
|
const config = getL1ContractsConfigEnvVars();
|
|
24
31
|
|
|
25
|
-
const
|
|
26
|
-
const
|
|
32
|
+
const initialAccounts = testAccounts ? await getInitialTestAccountsData() : [];
|
|
33
|
+
const sponsoredFPCAddress = sponsoredFPC ? await getSponsoredFPCAddress() : [];
|
|
34
|
+
const initialFundedAccounts = initialAccounts.map(a => a.address).concat(sponsoredFPCAddress);
|
|
35
|
+
const { genesisArchiveRoot, fundingNeeded } = await getGenesisValues(initialFundedAccounts);
|
|
36
|
+
|
|
37
|
+
const initialValidatorOperators = initialValidators.map(a => ({
|
|
38
|
+
attester: a,
|
|
39
|
+
withdrawer: a,
|
|
40
|
+
bn254SecretKey: new SecretValue(Fr.random().toBigInt()),
|
|
41
|
+
}));
|
|
27
42
|
|
|
28
43
|
const { l1ContractAddresses } = await deployAztecContracts(
|
|
29
44
|
rpcUrls,
|
|
@@ -32,18 +47,21 @@ export async function deployL1Contracts(
|
|
|
32
47
|
mnemonic,
|
|
33
48
|
mnemonicIndex,
|
|
34
49
|
salt,
|
|
35
|
-
|
|
50
|
+
initialValidatorOperators,
|
|
36
51
|
genesisArchiveRoot,
|
|
37
|
-
|
|
52
|
+
fundingNeeded,
|
|
38
53
|
acceleratedTestDeployments,
|
|
39
54
|
config,
|
|
55
|
+
existingToken,
|
|
56
|
+
realVerifier,
|
|
57
|
+
createVerificationJson,
|
|
40
58
|
debugLogger,
|
|
41
59
|
);
|
|
42
60
|
|
|
43
61
|
if (json) {
|
|
44
62
|
log(
|
|
45
63
|
JSON.stringify(
|
|
46
|
-
Object.fromEntries(Object.entries(l1ContractAddresses).map(([k, v]) => [k, v
|
|
64
|
+
Object.fromEntries(Object.entries(l1ContractAddresses).map(([k, v]) => [k, v?.toString() ?? 'Not deployed'])),
|
|
47
65
|
null,
|
|
48
66
|
2,
|
|
49
67
|
),
|
|
@@ -51,6 +69,7 @@ export async function deployL1Contracts(
|
|
|
51
69
|
} else {
|
|
52
70
|
log(`Rollup Address: ${l1ContractAddresses.rollupAddress.toString()}`);
|
|
53
71
|
log(`Registry Address: ${l1ContractAddresses.registryAddress.toString()}`);
|
|
72
|
+
log(`GSE Address: ${l1ContractAddresses.gseAddress?.toString()}`);
|
|
54
73
|
log(`L1 -> L2 Inbox Address: ${l1ContractAddresses.inboxAddress.toString()}`);
|
|
55
74
|
log(`L2 -> L1 Outbox Address: ${l1ContractAddresses.outboxAddress.toString()}`);
|
|
56
75
|
log(`Fee Juice Address: ${l1ContractAddresses.feeJuiceAddress.toString()}`);
|
|
@@ -61,5 +80,11 @@ export async function deployL1Contracts(
|
|
|
61
80
|
log(`GovernanceProposer Address: ${l1ContractAddresses.governanceProposerAddress.toString()}`);
|
|
62
81
|
log(`Governance Address: ${l1ContractAddresses.governanceAddress.toString()}`);
|
|
63
82
|
log(`SlashFactory Address: ${l1ContractAddresses.slashFactoryAddress?.toString()}`);
|
|
83
|
+
log(`FeeAssetHandler Address: ${l1ContractAddresses.feeAssetHandlerAddress?.toString()}`);
|
|
84
|
+
log(`StakingAssetHandler Address: ${l1ContractAddresses.stakingAssetHandlerAddress?.toString()}`);
|
|
85
|
+
log(`ZK Passport Verifier Address: ${l1ContractAddresses.zkPassportVerifierAddress?.toString()}`);
|
|
86
|
+
log(`Initial funded accounts: ${initialFundedAccounts.map(a => a.toString()).join(', ')}`);
|
|
87
|
+
log(`Initial validators: ${initialValidators.map(a => a.toString()).join(', ')}`);
|
|
88
|
+
log(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
|
|
64
89
|
}
|
|
65
90
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum';
|
|
1
|
+
import { getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
2
|
+
import { type Operator, getL1ContractsConfigEnvVars } from '@aztec/ethereum';
|
|
3
3
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
4
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
5
5
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
6
6
|
|
|
7
7
|
import { deployNewRollupContracts } from '../../utils/aztec.js';
|
|
8
|
+
import { getSponsoredFPCAddress } from '../../utils/setup_contracts.js';
|
|
8
9
|
|
|
9
10
|
export async function deployNewRollup(
|
|
10
11
|
registryAddress: EthAddress,
|
|
@@ -15,17 +16,22 @@ export async function deployNewRollup(
|
|
|
15
16
|
mnemonicIndex: number,
|
|
16
17
|
salt: number | undefined,
|
|
17
18
|
testAccounts: boolean,
|
|
19
|
+
sponsoredFPC: boolean,
|
|
18
20
|
json: boolean,
|
|
19
|
-
initialValidators:
|
|
21
|
+
initialValidators: Operator[],
|
|
22
|
+
realVerifier: boolean,
|
|
23
|
+
createVerificationJson: string | false,
|
|
20
24
|
log: LogFn,
|
|
21
25
|
debugLogger: Logger,
|
|
22
26
|
) {
|
|
23
27
|
const config = getL1ContractsConfigEnvVars();
|
|
24
28
|
|
|
25
|
-
const
|
|
26
|
-
const
|
|
29
|
+
const initialAccounts = testAccounts ? await getInitialTestAccountsData() : [];
|
|
30
|
+
const sponsoredFPCAddress = sponsoredFPC ? await getSponsoredFPCAddress() : [];
|
|
31
|
+
const initialFundedAccounts = initialAccounts.map(a => a.address).concat(sponsoredFPCAddress);
|
|
32
|
+
const { genesisArchiveRoot, fundingNeeded } = await getGenesisValues(initialFundedAccounts);
|
|
27
33
|
|
|
28
|
-
const {
|
|
34
|
+
const { rollup, slashFactoryAddress } = await deployNewRollupContracts(
|
|
29
35
|
registryAddress,
|
|
30
36
|
rpcUrls,
|
|
31
37
|
chainId,
|
|
@@ -35,8 +41,10 @@ export async function deployNewRollup(
|
|
|
35
41
|
salt,
|
|
36
42
|
initialValidators,
|
|
37
43
|
genesisArchiveRoot,
|
|
38
|
-
|
|
44
|
+
fundingNeeded,
|
|
39
45
|
config,
|
|
46
|
+
realVerifier,
|
|
47
|
+
createVerificationJson,
|
|
40
48
|
debugLogger,
|
|
41
49
|
);
|
|
42
50
|
|
|
@@ -44,15 +52,21 @@ export async function deployNewRollup(
|
|
|
44
52
|
log(
|
|
45
53
|
JSON.stringify(
|
|
46
54
|
{
|
|
47
|
-
payloadAddress: payloadAddress.toString(),
|
|
48
55
|
rollupAddress: rollup.address,
|
|
56
|
+
initialFundedAccounts: initialFundedAccounts.map(a => a.toString()),
|
|
57
|
+
initialValidators: initialValidators.map(a => a.attester.toString()),
|
|
58
|
+
genesisArchiveRoot: genesisArchiveRoot.toString(),
|
|
59
|
+
slashFactoryAddress: slashFactoryAddress.toString(),
|
|
49
60
|
},
|
|
50
61
|
null,
|
|
51
62
|
2,
|
|
52
63
|
),
|
|
53
64
|
);
|
|
54
65
|
} else {
|
|
55
|
-
log(`Payload Address: ${payloadAddress.toString()}`);
|
|
56
66
|
log(`Rollup Address: ${rollup.address}`);
|
|
67
|
+
log(`Initial funded accounts: ${initialFundedAccounts.map(a => a.toString()).join(', ')}`);
|
|
68
|
+
log(`Initial validators: ${initialValidators.map(a => a.attester.toString()).join(', ')}`);
|
|
69
|
+
log(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
|
|
70
|
+
log(`Slash Factory Address: ${slashFactoryAddress.toString()}`);
|
|
57
71
|
}
|
|
58
72
|
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
ProposalState,
|
|
5
5
|
RegistryContract,
|
|
6
6
|
createEthereumChain,
|
|
7
|
-
|
|
7
|
+
createExtendedL1Client,
|
|
8
8
|
} from '@aztec/ethereum';
|
|
9
9
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
10
10
|
|
|
@@ -33,19 +33,20 @@ export async function depositGovernanceTokens({
|
|
|
33
33
|
}) {
|
|
34
34
|
debugLogger.info(`Depositing ${amount} governance tokens to ${recipient}`);
|
|
35
35
|
const chain = createEthereumChain(rpcUrls, chainId);
|
|
36
|
-
const
|
|
36
|
+
const extendedClient = createExtendedL1Client(
|
|
37
37
|
rpcUrls,
|
|
38
38
|
privateKey ?? mnemonic,
|
|
39
39
|
chain.chainInfo,
|
|
40
|
+
undefined,
|
|
40
41
|
mnemonicIndex,
|
|
41
42
|
);
|
|
42
43
|
|
|
43
|
-
const addresses = await RegistryContract.collectAddresses(
|
|
44
|
+
const addresses = await RegistryContract.collectAddresses(extendedClient, registryAddress, 'canonical');
|
|
44
45
|
const governanceAddress = addresses.governanceAddress.toString();
|
|
45
|
-
const tokenAddress = addresses.
|
|
46
|
+
const tokenAddress = addresses.stakingAssetAddress.toString();
|
|
46
47
|
|
|
47
|
-
const feeJuice = new FeeJuiceContract(tokenAddress,
|
|
48
|
-
const governance = new GovernanceContract(governanceAddress,
|
|
48
|
+
const feeJuice = new FeeJuiceContract(tokenAddress, extendedClient);
|
|
49
|
+
const governance = new GovernanceContract(governanceAddress, extendedClient);
|
|
49
50
|
if (mint) {
|
|
50
51
|
await feeJuice.mint(recipient, amount);
|
|
51
52
|
debugLogger.info(`Minted ${amount} tokens to ${recipient}`);
|
|
@@ -83,19 +84,19 @@ export async function proposeWithLock({
|
|
|
83
84
|
}) {
|
|
84
85
|
debugLogger.info(`Proposing with lock from ${payloadAddress} to ${registryAddress}`);
|
|
85
86
|
const chain = createEthereumChain(rpcUrls, chainId);
|
|
86
|
-
const
|
|
87
|
+
const client = createExtendedL1Client(rpcUrls, privateKey ?? mnemonic, chain.chainInfo, undefined, mnemonicIndex);
|
|
87
88
|
|
|
88
|
-
const addresses = await RegistryContract.collectAddresses(
|
|
89
|
+
const addresses = await RegistryContract.collectAddresses(client, registryAddress, 'canonical');
|
|
89
90
|
const governanceAddress = addresses.governanceAddress.toString();
|
|
90
91
|
|
|
91
|
-
const governance = new GovernanceContract(governanceAddress,
|
|
92
|
+
const governance = new GovernanceContract(governanceAddress, client);
|
|
92
93
|
|
|
93
94
|
const proposalId = await governance.proposeWithLock({
|
|
94
95
|
payloadAddress,
|
|
95
|
-
withdrawAddress:
|
|
96
|
+
withdrawAddress: client.account.address,
|
|
96
97
|
});
|
|
97
98
|
if (json) {
|
|
98
|
-
log(JSON.stringify({ proposalId }, null, 2));
|
|
99
|
+
log(JSON.stringify({ proposalId: Number(proposalId) }, null, 2));
|
|
99
100
|
} else {
|
|
100
101
|
log(`Proposed with lock`);
|
|
101
102
|
log(`Proposal ID: ${proposalId}`);
|
|
@@ -131,12 +132,12 @@ export async function voteOnGovernanceProposal({
|
|
|
131
132
|
`Voting on proposal ${proposalId} with ${voteAmount ? voteAmount : 'all'} tokens in favor: ${inFavor}`,
|
|
132
133
|
);
|
|
133
134
|
const chain = createEthereumChain(rpcUrls, chainId);
|
|
134
|
-
const
|
|
135
|
+
const client = createExtendedL1Client(rpcUrls, privateKey ?? mnemonic, chain.chainInfo, undefined, mnemonicIndex);
|
|
135
136
|
|
|
136
|
-
const addresses = await RegistryContract.collectAddresses(
|
|
137
|
+
const addresses = await RegistryContract.collectAddresses(client, registryAddress, 'canonical');
|
|
137
138
|
const governanceAddress = addresses.governanceAddress.toString();
|
|
138
139
|
|
|
139
|
-
const governance = new GovernanceContract(governanceAddress,
|
|
140
|
+
const governance = new GovernanceContract(governanceAddress, client);
|
|
140
141
|
const state = await governance.getProposalState(proposalId);
|
|
141
142
|
if (state !== ProposalState.Active && !waitTilActive) {
|
|
142
143
|
debugLogger.warn(`Proposal is not active, but waitTilActive is false. Not voting.`);
|
|
@@ -170,12 +171,12 @@ export async function executeGovernanceProposal({
|
|
|
170
171
|
}) {
|
|
171
172
|
debugLogger.info(`Executing proposal ${proposalId}`);
|
|
172
173
|
const chain = createEthereumChain(rpcUrls, chainId);
|
|
173
|
-
const
|
|
174
|
+
const client = createExtendedL1Client(rpcUrls, privateKey ?? mnemonic, chain.chainInfo, undefined, mnemonicIndex);
|
|
174
175
|
|
|
175
|
-
const addresses = await RegistryContract.collectAddresses(
|
|
176
|
+
const addresses = await RegistryContract.collectAddresses(client, registryAddress, 'canonical');
|
|
176
177
|
const governanceAddress = addresses.governanceAddress.toString();
|
|
177
178
|
|
|
178
|
-
const governance = new GovernanceContract(governanceAddress,
|
|
179
|
+
const governance = new GovernanceContract(governanceAddress, client);
|
|
179
180
|
const state = await governance.getProposalState(proposalId);
|
|
180
181
|
if (state !== ProposalState.Executable && !waitTilExecutable) {
|
|
181
182
|
debugLogger.warn(`Proposal is not executable, but waitTilExecutable is false. Not executing.`);
|
package/src/cmds/l1/index.ts
CHANGED
|
@@ -3,17 +3,20 @@ import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
|
3
3
|
|
|
4
4
|
import { type Command, Option } from 'commander';
|
|
5
5
|
|
|
6
|
+
import { getL1RollupAddressFromEnv } from '../../config/get_l1_config.js';
|
|
6
7
|
import {
|
|
7
8
|
ETHEREUM_HOSTS,
|
|
9
|
+
MNEMONIC,
|
|
8
10
|
PRIVATE_KEY,
|
|
9
11
|
l1ChainIdOption,
|
|
10
|
-
|
|
12
|
+
nodeOption,
|
|
11
13
|
parseAztecAddress,
|
|
12
14
|
parseBigint,
|
|
13
15
|
parseEthereumAddress,
|
|
14
|
-
pxeOption,
|
|
15
16
|
} from '../../utils/commands.js';
|
|
16
17
|
|
|
18
|
+
export { addL1Validator } from './update_l1_validators.js';
|
|
19
|
+
|
|
17
20
|
const l1RpcUrlsOption = new Option(
|
|
18
21
|
'--l1-rpc-urls <string>',
|
|
19
22
|
'List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated)',
|
|
@@ -23,9 +26,9 @@ const l1RpcUrlsOption = new Option(
|
|
|
23
26
|
.makeOptionMandatory(true)
|
|
24
27
|
.argParser((arg: string) => arg.split(',').map(url => url.trim()));
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
const { BB_BINARY_PATH, BB_WORKING_DIRECTORY } = process.env;
|
|
29
|
+
const networkOption = new Option('--network <string>', 'Network to execute against').env('NETWORK');
|
|
28
30
|
|
|
31
|
+
export function injectCommands(program: Command, log: LogFn, debugLogger: Logger) {
|
|
29
32
|
program
|
|
30
33
|
.command('deploy-l1-contracts')
|
|
31
34
|
.description('Deploys all necessary Ethereum contracts for Aztec.')
|
|
@@ -42,7 +45,11 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
42
45
|
.option('--salt <number>', 'The optional salt to use in deployment', arg => parseInt(arg))
|
|
43
46
|
.option('--json', 'Output the contract addresses in JSON format')
|
|
44
47
|
.option('--test-accounts', 'Populate genesis state with initial fee juice for test accounts')
|
|
48
|
+
.option('--sponsored-fpc', 'Populate genesis state with a testing sponsored FPC contract')
|
|
45
49
|
.option('--accelerated-test-deployments', 'Fire and forget deployment transactions, use in testing only', false)
|
|
50
|
+
.option('--real-verifier', 'Deploy the real verifier', false)
|
|
51
|
+
.option('--existing-token <address>', 'Use an existing ERC20 for both fee and staking', parseEthereumAddress)
|
|
52
|
+
.option('--create-verification-json [path]', 'Create JSON file for etherscan contract verification', false)
|
|
46
53
|
.action(async options => {
|
|
47
54
|
const { deployL1Contracts } = await import('./deploy_l1_contracts.js');
|
|
48
55
|
|
|
@@ -56,9 +63,13 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
56
63
|
options.mnemonicIndex,
|
|
57
64
|
options.salt,
|
|
58
65
|
options.testAccounts,
|
|
66
|
+
options.sponsoredFpc,
|
|
59
67
|
options.acceleratedTestDeployments,
|
|
60
68
|
options.json,
|
|
69
|
+
options.createVerificationJson,
|
|
61
70
|
initialValidators,
|
|
71
|
+
options.realVerifier,
|
|
72
|
+
options.existingToken,
|
|
62
73
|
log,
|
|
63
74
|
debugLogger,
|
|
64
75
|
);
|
|
@@ -66,7 +77,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
66
77
|
|
|
67
78
|
program
|
|
68
79
|
.command('deploy-new-rollup')
|
|
69
|
-
.description('Deploys a new rollup contract and
|
|
80
|
+
.description('Deploys a new rollup contract and adds it to the registry (if you are the owner).')
|
|
70
81
|
.requiredOption('-r, --registry-address <string>', 'The address of the registry contract', parseEthereumAddress)
|
|
71
82
|
.addOption(l1RpcUrlsOption)
|
|
72
83
|
.option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
@@ -74,13 +85,16 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
74
85
|
.option(
|
|
75
86
|
'-m, --mnemonic <string>',
|
|
76
87
|
'The mnemonic to use in deployment',
|
|
77
|
-
'test test test test test test test test test test test junk',
|
|
88
|
+
MNEMONIC ?? 'test test test test test test test test test test test junk',
|
|
78
89
|
)
|
|
79
90
|
.option('-i, --mnemonic-index <number>', 'The index of the mnemonic to use in deployment', arg => parseInt(arg), 0)
|
|
80
91
|
.addOption(l1ChainIdOption)
|
|
81
92
|
.option('--salt <number>', 'The optional salt to use in deployment', arg => parseInt(arg))
|
|
82
93
|
.option('--json', 'Output the contract addresses in JSON format')
|
|
83
94
|
.option('--test-accounts', 'Populate genesis state with initial fee juice for test accounts')
|
|
95
|
+
.option('--sponsored-fpc', 'Populate genesis state with a testing sponsored FPC contract')
|
|
96
|
+
.option('--real-verifier', 'Deploy the real verifier', false)
|
|
97
|
+
.option('--create-verification-json [path]', 'Create JSON file for etherscan contract verification', false)
|
|
84
98
|
.action(async options => {
|
|
85
99
|
const { deployNewRollup } = await import('./deploy_new_rollup.js');
|
|
86
100
|
|
|
@@ -95,8 +109,11 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
95
109
|
options.mnemonicIndex,
|
|
96
110
|
options.salt,
|
|
97
111
|
options.testAccounts,
|
|
112
|
+
options.sponsoredFpc,
|
|
98
113
|
options.json,
|
|
99
114
|
initialValidators,
|
|
115
|
+
options.realVerifier,
|
|
116
|
+
options.createVerificationJson,
|
|
100
117
|
log,
|
|
101
118
|
debugLogger,
|
|
102
119
|
);
|
|
@@ -274,28 +291,40 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
274
291
|
|
|
275
292
|
program
|
|
276
293
|
.command('add-l1-validator')
|
|
277
|
-
.description('Adds a validator to the L1 rollup contract.')
|
|
294
|
+
.description('Adds a validator to the L1 rollup contract via a direct deposit.')
|
|
278
295
|
.addOption(l1RpcUrlsOption)
|
|
279
|
-
.
|
|
296
|
+
.addOption(networkOption)
|
|
297
|
+
.option('-pk, --private-key <string>', 'The private key to use sending the transaction', PRIVATE_KEY)
|
|
280
298
|
.option(
|
|
281
299
|
'-m, --mnemonic <string>',
|
|
282
|
-
'The mnemonic to use
|
|
300
|
+
'The mnemonic to use sending the transaction',
|
|
283
301
|
'test test test test test test test test test test test junk',
|
|
284
302
|
)
|
|
285
303
|
.addOption(l1ChainIdOption)
|
|
286
|
-
.option('--
|
|
287
|
-
.option('--rollup <address>', 'ethereum address of the rollup contract', parseEthereumAddress)
|
|
304
|
+
.option('--attester <address>', 'ethereum address of the attester', parseEthereumAddress)
|
|
288
305
|
.option('--withdrawer <address>', 'ethereum address of the withdrawer', parseEthereumAddress)
|
|
306
|
+
.option(
|
|
307
|
+
'--bls-secret-key <string>',
|
|
308
|
+
'The BN254 scalar field element used as a secret key for BLS signatures. Will be associated with the attester address.',
|
|
309
|
+
parseBigint,
|
|
310
|
+
)
|
|
311
|
+
.option('--move-with-latest-rollup', 'Whether to move with the latest rollup', true)
|
|
312
|
+
.option('--rollup <string>', 'Rollup contract address', parseEthereumAddress)
|
|
289
313
|
.action(async options => {
|
|
290
|
-
const {
|
|
291
|
-
|
|
314
|
+
const { addL1ValidatorViaRollup } = await import('./update_l1_validators.js');
|
|
315
|
+
|
|
316
|
+
const rollupAddress = options.rollup ?? (await getL1RollupAddressFromEnv(options.l1RpcUrls, options.l1ChainId));
|
|
317
|
+
|
|
318
|
+
await addL1ValidatorViaRollup({
|
|
292
319
|
rpcUrls: options.l1RpcUrls,
|
|
293
320
|
chainId: options.l1ChainId,
|
|
294
321
|
privateKey: options.privateKey,
|
|
295
322
|
mnemonic: options.mnemonic,
|
|
296
|
-
|
|
297
|
-
|
|
323
|
+
attesterAddress: options.attester,
|
|
324
|
+
blsSecretKey: options.blsSecretKey,
|
|
298
325
|
withdrawerAddress: options.withdrawer,
|
|
326
|
+
rollupAddress,
|
|
327
|
+
moveWithLatestRollup: options.moveWithLatestRollup,
|
|
299
328
|
log,
|
|
300
329
|
debugLogger,
|
|
301
330
|
});
|
|
@@ -347,6 +376,30 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
347
376
|
});
|
|
348
377
|
});
|
|
349
378
|
|
|
379
|
+
program
|
|
380
|
+
.command('trigger-seed-snapshot')
|
|
381
|
+
.description('Triggers a seed snapshot for the next epoch.')
|
|
382
|
+
.option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
383
|
+
.option(
|
|
384
|
+
'-m, --mnemonic <string>',
|
|
385
|
+
'The mnemonic to use in deployment',
|
|
386
|
+
'test test test test test test test test test test test junk',
|
|
387
|
+
)
|
|
388
|
+
.option('--rollup <address>', 'ethereum address of the rollup contract', parseEthereumAddress)
|
|
389
|
+
.addOption(l1RpcUrlsOption)
|
|
390
|
+
.addOption(l1ChainIdOption)
|
|
391
|
+
.action(async options => {
|
|
392
|
+
const { triggerSeedSnapshot } = await import('./trigger_seed_snapshot.js');
|
|
393
|
+
await triggerSeedSnapshot({
|
|
394
|
+
rollupAddress: options.rollup,
|
|
395
|
+
rpcUrls: options.l1RpcUrls,
|
|
396
|
+
chainId: options.l1ChainId,
|
|
397
|
+
privateKey: options.privateKey,
|
|
398
|
+
mnemonic: options.mnemonic,
|
|
399
|
+
log,
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
|
|
350
403
|
program
|
|
351
404
|
.command('debug-rollup')
|
|
352
405
|
.description('Debugs the rollup contract.')
|
|
@@ -391,56 +444,6 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
391
444
|
});
|
|
392
445
|
});
|
|
393
446
|
|
|
394
|
-
program
|
|
395
|
-
.command('deploy-l1-verifier')
|
|
396
|
-
.description('Deploys the rollup verifier contract')
|
|
397
|
-
.addOption(l1RpcUrlsOption)
|
|
398
|
-
.addOption(l1ChainIdOption)
|
|
399
|
-
.addOption(makePxeOption(false).conflicts('rollup-address'))
|
|
400
|
-
.addOption(
|
|
401
|
-
new Option('--rollup-address <string>', 'The address of the rollup contract')
|
|
402
|
-
.env('ROLLUP_CONTRACT_ADDRESS')
|
|
403
|
-
.argParser(parseEthereumAddress)
|
|
404
|
-
.conflicts('rpc-url'),
|
|
405
|
-
)
|
|
406
|
-
.option('--l1-private-key <string>', 'The L1 private key to use for deployment', PRIVATE_KEY)
|
|
407
|
-
.option(
|
|
408
|
-
'-m, --mnemonic <string>',
|
|
409
|
-
'The mnemonic to use in deployment',
|
|
410
|
-
'test test test test test test test test test test test junk',
|
|
411
|
-
)
|
|
412
|
-
.requiredOption('--verifier <verifier>', 'Either mock or real', 'real')
|
|
413
|
-
.option('--bb <path>', 'Path to bb binary', BB_BINARY_PATH)
|
|
414
|
-
.option('--bb-working-dir <path>', 'Path to bb working directory', BB_WORKING_DIRECTORY)
|
|
415
|
-
.action(async options => {
|
|
416
|
-
const { deployMockVerifier, deployUltraHonkVerifier } = await import('./deploy_l1_verifier.js');
|
|
417
|
-
if (options.verifier === 'mock') {
|
|
418
|
-
await deployMockVerifier(
|
|
419
|
-
options.rollupAddress?.toString(),
|
|
420
|
-
options.l1RpcUrls,
|
|
421
|
-
options.l1ChainId,
|
|
422
|
-
options.l1PrivateKey,
|
|
423
|
-
options.mnemonic,
|
|
424
|
-
options.rpcUrl,
|
|
425
|
-
log,
|
|
426
|
-
debugLogger,
|
|
427
|
-
);
|
|
428
|
-
} else {
|
|
429
|
-
await deployUltraHonkVerifier(
|
|
430
|
-
options.rollupAddress?.toString(),
|
|
431
|
-
options.l1RpcUrls,
|
|
432
|
-
options.l1ChainId,
|
|
433
|
-
options.l1PrivateKey,
|
|
434
|
-
options.mnemonic,
|
|
435
|
-
options.rpcUrl,
|
|
436
|
-
options.bb,
|
|
437
|
-
options.bbWorkingDir,
|
|
438
|
-
log,
|
|
439
|
-
debugLogger,
|
|
440
|
-
);
|
|
441
|
-
}
|
|
442
|
-
});
|
|
443
|
-
|
|
444
447
|
program
|
|
445
448
|
.command('bridge-erc20')
|
|
446
449
|
.description('Bridges ERC20 tokens to L2.')
|
|
@@ -457,6 +460,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
457
460
|
.addOption(l1ChainIdOption)
|
|
458
461
|
.requiredOption('-t, --token <string>', 'The address of the token to bridge', parseEthereumAddress)
|
|
459
462
|
.requiredOption('-p, --portal <string>', 'The address of the portal contract', parseEthereumAddress)
|
|
463
|
+
.option('-f, --faucet <string>', 'The address of the faucet contract (only used if minting)', parseEthereumAddress)
|
|
460
464
|
.option('--l1-private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
461
465
|
.option('--json', 'Output the claim in JSON format')
|
|
462
466
|
.action(async (amount, recipient, options) => {
|
|
@@ -469,6 +473,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
469
473
|
options.l1PrivateKey,
|
|
470
474
|
options.mnemonic,
|
|
471
475
|
options.token,
|
|
476
|
+
options.faucet,
|
|
472
477
|
options.portal,
|
|
473
478
|
options.private,
|
|
474
479
|
options.mint,
|
|
@@ -506,52 +511,20 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
506
511
|
)
|
|
507
512
|
.argument('[blockNumber]', 'The target block number, defaults to the latest pending block number.', parseBigint)
|
|
508
513
|
.addOption(l1RpcUrlsOption)
|
|
509
|
-
.addOption(
|
|
514
|
+
.addOption(nodeOption)
|
|
510
515
|
.action(async (blockNumber, options) => {
|
|
511
516
|
const { assumeProvenThrough } = await import('./assume_proven_through.js');
|
|
512
|
-
await assumeProvenThrough(blockNumber, options.l1RpcUrls, options.
|
|
517
|
+
await assumeProvenThrough(blockNumber, options.l1RpcUrls, options.nodeUrl, log);
|
|
513
518
|
});
|
|
514
519
|
|
|
515
520
|
program
|
|
516
521
|
.command('advance-epoch')
|
|
517
522
|
.description('Use L1 cheat codes to warp time until the next epoch.')
|
|
518
523
|
.addOption(l1RpcUrlsOption)
|
|
519
|
-
.addOption(
|
|
524
|
+
.addOption(nodeOption)
|
|
520
525
|
.action(async options => {
|
|
521
526
|
const { advanceEpoch } = await import('./advance_epoch.js');
|
|
522
|
-
await advanceEpoch(options.l1RpcUrls, options.
|
|
523
|
-
});
|
|
524
|
-
|
|
525
|
-
program
|
|
526
|
-
.command('prover-stats', { hidden: true })
|
|
527
|
-
.addOption(l1RpcUrlsOption)
|
|
528
|
-
.addOption(l1ChainIdOption)
|
|
529
|
-
.option('--start-block <number>', 'The L1 block number to start from', parseBigint, 1n)
|
|
530
|
-
.option('--end-block <number>', 'The last L1 block number to query', parseBigint)
|
|
531
|
-
.option('--batch-size <number>', 'The number of blocks to query in each batch', parseBigint, 100n)
|
|
532
|
-
.option('--proving-timeout <number>', 'Cutoff for proving time to consider a block', parseBigint)
|
|
533
|
-
.option('--l1-rollup-address <string>', 'Address of the rollup contract (required if node URL is not set)')
|
|
534
|
-
.option(
|
|
535
|
-
'--node-url <string>',
|
|
536
|
-
'JSON RPC URL of an Aztec node to retrieve the rollup contract address (required if L1 rollup address is not set)',
|
|
537
|
-
)
|
|
538
|
-
.option('--raw-logs', 'Output raw logs instead of aggregated stats')
|
|
539
|
-
.action(async options => {
|
|
540
|
-
const { proverStats } = await import('./prover_stats.js');
|
|
541
|
-
const { l1RpcUrls, chainId, l1RollupAddress, startBlock, endBlock, batchSize, nodeUrl, provingTimeout, rawLogs } =
|
|
542
|
-
options;
|
|
543
|
-
await proverStats({
|
|
544
|
-
l1RpcUrls,
|
|
545
|
-
chainId,
|
|
546
|
-
l1RollupAddress,
|
|
547
|
-
startBlock,
|
|
548
|
-
endBlock,
|
|
549
|
-
batchSize,
|
|
550
|
-
nodeUrl,
|
|
551
|
-
provingTimeout,
|
|
552
|
-
rawLogs,
|
|
553
|
-
log,
|
|
554
|
-
});
|
|
527
|
+
await advanceEpoch(options.l1RpcUrls, options.nodeUrl, log);
|
|
555
528
|
});
|
|
556
529
|
|
|
557
530
|
return program;
|