@aztec/cli 0.0.0-test.1 → 0.0.1-commit.017a351
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 +33 -0
- package/dest/cmds/aztec_node/get_logs.d.ts.map +1 -0
- package/dest/cmds/aztec_node/get_logs.js +61 -0
- 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 +13 -16
- 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 +38 -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 +15 -23
- 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 +80 -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 +16 -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 -104
- 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 +27 -0
- package/dest/config/cached_fetch.d.ts.map +1 -0
- package/dest/config/cached_fetch.js +132 -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 +47 -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 +221 -0
- package/dest/config/generated/networks.d.ts.map +1 -0
- package/dest/config/generated/networks.js +222 -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 +119 -0
- package/dest/utils/aztec.d.ts +14 -26
- package/dest/utils/aztec.d.ts.map +1 -1
- package/dest/utils/aztec.js +54 -71
- package/dest/utils/commands.d.ts +34 -17
- package/dest/utils/commands.d.ts.map +1 -1
- package/dest/utils/commands.js +61 -24
- 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 +30 -117
- 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/aztec_node/get_logs.ts +100 -0
- package/src/cmds/{pxe → aztec_node}/get_node_info.ts +15 -25
- package/src/cmds/aztec_node/index.ts +92 -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 +18 -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 +106 -0
- package/src/cmds/l1/deploy_new_rollup.ts +22 -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 +95 -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 -98
- 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 +155 -0
- package/src/config/chain_l2_config.ts +59 -0
- package/src/config/enrich_env.ts +15 -0
- package/src/config/generated/networks.ts +226 -0
- package/src/config/get_l1_config.ts +31 -0
- package/src/config/index.ts +4 -0
- package/src/config/network_config.ts +151 -0
- package/src/utils/aztec.ts +77 -129
- package/src/utils/commands.ts +78 -28
- 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 +33 -130
- 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_logs.js +0 -51
- 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_logs.ts +0 -66
- package/src/cmds/pxe/get_pxe_info.ts +0 -13
- package/src/cmds/pxe/index.ts +0 -170
package/dest/utils/aztec.js
CHANGED
|
@@ -1,69 +1,66 @@
|
|
|
1
|
-
import { loadContractArtifact } from '@aztec/aztec.js/abi';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { FunctionType, getAllFunctionAbis, loadContractArtifact } from '@aztec/aztec.js/abi';
|
|
2
|
+
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
6
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
4
7
|
import TOML from '@iarna/toml';
|
|
5
8
|
import { readFile } from 'fs/promises';
|
|
6
|
-
import { gtr, ltr, satisfies, valid } from 'semver';
|
|
7
9
|
import { encodeArgs } from './encoding.js';
|
|
10
|
+
const logger = createLogger('cli:utils:aztec');
|
|
8
11
|
/**
|
|
9
12
|
* Helper to get an ABI function or throw error if it doesn't exist.
|
|
10
13
|
* @param artifact - Contract's build artifact in JSON format.
|
|
11
14
|
* @param fnName - Function name to be found.
|
|
12
15
|
* @returns The function's ABI.
|
|
13
|
-
*/ export function
|
|
14
|
-
const fn = artifact.
|
|
16
|
+
*/ export function getFunctionAbi(artifact, fnName) {
|
|
17
|
+
const fn = getAllFunctionAbis(artifact).find(({ name })=>name === fnName);
|
|
15
18
|
if (!fn) {
|
|
16
19
|
throw Error(`Function ${fnName} not found in contract ABI.`);
|
|
17
20
|
}
|
|
18
21
|
return fn;
|
|
19
22
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* @param rpcUrls - The RPC URL of the ethereum node.
|
|
23
|
-
* @param chainId - The chain ID of the L1 host.
|
|
24
|
-
* @param privateKey - The private key to be used in contract deployment.
|
|
25
|
-
* @param mnemonic - The mnemonic to be used in contract deployment.
|
|
26
|
-
*/ export async function deployAztecContracts(rpcUrls, chainId, privateKey, mnemonic, mnemonicIndex, salt, initialValidators, genesisArchiveRoot, genesisBlockHash, acceleratedTestDeployments, config, debugLogger) {
|
|
27
|
-
const { createEthereumChain, deployL1Contracts } = await import('@aztec/ethereum');
|
|
23
|
+
export async function deployNewRollupContracts(registryAddress, rpcUrls, privateKey, chainId, mnemonic, mnemonicIndex, initialValidators, genesisArchiveRoot, feeJuicePortalInitialBalance, config, realVerifier) {
|
|
24
|
+
const { deployRollupForUpgrade } = await import('@aztec/ethereum/deploy-aztec-l1-contracts');
|
|
28
25
|
const { mnemonicToAccount, privateKeyToAccount } = await import('viem/accounts');
|
|
29
|
-
const account = !privateKey ? mnemonicToAccount(mnemonic, {
|
|
30
|
-
addressIndex: mnemonicIndex
|
|
31
|
-
}) : privateKeyToAccount(`${privateKey.startsWith('0x') ? '' : '0x'}${privateKey}`);
|
|
32
|
-
const chain = createEthereumChain(rpcUrls, chainId);
|
|
33
26
|
const { getVKTreeRoot } = await import('@aztec/noir-protocol-circuits-types/vk-tree');
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
27
|
+
let account;
|
|
28
|
+
if (privateKey) {
|
|
29
|
+
account = privateKeyToAccount(addLeadingHex(privateKey));
|
|
30
|
+
} else {
|
|
31
|
+
account = mnemonicToAccount(mnemonic, {
|
|
32
|
+
addressIndex: mnemonicIndex
|
|
33
|
+
});
|
|
34
|
+
const privateKeyBuf = account.getHdKey().privateKey;
|
|
35
|
+
const privateKeyHex = Buffer.from(privateKeyBuf).toString('hex');
|
|
36
|
+
privateKey = `0x${privateKeyHex}`;
|
|
37
|
+
}
|
|
38
|
+
if (!initialValidators || initialValidators.length === 0) {
|
|
39
|
+
// initialize the new rollup with Amin's validator address.
|
|
40
|
+
const aminAddressString = '0x3b218d0F26d15B36C715cB06c949210a0d630637';
|
|
41
|
+
const amin = EthAddress.fromString(aminAddressString);
|
|
42
|
+
initialValidators = [
|
|
43
|
+
{
|
|
44
|
+
attester: amin,
|
|
45
|
+
withdrawer: amin,
|
|
46
|
+
// No secrets here. The actual keys are not currently used.
|
|
47
|
+
bn254SecretKey: new SecretValue(Fr.fromHexString(aminAddressString).toBigInt())
|
|
48
|
+
}
|
|
49
|
+
];
|
|
50
|
+
logger.info('Initializing new rollup with old attesters', {
|
|
51
|
+
initialValidators
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const { rollup } = await deployRollupForUpgrade(privateKey, rpcUrls[0], chainId, registryAddress, {
|
|
57
55
|
vkTreeRoot: getVKTreeRoot(),
|
|
58
|
-
|
|
59
|
-
l2FeeJuiceAddress: ProtocolContractAddress.FeeJuice.toField(),
|
|
56
|
+
protocolContractsHash,
|
|
60
57
|
genesisArchiveRoot,
|
|
61
|
-
genesisBlockHash,
|
|
62
58
|
initialValidators,
|
|
59
|
+
feeJuicePortalInitialBalance,
|
|
60
|
+
realVerifier,
|
|
63
61
|
...config
|
|
64
|
-
}
|
|
62
|
+
});
|
|
65
63
|
return {
|
|
66
|
-
payloadAddress,
|
|
67
64
|
rollup
|
|
68
65
|
};
|
|
69
66
|
}
|
|
@@ -116,7 +113,7 @@ export async function deployNewRollupContracts(registryAddress, rpcUrls, chainId
|
|
|
116
113
|
* @returns Formatted contract address, function arguments and caller's aztec address.
|
|
117
114
|
*/ export async function prepTx(contractFile, functionName, _functionArgs, log) {
|
|
118
115
|
const contractArtifact = await getContractArtifact(contractFile, log);
|
|
119
|
-
const functionArtifact =
|
|
116
|
+
const functionArtifact = getFunctionAbi(contractArtifact, functionName);
|
|
120
117
|
const functionArgs = encodeArgs(_functionArgs, functionArtifact.parameters);
|
|
121
118
|
const isPrivate = functionArtifact.functionType === FunctionType.PRIVATE;
|
|
122
119
|
return {
|
|
@@ -136,6 +133,16 @@ export async function deployNewRollupContracts(registryAddress, rpcUrls, chainId
|
|
|
136
133
|
return hex;
|
|
137
134
|
};
|
|
138
135
|
/**
|
|
136
|
+
* Adds a leading 0x to a hex string. If a leading 0x is already present the string is returned unchanged.
|
|
137
|
+
* @param hex - A hex string
|
|
138
|
+
* @returns A new string with leading 0x added
|
|
139
|
+
*/ export const addLeadingHex = (hex)=>{
|
|
140
|
+
if (hex.length > 2 && hex.startsWith('0x')) {
|
|
141
|
+
return hex;
|
|
142
|
+
}
|
|
143
|
+
return `0x${hex}`;
|
|
144
|
+
};
|
|
145
|
+
/*
|
|
139
146
|
* Pretty prints Nargo.toml contents to a string
|
|
140
147
|
* @param config - Nargo.toml contents
|
|
141
148
|
* @returns The Nargo.toml contents as a string
|
|
@@ -148,27 +155,3 @@ export async function deployNewRollupContracts(registryAddress, rpcUrls, chainId
|
|
|
148
155
|
});
|
|
149
156
|
return partialToml + '\n[dependencies]\n' + dependenciesToml.join('\n') + '\n';
|
|
150
157
|
}
|
|
151
|
-
/** Mismatch between server and client versions. */ class VersionMismatchError extends Error {
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Checks that Private eXecution Environment (PXE) version matches the expected one by this CLI. Throws if not.
|
|
155
|
-
* @param pxe - PXE client.
|
|
156
|
-
* @param expectedVersionRange - Expected version by CLI.
|
|
157
|
-
*/ export async function checkServerVersion(pxe, expectedVersionRange) {
|
|
158
|
-
const serverName = 'Aztec Node';
|
|
159
|
-
const { nodeVersion } = await pxe.getNodeInfo();
|
|
160
|
-
if (!nodeVersion) {
|
|
161
|
-
throw new VersionMismatchError(`Couldn't determine ${serverName} version. You may run into issues.`);
|
|
162
|
-
}
|
|
163
|
-
if (!nodeVersion || !valid(nodeVersion)) {
|
|
164
|
-
throw new VersionMismatchError(`Missing or invalid version identifier for ${serverName} (${nodeVersion ?? 'empty'}).`);
|
|
165
|
-
} else if (!satisfies(nodeVersion, expectedVersionRange)) {
|
|
166
|
-
if (gtr(nodeVersion, expectedVersionRange)) {
|
|
167
|
-
throw new VersionMismatchError(`${serverName} is running version ${nodeVersion} which is newer than the expected by this CLI (${expectedVersionRange}). Consider upgrading your CLI to a newer version.`);
|
|
168
|
-
} else if (ltr(nodeVersion, expectedVersionRange)) {
|
|
169
|
-
throw new VersionMismatchError(`${serverName} is running version ${nodeVersion} which is older than the expected by this CLI (${expectedVersionRange}). Consider upgrading your ${serverName} to a newer version.`);
|
|
170
|
-
} else {
|
|
171
|
-
throw new VersionMismatchError(`${serverName} is running version ${nodeVersion} which does not match the expected by this CLI (${expectedVersionRange}).`);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
package/dest/utils/commands.d.ts
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
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 { LogCursor, Tag } from '@aztec/stdlib/logs';
|
|
9
|
+
import { TxHash } from '@aztec/stdlib/tx/tx-hash';
|
|
10
10
|
import { type Command, Option } from 'commander';
|
|
11
|
+
export { LogCursor };
|
|
11
12
|
/**
|
|
12
13
|
* If we can successfully resolve 'host.docker.internal', then we are running in a container, and we should treat
|
|
13
14
|
* localhost as being host.docker.internal.
|
|
14
15
|
*/
|
|
15
16
|
export declare const getLocalhost: () => Promise<string>;
|
|
16
17
|
export declare const LOCALHOST: string;
|
|
17
|
-
export declare const ETHEREUM_HOSTS: string, PRIVATE_KEY: string | undefined, API_KEY: string | undefined, CLI_VERSION: string | undefined;
|
|
18
|
+
export declare const ETHEREUM_HOSTS: string, PRIVATE_KEY: string | undefined, MNEMONIC: string | undefined, API_KEY: string | undefined, CLI_VERSION: string | undefined;
|
|
18
19
|
export declare function addOptions(program: Command, options: Option[]): Command;
|
|
19
|
-
export declare const
|
|
20
|
-
export declare const
|
|
20
|
+
export declare const makeNodeOption: (mandatory: boolean) => Option;
|
|
21
|
+
export declare const nodeOption: Option;
|
|
21
22
|
export declare const l1ChainIdOption: Option;
|
|
22
|
-
export declare const createSecretKeyOption: (description: string, mandatory: boolean, argsParser?: (value: string, previous: Fr) => Fr) => Option;
|
|
23
|
+
export declare const createSecretKeyOption: (description: string, mandatory: boolean, argsParser?: ((value: string, previous: Fr) => Fr) | undefined) => Option;
|
|
23
24
|
export declare const logJson: (log: LogFn) => (obj: object) => void;
|
|
24
25
|
/**
|
|
25
26
|
* Updates a file in place atomically.
|
|
@@ -35,6 +36,15 @@ export declare function atomicUpdateFile(filePath: string, contents: string): Pr
|
|
|
35
36
|
* @returns An Aztec address. Will throw if one can't be found in either options.
|
|
36
37
|
*/
|
|
37
38
|
export declare function getTxSender(pxe: PXE, _from?: string): Promise<AztecAddress>;
|
|
39
|
+
/**
|
|
40
|
+
* Parses and validates a hex string. Removes leading 0x if present, checks for hex validity,
|
|
41
|
+
* and enforces an optional minimum length.
|
|
42
|
+
* @param hex - The hex string to validate.
|
|
43
|
+
* @param minLen - Optional minimum length (in hex characters, after stripping '0x').
|
|
44
|
+
* @returns The normalized hex string (without leading 0x).
|
|
45
|
+
* @throws InvalidArgumentError if the string is not valid hex or does not meet the minimum length.
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseHex(hex: string, minLen?: number): `0x${string}`;
|
|
38
48
|
export declare function parseBigint(bigint: string): bigint | undefined;
|
|
39
49
|
/**
|
|
40
50
|
* Parses a hex encoded string to an Fr integer
|
|
@@ -64,12 +74,19 @@ export declare function parseEthereumAddress(address: string): EthAddress;
|
|
|
64
74
|
*/
|
|
65
75
|
export declare function parseOptionalAztecAddress(address: string): AztecAddress | undefined;
|
|
66
76
|
/**
|
|
67
|
-
* Parses an optional
|
|
77
|
+
* Parses an optional `<blockNumber>-<txIndexWithinBlock>-<logIndexWithinTx>` triple into a {@link LogCursor},
|
|
78
|
+
* used as the `--after-log` argument of `get-logs` to resume pagination strictly after a previously-seen log.
|
|
79
|
+
* Thin wrapper over {@link LogCursor.parseOptional} that surfaces parse errors as commander's
|
|
80
|
+
* {@link InvalidArgumentError}.
|
|
81
|
+
*/
|
|
82
|
+
export declare function parseOptionalLogCursor(value: string): LogCursor | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Parses a log tag from a string. Tags are field-element values; we delegate to the {@link parseField} parser.
|
|
68
85
|
*
|
|
69
|
-
* @param
|
|
70
|
-
* @returns
|
|
86
|
+
* @param tag - A hex string, integer, or boolean string representing the tag.
|
|
87
|
+
* @returns A {@link Tag} wrapping the parsed field.
|
|
71
88
|
*/
|
|
72
|
-
export declare function
|
|
89
|
+
export declare function parseTag(tag: string): Tag;
|
|
73
90
|
/**
|
|
74
91
|
* Parses a selector from a string.
|
|
75
92
|
* @param selector - A serialized selector.
|
|
@@ -84,7 +101,7 @@ export declare function parseOptionalSelector(selector: string): FunctionSelecto
|
|
|
84
101
|
* @returns The parsed integer, or undefined if the input string is falsy.
|
|
85
102
|
* @throws If the input is not a valid integer.
|
|
86
103
|
*/
|
|
87
|
-
export declare function parseOptionalInteger(value: string): number | undefined;
|
|
104
|
+
export declare function parseOptionalInteger(value: string, min?: number, max?: number): number | undefined;
|
|
88
105
|
/**
|
|
89
106
|
* Parses a TxHash from a string.
|
|
90
107
|
* @param txHash - A transaction hash
|
|
@@ -140,4 +157,4 @@ export declare function parseFields(fields: string[]): Fr[];
|
|
|
140
157
|
* @returns A JSON string
|
|
141
158
|
*/
|
|
142
159
|
export declare function prettyPrintJSON(data: Record<string, any>): string;
|
|
143
|
-
//# sourceMappingURL=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb21tYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbEQsT0FBTyxFQUFFLEtBQUssT0FBTyxFQUF3QyxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBRXJCOzs7R0FHRztBQUNILGVBQU8sTUFBTSxZQUFZLHVCQUdJLENBQUM7QUFFOUIsZUFBTyxNQUFNLFNBQVMsUUFBdUIsQ0FBQztBQUM5QyxlQUFPLE1BQVEsY0FBYyxVQUErQixXQUFXLHNCQUFFLFFBQVEsc0JBQUUsT0FBTyxzQkFBRSxXQUFXLG9CQUFnQixDQUFDO0FBRXhILHdCQUFnQixVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBRzdEO0FBRUQsZUFBTyxNQUFNLGNBQWMsZ0NBSVEsQ0FBQztBQUVwQyxlQUFPLE1BQU0sVUFBVSxRQUF1QixDQUFDO0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/utils/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/utils/commands.ts"],"names":[],"mappings":"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"}
|
package/dest/utils/commands.js
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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';
|
|
3
|
+
import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
|
|
4
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
5
|
import { PublicKeys } from '@aztec/stdlib/keys';
|
|
6
|
+
import { LogCursor, Tag } from '@aztec/stdlib/logs';
|
|
7
|
+
import { TxHash } from '@aztec/stdlib/tx/tx-hash';
|
|
8
8
|
import { CommanderError, InvalidArgumentError, Option } from 'commander';
|
|
9
9
|
import { lookup } from 'dns/promises';
|
|
10
10
|
import { rename, writeFile } from 'fs/promises';
|
|
11
|
+
export { LogCursor };
|
|
11
12
|
/**
|
|
12
13
|
* If we can successfully resolve 'host.docker.internal', then we are running in a container, and we should treat
|
|
13
14
|
* localhost as being host.docker.internal.
|
|
14
15
|
*/ export const getLocalhost = ()=>lookup('host.docker.internal').then(()=>'host.docker.internal').catch(()=>'localhost');
|
|
15
16
|
export const LOCALHOST = await getLocalhost();
|
|
16
|
-
export const { ETHEREUM_HOSTS = `http://${LOCALHOST}:8545`, PRIVATE_KEY, API_KEY, CLI_VERSION } = process.env;
|
|
17
|
+
export const { ETHEREUM_HOSTS = `http://${LOCALHOST}:8545`, PRIVATE_KEY, MNEMONIC, API_KEY, CLI_VERSION } = process.env;
|
|
17
18
|
export function addOptions(program, options) {
|
|
18
19
|
options.forEach((option)=>program.addOption(option));
|
|
19
20
|
return program;
|
|
20
21
|
}
|
|
21
|
-
export const
|
|
22
|
-
export const
|
|
22
|
+
export const makeNodeOption = (mandatory)=>new Option('-n, --node-url <string>', 'URL of the Aztec node').env('AZTEC_NODE_URL').default(`http://${LOCALHOST}:8080`).makeOptionMandatory(mandatory);
|
|
23
|
+
export const nodeOption = makeNodeOption(true);
|
|
23
24
|
export const l1ChainIdOption = new Option('-c, --l1-chain-id <number>', 'Chain ID of the ethereum host').env('L1_CHAIN_ID').default(31337).argParser((value)=>{
|
|
24
25
|
const parsedValue = Number(value);
|
|
25
26
|
if (isNaN(parsedValue)) {
|
|
@@ -74,6 +75,27 @@ export const logJson = (log)=>(obj)=>log(JSON.stringify(obj, null, 2));
|
|
|
74
75
|
}
|
|
75
76
|
return from;
|
|
76
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Parses and validates a hex string. Removes leading 0x if present, checks for hex validity,
|
|
80
|
+
* and enforces an optional minimum length.
|
|
81
|
+
* @param hex - The hex string to validate.
|
|
82
|
+
* @param minLen - Optional minimum length (in hex characters, after stripping '0x').
|
|
83
|
+
* @returns The normalized hex string (without leading 0x).
|
|
84
|
+
* @throws InvalidArgumentError if the string is not valid hex or does not meet the minimum length.
|
|
85
|
+
*/ // minLen is now interpreted as the minimum number of bytes (2 hex characters per byte)
|
|
86
|
+
export function parseHex(hex, minLen) {
|
|
87
|
+
const normalized = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
88
|
+
if (!/^[0-9a-fA-F]*$/.test(normalized)) {
|
|
89
|
+
throw new InvalidArgumentError('Invalid hex string');
|
|
90
|
+
}
|
|
91
|
+
if (minLen !== undefined) {
|
|
92
|
+
const minHexLen = minLen * 2;
|
|
93
|
+
if (normalized.length < minHexLen) {
|
|
94
|
+
throw new InvalidArgumentError(`Hex string is too short (length ${normalized.length}), minimum byte length is ${minLen} (hex chars: ${minHexLen})`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return `0x${normalized}`;
|
|
98
|
+
}
|
|
77
99
|
/**
|
|
78
100
|
* Removes the leading 0x from a hex string. If no leading 0x is found the string is returned unchanged.
|
|
79
101
|
* @param hex - A hex string
|
|
@@ -118,7 +140,7 @@ export function parseBigint(bigint) {
|
|
|
118
140
|
try {
|
|
119
141
|
return AztecAddress.fromString(address);
|
|
120
142
|
} catch {
|
|
121
|
-
throw new InvalidArgumentError(`Invalid address: ${address}`);
|
|
143
|
+
throw new InvalidArgumentError(`Invalid Aztec address: ${address}`);
|
|
122
144
|
}
|
|
123
145
|
}
|
|
124
146
|
/**
|
|
@@ -130,7 +152,7 @@ export function parseBigint(bigint) {
|
|
|
130
152
|
try {
|
|
131
153
|
return EthAddress.fromString(address);
|
|
132
154
|
} catch {
|
|
133
|
-
throw new InvalidArgumentError(`Invalid
|
|
155
|
+
throw new InvalidArgumentError(`Invalid Ethereumaddress: ${address}`);
|
|
134
156
|
}
|
|
135
157
|
}
|
|
136
158
|
/**
|
|
@@ -145,15 +167,24 @@ export function parseBigint(bigint) {
|
|
|
145
167
|
return parseAztecAddress(address);
|
|
146
168
|
}
|
|
147
169
|
/**
|
|
148
|
-
* Parses an optional
|
|
149
|
-
*
|
|
150
|
-
* @
|
|
151
|
-
* @
|
|
152
|
-
*/ export function
|
|
153
|
-
|
|
154
|
-
return
|
|
170
|
+
* Parses an optional `<blockNumber>-<txIndexWithinBlock>-<logIndexWithinTx>` triple into a {@link LogCursor},
|
|
171
|
+
* used as the `--after-log` argument of `get-logs` to resume pagination strictly after a previously-seen log.
|
|
172
|
+
* Thin wrapper over {@link LogCursor.parseOptional} that surfaces parse errors as commander's
|
|
173
|
+
* {@link InvalidArgumentError}.
|
|
174
|
+
*/ export function parseOptionalLogCursor(value) {
|
|
175
|
+
try {
|
|
176
|
+
return LogCursor.parseOptional(value);
|
|
177
|
+
} catch (err) {
|
|
178
|
+
throw new InvalidArgumentError(err instanceof Error ? err.message : String(err));
|
|
155
179
|
}
|
|
156
|
-
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Parses a log tag from a string. Tags are field-element values; we delegate to the {@link parseField} parser.
|
|
183
|
+
*
|
|
184
|
+
* @param tag - A hex string, integer, or boolean string representing the tag.
|
|
185
|
+
* @returns A {@link Tag} wrapping the parsed field.
|
|
186
|
+
*/ export function parseTag(tag) {
|
|
187
|
+
return new Tag(parseField(tag));
|
|
157
188
|
}
|
|
158
189
|
/**
|
|
159
190
|
* Parses a selector from a string.
|
|
@@ -176,7 +207,7 @@ export function parseBigint(bigint) {
|
|
|
176
207
|
* @param value - The string to parse into an integer.
|
|
177
208
|
* @returns The parsed integer, or undefined if the input string is falsy.
|
|
178
209
|
* @throws If the input is not a valid integer.
|
|
179
|
-
*/ export function parseOptionalInteger(value) {
|
|
210
|
+
*/ export function parseOptionalInteger(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {
|
|
180
211
|
if (!value) {
|
|
181
212
|
return undefined;
|
|
182
213
|
}
|
|
@@ -184,6 +215,12 @@ export function parseBigint(bigint) {
|
|
|
184
215
|
if (!Number.isInteger(parsed)) {
|
|
185
216
|
throw new InvalidArgumentError('Invalid integer.');
|
|
186
217
|
}
|
|
218
|
+
if (parsed < min) {
|
|
219
|
+
throw new InvalidArgumentError(`Value must be greater than ${min}.`);
|
|
220
|
+
}
|
|
221
|
+
if (parsed > max) {
|
|
222
|
+
throw new InvalidArgumentError(`Value must be less than ${max}.`);
|
|
223
|
+
}
|
|
187
224
|
return parsed;
|
|
188
225
|
}
|
|
189
226
|
/**
|
|
@@ -221,7 +258,7 @@ export function parseBigint(bigint) {
|
|
|
221
258
|
}
|
|
222
259
|
try {
|
|
223
260
|
return PublicKeys.fromString(publicKey);
|
|
224
|
-
} catch
|
|
261
|
+
} catch {
|
|
225
262
|
throw new InvalidArgumentError(`Invalid public key: ${publicKey}`);
|
|
226
263
|
}
|
|
227
264
|
}
|
|
@@ -233,7 +270,7 @@ export function parseBigint(bigint) {
|
|
|
233
270
|
*/ export function parsePartialAddress(address) {
|
|
234
271
|
try {
|
|
235
272
|
return Fr.fromHexString(address);
|
|
236
|
-
} catch
|
|
273
|
+
} catch {
|
|
237
274
|
throw new InvalidArgumentError(`Invalid partial address: ${address}`);
|
|
238
275
|
}
|
|
239
276
|
}
|
|
@@ -245,7 +282,7 @@ export function parseBigint(bigint) {
|
|
|
245
282
|
*/ export function parseSecretKey(secretKey) {
|
|
246
283
|
try {
|
|
247
284
|
return Fr.fromHexString(secretKey);
|
|
248
|
-
} catch
|
|
285
|
+
} catch {
|
|
249
286
|
throw new InvalidArgumentError(`Invalid encryption secret key: ${secretKey}`);
|
|
250
287
|
}
|
|
251
288
|
}
|
|
@@ -275,7 +312,7 @@ export function parseBigint(bigint) {
|
|
|
275
312
|
return new Fr(BigInt(field.replace(/n$/, '')));
|
|
276
313
|
}
|
|
277
314
|
return new Fr(BigInt(field));
|
|
278
|
-
} catch
|
|
315
|
+
} catch {
|
|
279
316
|
throw new InvalidArgumentError(`Invalid field: ${field}`);
|
|
280
317
|
}
|
|
281
318
|
}
|
package/dest/utils/encoding.d.ts
CHANGED
|
@@ -12,4 +12,4 @@ export declare function parseStructString(str: string, abiType: StructType): any
|
|
|
12
12
|
* @returns The encoded array.
|
|
13
13
|
*/
|
|
14
14
|
export declare function encodeArgs(args: any[], params: ABIParameter[]): any[];
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQVcsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0U7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxPQWNqRTtBQTRFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQVk3RCJ9
|
package/dest/utils/encoding.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
/**
|
|
3
3
|
* Parses a hex string into an ABI struct type.
|
|
4
4
|
* @param str - The encoded hex string.
|
|
@@ -29,7 +29,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
29
29
|
let res;
|
|
30
30
|
try {
|
|
31
31
|
res = BigInt(arg);
|
|
32
|
-
} catch
|
|
32
|
+
} catch {
|
|
33
33
|
throw new Error(`Invalid value passed for ${name}. Could not parse ${arg} as a${kind === 'integer' ? 'n' : ''} ${kind}.`);
|
|
34
34
|
}
|
|
35
35
|
return res;
|
package/dest/utils/github.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export declare const GITHUB_OWNER = "AztecProtocol";
|
|
2
2
|
export declare const GITHUB_REPO = "aztec-packages";
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=github.d.ts.map
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZ2l0aHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQU8sTUFBTSxZQUFZLGtCQUFrQixDQUFDO0FBQzVDLGVBQU8sTUFBTSxXQUFXLG1CQUFtQixDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,WAAW,mBAAmB,CAAC
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAC5C,eAAO,MAAM,WAAW,mBAAmB,CAAC"}
|
package/dest/utils/github.js
CHANGED
package/dest/utils/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export * from './commands.js';
|
|
|
2
2
|
export * from './aztec.js';
|
|
3
3
|
export * from './encoding.js';
|
|
4
4
|
export * from './github.js';
|
|
5
|
-
|
|
5
|
+
export * from './setup_contracts.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHNCQUFzQixDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC"}
|
package/dest/utils/index.js
CHANGED
package/dest/utils/inspect.d.ts
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { LogFn } from '@aztec/foundation/log';
|
|
3
|
-
import type {
|
|
3
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
4
4
|
import type { TxHash } from '@aztec/stdlib/tx';
|
|
5
|
-
export declare function inspectBlock(
|
|
5
|
+
export declare function inspectBlock(aztecNode: AztecNode, blockNumber: BlockNumber, log: LogFn, opts?: {
|
|
6
6
|
showTxs?: boolean;
|
|
7
7
|
}): Promise<void>;
|
|
8
|
-
export declare function inspectTx(
|
|
8
|
+
export declare function inspectTx(aztecNode: AztecNode, txHash: TxHash, log: LogFn, opts?: {
|
|
9
9
|
includeBlockInfo?: boolean;
|
|
10
|
-
artifactMap?: ArtifactMap;
|
|
11
10
|
}): Promise<void>;
|
|
12
|
-
|
|
13
|
-
type ContractArtifactWithClassId = ContractArtifact & {
|
|
14
|
-
classId: Fr;
|
|
15
|
-
};
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=inspect.d.ts.map
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zcGVjdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2luc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLHdCQUFzQixZQUFZLENBQ2hDLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLEdBQUcsRUFBRSxLQUFLLEVBQ1YsSUFBSSxHQUFFO0lBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFBO0NBQU8saUJBeUJqQztBQUVELHdCQUFzQixTQUFTLENBQzdCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsR0FBRyxFQUFFLEtBQUssRUFDVixJQUFJLEdBQUU7SUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUFPLGlCQXNFMUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/utils/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/utils/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,wBAAsB,YAAY,CAChC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,KAAK,EACV,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,iBAyBjC;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,KAAK,EACV,IAAI,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,iBAsE1C"}
|