@aztec/cli 0.0.0-test.1 → 0.0.1-commit.0208eb9
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 +2 -428
- 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 +10 -0
- package/dest/cmds/aztec_node/get_current_min_fee.d.ts +3 -0
- package/dest/cmds/aztec_node/get_current_min_fee.d.ts.map +1 -0
- package/dest/cmds/aztec_node/get_current_min_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 +7 -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 +4 -0
- package/dest/cmds/aztec_node/index.d.ts.map +1 -0
- package/dest/cmds/aztec_node/index.js +28 -0
- package/dest/cmds/contracts/index.d.ts +1 -1
- package/dest/cmds/contracts/inspect_contract.d.ts +1 -1
- package/dest/cmds/contracts/inspect_contract.d.ts.map +1 -1
- package/dest/cmds/contracts/inspect_contract.js +13 -15
- package/dest/cmds/contracts/parse_parameter_struct.d.ts +1 -1
- package/dest/cmds/infrastructure/index.d.ts +3 -3
- package/dest/cmds/infrastructure/index.d.ts.map +1 -1
- package/dest/cmds/infrastructure/index.js +8 -10
- package/dest/cmds/infrastructure/sequencers.d.ts +5 -6
- package/dest/cmds/infrastructure/sequencers.d.ts.map +1 -1
- package/dest/cmds/infrastructure/sequencers.js +38 -18
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts +2 -2
- 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 +2 -2
- 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 +3 -2
- package/dest/cmds/l1/assume_proven_through.d.ts.map +1 -1
- package/dest/cmds/l1/assume_proven_through.js +10 -10
- package/dest/cmds/l1/bridge_erc20.d.ts +3 -3
- package/dest/cmds/l1/bridge_erc20.d.ts.map +1 -1
- package/dest/cmds/l1/bridge_erc20.js +6 -5
- package/dest/cmds/l1/compute_genesis_values.d.ts +4 -0
- package/dest/cmds/l1/compute_genesis_values.d.ts.map +1 -0
- package/dest/cmds/l1/compute_genesis_values.js +17 -0
- package/dest/cmds/l1/create_l1_account.d.ts +1 -1
- package/dest/cmds/l1/deploy_l1_contracts_cmd.d.ts +4 -0
- package/dest/cmds/l1/deploy_l1_contracts_cmd.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_l1_contracts_cmd.js +81 -0
- package/dest/cmds/l1/deploy_new_rollup.d.ts +4 -3
- package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -1
- package/dest/cmds/l1/deploy_new_rollup.js +18 -9
- package/dest/cmds/l1/get_l1_addresses.d.ts +2 -2
- package/dest/cmds/l1/get_l1_addresses.d.ts.map +1 -1
- package/dest/cmds/l1/get_l1_addresses.js +5 -2
- package/dest/cmds/l1/get_l1_balance.d.ts +1 -1
- package/dest/cmds/l1/get_l1_balance.js +4 -2
- package/dest/cmds/l1/governance_utils.d.ts +5 -5
- package/dest/cmds/l1/governance_utils.d.ts.map +1 -1
- package/dest/cmds/l1/governance_utils.js +19 -17
- package/dest/cmds/l1/index.d.ts +1 -1
- package/dest/cmds/l1/index.d.ts.map +1 -1
- package/dest/cmds/l1/index.js +41 -44
- package/dest/cmds/l1/prover_stats.d.ts +1 -1
- package/dest/cmds/l1/prover_stats.d.ts.map +1 -1
- package/dest/cmds/l1/prover_stats.js +32 -30
- 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 +20 -0
- package/dest/cmds/l1/update_l1_validators.d.ts +21 -6
- package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -1
- package/dest/cmds/l1/update_l1_validators.js +198 -103
- package/dest/cmds/misc/compute_selector.d.ts +1 -1
- package/dest/cmds/misc/example_contracts.d.ts +1 -1
- package/dest/cmds/misc/generate_bootnode_enr.d.ts +2 -2
- 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_p2p_private_key.d.ts +1 -1
- package/dest/cmds/misc/generate_secret_and_hash.d.ts +2 -2
- package/dest/cmds/misc/generate_secret_and_hash.d.ts.map +1 -1
- package/dest/cmds/misc/generate_secret_and_hash.js +4 -4
- package/dest/cmds/misc/generate_secret_key.d.ts +2 -2
- 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 +1 -1
- package/dest/cmds/misc/index.d.ts.map +1 -1
- package/dest/cmds/misc/index.js +8 -4
- package/dest/cmds/misc/update/common.d.ts +1 -1
- package/dest/cmds/misc/update/github.d.ts +1 -2
- 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/noir.d.ts +1 -1
- package/dest/cmds/misc/update/npm.d.ts +1 -1
- package/dest/cmds/misc/update/npm.js +1 -1
- package/dest/cmds/misc/update/utils.d.ts +1 -1
- package/dest/cmds/misc/update.d.ts +1 -1
- package/dest/cmds/misc/update.d.ts.map +1 -1
- package/dest/cmds/misc/update.js +2 -3
- package/dest/cmds/validator_keys/add.d.ts +5 -0
- package/dest/cmds/validator_keys/add.d.ts.map +1 -0
- package/dest/cmds/validator_keys/add.js +83 -0
- package/dest/cmds/validator_keys/generate_bls_keypair.d.ts +12 -0
- package/dest/cmds/validator_keys/generate_bls_keypair.d.ts.map +1 -0
- package/dest/cmds/validator_keys/generate_bls_keypair.js +27 -0
- package/dest/cmds/validator_keys/index.d.ts +4 -0
- package/dest/cmds/validator_keys/index.d.ts.map +1 -0
- package/dest/cmds/validator_keys/index.js +32 -0
- package/dest/cmds/validator_keys/new.d.ts +29 -0
- package/dest/cmds/validator_keys/new.d.ts.map +1 -0
- package/dest/cmds/validator_keys/new.js +134 -0
- package/dest/cmds/validator_keys/shared.d.ts +68 -0
- package/dest/cmds/validator_keys/shared.d.ts.map +1 -0
- package/dest/cmds/validator_keys/shared.js +274 -0
- package/dest/cmds/validator_keys/staker.d.ts +38 -0
- package/dest/cmds/validator_keys/staker.d.ts.map +1 -0
- package/dest/cmds/validator_keys/staker.js +210 -0
- package/dest/cmds/validator_keys/utils.d.ts +25 -0
- package/dest/cmds/validator_keys/utils.d.ts.map +1 -0
- package/dest/cmds/validator_keys/utils.js +52 -0
- 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 +14 -0
- package/dest/config/chain_l2_config.d.ts.map +1 -0
- package/dest/config/chain_l2_config.js +45 -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/generated/networks.d.ts +205 -0
- package/dest/config/generated/networks.d.ts.map +1 -0
- package/dest/config/generated/networks.js +206 -0
- package/dest/config/get_l1_config.d.ts +9 -0
- package/dest/config/get_l1_config.d.ts.map +1 -0
- package/dest/config/get_l1_config.js +24 -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 +22 -0
- package/dest/config/network_config.d.ts.map +1 -0
- package/dest/config/network_config.js +115 -0
- package/dest/utils/aztec.d.ts +15 -26
- package/dest/utils/aztec.d.ts.map +1 -1
- package/dest/utils/aztec.js +56 -72
- package/dest/utils/commands.d.ts +22 -13
- package/dest/utils/commands.d.ts.map +1 -1
- package/dest/utils/commands.js +43 -16
- package/dest/utils/encoding.d.ts +1 -1
- package/dest/utils/encoding.js +2 -2
- package/dest/utils/github.d.ts +1 -2
- package/dest/utils/github.d.ts.map +1 -1
- package/dest/utils/github.js +0 -1
- package/dest/utils/index.d.ts +2 -1
- package/dest/utils/index.d.ts.map +1 -1
- package/dest/utils/index.js +1 -0
- package/dest/utils/inspect.d.ts +5 -11
- package/dest/utils/inspect.d.ts.map +1 -1
- package/dest/utils/inspect.js +23 -110
- 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 +61 -37
- package/public_include_metric_prefixes.json +1 -0
- package/src/cmds/aztec_node/block_number.ts +9 -0
- package/src/cmds/aztec_node/get_block.ts +11 -0
- package/src/cmds/aztec_node/get_current_min_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 +11 -9
- 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 +20 -17
- package/src/cmds/infrastructure/index.ts +8 -11
- package/src/cmds/infrastructure/sequencers.ts +41 -22
- 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 +11 -10
- package/src/cmds/l1/bridge_erc20.ts +8 -4
- package/src/cmds/l1/compute_genesis_values.ts +29 -0
- package/src/cmds/l1/deploy_l1_contracts_cmd.ts +107 -0
- package/src/cmds/l1/deploy_new_rollup.ts +24 -15
- package/src/cmds/l1/get_l1_addresses.ts +5 -3
- package/src/cmds/l1/get_l1_balance.ts +2 -2
- package/src/cmds/l1/governance_utils.ts +20 -24
- package/src/cmds/l1/index.ts +87 -113
- package/src/cmds/l1/prover_stats.ts +42 -31
- package/src/cmds/l1/trigger_seed_snapshot.ts +32 -0
- package/src/cmds/l1/update_l1_validators.ts +218 -97
- package/src/cmds/misc/generate_bootnode_enr.ts +3 -2
- package/src/cmds/misc/generate_secret_and_hash.ts +4 -4
- 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 +14 -5
- package/src/cmds/misc/update/github.ts +0 -1
- package/src/cmds/misc/update/npm.ts +1 -1
- package/src/cmds/misc/update.ts +1 -7
- package/src/cmds/validator_keys/add.ts +123 -0
- package/src/cmds/validator_keys/generate_bls_keypair.ts +34 -0
- package/src/cmds/validator_keys/index.ts +142 -0
- package/src/cmds/validator_keys/new.ts +207 -0
- package/src/cmds/validator_keys/shared.ts +326 -0
- package/src/cmds/validator_keys/staker.ts +301 -0
- package/src/cmds/validator_keys/utils.ts +81 -0
- package/src/config/cached_fetch.ts +67 -0
- package/src/config/chain_l2_config.ts +57 -0
- package/src/config/enrich_env.ts +15 -0
- package/src/config/generated/networks.ts +210 -0
- package/src/config/get_l1_config.ts +31 -0
- package/src/config/index.ts +4 -0
- package/src/config/network_config.ts +147 -0
- package/src/utils/aztec.ts +74 -120
- package/src/utils/commands.ts +57 -20
- package/src/utils/encoding.ts +2 -2
- package/src/utils/github.ts +0 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/inspect.ts +28 -124
- 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 +0 -4
- package/dest/cmds/devnet/index.d.ts.map +0 -1
- package/dest/cmds/devnet/index.js +0 -14
- package/dest/cmds/l1/deploy_l1_contracts.d.ts +0 -4
- package/dest/cmds/l1/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/cmds/l1/deploy_l1_contracts.js +0 -29
- 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_contracts.ts +0 -65
- 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/src/utils/aztec.ts
CHANGED
|
@@ -1,125 +1,102 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import {
|
|
2
|
+
type ContractArtifact,
|
|
3
|
+
type FunctionAbi,
|
|
4
|
+
FunctionType,
|
|
5
|
+
getAllFunctionAbis,
|
|
6
|
+
loadContractArtifact,
|
|
7
|
+
} from '@aztec/aztec.js/abi';
|
|
8
|
+
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
9
|
+
import type { L1ContractsConfig } from '@aztec/ethereum/config';
|
|
10
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
11
|
+
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
12
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
13
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
14
|
+
import { type LogFn, createLogger } from '@aztec/foundation/log';
|
|
6
15
|
import type { NoirPackageConfig } from '@aztec/foundation/noir';
|
|
7
|
-
import {
|
|
8
|
-
import { FunctionType } from '@aztec/stdlib/abi';
|
|
16
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
9
17
|
|
|
10
18
|
import TOML from '@iarna/toml';
|
|
11
19
|
import { readFile } from 'fs/promises';
|
|
12
|
-
import {
|
|
20
|
+
import type { HDAccount, Hex, PrivateKeyAccount } from 'viem';
|
|
13
21
|
|
|
14
22
|
import { encodeArgs } from './encoding.js';
|
|
15
23
|
|
|
24
|
+
const logger = createLogger('cli:utils:aztec');
|
|
25
|
+
|
|
16
26
|
/**
|
|
17
27
|
* Helper to get an ABI function or throw error if it doesn't exist.
|
|
18
28
|
* @param artifact - Contract's build artifact in JSON format.
|
|
19
29
|
* @param fnName - Function name to be found.
|
|
20
30
|
* @returns The function's ABI.
|
|
21
31
|
*/
|
|
22
|
-
export function
|
|
23
|
-
const fn = artifact.
|
|
32
|
+
export function getFunctionAbi(artifact: ContractArtifact, fnName: string): FunctionAbi {
|
|
33
|
+
const fn = getAllFunctionAbis(artifact).find(({ name }) => name === fnName);
|
|
24
34
|
if (!fn) {
|
|
25
35
|
throw Error(`Function ${fnName} not found in contract ABI.`);
|
|
26
36
|
}
|
|
27
37
|
return fn;
|
|
28
38
|
}
|
|
29
39
|
|
|
30
|
-
/**
|
|
31
|
-
* Function to execute the 'deployRollupContracts' command.
|
|
32
|
-
* @param rpcUrls - The RPC URL of the ethereum node.
|
|
33
|
-
* @param chainId - The chain ID of the L1 host.
|
|
34
|
-
* @param privateKey - The private key to be used in contract deployment.
|
|
35
|
-
* @param mnemonic - The mnemonic to be used in contract deployment.
|
|
36
|
-
*/
|
|
37
|
-
export async function deployAztecContracts(
|
|
38
|
-
rpcUrls: string[],
|
|
39
|
-
chainId: number,
|
|
40
|
-
privateKey: string | undefined,
|
|
41
|
-
mnemonic: string,
|
|
42
|
-
mnemonicIndex: number,
|
|
43
|
-
salt: number | undefined,
|
|
44
|
-
initialValidators: EthAddress[],
|
|
45
|
-
genesisArchiveRoot: Fr,
|
|
46
|
-
genesisBlockHash: Fr,
|
|
47
|
-
acceleratedTestDeployments: boolean,
|
|
48
|
-
config: L1ContractsConfig,
|
|
49
|
-
debugLogger: Logger,
|
|
50
|
-
): Promise<DeployL1ContractsReturnType> {
|
|
51
|
-
const { createEthereumChain, deployL1Contracts } = await import('@aztec/ethereum');
|
|
52
|
-
const { mnemonicToAccount, privateKeyToAccount } = await import('viem/accounts');
|
|
53
|
-
|
|
54
|
-
const account = !privateKey
|
|
55
|
-
? mnemonicToAccount(mnemonic!, { addressIndex: mnemonicIndex })
|
|
56
|
-
: privateKeyToAccount(`${privateKey.startsWith('0x') ? '' : '0x'}${privateKey}` as `0x${string}`);
|
|
57
|
-
const chain = createEthereumChain(rpcUrls, chainId);
|
|
58
|
-
|
|
59
|
-
const { getVKTreeRoot } = await import('@aztec/noir-protocol-circuits-types/vk-tree');
|
|
60
|
-
|
|
61
|
-
return await deployL1Contracts(
|
|
62
|
-
chain.rpcUrls,
|
|
63
|
-
account,
|
|
64
|
-
chain.chainInfo,
|
|
65
|
-
debugLogger,
|
|
66
|
-
{
|
|
67
|
-
l2FeeJuiceAddress: ProtocolContractAddress.FeeJuice.toField(),
|
|
68
|
-
vkTreeRoot: getVKTreeRoot(),
|
|
69
|
-
protocolContractTreeRoot,
|
|
70
|
-
genesisArchiveRoot,
|
|
71
|
-
genesisBlockHash,
|
|
72
|
-
salt,
|
|
73
|
-
initialValidators,
|
|
74
|
-
acceleratedTestDeployments,
|
|
75
|
-
...config,
|
|
76
|
-
},
|
|
77
|
-
config,
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
40
|
export async function deployNewRollupContracts(
|
|
82
41
|
registryAddress: EthAddress,
|
|
83
42
|
rpcUrls: string[],
|
|
84
|
-
chainId: number,
|
|
85
43
|
privateKey: string | undefined,
|
|
44
|
+
chainId: number,
|
|
86
45
|
mnemonic: string,
|
|
87
46
|
mnemonicIndex: number,
|
|
88
|
-
|
|
89
|
-
initialValidators: EthAddress[],
|
|
47
|
+
initialValidators: Operator[],
|
|
90
48
|
genesisArchiveRoot: Fr,
|
|
91
|
-
|
|
49
|
+
feeJuicePortalInitialBalance: bigint,
|
|
92
50
|
config: L1ContractsConfig,
|
|
93
|
-
|
|
94
|
-
): Promise<{
|
|
95
|
-
const {
|
|
51
|
+
realVerifier: boolean,
|
|
52
|
+
): Promise<{ rollup: RollupContract; slashFactoryAddress: EthAddress }> {
|
|
53
|
+
const { deployRollupForUpgrade } = await import('@aztec/ethereum/deploy-aztec-l1-contracts');
|
|
96
54
|
const { mnemonicToAccount, privateKeyToAccount } = await import('viem/accounts');
|
|
97
55
|
const { getVKTreeRoot } = await import('@aztec/noir-protocol-circuits-types/vk-tree');
|
|
98
56
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
57
|
+
let account: HDAccount | PrivateKeyAccount;
|
|
58
|
+
if (privateKey) {
|
|
59
|
+
account = privateKeyToAccount(addLeadingHex(privateKey));
|
|
60
|
+
} else {
|
|
61
|
+
account = mnemonicToAccount(mnemonic!, { addressIndex: mnemonicIndex });
|
|
62
|
+
const privateKeyBuf = account.getHdKey().privateKey;
|
|
63
|
+
const privateKeyHex = Buffer.from(privateKeyBuf!).toString('hex');
|
|
64
|
+
privateKey = `0x${privateKeyHex}`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (!initialValidators || initialValidators.length === 0) {
|
|
68
|
+
// initialize the new rollup with Amin's validator address.
|
|
69
|
+
const aminAddressString = '0x3b218d0F26d15B36C715cB06c949210a0d630637';
|
|
70
|
+
const amin = EthAddress.fromString(aminAddressString);
|
|
71
|
+
|
|
72
|
+
initialValidators = [
|
|
73
|
+
{
|
|
74
|
+
attester: amin,
|
|
75
|
+
withdrawer: amin,
|
|
76
|
+
// No secrets here. The actual keys are not currently used.
|
|
77
|
+
bn254SecretKey: new SecretValue(Fr.fromHexString(aminAddressString).toBigInt()),
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
logger.info('Initializing new rollup with old attesters', { initialValidators });
|
|
81
|
+
}
|
|
104
82
|
|
|
105
|
-
const {
|
|
106
|
-
|
|
83
|
+
const { rollup, slashFactoryAddress } = await deployRollupForUpgrade(
|
|
84
|
+
privateKey as Hex,
|
|
85
|
+
rpcUrls[0],
|
|
86
|
+
chainId,
|
|
87
|
+
registryAddress,
|
|
107
88
|
{
|
|
108
|
-
salt,
|
|
109
89
|
vkTreeRoot: getVKTreeRoot(),
|
|
110
|
-
|
|
111
|
-
l2FeeJuiceAddress: ProtocolContractAddress.FeeJuice.toField(),
|
|
90
|
+
protocolContractsHash,
|
|
112
91
|
genesisArchiveRoot,
|
|
113
|
-
genesisBlockHash,
|
|
114
92
|
initialValidators,
|
|
93
|
+
feeJuicePortalInitialBalance,
|
|
94
|
+
realVerifier,
|
|
115
95
|
...config,
|
|
116
96
|
},
|
|
117
|
-
registryAddress,
|
|
118
|
-
logger,
|
|
119
|
-
config,
|
|
120
97
|
);
|
|
121
98
|
|
|
122
|
-
return {
|
|
99
|
+
return { rollup, slashFactoryAddress: EthAddress.fromString(slashFactoryAddress!) };
|
|
123
100
|
}
|
|
124
101
|
|
|
125
102
|
/**
|
|
@@ -178,7 +155,7 @@ export async function getContractArtifact(fileDir: string, log: LogFn) {
|
|
|
178
155
|
*/
|
|
179
156
|
export async function prepTx(contractFile: string, functionName: string, _functionArgs: string[], log: LogFn) {
|
|
180
157
|
const contractArtifact = await getContractArtifact(contractFile, log);
|
|
181
|
-
const functionArtifact =
|
|
158
|
+
const functionArtifact = getFunctionAbi(contractArtifact, functionName);
|
|
182
159
|
const functionArgs = encodeArgs(_functionArgs, functionArtifact.parameters);
|
|
183
160
|
const isPrivate = functionArtifact.functionType === FunctionType.PRIVATE;
|
|
184
161
|
|
|
@@ -190,7 +167,7 @@ export async function prepTx(contractFile: string, functionName: string, _functi
|
|
|
190
167
|
* @param hex - A hex string
|
|
191
168
|
* @returns A new string with leading 0x removed
|
|
192
169
|
*/
|
|
193
|
-
export const stripLeadingHex = (hex: string) => {
|
|
170
|
+
export const stripLeadingHex = (hex: string): string => {
|
|
194
171
|
if (hex.length > 2 && hex.startsWith('0x')) {
|
|
195
172
|
return hex.substring(2);
|
|
196
173
|
}
|
|
@@ -198,6 +175,18 @@ export const stripLeadingHex = (hex: string) => {
|
|
|
198
175
|
};
|
|
199
176
|
|
|
200
177
|
/**
|
|
178
|
+
* Adds a leading 0x to a hex string. If a leading 0x is already present the string is returned unchanged.
|
|
179
|
+
* @param hex - A hex string
|
|
180
|
+
* @returns A new string with leading 0x added
|
|
181
|
+
*/
|
|
182
|
+
export const addLeadingHex = (hex: string): `0x${string}` => {
|
|
183
|
+
if (hex.length > 2 && hex.startsWith('0x')) {
|
|
184
|
+
return hex as `0x${string}`;
|
|
185
|
+
}
|
|
186
|
+
return `0x${hex}`;
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
/*
|
|
201
190
|
* Pretty prints Nargo.toml contents to a string
|
|
202
191
|
* @param config - Nargo.toml contents
|
|
203
192
|
* @returns The Nargo.toml contents as a string
|
|
@@ -213,38 +202,3 @@ export function prettyPrintNargoToml(config: NoirPackageConfig): string {
|
|
|
213
202
|
|
|
214
203
|
return partialToml + '\n[dependencies]\n' + dependenciesToml.join('\n') + '\n';
|
|
215
204
|
}
|
|
216
|
-
|
|
217
|
-
/** Mismatch between server and client versions. */
|
|
218
|
-
class VersionMismatchError extends Error {}
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Checks that Private eXecution Environment (PXE) version matches the expected one by this CLI. Throws if not.
|
|
222
|
-
* @param pxe - PXE client.
|
|
223
|
-
* @param expectedVersionRange - Expected version by CLI.
|
|
224
|
-
*/
|
|
225
|
-
export async function checkServerVersion(pxe: PXE, expectedVersionRange: string) {
|
|
226
|
-
const serverName = 'Aztec Node';
|
|
227
|
-
const { nodeVersion } = await pxe.getNodeInfo();
|
|
228
|
-
if (!nodeVersion) {
|
|
229
|
-
throw new VersionMismatchError(`Couldn't determine ${serverName} version. You may run into issues.`);
|
|
230
|
-
}
|
|
231
|
-
if (!nodeVersion || !valid(nodeVersion)) {
|
|
232
|
-
throw new VersionMismatchError(
|
|
233
|
-
`Missing or invalid version identifier for ${serverName} (${nodeVersion ?? 'empty'}).`,
|
|
234
|
-
);
|
|
235
|
-
} else if (!satisfies(nodeVersion, expectedVersionRange)) {
|
|
236
|
-
if (gtr(nodeVersion, expectedVersionRange)) {
|
|
237
|
-
throw new VersionMismatchError(
|
|
238
|
-
`${serverName} is running version ${nodeVersion} which is newer than the expected by this CLI (${expectedVersionRange}). Consider upgrading your CLI to a newer version.`,
|
|
239
|
-
);
|
|
240
|
-
} else if (ltr(nodeVersion, expectedVersionRange)) {
|
|
241
|
-
throw new VersionMismatchError(
|
|
242
|
-
`${serverName} is running version ${nodeVersion} which is older than the expected by this CLI (${expectedVersionRange}). Consider upgrading your ${serverName} to a newer version.`,
|
|
243
|
-
);
|
|
244
|
-
} else {
|
|
245
|
-
throw new VersionMismatchError(
|
|
246
|
-
`${serverName} is running version ${nodeVersion} which does not match the expected by this CLI (${expectedVersionRange}).`,
|
|
247
|
-
);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
package/src/utils/commands.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { EthAddress } from '@aztec/aztec.js/eth_address';
|
|
4
|
-
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
|
-
import { LogId } from '@aztec/aztec.js/log_id';
|
|
6
|
-
import { TxHash } from '@aztec/aztec.js/tx_hash';
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
3
|
import type { LogFn } from '@aztec/foundation/log';
|
|
8
|
-
import type { PXE } from '@aztec/
|
|
4
|
+
import type { PXE } from '@aztec/pxe/server';
|
|
5
|
+
import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
|
|
6
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
7
|
import { PublicKeys } from '@aztec/stdlib/keys';
|
|
8
|
+
import { LogId } from '@aztec/stdlib/logs/log-id';
|
|
9
|
+
import { TxHash } from '@aztec/stdlib/tx/tx-hash';
|
|
10
10
|
|
|
11
11
|
import { type Command, CommanderError, InvalidArgumentError, Option } from 'commander';
|
|
12
12
|
import { lookup } from 'dns/promises';
|
|
@@ -22,21 +22,20 @@ export const getLocalhost = () =>
|
|
|
22
22
|
.catch(() => 'localhost');
|
|
23
23
|
|
|
24
24
|
export const LOCALHOST = await getLocalhost();
|
|
25
|
-
export const { ETHEREUM_HOSTS = `http://${LOCALHOST}:8545`, PRIVATE_KEY, API_KEY, CLI_VERSION } = process.env;
|
|
25
|
+
export const { ETHEREUM_HOSTS = `http://${LOCALHOST}:8545`, PRIVATE_KEY, MNEMONIC, API_KEY, CLI_VERSION } = process.env;
|
|
26
26
|
|
|
27
27
|
export function addOptions(program: Command, options: Option[]) {
|
|
28
28
|
options.forEach(option => program.addOption(option));
|
|
29
29
|
return program;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export const
|
|
33
|
-
new Option('-
|
|
34
|
-
.env('
|
|
32
|
+
export const makeNodeOption = (mandatory: boolean) =>
|
|
33
|
+
new Option('-n, --node-url <string>', 'URL of the Aztec node')
|
|
34
|
+
.env('AZTEC_NODE_URL')
|
|
35
35
|
.default(`http://${LOCALHOST}:8080`)
|
|
36
|
-
.conflicts('remote-pxe')
|
|
37
36
|
.makeOptionMandatory(mandatory);
|
|
38
37
|
|
|
39
|
-
export const
|
|
38
|
+
export const nodeOption = makeNodeOption(true);
|
|
40
39
|
|
|
41
40
|
export const l1ChainIdOption = new Option('-c, --l1-chain-id <number>', 'Chain ID of the ethereum host')
|
|
42
41
|
.env('L1_CHAIN_ID')
|
|
@@ -114,6 +113,34 @@ export async function getTxSender(pxe: PXE, _from?: string) {
|
|
|
114
113
|
return from;
|
|
115
114
|
}
|
|
116
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Parses and validates a hex string. Removes leading 0x if present, checks for hex validity,
|
|
118
|
+
* and enforces an optional minimum length.
|
|
119
|
+
* @param hex - The hex string to validate.
|
|
120
|
+
* @param minLen - Optional minimum length (in hex characters, after stripping '0x').
|
|
121
|
+
* @returns The normalized hex string (without leading 0x).
|
|
122
|
+
* @throws InvalidArgumentError if the string is not valid hex or does not meet the minimum length.
|
|
123
|
+
*/
|
|
124
|
+
// minLen is now interpreted as the minimum number of bytes (2 hex characters per byte)
|
|
125
|
+
export function parseHex(hex: string, minLen?: number): `0x${string}` {
|
|
126
|
+
const normalized = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
127
|
+
|
|
128
|
+
if (!/^[0-9a-fA-F]*$/.test(normalized)) {
|
|
129
|
+
throw new InvalidArgumentError('Invalid hex string');
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (minLen !== undefined) {
|
|
133
|
+
const minHexLen = minLen * 2;
|
|
134
|
+
if (normalized.length < minHexLen) {
|
|
135
|
+
throw new InvalidArgumentError(
|
|
136
|
+
`Hex string is too short (length ${normalized.length}), minimum byte length is ${minLen} (hex chars: ${minHexLen})`,
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return `0x${normalized}`;
|
|
142
|
+
}
|
|
143
|
+
|
|
117
144
|
/**
|
|
118
145
|
* Removes the leading 0x from a hex string. If no leading 0x is found the string is returned unchanged.
|
|
119
146
|
* @param hex - A hex string
|
|
@@ -168,7 +195,7 @@ export function parseAztecAddress(address: string): AztecAddress {
|
|
|
168
195
|
try {
|
|
169
196
|
return AztecAddress.fromString(address);
|
|
170
197
|
} catch {
|
|
171
|
-
throw new InvalidArgumentError(`Invalid address: ${address}`);
|
|
198
|
+
throw new InvalidArgumentError(`Invalid Aztec address: ${address}`);
|
|
172
199
|
}
|
|
173
200
|
}
|
|
174
201
|
|
|
@@ -182,7 +209,7 @@ export function parseEthereumAddress(address: string): EthAddress {
|
|
|
182
209
|
try {
|
|
183
210
|
return EthAddress.fromString(address);
|
|
184
211
|
} catch {
|
|
185
|
-
throw new InvalidArgumentError(`Invalid
|
|
212
|
+
throw new InvalidArgumentError(`Invalid Ethereumaddress: ${address}`);
|
|
186
213
|
}
|
|
187
214
|
}
|
|
188
215
|
|
|
@@ -236,7 +263,11 @@ export function parseOptionalSelector(selector: string): FunctionSelector | unde
|
|
|
236
263
|
* @returns The parsed integer, or undefined if the input string is falsy.
|
|
237
264
|
* @throws If the input is not a valid integer.
|
|
238
265
|
*/
|
|
239
|
-
export function parseOptionalInteger(
|
|
266
|
+
export function parseOptionalInteger(
|
|
267
|
+
value: string,
|
|
268
|
+
min: number = Number.MIN_SAFE_INTEGER,
|
|
269
|
+
max: number = Number.MAX_SAFE_INTEGER,
|
|
270
|
+
): number | undefined {
|
|
240
271
|
if (!value) {
|
|
241
272
|
return undefined;
|
|
242
273
|
}
|
|
@@ -244,6 +275,12 @@ export function parseOptionalInteger(value: string): number | undefined {
|
|
|
244
275
|
if (!Number.isInteger(parsed)) {
|
|
245
276
|
throw new InvalidArgumentError('Invalid integer.');
|
|
246
277
|
}
|
|
278
|
+
if (parsed < min) {
|
|
279
|
+
throw new InvalidArgumentError(`Value must be greater than ${min}.`);
|
|
280
|
+
}
|
|
281
|
+
if (parsed > max) {
|
|
282
|
+
throw new InvalidArgumentError(`Value must be less than ${max}.`);
|
|
283
|
+
}
|
|
247
284
|
return parsed;
|
|
248
285
|
}
|
|
249
286
|
|
|
@@ -287,7 +324,7 @@ export function parsePublicKey(publicKey: string): PublicKeys | undefined {
|
|
|
287
324
|
}
|
|
288
325
|
try {
|
|
289
326
|
return PublicKeys.fromString(publicKey);
|
|
290
|
-
} catch
|
|
327
|
+
} catch {
|
|
291
328
|
throw new InvalidArgumentError(`Invalid public key: ${publicKey}`);
|
|
292
329
|
}
|
|
293
330
|
}
|
|
@@ -301,7 +338,7 @@ export function parsePublicKey(publicKey: string): PublicKeys | undefined {
|
|
|
301
338
|
export function parsePartialAddress(address: string): Fr {
|
|
302
339
|
try {
|
|
303
340
|
return Fr.fromHexString(address);
|
|
304
|
-
} catch
|
|
341
|
+
} catch {
|
|
305
342
|
throw new InvalidArgumentError(`Invalid partial address: ${address}`);
|
|
306
343
|
}
|
|
307
344
|
}
|
|
@@ -315,7 +352,7 @@ export function parsePartialAddress(address: string): Fr {
|
|
|
315
352
|
export function parseSecretKey(secretKey: string): Fr {
|
|
316
353
|
try {
|
|
317
354
|
return Fr.fromHexString(secretKey);
|
|
318
|
-
} catch
|
|
355
|
+
} catch {
|
|
319
356
|
throw new InvalidArgumentError(`Invalid encryption secret key: ${secretKey}`);
|
|
320
357
|
}
|
|
321
358
|
}
|
|
@@ -348,7 +385,7 @@ export function parseField(field: string): Fr {
|
|
|
348
385
|
}
|
|
349
386
|
|
|
350
387
|
return new Fr(BigInt(field));
|
|
351
|
-
} catch
|
|
388
|
+
} catch {
|
|
352
389
|
throw new InvalidArgumentError(`Invalid field: ${field}`);
|
|
353
390
|
}
|
|
354
391
|
}
|
package/src/utils/encoding.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { ABIParameter, AbiType, StructType } from '@aztec/stdlib/abi';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -35,7 +35,7 @@ function encodeArg(arg: string, abiType: AbiType, name: string): any {
|
|
|
35
35
|
let res: bigint;
|
|
36
36
|
try {
|
|
37
37
|
res = BigInt(arg);
|
|
38
|
-
} catch
|
|
38
|
+
} catch {
|
|
39
39
|
throw new Error(
|
|
40
40
|
`Invalid value passed for ${name}. Could not parse ${arg} as a${kind === 'integer' ? 'n' : ''} ${kind}.`,
|
|
41
41
|
);
|
package/src/utils/github.ts
CHANGED
package/src/utils/index.ts
CHANGED
package/src/utils/inspect.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { LogFn } from '@aztec/foundation/log';
|
|
3
|
-
import {
|
|
4
|
-
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
5
|
-
import type { PXE } from '@aztec/stdlib/interfaces/client';
|
|
6
|
-
import { type ExtendedNote, NoteStatus } from '@aztec/stdlib/note';
|
|
3
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
7
4
|
import type { TxHash } from '@aztec/stdlib/tx';
|
|
8
5
|
|
|
9
|
-
export async function inspectBlock(
|
|
10
|
-
|
|
6
|
+
export async function inspectBlock(
|
|
7
|
+
aztecNode: AztecNode,
|
|
8
|
+
blockNumber: BlockNumber,
|
|
9
|
+
log: LogFn,
|
|
10
|
+
opts: { showTxs?: boolean } = {},
|
|
11
|
+
) {
|
|
12
|
+
const block = await aztecNode.getBlock(blockNumber);
|
|
11
13
|
if (!block) {
|
|
12
14
|
log(`No block found for block number ${blockNumber}`);
|
|
13
15
|
return;
|
|
@@ -18,16 +20,15 @@ export async function inspectBlock(pxe: PXE, blockNumber: number, log: LogFn, op
|
|
|
18
20
|
log(` Total fees: ${block.header.totalFees.toBigInt()}`);
|
|
19
21
|
log(` Total mana used: ${block.header.totalManaUsed.toBigInt()}`);
|
|
20
22
|
log(
|
|
21
|
-
` Fee per gas unit: DA=${block.header.globalVariables.gasFees.feePerDaGas
|
|
23
|
+
` Fee per gas unit: DA=${block.header.globalVariables.gasFees.feePerDaGas} L2=${block.header.globalVariables.gasFees.feePerL2Gas}`,
|
|
22
24
|
);
|
|
23
25
|
log(` Coinbase: ${block.header.globalVariables.coinbase}`);
|
|
24
26
|
log(` Fee recipient: ${block.header.globalVariables.feeRecipient}`);
|
|
25
|
-
log(` Timestamp: ${new Date(block.header.globalVariables.timestamp
|
|
27
|
+
log(` Timestamp: ${new Date(Number(block.header.globalVariables.timestamp) * 500)}`);
|
|
26
28
|
if (opts.showTxs) {
|
|
27
29
|
log(``);
|
|
28
|
-
const artifactMap = await getKnownArtifacts(pxe);
|
|
29
30
|
for (const txHash of block.body.txEffects.map(tx => tx.txHash)) {
|
|
30
|
-
await inspectTx(
|
|
31
|
+
await inspectTx(aztecNode, txHash, log, { includeBlockInfo: false });
|
|
31
32
|
}
|
|
32
33
|
} else {
|
|
33
34
|
log(` Transactions: ${block.body.txEffects.length}`);
|
|
@@ -35,19 +36,18 @@ export async function inspectBlock(pxe: PXE, blockNumber: number, log: LogFn, op
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
export async function inspectTx(
|
|
38
|
-
|
|
39
|
+
aztecNode: AztecNode,
|
|
39
40
|
txHash: TxHash,
|
|
40
41
|
log: LogFn,
|
|
41
|
-
opts: { includeBlockInfo?: boolean
|
|
42
|
+
opts: { includeBlockInfo?: boolean } = {},
|
|
42
43
|
) {
|
|
43
|
-
const [receipt, effectsInBlock
|
|
44
|
-
pxe.getTxReceipt(txHash),
|
|
45
|
-
pxe.getTxEffect(txHash),
|
|
46
|
-
pxe.getNotes({ txHash, status: NoteStatus.ACTIVE_OR_NULLIFIED }),
|
|
47
|
-
]);
|
|
44
|
+
const [receipt, effectsInBlock] = await Promise.all([aztecNode.getTxReceipt(txHash), aztecNode.getTxEffect(txHash)]);
|
|
48
45
|
// Base tx data
|
|
49
46
|
log(`Tx ${txHash.toString()}`);
|
|
50
|
-
log(` Status: ${receipt.status}
|
|
47
|
+
log(` Status: ${receipt.status}`);
|
|
48
|
+
if (receipt.executionResult) {
|
|
49
|
+
log(` Execution result: ${receipt.executionResult}`);
|
|
50
|
+
}
|
|
51
51
|
if (receipt.error) {
|
|
52
52
|
log(` Error: ${receipt.error}`);
|
|
53
53
|
}
|
|
@@ -57,7 +57,6 @@ export async function inspectTx(
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
const effects = effectsInBlock.data;
|
|
60
|
-
const artifactMap = opts?.artifactMap ?? (await getKnownArtifacts(pxe));
|
|
61
60
|
|
|
62
61
|
if (opts.includeBlockInfo) {
|
|
63
62
|
log(` Block: ${receipt.blockNumber} (${receipt.blockHash?.toString()})`);
|
|
@@ -88,45 +87,18 @@ export async function inspectTx(
|
|
|
88
87
|
const notes = effects.noteHashes;
|
|
89
88
|
if (notes.length > 0) {
|
|
90
89
|
log(' Created notes:');
|
|
91
|
-
log(` Total: ${notes.length}
|
|
92
|
-
|
|
93
|
-
log(
|
|
94
|
-
for (const note of getNotes) {
|
|
95
|
-
inspectNote(note, artifactMap, log);
|
|
96
|
-
}
|
|
90
|
+
log(` Total: ${notes.length}`);
|
|
91
|
+
for (const note of notes) {
|
|
92
|
+
log(` Note hash: ${note.toShortString()}`);
|
|
97
93
|
}
|
|
98
94
|
}
|
|
99
95
|
|
|
100
|
-
//
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const [note] = await pxe.getNotes({ siloedNullifier: nullifier });
|
|
107
|
-
const deployed = deployNullifiers[nullifier.toString()];
|
|
108
|
-
const initialized = initNullifiers[nullifier.toString()];
|
|
109
|
-
const registered = classNullifiers[nullifier.toString()];
|
|
110
|
-
if (nullifier.toBuffer().equals(txHash.toBuffer())) {
|
|
111
|
-
log(` Transaction hash nullifier ${nullifier.toShortString()}`);
|
|
112
|
-
} else if (note) {
|
|
113
|
-
inspectNote(note, artifactMap, log, `Nullifier ${nullifier.toShortString()} for note`);
|
|
114
|
-
} else if (deployed) {
|
|
115
|
-
log(
|
|
116
|
-
` Contract ${toFriendlyAddress(deployed, artifactMap)} deployed via nullifier ${nullifier.toShortString()}`,
|
|
117
|
-
);
|
|
118
|
-
} else if (initialized) {
|
|
119
|
-
log(
|
|
120
|
-
` Contract ${toFriendlyAddress(
|
|
121
|
-
initialized,
|
|
122
|
-
artifactMap,
|
|
123
|
-
)} initialized via nullifier ${nullifier.toShortString()}`,
|
|
124
|
-
);
|
|
125
|
-
} else if (registered) {
|
|
126
|
-
log(` Class ${registered} registered via nullifier ${nullifier.toShortString()}`);
|
|
127
|
-
} else {
|
|
128
|
-
log(` Unknown nullifier ${nullifier.toString()}`);
|
|
129
|
-
}
|
|
96
|
+
// Created nullifiers
|
|
97
|
+
const nullifiers = effects.nullifiers;
|
|
98
|
+
if (nullifiers.length > 0) {
|
|
99
|
+
log(' Created nullifiers:');
|
|
100
|
+
for (const nullifier of nullifiers) {
|
|
101
|
+
log(` Nullifier: ${nullifier.toShortString()}`);
|
|
130
102
|
}
|
|
131
103
|
}
|
|
132
104
|
|
|
@@ -138,71 +110,3 @@ export async function inspectTx(
|
|
|
138
110
|
}
|
|
139
111
|
}
|
|
140
112
|
}
|
|
141
|
-
|
|
142
|
-
function inspectNote(note: ExtendedNote, artifactMap: ArtifactMap, log: LogFn, text = 'Note') {
|
|
143
|
-
const artifact = artifactMap[note.contractAddress.toString()];
|
|
144
|
-
const contract = artifact?.name ?? note.contractAddress.toString();
|
|
145
|
-
const type = artifact?.notes[note.noteTypeId.toString()]?.typ ?? note.noteTypeId.toField().toShortString();
|
|
146
|
-
log(` ${text} type ${type} at ${contract}`);
|
|
147
|
-
log(` Owner: ${toFriendlyAddress(note.owner, artifactMap)}`);
|
|
148
|
-
for (const field of note.note.items) {
|
|
149
|
-
log(` ${field.toString()}`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
function toFriendlyAddress(address: AztecAddress, artifactMap: ArtifactMap) {
|
|
154
|
-
const artifact = artifactMap[address.toString()];
|
|
155
|
-
if (!artifact) {
|
|
156
|
-
return address.toString();
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return `${artifact.name}<${address.toString()}>`;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
async function getKnownNullifiers(pxe: PXE, artifactMap: ArtifactMap) {
|
|
163
|
-
const knownContracts = await pxe.getContracts();
|
|
164
|
-
const deployerAddress = ProtocolContractAddress.ContractInstanceDeployer;
|
|
165
|
-
const registererAddress = ProtocolContractAddress.ContractClassRegisterer;
|
|
166
|
-
const initNullifiers: Record<string, AztecAddress> = {};
|
|
167
|
-
const deployNullifiers: Record<string, AztecAddress> = {};
|
|
168
|
-
const classNullifiers: Record<string, string> = {};
|
|
169
|
-
for (const contract of knownContracts) {
|
|
170
|
-
initNullifiers[siloNullifier(contract, contract.toField()).toString()] = contract;
|
|
171
|
-
deployNullifiers[siloNullifier(deployerAddress, contract.toField()).toString()] = contract;
|
|
172
|
-
}
|
|
173
|
-
for (const artifact of Object.values(artifactMap)) {
|
|
174
|
-
classNullifiers[
|
|
175
|
-
siloNullifier(registererAddress, artifact.classId).toString()
|
|
176
|
-
] = `${artifact.name}Class<${artifact.classId}>`;
|
|
177
|
-
}
|
|
178
|
-
return { initNullifiers, deployNullifiers, classNullifiers };
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
type ArtifactMap = Record<string, ContractArtifactWithClassId>;
|
|
182
|
-
type ContractArtifactWithClassId = ContractArtifact & { classId: Fr };
|
|
183
|
-
async function getKnownArtifacts(pxe: PXE): Promise<ArtifactMap> {
|
|
184
|
-
const knownContractAddresses = await pxe.getContracts();
|
|
185
|
-
const knownContracts = (
|
|
186
|
-
await Promise.all(knownContractAddresses.map(contractAddress => pxe.getContractMetadata(contractAddress)))
|
|
187
|
-
).map(contractMetadata => contractMetadata.contractInstance);
|
|
188
|
-
const classIds = [...new Set(knownContracts.map(contract => contract?.currentContractClassId))];
|
|
189
|
-
const knownArtifacts = (
|
|
190
|
-
await Promise.all(classIds.map(classId => (classId ? pxe.getContractClassMetadata(classId) : undefined)))
|
|
191
|
-
).map(contractClassMetadata =>
|
|
192
|
-
contractClassMetadata
|
|
193
|
-
? { ...contractClassMetadata.artifact, classId: contractClassMetadata.contractClass?.id }
|
|
194
|
-
: undefined,
|
|
195
|
-
);
|
|
196
|
-
const map: Record<string, ContractArtifactWithClassId> = {};
|
|
197
|
-
for (const instance of knownContracts) {
|
|
198
|
-
if (instance) {
|
|
199
|
-
const artifact = knownArtifacts.find(a =>
|
|
200
|
-
a?.classId?.equals(instance.currentContractClassId),
|
|
201
|
-
) as ContractArtifactWithClassId;
|
|
202
|
-
if (artifact) {
|
|
203
|
-
map[instance.address.toString()] = artifact;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return map;
|
|
208
|
-
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
3
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
|
+
import { SPONSORED_FPC_SALT } from '@aztec/constants';
|
|
5
|
+
|
|
6
|
+
async function getSponsoredFPCContract() {
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
8
|
+
// @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
|
|
9
|
+
const { SponsoredFPCContract } = await import('@aztec/noir-contracts.js/SponsoredFPC');
|
|
10
|
+
return SponsoredFPCContract;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export async function getSponsoredFPCAddress(): Promise<AztecAddress> {
|
|
14
|
+
const SponsoredFPCContract = await getSponsoredFPCContract();
|
|
15
|
+
const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, {
|
|
16
|
+
salt: new Fr(SPONSORED_FPC_SALT),
|
|
17
|
+
});
|
|
18
|
+
return sponsoredFPCInstance.address;
|
|
19
|
+
}
|
|
@@ -1,3 +0,0 @@
|
|
|
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
|