@aztec-labs/cli 6.0.0-nightly.20260829
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 +23 -0
- 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/aztec_node/get_node_info.js +58 -0
- 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/infrastructure/index.d.ts +4 -0
- package/dest/cmds/infrastructure/index.d.ts.map +1 -0
- package/dest/cmds/infrastructure/index.js +22 -0
- package/dest/cmds/infrastructure/sequencers.d.ts +12 -0
- package/dest/cmds/infrastructure/sequencers.d.ts.map +1 -0
- package/dest/cmds/infrastructure/sequencers.js +113 -0
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts +3 -0
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts.map +1 -0
- package/dest/cmds/infrastructure/setup_l2_contract.js +35 -0
- package/dest/cmds/l1/advance_epoch.d.ts +3 -0
- package/dest/cmds/l1/advance_epoch.d.ts.map +1 -0
- package/dest/cmds/l1/advance_epoch.js +12 -0
- package/dest/cmds/l1/assume_proven_through.d.ts +4 -0
- package/dest/cmds/l1/assume_proven_through.d.ts.map +1 -0
- package/dest/cmds/l1/assume_proven_through.js +12 -0
- package/dest/cmds/l1/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 +3 -0
- package/dest/cmds/l1/create_l1_account.d.ts.map +1 -0
- package/dest/cmds/l1/create_l1_account.js +15 -0
- package/dest/cmds/l1/deploy_l1_contracts_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 +5 -0
- package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_new_rollup.js +26 -0
- package/dest/cmds/l1/get_l1_addresses.d.ts +4 -0
- package/dest/cmds/l1/get_l1_addresses.d.ts.map +1 -0
- package/dest/cmds/l1/get_l1_addresses.js +21 -0
- package/dest/cmds/l1/get_l1_balance.d.ts +4 -0
- package/dest/cmds/l1/get_l1_balance.d.ts.map +1 -0
- package/dest/cmds/l1/get_l1_balance.js +35 -0
- package/dest/cmds/l1/governance_utils.d.ts +50 -0
- package/dest/cmds/l1/governance_utils.d.ts.map +1 -0
- package/dest/cmds/l1/governance_utils.js +87 -0
- package/dest/cmds/l1/index.d.ts +4 -0
- package/dest/cmds/l1/index.d.ts.map +1 -0
- package/dest/cmds/l1/index.js +201 -0
- package/dest/cmds/l1/prover_stats.d.ts +14 -0
- package/dest/cmds/l1/prover_stats.d.ts.map +1 -0
- package/dest/cmds/l1/prover_stats.js +147 -0
- 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 +45 -0
- package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -0
- package/dest/cmds/l1/update_l1_validators.js +280 -0
- package/dest/cmds/misc/generate_bootnode_enr.d.ts +3 -0
- package/dest/cmds/misc/generate_bootnode_enr.d.ts.map +1 -0
- package/dest/cmds/misc/generate_bootnode_enr.js +5 -0
- package/dest/cmds/misc/generate_p2p_private_key.d.ts +3 -0
- package/dest/cmds/misc/generate_p2p_private_key.d.ts.map +1 -0
- package/dest/cmds/misc/generate_p2p_private_key.js +7 -0
- package/dest/cmds/misc/generate_secret_key.d.ts +5 -0
- package/dest/cmds/misc/generate_secret_key.d.ts.map +1 -0
- package/dest/cmds/misc/generate_secret_key.js +6 -0
- package/dest/cmds/misc/index.d.ts +4 -0
- package/dest/cmds/misc/index.d.ts.map +1 -0
- package/dest/cmds/misc/index.js +32 -0
- package/dest/cmds/misc/update/common.d.ts +17 -0
- package/dest/cmds/misc/update/common.d.ts.map +1 -0
- package/dest/cmds/misc/update/common.js +3 -0
- package/dest/cmds/misc/update/github.d.ts +3 -0
- package/dest/cmds/misc/update/github.d.ts.map +1 -0
- package/dest/cmds/misc/update/github.js +2 -0
- package/dest/cmds/misc/update/noir.d.ts +10 -0
- package/dest/cmds/misc/update/noir.d.ts.map +1 -0
- package/dest/cmds/misc/update/noir.js +45 -0
- package/dest/cmds/misc/update/npm.d.ts +34 -0
- package/dest/cmds/misc/update/npm.d.ts.map +1 -0
- package/dest/cmds/misc/update/npm.js +123 -0
- package/dest/cmds/misc/update/utils.d.ts +14 -0
- package/dest/cmds/misc/update/utils.d.ts.map +1 -0
- package/dest/cmds/misc/update/utils.js +38 -0
- package/dest/cmds/misc/update.d.ts +3 -0
- package/dest/cmds/misc/update.d.ts.map +1 -0
- package/dest/cmds/misc/update.js +51 -0
- 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/eth_json_v3_worker.d.ts +2 -0
- package/dest/cmds/validator_keys/eth_json_v3_worker.d.ts.map +1 -0
- package/dest/cmds/validator_keys/eth_json_v3_worker.js +27 -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 +33 -0
- package/dest/cmds/validator_keys/new.d.ts +35 -0
- package/dest/cmds/validator_keys/new.d.ts.map +1 -0
- package/dest/cmds/validator_keys/new.js +220 -0
- package/dest/cmds/validator_keys/set_funding_account.d.ts +14 -0
- package/dest/cmds/validator_keys/set_funding_account.d.ts.map +1 -0
- package/dest/cmds/validator_keys/set_funding_account.js +37 -0
- package/dest/cmds/validator_keys/shared.d.ts +81 -0
- package/dest/cmds/validator_keys/shared.d.ts.map +1 -0
- package/dest/cmds/validator_keys/shared.js +352 -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 +35 -0
- package/dest/cmds/validator_keys/utils.d.ts.map +1 -0
- package/dest/cmds/validator_keys/utils.js +86 -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 +19 -0
- package/dest/config/chain_l2_config.d.ts.map +1 -0
- package/dest/config/chain_l2_config.js +60 -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 +236 -0
- package/dest/config/generated/networks.d.ts.map +1 -0
- package/dest/config/generated/networks.js +237 -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 +56 -0
- package/dest/utils/aztec.d.ts.map +1 -0
- package/dest/utils/aztec.js +161 -0
- package/dest/utils/commands.d.ts +161 -0
- package/dest/utils/commands.d.ts.map +1 -0
- package/dest/utils/commands.js +341 -0
- package/dest/utils/encoding.d.ts +15 -0
- package/dest/utils/encoding.d.ts.map +1 -0
- package/dest/utils/encoding.js +103 -0
- package/dest/utils/github.d.ts +3 -0
- package/dest/utils/github.d.ts.map +1 -0
- package/dest/utils/github.js +2 -0
- package/dest/utils/index.d.ts +6 -0
- package/dest/utils/index.d.ts.map +1 -0
- package/dest/utils/index.js +5 -0
- package/dest/utils/inspect.d.ts +11 -0
- package/dest/utils/inspect.d.ts.map +1 -0
- package/dest/utils/inspect.js +90 -0
- 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 +141 -0
- 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/aztec_node/get_node_info.ts +61 -0
- package/src/cmds/aztec_node/index.ts +91 -0
- package/src/cmds/infrastructure/index.ts +51 -0
- package/src/cmds/infrastructure/sequencers.ts +122 -0
- package/src/cmds/infrastructure/setup_l2_contract.ts +40 -0
- package/src/cmds/l1/advance_epoch.ts +14 -0
- package/src/cmds/l1/assume_proven_through.ts +20 -0
- package/src/cmds/l1/compute_genesis_values.ts +29 -0
- package/src/cmds/l1/create_l1_account.ts +16 -0
- package/src/cmds/l1/deploy_l1_contracts_cmd.ts +105 -0
- package/src/cmds/l1/deploy_new_rollup.ts +65 -0
- package/src/cmds/l1/get_l1_addresses.ts +31 -0
- package/src/cmds/l1/get_l1_balance.ts +44 -0
- package/src/cmds/l1/governance_utils.ts +183 -0
- package/src/cmds/l1/index.ts +499 -0
- package/src/cmds/l1/prover_stats.ts +213 -0
- package/src/cmds/l1/trigger_seed_snapshot.ts +32 -0
- package/src/cmds/l1/update_l1_validators.ts +358 -0
- package/src/cmds/misc/generate_bootnode_enr.ts +13 -0
- package/src/cmds/misc/generate_p2p_private_key.ts +9 -0
- package/src/cmds/misc/generate_secret_key.ts +5 -0
- package/src/cmds/misc/index.ts +67 -0
- package/src/cmds/misc/update/common.ts +16 -0
- package/src/cmds/misc/update/github.ts +2 -0
- package/src/cmds/misc/update/noir.ts +56 -0
- package/src/cmds/misc/update/npm.ts +148 -0
- package/src/cmds/misc/update/utils.ts +49 -0
- package/src/cmds/misc/update.ts +71 -0
- package/src/cmds/validator_keys/add.ts +122 -0
- package/src/cmds/validator_keys/eth_json_v3_worker.ts +30 -0
- package/src/cmds/validator_keys/generate_bls_keypair.ts +33 -0
- package/src/cmds/validator_keys/index.ts +181 -0
- package/src/cmds/validator_keys/new.ts +326 -0
- package/src/cmds/validator_keys/set_funding_account.ts +54 -0
- package/src/cmds/validator_keys/shared.ts +414 -0
- package/src/cmds/validator_keys/staker.ts +300 -0
- package/src/cmds/validator_keys/utils.ts +124 -0
- package/src/config/cached_fetch.ts +154 -0
- package/src/config/chain_l2_config.ts +71 -0
- package/src/config/enrich_env.ts +15 -0
- package/src/config/generated/networks.ts +241 -0
- package/src/config/get_l1_config.ts +31 -0
- package/src/config/index.ts +4 -0
- package/src/config/network_config.ts +150 -0
- package/src/utils/aztec.ts +203 -0
- package/src/utils/commands.ts +434 -0
- package/src/utils/encoding.ts +117 -0
- package/src/utils/github.ts +2 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/inspect.ts +111 -0
- package/src/utils/setup_contracts.ts +19 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
// Auto-generated from spartan/environments/network-defaults.yml
|
|
2
|
+
// Do not edit manually - run yarn generate to regenerate
|
|
3
|
+
export const devnetConfig = {
|
|
4
|
+
ETHEREUM_SLOT_DURATION: 12,
|
|
5
|
+
AZTEC_ACTIVATION_THRESHOLD: 100000000000000000000,
|
|
6
|
+
AZTEC_EJECTION_THRESHOLD: 50000000000000000000,
|
|
7
|
+
AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000,
|
|
8
|
+
AZTEC_EXIT_DELAY_SECONDS: 172800,
|
|
9
|
+
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
10
|
+
AZTEC_MANA_TARGET: 100000000,
|
|
11
|
+
AZTEC_PROVING_COST_PER_MANA: 100,
|
|
12
|
+
AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000,
|
|
13
|
+
AZTEC_SLASHER_ENABLED: true,
|
|
14
|
+
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
15
|
+
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5,
|
|
16
|
+
AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
|
|
17
|
+
AZTEC_SLASHING_VETOER: '0x0000000000000000000000000000000000000000',
|
|
18
|
+
AZTEC_SLASHING_DISABLE_DURATION: 432000,
|
|
19
|
+
AZTEC_SLASH_AMOUNT_SMALL: 10000000000000000000,
|
|
20
|
+
AZTEC_SLASH_AMOUNT_MEDIUM: 20000000000000000000,
|
|
21
|
+
AZTEC_SLASH_AMOUNT_LARGE: 50000000000000000000,
|
|
22
|
+
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 300,
|
|
23
|
+
AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: 0,
|
|
24
|
+
AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE: 0,
|
|
25
|
+
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN: 48,
|
|
26
|
+
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT: 2,
|
|
27
|
+
AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE: 48,
|
|
28
|
+
SLASH_OFFENSE_EXPIRATION_ROUNDS: 4,
|
|
29
|
+
SLASH_MAX_PAYLOAD_SIZE: 80,
|
|
30
|
+
SLASH_EXECUTE_ROUNDS_LOOK_BACK: 4,
|
|
31
|
+
SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS: 3,
|
|
32
|
+
P2P_ENABLED: true,
|
|
33
|
+
BOOTSTRAP_NODES: '',
|
|
34
|
+
SEQ_MIN_TX_PER_BLOCK: 1,
|
|
35
|
+
SEQ_BUILD_CHECKPOINT_IF_EMPTY: true,
|
|
36
|
+
DATA_STORE_MAP_SIZE_KB: 134217728,
|
|
37
|
+
ARCHIVER_STORE_MAP_SIZE_KB: 1073741824,
|
|
38
|
+
NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824,
|
|
39
|
+
NULLIFIER_TREE_MAP_SIZE_KB: 1073741824,
|
|
40
|
+
PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824,
|
|
41
|
+
PUBLIC_OTEL_INCLUDE_METRICS: 'aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_',
|
|
42
|
+
SENTINEL_ENABLED: true,
|
|
43
|
+
OFFENSE_COLLECTION_ENABLED: true,
|
|
44
|
+
AZTEC_SLOT_DURATION: 36,
|
|
45
|
+
AZTEC_EPOCH_DURATION: 8,
|
|
46
|
+
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 1,
|
|
47
|
+
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 1,
|
|
48
|
+
AZTEC_TARGET_COMMITTEE_SIZE: 1,
|
|
49
|
+
SEQ_BLOCK_DURATION_MS: 3000,
|
|
50
|
+
MAX_BLOCKS_PER_CHECKPOINT: 9,
|
|
51
|
+
CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 6,
|
|
52
|
+
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 1,
|
|
53
|
+
AZTEC_SLASHING_QUORUM: 17,
|
|
54
|
+
AZTEC_GOVERNANCE_PROPOSER_QUORUM: 151,
|
|
55
|
+
L1_CHAIN_ID: 11155111,
|
|
56
|
+
TEST_ACCOUNTS: true,
|
|
57
|
+
SPONSORED_FPC: true,
|
|
58
|
+
TRANSACTIONS_DISABLED: false,
|
|
59
|
+
SEQ_MAX_TX_PER_BLOCK: 18,
|
|
60
|
+
PROVER_REAL_PROOFS: false,
|
|
61
|
+
PXE_PROVER_ENABLED: false,
|
|
62
|
+
SYNC_SNAPSHOTS_URLS: '',
|
|
63
|
+
SKIP_ARCHIVER_INITIAL_SYNC: false,
|
|
64
|
+
BLOB_ALLOW_EMPTY_SOURCES: false,
|
|
65
|
+
P2P_MAX_PENDING_TX_COUNT: 1000,
|
|
66
|
+
P2P_TX_POOL_DELETE_TXS_AFTER_REORG: false,
|
|
67
|
+
PUBLIC_OTEL_OPT_OUT: true,
|
|
68
|
+
PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '',
|
|
69
|
+
PUBLIC_OTEL_COLLECT_FROM: '',
|
|
70
|
+
SLASH_DATA_WITHHOLDING_PENALTY: 10000000000000000000,
|
|
71
|
+
SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.9,
|
|
72
|
+
SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 1,
|
|
73
|
+
SLASH_INACTIVITY_PENALTY: 10000000000000000000,
|
|
74
|
+
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 10000000000000000000,
|
|
75
|
+
SLASH_DUPLICATE_PROPOSAL_PENALTY: 10000000000000000000,
|
|
76
|
+
SLASH_DUPLICATE_ATTESTATION_PENALTY: 10000000000000000000,
|
|
77
|
+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 10000000000000000000,
|
|
78
|
+
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 10000000000000000000,
|
|
79
|
+
SLASH_UNKNOWN_PENALTY: 10000000000000000000,
|
|
80
|
+
SLASH_INVALID_BLOCK_PENALTY: 10000000000000000000,
|
|
81
|
+
SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0,
|
|
82
|
+
SLASH_GRACE_PERIOD_L2_SLOTS: 0,
|
|
83
|
+
ENABLE_AUTO_SHUTDOWN: false
|
|
84
|
+
};
|
|
85
|
+
export const testnetConfig = {
|
|
86
|
+
ETHEREUM_SLOT_DURATION: 12,
|
|
87
|
+
AZTEC_EPOCH_DURATION: 32,
|
|
88
|
+
AZTEC_TARGET_COMMITTEE_SIZE: 48,
|
|
89
|
+
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,
|
|
90
|
+
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2,
|
|
91
|
+
AZTEC_EXIT_DELAY_SECONDS: 172800,
|
|
92
|
+
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
93
|
+
AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000,
|
|
94
|
+
AZTEC_SLASHER_ENABLED: true,
|
|
95
|
+
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
96
|
+
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5,
|
|
97
|
+
AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
|
|
98
|
+
AZTEC_SLASHING_DISABLE_DURATION: 432000,
|
|
99
|
+
AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: 0,
|
|
100
|
+
AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE: 0,
|
|
101
|
+
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN: 48,
|
|
102
|
+
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT: 2,
|
|
103
|
+
AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE: 48,
|
|
104
|
+
SLASH_OFFENSE_EXPIRATION_ROUNDS: 4,
|
|
105
|
+
SLASH_MAX_PAYLOAD_SIZE: 80,
|
|
106
|
+
SLASH_EXECUTE_ROUNDS_LOOK_BACK: 4,
|
|
107
|
+
SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS: 3,
|
|
108
|
+
P2P_ENABLED: true,
|
|
109
|
+
BOOTSTRAP_NODES: '',
|
|
110
|
+
SEQ_MIN_TX_PER_BLOCK: 1,
|
|
111
|
+
SEQ_BUILD_CHECKPOINT_IF_EMPTY: true,
|
|
112
|
+
SEQ_BLOCK_DURATION_MS: 6000,
|
|
113
|
+
MAX_BLOCKS_PER_CHECKPOINT: 10,
|
|
114
|
+
CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 12,
|
|
115
|
+
DATA_STORE_MAP_SIZE_KB: 134217728,
|
|
116
|
+
ARCHIVER_STORE_MAP_SIZE_KB: 1073741824,
|
|
117
|
+
NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824,
|
|
118
|
+
NULLIFIER_TREE_MAP_SIZE_KB: 1073741824,
|
|
119
|
+
PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824,
|
|
120
|
+
PUBLIC_OTEL_INCLUDE_METRICS: 'aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_',
|
|
121
|
+
SENTINEL_ENABLED: true,
|
|
122
|
+
OFFENSE_COLLECTION_ENABLED: true,
|
|
123
|
+
AZTEC_SLOT_DURATION: 72,
|
|
124
|
+
AZTEC_ACTIVATION_THRESHOLD: 2E+23,
|
|
125
|
+
AZTEC_EJECTION_THRESHOLD: 1E+23,
|
|
126
|
+
AZTEC_LOCAL_EJECTION_THRESHOLD: 1.99E+23,
|
|
127
|
+
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 2,
|
|
128
|
+
AZTEC_SLASHING_VETOER: '0xdfe19Da6a717b7088621d8bBB66be59F2d78e924',
|
|
129
|
+
AZTEC_SLASHING_QUORUM: 33,
|
|
130
|
+
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 100,
|
|
131
|
+
AZTEC_GOVERNANCE_PROPOSER_QUORUM: 60,
|
|
132
|
+
AZTEC_MANA_TARGET: 75000000,
|
|
133
|
+
AZTEC_PROVING_COST_PER_MANA: 12500000,
|
|
134
|
+
AZTEC_SLASH_AMOUNT_SMALL: 1E+23,
|
|
135
|
+
AZTEC_SLASH_AMOUNT_MEDIUM: 2.5E+23,
|
|
136
|
+
AZTEC_SLASH_AMOUNT_LARGE: 2.5E+23,
|
|
137
|
+
L1_CHAIN_ID: 11155111,
|
|
138
|
+
TEST_ACCOUNTS: false,
|
|
139
|
+
SPONSORED_FPC: false,
|
|
140
|
+
TRANSACTIONS_DISABLED: false,
|
|
141
|
+
SEQ_MAX_TX_PER_CHECKPOINT: 72,
|
|
142
|
+
PROVER_REAL_PROOFS: true,
|
|
143
|
+
P2P_MAX_PENDING_TX_COUNT: 1000,
|
|
144
|
+
P2P_TX_POOL_DELETE_TXS_AFTER_REORG: true,
|
|
145
|
+
SLASH_DATA_WITHHOLDING_PENALTY: 0,
|
|
146
|
+
SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.9,
|
|
147
|
+
SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 1,
|
|
148
|
+
SLASH_INACTIVITY_PENALTY: 1E+23,
|
|
149
|
+
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 1E+23,
|
|
150
|
+
SLASH_DUPLICATE_PROPOSAL_PENALTY: 2.5E+23,
|
|
151
|
+
SLASH_DUPLICATE_ATTESTATION_PENALTY: 2.5E+23,
|
|
152
|
+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 0,
|
|
153
|
+
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0,
|
|
154
|
+
SLASH_UNKNOWN_PENALTY: 1E+23,
|
|
155
|
+
SLASH_INVALID_BLOCK_PENALTY: 1E+23,
|
|
156
|
+
SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 1E+23,
|
|
157
|
+
SLASH_GRACE_PERIOD_L2_SLOTS: 64,
|
|
158
|
+
ENABLE_AUTO_SHUTDOWN: false
|
|
159
|
+
};
|
|
160
|
+
export const mainnetConfig = {
|
|
161
|
+
ETHEREUM_SLOT_DURATION: 12,
|
|
162
|
+
AZTEC_EPOCH_DURATION: 32,
|
|
163
|
+
AZTEC_TARGET_COMMITTEE_SIZE: 48,
|
|
164
|
+
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,
|
|
165
|
+
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2,
|
|
166
|
+
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
167
|
+
AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000,
|
|
168
|
+
AZTEC_SLASHER_ENABLED: true,
|
|
169
|
+
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
170
|
+
AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
|
|
171
|
+
SLASH_OFFENSE_EXPIRATION_ROUNDS: 4,
|
|
172
|
+
SLASH_MAX_PAYLOAD_SIZE: 80,
|
|
173
|
+
SLASH_EXECUTE_ROUNDS_LOOK_BACK: 4,
|
|
174
|
+
SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS: 3,
|
|
175
|
+
P2P_ENABLED: true,
|
|
176
|
+
BOOTSTRAP_NODES: '',
|
|
177
|
+
SEQ_MIN_TX_PER_BLOCK: 1,
|
|
178
|
+
SEQ_BUILD_CHECKPOINT_IF_EMPTY: true,
|
|
179
|
+
SEQ_BLOCK_DURATION_MS: 6000,
|
|
180
|
+
MAX_BLOCKS_PER_CHECKPOINT: 10,
|
|
181
|
+
CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 12,
|
|
182
|
+
DATA_STORE_MAP_SIZE_KB: 134217728,
|
|
183
|
+
ARCHIVER_STORE_MAP_SIZE_KB: 1073741824,
|
|
184
|
+
NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824,
|
|
185
|
+
NULLIFIER_TREE_MAP_SIZE_KB: 1073741824,
|
|
186
|
+
PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824,
|
|
187
|
+
PUBLIC_OTEL_INCLUDE_METRICS: 'aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_',
|
|
188
|
+
SENTINEL_ENABLED: true,
|
|
189
|
+
OFFENSE_COLLECTION_ENABLED: true,
|
|
190
|
+
AZTEC_SLOT_DURATION: 72,
|
|
191
|
+
AZTEC_ACTIVATION_THRESHOLD: 2E+23,
|
|
192
|
+
AZTEC_EJECTION_THRESHOLD: 1E+23,
|
|
193
|
+
AZTEC_LOCAL_EJECTION_THRESHOLD: 1.9E+23,
|
|
194
|
+
AZTEC_SLASH_AMOUNT_SMALL: 2E+21,
|
|
195
|
+
AZTEC_SLASH_AMOUNT_MEDIUM: 5E+21,
|
|
196
|
+
AZTEC_SLASH_AMOUNT_LARGE: 5E+21,
|
|
197
|
+
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 34,
|
|
198
|
+
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 28,
|
|
199
|
+
AZTEC_SLASHING_VETOER: '0xBbB4aF368d02827945748b28CD4b2D42e4A37480',
|
|
200
|
+
AZTEC_SLASHING_QUORUM: 65,
|
|
201
|
+
AZTEC_GOVERNANCE_PROPOSER_QUORUM: 600,
|
|
202
|
+
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 1000,
|
|
203
|
+
AZTEC_MANA_TARGET: 75000000,
|
|
204
|
+
AZTEC_PROVING_COST_PER_MANA: 12500000,
|
|
205
|
+
AZTEC_EXIT_DELAY_SECONDS: 345600,
|
|
206
|
+
AZTEC_SLASHING_DISABLE_DURATION: 259200,
|
|
207
|
+
AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: 500,
|
|
208
|
+
AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE: 500,
|
|
209
|
+
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN: 1,
|
|
210
|
+
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT: 400,
|
|
211
|
+
AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE: 4,
|
|
212
|
+
L1_CHAIN_ID: 1,
|
|
213
|
+
TEST_ACCOUNTS: false,
|
|
214
|
+
SPONSORED_FPC: false,
|
|
215
|
+
TRANSACTIONS_DISABLED: false,
|
|
216
|
+
SEQ_MAX_TX_PER_CHECKPOINT: 72,
|
|
217
|
+
PROVER_REAL_PROOFS: true,
|
|
218
|
+
BLOB_ALLOW_EMPTY_SOURCES: true,
|
|
219
|
+
P2P_MAX_PENDING_TX_COUNT: 1000,
|
|
220
|
+
P2P_TX_POOL_DELETE_TXS_AFTER_REORG: true,
|
|
221
|
+
PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '',
|
|
222
|
+
PUBLIC_OTEL_COLLECT_FROM: '',
|
|
223
|
+
ENABLE_AUTO_SHUTDOWN: false,
|
|
224
|
+
SLASH_DATA_WITHHOLDING_PENALTY: 0,
|
|
225
|
+
SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.7,
|
|
226
|
+
SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 2,
|
|
227
|
+
SLASH_INACTIVITY_PENALTY: 2E+21,
|
|
228
|
+
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 2E+21,
|
|
229
|
+
SLASH_DUPLICATE_PROPOSAL_PENALTY: 5E+21,
|
|
230
|
+
SLASH_DUPLICATE_ATTESTATION_PENALTY: 5E+21,
|
|
231
|
+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 0,
|
|
232
|
+
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0,
|
|
233
|
+
SLASH_UNKNOWN_PENALTY: 2E+21,
|
|
234
|
+
SLASH_INVALID_BLOCK_PENALTY: 2E+21,
|
|
235
|
+
SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 2E+21,
|
|
236
|
+
SLASH_GRACE_PERIOD_L2_SLOTS: 8400
|
|
237
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { L1ContractAddresses } from '@aztec-labs/ethereum/l1-contract-addresses';
|
|
2
|
+
import { getL1ContractsConfig } from '@aztec-labs/ethereum/queries';
|
|
3
|
+
import { EthAddress } from '@aztec-labs/foundation/eth-address';
|
|
4
|
+
export declare function getL1Config(registryAddress: EthAddress, l1RpcUrls: string[], l1ChainId: number, rollupVersion?: number | 'canonical'): Promise<{
|
|
5
|
+
addresses: L1ContractAddresses;
|
|
6
|
+
config: Awaited<ReturnType<typeof getL1ContractsConfig>>;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function getL1RollupAddressFromEnv(l1RpcUrls: string[], l1ChainId: number): Promise<EthAddress>;
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0X2wxX2NvbmZpZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9nZXRfbDFfY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWhFLHdCQUFzQixXQUFXLENBQy9CLGVBQWUsRUFBRSxVQUFVLEVBQzNCLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFDbkIsU0FBUyxFQUFFLE1BQU0sRUFDakIsYUFBYSxHQUFFLE1BQU0sR0FBRyxXQUF5QixHQUNoRCxPQUFPLENBQUM7SUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUM7SUFBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQTtDQUFFLENBQUMsQ0FVdkc7QUFFRCx3QkFBc0IseUJBQXlCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQU9yRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get_l1_config.d.ts","sourceRoot":"","sources":["../../src/config/get_l1_config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,wBAAsB,WAAW,CAC/B,eAAe,EAAE,UAAU,EAC3B,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,GAAE,MAAM,GAAG,WAAyB,GAChD,OAAO,CAAC;IAAE,SAAS,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAA;CAAE,CAAC,CAUvG;AAED,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,uBAOrF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getPublicClient } from '@aztec-labs/ethereum/client';
|
|
2
|
+
import { RegistryContract } from '@aztec-labs/ethereum/contracts';
|
|
3
|
+
import { getL1ContractsConfig } from '@aztec-labs/ethereum/queries';
|
|
4
|
+
import { EthAddress } from '@aztec-labs/foundation/eth-address';
|
|
5
|
+
export async function getL1Config(registryAddress, l1RpcUrls, l1ChainId, rollupVersion = 'canonical') {
|
|
6
|
+
const publicClient = getPublicClient({
|
|
7
|
+
l1RpcUrls,
|
|
8
|
+
l1ChainId
|
|
9
|
+
});
|
|
10
|
+
const addresses = await RegistryContract.collectAddresses(publicClient, registryAddress, rollupVersion);
|
|
11
|
+
const config = await getL1ContractsConfig(publicClient, addresses);
|
|
12
|
+
return {
|
|
13
|
+
addresses,
|
|
14
|
+
config
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export async function getL1RollupAddressFromEnv(l1RpcUrls, l1ChainId) {
|
|
18
|
+
const registryAddress = process.env.REGISTRY_CONTRACT_ADDRESS;
|
|
19
|
+
if (!registryAddress || !EthAddress.isAddress(registryAddress)) {
|
|
20
|
+
throw new Error(`Failed to extract registry address`);
|
|
21
|
+
}
|
|
22
|
+
const { addresses } = await getL1Config(EthAddress.fromString(registryAddress), l1RpcUrls, l1ChainId);
|
|
23
|
+
return addresses.rollupAddress;
|
|
24
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './cached_fetch.js';
|
|
2
|
+
export * from './chain_l2_config.js';
|
|
3
|
+
export * from './get_l1_config.js';
|
|
4
|
+
export * from './network_config.js';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type NetworkConfig, type NetworkNames } from '@aztec-labs/foundation/config';
|
|
2
|
+
/**
|
|
3
|
+
* Fetches remote network configuration from GitHub with caching support.
|
|
4
|
+
* Uses the reusable cachedFetch utility. Falls back to metadata.aztec.network if the default URL fails.
|
|
5
|
+
*
|
|
6
|
+
* @param networkName - The network name to fetch config for
|
|
7
|
+
* @param cacheDir - Optional cache directory for storing fetched config
|
|
8
|
+
* @returns Remote configuration for the specified network, or undefined if network not found in config
|
|
9
|
+
* @throws Error if both primary and fallback URLs fail to fetch
|
|
10
|
+
*/
|
|
11
|
+
export declare function getNetworkConfig(networkName: NetworkNames, cacheDir?: string): Promise<NetworkConfig | undefined>;
|
|
12
|
+
/**
|
|
13
|
+
* Enriches environment variables with remote network configuration.
|
|
14
|
+
* This function is called before node config initialization to set env vars
|
|
15
|
+
* from the remote config.
|
|
16
|
+
*
|
|
17
|
+
* @param networkName - The network name to fetch remote config for
|
|
18
|
+
* @throws Error if network config fetch fails (network errors, parse errors, etc.)
|
|
19
|
+
* Does not throw if the network simply doesn't exist in the config - just returns without enriching
|
|
20
|
+
*/
|
|
21
|
+
export declare function enrichEnvironmentWithNetworkConfig(networkName: NetworkNames): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya19jb25maWcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvbmV0d29ya19jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUEwQixLQUFLLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBVzlHOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLGdCQUFnQixDQUNwQyxXQUFXLEVBQUUsWUFBWSxFQUN6QixRQUFRLENBQUMsRUFBRSxNQUFNLEdBQ2hCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBOEJwQztBQXNERDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixrQ0FBa0MsQ0FBQyxXQUFXLEVBQUUsWUFBWSxpQkFpQ2pGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network_config.d.ts","sourceRoot":"","sources":["../../src/config/network_config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAA0B,KAAK,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAW9G;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,YAAY,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA8BpC;AAsDD;;;;;;;;GAQG;AACH,wBAAsB,kCAAkC,CAAC,WAAW,EAAE,YAAY,iBAiCjF"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { NetworkConfigMapSchema } from '@aztec-labs/foundation/config';
|
|
2
|
+
import { readFile } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { cachedFetch } from './cached_fetch.js';
|
|
5
|
+
import { enrichEthAddressVar, enrichVar } from './enrich_env.js';
|
|
6
|
+
const DEFAULT_CONFIG_URL = 'https://raw.githubusercontent.com/AztecProtocol/networks/refs/heads/main/network_config.json';
|
|
7
|
+
const FALLBACK_CONFIG_URL = 'https://metadata.aztec.network/network_config.json';
|
|
8
|
+
/**
|
|
9
|
+
* Fetches remote network configuration from GitHub with caching support.
|
|
10
|
+
* Uses the reusable cachedFetch utility. Falls back to metadata.aztec.network if the default URL fails.
|
|
11
|
+
*
|
|
12
|
+
* @param networkName - The network name to fetch config for
|
|
13
|
+
* @param cacheDir - Optional cache directory for storing fetched config
|
|
14
|
+
* @returns Remote configuration for the specified network, or undefined if network not found in config
|
|
15
|
+
* @throws Error if both primary and fallback URLs fail to fetch
|
|
16
|
+
*/ export async function getNetworkConfig(networkName, cacheDir) {
|
|
17
|
+
// Try with the primary URL (env var or default)
|
|
18
|
+
const configLocation = process.env.NETWORK_CONFIG_LOCATION || DEFAULT_CONFIG_URL;
|
|
19
|
+
let primaryError;
|
|
20
|
+
let config;
|
|
21
|
+
// First try the primary config location
|
|
22
|
+
try {
|
|
23
|
+
config = await fetchNetworkConfigFromUrl(configLocation, networkName, cacheDir);
|
|
24
|
+
} catch (error) {
|
|
25
|
+
primaryError = error;
|
|
26
|
+
}
|
|
27
|
+
// If primary fails and we were using the default URL, try the fallback
|
|
28
|
+
if (!config && configLocation === DEFAULT_CONFIG_URL) {
|
|
29
|
+
try {
|
|
30
|
+
config = await fetchNetworkConfigFromUrl(FALLBACK_CONFIG_URL, networkName, cacheDir);
|
|
31
|
+
} catch {
|
|
32
|
+
// Both failed - throw the primary error
|
|
33
|
+
if (primaryError) {
|
|
34
|
+
throw primaryError;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
} else if (primaryError) {
|
|
38
|
+
// Primary failed and no fallback to try
|
|
39
|
+
throw primaryError;
|
|
40
|
+
}
|
|
41
|
+
return config;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Helper function to fetch network config from a specific URL.
|
|
45
|
+
* @param configLocation - The URL or file path to fetch from
|
|
46
|
+
* @param networkName - The network name to fetch config for
|
|
47
|
+
* @param cacheDir - Optional cache directory for storing fetched config
|
|
48
|
+
* @returns Remote configuration for the specified network, or undefined if network not found in config, or undefined if URL invalid
|
|
49
|
+
* @throws Error if fetch/parse fails
|
|
50
|
+
*/ async function fetchNetworkConfigFromUrl(configLocation, networkName, cacheDir) {
|
|
51
|
+
let url;
|
|
52
|
+
try {
|
|
53
|
+
if (configLocation.includes('://')) {
|
|
54
|
+
url = new URL(configLocation);
|
|
55
|
+
} else {
|
|
56
|
+
url = new URL(`file://${configLocation}`);
|
|
57
|
+
}
|
|
58
|
+
} catch {
|
|
59
|
+
/* no-op */ }
|
|
60
|
+
if (!url) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
let rawConfig;
|
|
64
|
+
if (url.protocol === 'http:' || url.protocol === 'https:') {
|
|
65
|
+
rawConfig = await cachedFetch(url.href, {
|
|
66
|
+
cacheFile: cacheDir ? join(cacheDir, networkName, 'network_config.json') : undefined
|
|
67
|
+
});
|
|
68
|
+
} else if (url.protocol === 'file:') {
|
|
69
|
+
rawConfig = JSON.parse(await readFile(url.pathname, 'utf-8'));
|
|
70
|
+
} else {
|
|
71
|
+
throw new Error('Unsupported Aztec network config protocol: ' + url.href);
|
|
72
|
+
}
|
|
73
|
+
if (!rawConfig) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
const networkConfigMap = NetworkConfigMapSchema.parse(rawConfig);
|
|
77
|
+
if (networkName in networkConfigMap) {
|
|
78
|
+
return networkConfigMap[networkName];
|
|
79
|
+
} else {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Enriches environment variables with remote network configuration.
|
|
85
|
+
* This function is called before node config initialization to set env vars
|
|
86
|
+
* from the remote config.
|
|
87
|
+
*
|
|
88
|
+
* @param networkName - The network name to fetch remote config for
|
|
89
|
+
* @throws Error if network config fetch fails (network errors, parse errors, etc.)
|
|
90
|
+
* Does not throw if the network simply doesn't exist in the config - just returns without enriching
|
|
91
|
+
*/ export async function enrichEnvironmentWithNetworkConfig(networkName) {
|
|
92
|
+
if (networkName === 'local') {
|
|
93
|
+
return; // No remote config for local development
|
|
94
|
+
}
|
|
95
|
+
const cacheDir = process.env.DATA_DIRECTORY ? join(process.env.DATA_DIRECTORY, 'cache') : undefined;
|
|
96
|
+
const networkConfig = await getNetworkConfig(networkName, cacheDir);
|
|
97
|
+
if (!networkConfig) {
|
|
98
|
+
return; // Network not found in config, continue without enriching
|
|
99
|
+
}
|
|
100
|
+
enrichVar('BOOTSTRAP_NODES', networkConfig.bootnodes.join(','));
|
|
101
|
+
enrichVar('L1_CHAIN_ID', String(networkConfig.l1ChainId));
|
|
102
|
+
enrichVar('SYNC_SNAPSHOTS_URLS', networkConfig.snapshots.join(','));
|
|
103
|
+
enrichEthAddressVar('REGISTRY_CONTRACT_ADDRESS', networkConfig.registryAddress.toString());
|
|
104
|
+
if (networkConfig.feeAssetHandlerAddress) {
|
|
105
|
+
enrichEthAddressVar('FEE_ASSET_HANDLER_CONTRACT_ADDRESS', networkConfig.feeAssetHandlerAddress.toString());
|
|
106
|
+
}
|
|
107
|
+
if (networkConfig.blobFileStoreUrls?.length) {
|
|
108
|
+
enrichVar('BLOB_FILE_STORE_URLS', networkConfig.blobFileStoreUrls.join(','));
|
|
109
|
+
}
|
|
110
|
+
if (networkConfig.txCollectionFileStoreUrls?.length) {
|
|
111
|
+
enrichVar('TX_COLLECTION_FILE_STORE_URLS', networkConfig.txCollectionFileStoreUrls.join(','));
|
|
112
|
+
}
|
|
113
|
+
if (networkConfig.blockDurationMs !== undefined) {
|
|
114
|
+
enrichVar('SEQ_BLOCK_DURATION_MS', String(networkConfig.blockDurationMs));
|
|
115
|
+
}
|
|
116
|
+
if (networkConfig.txPublicSetupAllowListExtend) {
|
|
117
|
+
enrichVar('TX_PUBLIC_SETUP_ALLOWLIST', networkConfig.txPublicSetupAllowListExtend);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type ContractArtifact, type FunctionAbi } from '@aztec-labs/aztec.js/abi';
|
|
2
|
+
import { EthAddress } from '@aztec-labs/aztec.js/addresses';
|
|
3
|
+
import type { L1ContractsConfig } from '@aztec-labs/ethereum/config';
|
|
4
|
+
import { RollupContract } from '@aztec-labs/ethereum/contracts';
|
|
5
|
+
import type { Operator } from '@aztec-labs/ethereum/deploy-aztec-l1-contracts';
|
|
6
|
+
import { Fr } from '@aztec-labs/foundation/curves/bn254';
|
|
7
|
+
import { type LogFn } from '@aztec-labs/foundation/log';
|
|
8
|
+
import type { NoirPackageConfig } from '@aztec-labs/foundation/noir';
|
|
9
|
+
/**
|
|
10
|
+
* Helper to get an ABI function or throw error if it doesn't exist.
|
|
11
|
+
* @param artifact - Contract's build artifact in JSON format.
|
|
12
|
+
* @param fnName - Function name to be found.
|
|
13
|
+
* @returns The function's ABI.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getFunctionAbi(artifact: ContractArtifact, fnName: string): FunctionAbi;
|
|
16
|
+
export declare function deployNewRollupContracts(registryAddress: EthAddress, rpcUrls: string[], privateKey: string | undefined, chainId: number, mnemonic: string, mnemonicIndex: number, initialValidators: Operator[], genesisArchiveRoot: Fr, feeJuicePortalInitialBalance: bigint, config: L1ContractsConfig, realVerifier: boolean): Promise<{
|
|
17
|
+
rollup: RollupContract;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Gets all contracts available in \@aztec-labs/noir-contracts.js.
|
|
21
|
+
* @returns The contract names.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getExampleContractNames(): Promise<string[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Reads a file and converts it to an Aztec Contract ABI.
|
|
26
|
+
* @param fileDir - The directory of the compiled contract ABI.
|
|
27
|
+
* @returns The parsed contract artifact.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getContractArtifact(fileDir: string, log: LogFn): Promise<ContractArtifact>;
|
|
30
|
+
/**
|
|
31
|
+
* Performs necessary checks, conversions & operations to call a contract fn from the CLI.
|
|
32
|
+
* @param contractFile - Directory of the compiled contract ABI.
|
|
33
|
+
* @param functionName - Name of the function to be called.
|
|
34
|
+
* @param _functionArgs - Arguments to call the function with.
|
|
35
|
+
* @param log - Logger instance that will output to the CLI
|
|
36
|
+
* @returns Formatted contract address, function arguments and caller's aztec address.
|
|
37
|
+
*/
|
|
38
|
+
export declare function prepTx(contractFile: string, functionName: string, _functionArgs: string[], log: LogFn): Promise<{
|
|
39
|
+
functionArgs: any[];
|
|
40
|
+
contractArtifact: ContractArtifact;
|
|
41
|
+
isPrivate: boolean;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Removes the leading 0x from a hex string. If no leading 0x is found the string is returned unchanged.
|
|
45
|
+
* @param hex - A hex string
|
|
46
|
+
* @returns A new string with leading 0x removed
|
|
47
|
+
*/
|
|
48
|
+
export declare const stripLeadingHex: (hex: string) => string;
|
|
49
|
+
/**
|
|
50
|
+
* Adds a leading 0x to a hex string. If a leading 0x is already present the string is returned unchanged.
|
|
51
|
+
* @param hex - A hex string
|
|
52
|
+
* @returns A new string with leading 0x added
|
|
53
|
+
*/
|
|
54
|
+
export declare const addLeadingHex: (hex: string) => `0x${string}`;
|
|
55
|
+
export declare function prettyPrintNargoToml(config: NoirPackageConfig): string;
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9henRlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBSWpCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRS9FLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxLQUFLLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVVyRTs7Ozs7R0FLRztBQUNILHdCQUFnQixjQUFjLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsV0FBVyxDQU10RjtBQUVELHdCQUFzQix3QkFBd0IsQ0FDNUMsZUFBZSxFQUFFLFVBQVUsRUFDM0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUNqQixVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFDZixRQUFRLEVBQUUsTUFBTSxFQUNoQixhQUFhLEVBQUUsTUFBTSxFQUNyQixpQkFBaUIsRUFBRSxRQUFRLEVBQUUsRUFDN0Isa0JBQWtCLEVBQUUsRUFBRSxFQUN0Qiw0QkFBNEIsRUFBRSxNQUFNLEVBQ3BDLE1BQU0sRUFBRSxpQkFBaUIsRUFDekIsWUFBWSxFQUFFLE9BQU8sR0FDcEIsT0FBTyxDQUFDO0lBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQTtDQUFFLENBQUMsQ0EwQ3JDO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQXNCLHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUtqRTtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBc0IsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyw2QkFrQ3BFO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFzQixNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSzs7OztHQU8zRztBQUVEOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0sZUFBZSx5QkFLM0IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0sYUFBYSxnQ0FLekIsQ0FBQztBQU9GLHdCQUFnQixvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEdBQUcsTUFBTSxDQVV0RSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aztec.d.ts","sourceRoot":"","sources":["../../src/utils/aztec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAIjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE/E,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AACzD,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAUrE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAMtF;AAED,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,UAAU,EAC3B,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,kBAAkB,EAAE,EAAE,EACtB,4BAA4B,EAAE,MAAM,EACpC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CA0CrC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKjE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,6BAkCpE;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK;;;;GAO3G;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,yBAK3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,gCAKzB,CAAC;AAOF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAUtE"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { FunctionType, getAllFunctionAbis, loadContractArtifact } from '@aztec-labs/aztec.js/abi';
|
|
2
|
+
import { EthAddress } from '@aztec-labs/aztec.js/addresses';
|
|
3
|
+
import { SecretValue } from '@aztec-labs/foundation/config';
|
|
4
|
+
import { Fr } from '@aztec-labs/foundation/curves/bn254';
|
|
5
|
+
import { createLogger } from '@aztec-labs/foundation/log';
|
|
6
|
+
import { protocolContractsHash } from '@aztec-labs/protocol-contracts';
|
|
7
|
+
import TOML from '@iarna/toml';
|
|
8
|
+
import { readFile } from 'fs/promises';
|
|
9
|
+
import { encodeArgs } from './encoding.js';
|
|
10
|
+
const logger = createLogger('cli:utils:aztec');
|
|
11
|
+
/**
|
|
12
|
+
* Helper to get an ABI function or throw error if it doesn't exist.
|
|
13
|
+
* @param artifact - Contract's build artifact in JSON format.
|
|
14
|
+
* @param fnName - Function name to be found.
|
|
15
|
+
* @returns The function's ABI.
|
|
16
|
+
*/ export function getFunctionAbi(artifact, fnName) {
|
|
17
|
+
const fn = getAllFunctionAbis(artifact).find(({ name })=>name === fnName);
|
|
18
|
+
if (!fn) {
|
|
19
|
+
throw Error(`Function ${fnName} not found in contract ABI.`);
|
|
20
|
+
}
|
|
21
|
+
return fn;
|
|
22
|
+
}
|
|
23
|
+
export async function deployNewRollupContracts(registryAddress, rpcUrls, privateKey, chainId, mnemonic, mnemonicIndex, initialValidators, genesisArchiveRoot, feeJuicePortalInitialBalance, config, realVerifier) {
|
|
24
|
+
const { deployRollupForUpgrade } = await import('@aztec-labs/ethereum/deploy-aztec-l1-contracts');
|
|
25
|
+
const { mnemonicToAccount, privateKeyToAccount } = await import('viem/accounts');
|
|
26
|
+
const { getVKTreeRoot } = await import('@aztec-labs/noir-protocol-circuits-types/vk-tree');
|
|
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, {
|
|
55
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
56
|
+
protocolContractsHash,
|
|
57
|
+
genesisArchiveRoot,
|
|
58
|
+
initialValidators,
|
|
59
|
+
feeJuicePortalInitialBalance,
|
|
60
|
+
realVerifier,
|
|
61
|
+
...config
|
|
62
|
+
});
|
|
63
|
+
return {
|
|
64
|
+
rollup
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Gets all contracts available in \@aztec-labs/noir-contracts.js.
|
|
69
|
+
* @returns The contract names.
|
|
70
|
+
*/ export async function getExampleContractNames() {
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
72
|
+
// @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
|
|
73
|
+
const { ContractNames } = await import('@aztec-labs/noir-contracts.js');
|
|
74
|
+
return ContractNames;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Reads a file and converts it to an Aztec Contract ABI.
|
|
78
|
+
* @param fileDir - The directory of the compiled contract ABI.
|
|
79
|
+
* @returns The parsed contract artifact.
|
|
80
|
+
*/ export async function getContractArtifact(fileDir, log) {
|
|
81
|
+
// first check if it's a noir-contracts example
|
|
82
|
+
const allNames = await getExampleContractNames();
|
|
83
|
+
const contractName = fileDir.replace(/Contract(Artifact)?$/, '');
|
|
84
|
+
if (allNames.includes(contractName)) {
|
|
85
|
+
// This can load any generated contract module (noir-contracts.js/src, gitignored), so
|
|
86
|
+
// depend on all of them — the CI dependency map content-hashes generated files from the
|
|
87
|
+
// working tree — plus the generator side.
|
|
88
|
+
// @dependency ../../../noir-contracts.js/src/*.ts, ../../../noir-contracts.js/scripts/generate-types.sh, ../../../noir-contracts.js/package.json
|
|
89
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
90
|
+
// @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
|
|
91
|
+
const imported = await import(`@aztec-labs/noir-contracts.js/${contractName}`);
|
|
92
|
+
const artifact = imported[`${contractName}ContractArtifact`];
|
|
93
|
+
if (!artifact) {
|
|
94
|
+
throw Error(`Could not import ${contractName}ContractArtifact from @aztec-labs/noir-contracts.js/${contractName}`);
|
|
95
|
+
}
|
|
96
|
+
return artifact;
|
|
97
|
+
}
|
|
98
|
+
let contents;
|
|
99
|
+
try {
|
|
100
|
+
contents = await readFile(fileDir, 'utf8');
|
|
101
|
+
} catch {
|
|
102
|
+
throw Error(`Contract ${fileDir} not found`);
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
return loadContractArtifact(JSON.parse(contents));
|
|
106
|
+
} catch (err) {
|
|
107
|
+
log('Invalid file used. Please try again.');
|
|
108
|
+
throw err;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Performs necessary checks, conversions & operations to call a contract fn from the CLI.
|
|
113
|
+
* @param contractFile - Directory of the compiled contract ABI.
|
|
114
|
+
* @param functionName - Name of the function to be called.
|
|
115
|
+
* @param _functionArgs - Arguments to call the function with.
|
|
116
|
+
* @param log - Logger instance that will output to the CLI
|
|
117
|
+
* @returns Formatted contract address, function arguments and caller's aztec address.
|
|
118
|
+
*/ export async function prepTx(contractFile, functionName, _functionArgs, log) {
|
|
119
|
+
const contractArtifact = await getContractArtifact(contractFile, log);
|
|
120
|
+
const functionArtifact = getFunctionAbi(contractArtifact, functionName);
|
|
121
|
+
const functionArgs = encodeArgs(_functionArgs, functionArtifact.parameters);
|
|
122
|
+
const isPrivate = functionArtifact.functionType === FunctionType.PRIVATE;
|
|
123
|
+
return {
|
|
124
|
+
functionArgs,
|
|
125
|
+
contractArtifact,
|
|
126
|
+
isPrivate
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Removes the leading 0x from a hex string. If no leading 0x is found the string is returned unchanged.
|
|
131
|
+
* @param hex - A hex string
|
|
132
|
+
* @returns A new string with leading 0x removed
|
|
133
|
+
*/ export const stripLeadingHex = (hex)=>{
|
|
134
|
+
if (hex.length > 2 && hex.startsWith('0x')) {
|
|
135
|
+
return hex.substring(2);
|
|
136
|
+
}
|
|
137
|
+
return hex;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Adds a leading 0x to a hex string. If a leading 0x is already present the string is returned unchanged.
|
|
141
|
+
* @param hex - A hex string
|
|
142
|
+
* @returns A new string with leading 0x added
|
|
143
|
+
*/ export const addLeadingHex = (hex)=>{
|
|
144
|
+
if (hex.length > 2 && hex.startsWith('0x')) {
|
|
145
|
+
return hex;
|
|
146
|
+
}
|
|
147
|
+
return `0x${hex}`;
|
|
148
|
+
};
|
|
149
|
+
/*
|
|
150
|
+
* Pretty prints Nargo.toml contents to a string
|
|
151
|
+
* @param config - Nargo.toml contents
|
|
152
|
+
* @returns The Nargo.toml contents as a string
|
|
153
|
+
*/ export function prettyPrintNargoToml(config) {
|
|
154
|
+
const withoutDependencies = Object.fromEntries(Object.entries(config).filter(([key])=>key !== 'dependencies'));
|
|
155
|
+
const partialToml = TOML.stringify(withoutDependencies);
|
|
156
|
+
const dependenciesToml = Object.entries(config.dependencies).map(([name, dep])=>{
|
|
157
|
+
const depToml = TOML.stringify.value(dep);
|
|
158
|
+
return `${name} = ${depToml}`;
|
|
159
|
+
});
|
|
160
|
+
return partialToml + '\n[dependencies]\n' + dependenciesToml.join('\n') + '\n';
|
|
161
|
+
}
|