@aztec/cli 0.0.1-commit.9ef841308 → 0.0.1-commit.a5db02d
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/dest/cmds/aztec_node/block_number.js +1 -1
- package/dest/cmds/aztec_node/get_logs.d.ts +30 -4
- package/dest/cmds/aztec_node/get_logs.d.ts.map +1 -1
- package/dest/cmds/aztec_node/get_logs.js +39 -29
- package/dest/cmds/aztec_node/get_node_info.d.ts +1 -1
- package/dest/cmds/aztec_node/get_node_info.d.ts.map +1 -1
- package/dest/cmds/aztec_node/get_node_info.js +0 -2
- package/dest/cmds/aztec_node/index.d.ts +1 -1
- package/dest/cmds/aztec_node/index.d.ts.map +1 -1
- package/dest/cmds/aztec_node/index.js +13 -3
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts +1 -1
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts.map +1 -1
- package/dest/cmds/infrastructure/setup_l2_contract.js +10 -6
- package/dest/cmds/l1/deploy_l1_contracts_cmd.d.ts +1 -1
- package/dest/cmds/l1/deploy_l1_contracts_cmd.d.ts.map +1 -1
- package/dest/cmds/l1/deploy_l1_contracts_cmd.js +0 -1
- package/dest/cmds/l1/deploy_new_rollup.d.ts +1 -1
- package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -1
- package/dest/cmds/l1/deploy_new_rollup.js +2 -4
- package/dest/cmds/l1/update_l1_validators.d.ts +1 -1
- package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -1
- package/dest/cmds/l1/update_l1_validators.js +0 -1
- 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/index.d.ts +1 -1
- package/dest/cmds/validator_keys/index.d.ts.map +1 -1
- package/dest/cmds/validator_keys/index.js +7 -6
- package/dest/cmds/validator_keys/new.d.ts +7 -1
- package/dest/cmds/validator_keys/new.d.ts.map +1 -1
- package/dest/cmds/validator_keys/new.js +98 -12
- 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 +15 -2
- package/dest/cmds/validator_keys/shared.d.ts.map +1 -1
- package/dest/cmds/validator_keys/shared.js +100 -23
- package/dest/cmds/validator_keys/utils.d.ts +12 -2
- package/dest/cmds/validator_keys/utils.d.ts.map +1 -1
- package/dest/cmds/validator_keys/utils.js +34 -0
- package/dest/config/chain_l2_config.d.ts +7 -2
- package/dest/config/chain_l2_config.d.ts.map +1 -1
- package/dest/config/chain_l2_config.js +14 -1
- package/dest/config/generated/networks.d.ts +50 -42
- package/dest/config/generated/networks.d.ts.map +1 -1
- package/dest/config/generated/networks.js +49 -41
- package/dest/utils/aztec.d.ts +1 -2
- package/dest/utils/aztec.d.ts.map +1 -1
- package/dest/utils/aztec.js +4 -5
- package/dest/utils/commands.d.ts +20 -11
- package/dest/utils/commands.d.ts.map +1 -1
- package/dest/utils/commands.js +29 -18
- package/dest/utils/inspect.d.ts +1 -1
- package/dest/utils/inspect.d.ts.map +1 -1
- package/dest/utils/inspect.js +11 -11
- package/package.json +30 -30
- package/src/cmds/aztec_node/block_number.ts +1 -1
- package/src/cmds/aztec_node/get_logs.ts +70 -38
- package/src/cmds/aztec_node/get_node_info.ts +0 -2
- package/src/cmds/aztec_node/index.ts +13 -8
- package/src/cmds/infrastructure/setup_l2_contract.ts +9 -5
- package/src/cmds/l1/deploy_l1_contracts_cmd.ts +0 -1
- package/src/cmds/l1/deploy_new_rollup.ts +1 -3
- package/src/cmds/l1/update_l1_validators.ts +0 -1
- package/src/cmds/validator_keys/eth_json_v3_worker.ts +30 -0
- package/src/cmds/validator_keys/index.ts +48 -8
- package/src/cmds/validator_keys/new.ts +129 -9
- package/src/cmds/validator_keys/set_funding_account.ts +55 -0
- package/src/cmds/validator_keys/shared.ts +123 -35
- package/src/cmds/validator_keys/utils.ts +44 -1
- package/src/config/chain_l2_config.ts +14 -1
- package/src/config/generated/networks.ts +49 -41
- package/src/utils/aztec.ts +14 -20
- package/src/utils/commands.ts +36 -22
- package/src/utils/inspect.ts +7 -8
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { NetworkNames } from '@aztec/foundation/config';
|
|
2
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { type ConsensusEnvVar, checkConsensusEnvOverrides } from '@aztec/stdlib/config';
|
|
2
4
|
|
|
3
5
|
import path from 'path';
|
|
4
6
|
|
|
@@ -12,6 +14,12 @@ const NetworkConfigs: Partial<Record<NetworkNames, NetworkConfigEnv>> = {
|
|
|
12
14
|
mainnet: mainnetConfig,
|
|
13
15
|
};
|
|
14
16
|
|
|
17
|
+
/** Every generated network config must define every consensus-critical env var. */
|
|
18
|
+
export type ConsensusComplete = Record<ConsensusEnvVar, string | number | boolean>;
|
|
19
|
+
({ devnetConfig, testnetConfig, mainnetConfig }) satisfies Record<string, ConsensusComplete>;
|
|
20
|
+
|
|
21
|
+
const log = createLogger('cli:chain_l2_config');
|
|
22
|
+
|
|
15
23
|
function enrichEnvironmentWithNetworkConfig(config: NetworkConfigEnv): void {
|
|
16
24
|
for (const [key, value] of Object.entries(config)) {
|
|
17
25
|
if (process.env[key] === undefined && value !== undefined) {
|
|
@@ -31,7 +39,9 @@ function getDefaultDataDir(networkName: NetworkNames): string {
|
|
|
31
39
|
* and DefaultSlasherConfig (which match the 'defaults' section of defaults.yml).
|
|
32
40
|
*
|
|
33
41
|
* For deployed networks: applies network configuration from generated defaults.yml,
|
|
34
|
-
* merging base defaults with network-specific overrides.
|
|
42
|
+
* merging base defaults with network-specific overrides. Before merging, enforces that operators have not
|
|
43
|
+
* overridden any consensus-critical env var with a value diverging from the network config (throwing unless
|
|
44
|
+
* ALLOW_OVERRIDING_NETWORK_CONFIG is set), so all nodes of a network agree on consensus-critical values.
|
|
35
45
|
*
|
|
36
46
|
* @param networkName - The network name
|
|
37
47
|
*/
|
|
@@ -49,6 +59,9 @@ export function enrichEnvironmentWithChainName(networkName: NetworkNames) {
|
|
|
49
59
|
const configKey = /^v\d+-devnet-\d+$/.test(networkName) ? 'devnet' : networkName;
|
|
50
60
|
const generatedConfig = NetworkConfigs[configKey];
|
|
51
61
|
if (generatedConfig) {
|
|
62
|
+
// The check is pure; this layer owns env mutation, so apply its canonical writes before enriching.
|
|
63
|
+
const canonical = checkConsensusEnvOverrides(generatedConfig, process.env, msg => log.warn(msg));
|
|
64
|
+
Object.assign(process.env, canonical);
|
|
52
65
|
enrichEnvironmentWithNetworkConfig(generatedConfig);
|
|
53
66
|
}
|
|
54
67
|
|
|
@@ -3,18 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
export const devnetConfig = {
|
|
5
5
|
ETHEREUM_SLOT_DURATION: 12,
|
|
6
|
-
AZTEC_SLOT_DURATION: 72,
|
|
7
|
-
AZTEC_TARGET_COMMITTEE_SIZE: 48,
|
|
8
6
|
AZTEC_ACTIVATION_THRESHOLD: 100000000000000000000,
|
|
9
7
|
AZTEC_EJECTION_THRESHOLD: 50000000000000000000,
|
|
10
8
|
AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000,
|
|
11
9
|
AZTEC_EXIT_DELAY_SECONDS: 172800,
|
|
12
|
-
AZTEC_INBOX_LAG:
|
|
10
|
+
AZTEC_INBOX_LAG: 2,
|
|
13
11
|
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
14
12
|
AZTEC_MANA_TARGET: 100000000,
|
|
15
13
|
AZTEC_PROVING_COST_PER_MANA: 100,
|
|
16
14
|
AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000,
|
|
17
|
-
|
|
15
|
+
AZTEC_SLASHER_ENABLED: true,
|
|
18
16
|
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
19
17
|
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5,
|
|
20
18
|
AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
|
|
@@ -24,17 +22,16 @@ export const devnetConfig = {
|
|
|
24
22
|
AZTEC_SLASH_AMOUNT_MEDIUM: 20000000000000000000,
|
|
25
23
|
AZTEC_SLASH_AMOUNT_LARGE: 50000000000000000000,
|
|
26
24
|
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 300,
|
|
27
|
-
SLASH_MIN_PENALTY_PERCENTAGE: 0.5,
|
|
28
|
-
SLASH_MAX_PENALTY_PERCENTAGE: 2,
|
|
29
25
|
SLASH_OFFENSE_EXPIRATION_ROUNDS: 4,
|
|
30
26
|
SLASH_MAX_PAYLOAD_SIZE: 80,
|
|
31
27
|
SLASH_EXECUTE_ROUNDS_LOOK_BACK: 4,
|
|
28
|
+
SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS: 3,
|
|
32
29
|
P2P_ENABLED: true,
|
|
33
30
|
BOOTSTRAP_NODES: '',
|
|
34
31
|
SEQ_MIN_TX_PER_BLOCK: 1,
|
|
35
32
|
SEQ_BUILD_CHECKPOINT_IF_EMPTY: true,
|
|
36
33
|
SEQ_BLOCK_DURATION_MS: 6000,
|
|
37
|
-
|
|
34
|
+
CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 12,
|
|
38
35
|
DATA_STORE_MAP_SIZE_KB: 134217728,
|
|
39
36
|
ARCHIVER_STORE_MAP_SIZE_KB: 1073741824,
|
|
40
37
|
NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824,
|
|
@@ -42,10 +39,16 @@ export const devnetConfig = {
|
|
|
42
39
|
PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824,
|
|
43
40
|
PUBLIC_OTEL_INCLUDE_METRICS: 'aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_',
|
|
44
41
|
SENTINEL_ENABLED: true,
|
|
42
|
+
OFFENSE_COLLECTION_ENABLED: true,
|
|
43
|
+
AZTEC_SLOT_DURATION: 36,
|
|
45
44
|
AZTEC_EPOCH_DURATION: 8,
|
|
46
45
|
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 1,
|
|
47
46
|
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 1,
|
|
47
|
+
AZTEC_TARGET_COMMITTEE_SIZE: 1,
|
|
48
|
+
MAX_BLOCKS_PER_CHECKPOINT: 4,
|
|
48
49
|
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 1,
|
|
50
|
+
AZTEC_SLASHING_QUORUM: 17,
|
|
51
|
+
AZTEC_GOVERNANCE_PROPOSER_QUORUM: 151,
|
|
49
52
|
L1_CHAIN_ID: 11155111,
|
|
50
53
|
TEST_ACCOUNTS: true,
|
|
51
54
|
SPONSORED_FPC: true,
|
|
@@ -61,7 +64,6 @@ export const devnetConfig = {
|
|
|
61
64
|
PUBLIC_OTEL_OPT_OUT: true,
|
|
62
65
|
PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '',
|
|
63
66
|
PUBLIC_OTEL_COLLECT_FROM: '',
|
|
64
|
-
SLASH_PRUNE_PENALTY: 10000000000000000000,
|
|
65
67
|
SLASH_DATA_WITHHOLDING_PENALTY: 10000000000000000000,
|
|
66
68
|
SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.9,
|
|
67
69
|
SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 1,
|
|
@@ -69,11 +71,13 @@ export const devnetConfig = {
|
|
|
69
71
|
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 10000000000000000000,
|
|
70
72
|
SLASH_DUPLICATE_PROPOSAL_PENALTY: 10000000000000000000,
|
|
71
73
|
SLASH_DUPLICATE_ATTESTATION_PENALTY: 10000000000000000000,
|
|
72
|
-
|
|
74
|
+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 10000000000000000000,
|
|
75
|
+
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 10000000000000000000,
|
|
73
76
|
SLASH_UNKNOWN_PENALTY: 10000000000000000000,
|
|
74
77
|
SLASH_INVALID_BLOCK_PENALTY: 10000000000000000000,
|
|
78
|
+
SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0,
|
|
75
79
|
SLASH_GRACE_PERIOD_L2_SLOTS: 0,
|
|
76
|
-
|
|
80
|
+
ENABLE_AUTO_SHUTDOWN: false,
|
|
77
81
|
} as const;
|
|
78
82
|
|
|
79
83
|
export const testnetConfig = {
|
|
@@ -83,25 +87,25 @@ export const testnetConfig = {
|
|
|
83
87
|
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,
|
|
84
88
|
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2,
|
|
85
89
|
AZTEC_EXIT_DELAY_SECONDS: 172800,
|
|
86
|
-
AZTEC_INBOX_LAG:
|
|
90
|
+
AZTEC_INBOX_LAG: 2,
|
|
87
91
|
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
88
92
|
AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000,
|
|
89
|
-
|
|
93
|
+
AZTEC_SLASHER_ENABLED: true,
|
|
90
94
|
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
91
95
|
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5,
|
|
92
96
|
AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
|
|
93
97
|
AZTEC_SLASHING_DISABLE_DURATION: 432000,
|
|
94
|
-
SLASH_MIN_PENALTY_PERCENTAGE: 0.5,
|
|
95
|
-
SLASH_MAX_PENALTY_PERCENTAGE: 2,
|
|
96
98
|
SLASH_OFFENSE_EXPIRATION_ROUNDS: 4,
|
|
97
99
|
SLASH_MAX_PAYLOAD_SIZE: 80,
|
|
98
100
|
SLASH_EXECUTE_ROUNDS_LOOK_BACK: 4,
|
|
101
|
+
SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS: 3,
|
|
99
102
|
P2P_ENABLED: true,
|
|
100
103
|
BOOTSTRAP_NODES: '',
|
|
101
104
|
SEQ_MIN_TX_PER_BLOCK: 1,
|
|
102
105
|
SEQ_BUILD_CHECKPOINT_IF_EMPTY: true,
|
|
103
106
|
SEQ_BLOCK_DURATION_MS: 6000,
|
|
104
|
-
|
|
107
|
+
MAX_BLOCKS_PER_CHECKPOINT: 10,
|
|
108
|
+
CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 12,
|
|
105
109
|
DATA_STORE_MAP_SIZE_KB: 134217728,
|
|
106
110
|
ARCHIVER_STORE_MAP_SIZE_KB: 1073741824,
|
|
107
111
|
NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824,
|
|
@@ -109,6 +113,7 @@ export const testnetConfig = {
|
|
|
109
113
|
PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824,
|
|
110
114
|
PUBLIC_OTEL_INCLUDE_METRICS: 'aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_',
|
|
111
115
|
SENTINEL_ENABLED: true,
|
|
116
|
+
OFFENSE_COLLECTION_ENABLED: true,
|
|
112
117
|
AZTEC_SLOT_DURATION: 72,
|
|
113
118
|
AZTEC_ACTIVATION_THRESHOLD: 2E+23,
|
|
114
119
|
AZTEC_EJECTION_THRESHOLD: 1E+23,
|
|
@@ -119,10 +124,10 @@ export const testnetConfig = {
|
|
|
119
124
|
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 100,
|
|
120
125
|
AZTEC_GOVERNANCE_PROPOSER_QUORUM: 60,
|
|
121
126
|
AZTEC_MANA_TARGET: 75000000,
|
|
122
|
-
AZTEC_PROVING_COST_PER_MANA:
|
|
127
|
+
AZTEC_PROVING_COST_PER_MANA: 12500000,
|
|
123
128
|
AZTEC_SLASH_AMOUNT_SMALL: 1E+23,
|
|
124
|
-
AZTEC_SLASH_AMOUNT_MEDIUM:
|
|
125
|
-
AZTEC_SLASH_AMOUNT_LARGE:
|
|
129
|
+
AZTEC_SLASH_AMOUNT_MEDIUM: 2.5E+23,
|
|
130
|
+
AZTEC_SLASH_AMOUNT_LARGE: 2.5E+23,
|
|
126
131
|
L1_CHAIN_ID: 11155111,
|
|
127
132
|
TEST_ACCOUNTS: false,
|
|
128
133
|
SPONSORED_FPC: false,
|
|
@@ -131,19 +136,20 @@ export const testnetConfig = {
|
|
|
131
136
|
PROVER_REAL_PROOFS: true,
|
|
132
137
|
P2P_MAX_PENDING_TX_COUNT: 1000,
|
|
133
138
|
P2P_TX_POOL_DELETE_TXS_AFTER_REORG: true,
|
|
134
|
-
|
|
135
|
-
SLASH_DATA_WITHHOLDING_PENALTY: 10000000000000000000,
|
|
139
|
+
SLASH_DATA_WITHHOLDING_PENALTY: 0,
|
|
136
140
|
SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.9,
|
|
137
141
|
SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 1,
|
|
138
|
-
SLASH_INACTIVITY_PENALTY:
|
|
139
|
-
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY:
|
|
140
|
-
SLASH_DUPLICATE_PROPOSAL_PENALTY:
|
|
141
|
-
SLASH_DUPLICATE_ATTESTATION_PENALTY:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
SLASH_INACTIVITY_PENALTY: 1E+23,
|
|
143
|
+
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 1E+23,
|
|
144
|
+
SLASH_DUPLICATE_PROPOSAL_PENALTY: 2.5E+23,
|
|
145
|
+
SLASH_DUPLICATE_ATTESTATION_PENALTY: 2.5E+23,
|
|
146
|
+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 0,
|
|
147
|
+
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0,
|
|
148
|
+
SLASH_UNKNOWN_PENALTY: 1E+23,
|
|
149
|
+
SLASH_INVALID_BLOCK_PENALTY: 1E+23,
|
|
150
|
+
SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 1E+23,
|
|
145
151
|
SLASH_GRACE_PERIOD_L2_SLOTS: 64,
|
|
146
|
-
|
|
152
|
+
ENABLE_AUTO_SHUTDOWN: false,
|
|
147
153
|
} as const;
|
|
148
154
|
|
|
149
155
|
export const mainnetConfig = {
|
|
@@ -152,23 +158,23 @@ export const mainnetConfig = {
|
|
|
152
158
|
AZTEC_TARGET_COMMITTEE_SIZE: 48,
|
|
153
159
|
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,
|
|
154
160
|
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2,
|
|
155
|
-
AZTEC_INBOX_LAG:
|
|
161
|
+
AZTEC_INBOX_LAG: 2,
|
|
156
162
|
AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
|
|
157
163
|
AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000,
|
|
158
|
-
|
|
164
|
+
AZTEC_SLASHER_ENABLED: true,
|
|
159
165
|
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
|
|
160
166
|
AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
|
|
161
|
-
SLASH_MIN_PENALTY_PERCENTAGE: 0.5,
|
|
162
|
-
SLASH_MAX_PENALTY_PERCENTAGE: 2,
|
|
163
167
|
SLASH_OFFENSE_EXPIRATION_ROUNDS: 4,
|
|
164
168
|
SLASH_MAX_PAYLOAD_SIZE: 80,
|
|
165
169
|
SLASH_EXECUTE_ROUNDS_LOOK_BACK: 4,
|
|
170
|
+
SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS: 3,
|
|
166
171
|
P2P_ENABLED: true,
|
|
167
172
|
BOOTSTRAP_NODES: '',
|
|
168
173
|
SEQ_MIN_TX_PER_BLOCK: 1,
|
|
169
174
|
SEQ_BUILD_CHECKPOINT_IF_EMPTY: true,
|
|
170
175
|
SEQ_BLOCK_DURATION_MS: 6000,
|
|
171
|
-
|
|
176
|
+
MAX_BLOCKS_PER_CHECKPOINT: 10,
|
|
177
|
+
CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS: 12,
|
|
172
178
|
DATA_STORE_MAP_SIZE_KB: 134217728,
|
|
173
179
|
ARCHIVER_STORE_MAP_SIZE_KB: 1073741824,
|
|
174
180
|
NOTE_HASH_TREE_MAP_SIZE_KB: 1073741824,
|
|
@@ -176,13 +182,14 @@ export const mainnetConfig = {
|
|
|
176
182
|
PUBLIC_DATA_TREE_MAP_SIZE_KB: 1073741824,
|
|
177
183
|
PUBLIC_OTEL_INCLUDE_METRICS: 'aztec.validator,aztec.tx_collector,aztec.mempool,aztec.p2p.gossip.agg_,aztec.ivc_verifier.agg_',
|
|
178
184
|
SENTINEL_ENABLED: true,
|
|
185
|
+
OFFENSE_COLLECTION_ENABLED: true,
|
|
179
186
|
AZTEC_SLOT_DURATION: 72,
|
|
180
187
|
AZTEC_ACTIVATION_THRESHOLD: 2E+23,
|
|
181
188
|
AZTEC_EJECTION_THRESHOLD: 1E+23,
|
|
182
189
|
AZTEC_LOCAL_EJECTION_THRESHOLD: 1.9E+23,
|
|
183
190
|
AZTEC_SLASH_AMOUNT_SMALL: 2E+21,
|
|
184
|
-
AZTEC_SLASH_AMOUNT_MEDIUM:
|
|
185
|
-
AZTEC_SLASH_AMOUNT_LARGE:
|
|
191
|
+
AZTEC_SLASH_AMOUNT_MEDIUM: 5E+21,
|
|
192
|
+
AZTEC_SLASH_AMOUNT_LARGE: 5E+21,
|
|
186
193
|
AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 34,
|
|
187
194
|
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 28,
|
|
188
195
|
AZTEC_SLASHING_VETOER: '0xBbB4aF368d02827945748b28CD4b2D42e4A37480',
|
|
@@ -190,7 +197,7 @@ export const mainnetConfig = {
|
|
|
190
197
|
AZTEC_GOVERNANCE_PROPOSER_QUORUM: 600,
|
|
191
198
|
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 1000,
|
|
192
199
|
AZTEC_MANA_TARGET: 75000000,
|
|
193
|
-
AZTEC_PROVING_COST_PER_MANA:
|
|
200
|
+
AZTEC_PROVING_COST_PER_MANA: 12500000,
|
|
194
201
|
AZTEC_EXIT_DELAY_SECONDS: 345600,
|
|
195
202
|
AZTEC_SLASHING_DISABLE_DURATION: 259200,
|
|
196
203
|
AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE: 500,
|
|
@@ -209,18 +216,19 @@ export const mainnetConfig = {
|
|
|
209
216
|
P2P_TX_POOL_DELETE_TXS_AFTER_REORG: true,
|
|
210
217
|
PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '',
|
|
211
218
|
PUBLIC_OTEL_COLLECT_FROM: '',
|
|
212
|
-
|
|
213
|
-
SLASH_PRUNE_PENALTY: 0,
|
|
219
|
+
ENABLE_AUTO_SHUTDOWN: false,
|
|
214
220
|
SLASH_DATA_WITHHOLDING_PENALTY: 0,
|
|
215
221
|
SLASH_INACTIVITY_TARGET_PERCENTAGE: 0.8,
|
|
216
222
|
SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 2,
|
|
217
223
|
SLASH_INACTIVITY_PENALTY: 2E+21,
|
|
218
224
|
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 2E+21,
|
|
219
|
-
SLASH_DUPLICATE_PROPOSAL_PENALTY:
|
|
220
|
-
SLASH_DUPLICATE_ATTESTATION_PENALTY:
|
|
221
|
-
|
|
225
|
+
SLASH_DUPLICATE_PROPOSAL_PENALTY: 5E+21,
|
|
226
|
+
SLASH_DUPLICATE_ATTESTATION_PENALTY: 5E+21,
|
|
227
|
+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 0,
|
|
228
|
+
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 0,
|
|
222
229
|
SLASH_UNKNOWN_PENALTY: 2E+21,
|
|
223
230
|
SLASH_INVALID_BLOCK_PENALTY: 2E+21,
|
|
231
|
+
SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 2E+21,
|
|
224
232
|
SLASH_GRACE_PERIOD_L2_SLOTS: 1200,
|
|
225
233
|
} as const;
|
|
226
234
|
|
package/src/utils/aztec.ts
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
type FunctionAbi,
|
|
4
4
|
FunctionType,
|
|
5
5
|
getAllFunctionAbis,
|
|
6
|
-
|
|
6
|
+
loadContractArtifactWithValidation,
|
|
7
7
|
} from '@aztec/aztec.js/abi';
|
|
8
8
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
9
9
|
import type { L1ContractsConfig } from '@aztec/ethereum/config';
|
|
@@ -49,7 +49,7 @@ export async function deployNewRollupContracts(
|
|
|
49
49
|
feeJuicePortalInitialBalance: bigint,
|
|
50
50
|
config: L1ContractsConfig,
|
|
51
51
|
realVerifier: boolean,
|
|
52
|
-
): Promise<{ rollup: RollupContract
|
|
52
|
+
): Promise<{ rollup: RollupContract }> {
|
|
53
53
|
const { deployRollupForUpgrade } = await import('@aztec/ethereum/deploy-aztec-l1-contracts');
|
|
54
54
|
const { mnemonicToAccount, privateKeyToAccount } = await import('viem/accounts');
|
|
55
55
|
const { getVKTreeRoot } = await import('@aztec/noir-protocol-circuits-types/vk-tree');
|
|
@@ -80,23 +80,17 @@ export async function deployNewRollupContracts(
|
|
|
80
80
|
logger.info('Initializing new rollup with old attesters', { initialValidators });
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
const { rollup
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
realVerifier,
|
|
95
|
-
...config,
|
|
96
|
-
},
|
|
97
|
-
);
|
|
98
|
-
|
|
99
|
-
return { rollup, slashFactoryAddress: EthAddress.fromString(slashFactoryAddress!) };
|
|
83
|
+
const { rollup } = await deployRollupForUpgrade(privateKey as Hex, rpcUrls[0], chainId, registryAddress, {
|
|
84
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
85
|
+
protocolContractsHash,
|
|
86
|
+
genesisArchiveRoot,
|
|
87
|
+
initialValidators,
|
|
88
|
+
feeJuicePortalInitialBalance,
|
|
89
|
+
realVerifier,
|
|
90
|
+
...config,
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
return { rollup };
|
|
100
94
|
}
|
|
101
95
|
|
|
102
96
|
/**
|
|
@@ -138,7 +132,7 @@ export async function getContractArtifact(fileDir: string, log: LogFn) {
|
|
|
138
132
|
}
|
|
139
133
|
|
|
140
134
|
try {
|
|
141
|
-
return
|
|
135
|
+
return loadContractArtifactWithValidation(JSON.parse(contents));
|
|
142
136
|
} catch (err) {
|
|
143
137
|
log('Invalid file used. Please try again.');
|
|
144
138
|
throw err;
|
package/src/utils/commands.ts
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
|
|
2
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
import type { LogFn } from '@aztec/foundation/log';
|
|
4
5
|
import type { PXE } from '@aztec/pxe/server';
|
|
5
6
|
import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
|
|
6
7
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
8
|
import { PublicKeys } from '@aztec/stdlib/keys';
|
|
8
|
-
import {
|
|
9
|
+
import { LogCursor, Tag } from '@aztec/stdlib/logs';
|
|
9
10
|
import { TxHash } from '@aztec/stdlib/tx/tx-hash';
|
|
10
11
|
|
|
11
12
|
import { type Command, CommanderError, InvalidArgumentError, Option } from 'commander';
|
|
12
13
|
import { lookup } from 'dns/promises';
|
|
13
14
|
import { rename, writeFile } from 'fs/promises';
|
|
14
15
|
|
|
16
|
+
export { LogCursor };
|
|
17
|
+
|
|
15
18
|
/**
|
|
16
19
|
* If we can successfully resolve 'host.docker.internal', then we are running in a container, and we should treat
|
|
17
20
|
* localhost as being host.docker.internal.
|
|
@@ -48,14 +51,14 @@ export const l1ChainIdOption = new Option('-c, --l1-chain-id <number>', 'Chain I
|
|
|
48
51
|
return parsedValue;
|
|
49
52
|
});
|
|
50
53
|
|
|
51
|
-
export const
|
|
54
|
+
export const createSigningKeyOption = (
|
|
52
55
|
description: string,
|
|
53
56
|
mandatory: boolean,
|
|
54
|
-
argsParser?: (value: string, previous:
|
|
57
|
+
argsParser?: (value: string, previous: GrumpkinScalar) => GrumpkinScalar,
|
|
55
58
|
) =>
|
|
56
|
-
new Option('-sk, --
|
|
57
|
-
.env('
|
|
58
|
-
.argParser(argsParser ??
|
|
59
|
+
new Option('-sk, --signing-key <string>', description)
|
|
60
|
+
.env('SIGNING_KEY')
|
|
61
|
+
.argParser(argsParser ?? parseSigningKey)
|
|
59
62
|
.makeOptionMandatory(mandatory);
|
|
60
63
|
|
|
61
64
|
export const logJson = (log: LogFn) => (obj: object) => log(JSON.stringify(obj, null, 2));
|
|
@@ -99,7 +102,7 @@ export async function getTxSender(pxe: PXE, _from?: string) {
|
|
|
99
102
|
let from: AztecAddress;
|
|
100
103
|
if (_from) {
|
|
101
104
|
try {
|
|
102
|
-
from = AztecAddress.
|
|
105
|
+
from = AztecAddress.fromStringUnsafe(_from);
|
|
103
106
|
} catch {
|
|
104
107
|
throw new InvalidArgumentError(`Invalid option 'from' passed: ${_from}`);
|
|
105
108
|
}
|
|
@@ -193,7 +196,7 @@ export function parseFieldFromHexString(str: string): Fr {
|
|
|
193
196
|
*/
|
|
194
197
|
export function parseAztecAddress(address: string): AztecAddress {
|
|
195
198
|
try {
|
|
196
|
-
return AztecAddress.
|
|
199
|
+
return AztecAddress.fromStringUnsafe(address);
|
|
197
200
|
} catch {
|
|
198
201
|
throw new InvalidArgumentError(`Invalid Aztec address: ${address}`);
|
|
199
202
|
}
|
|
@@ -227,16 +230,27 @@ export function parseOptionalAztecAddress(address: string): AztecAddress | undef
|
|
|
227
230
|
}
|
|
228
231
|
|
|
229
232
|
/**
|
|
230
|
-
* Parses an optional
|
|
231
|
-
*
|
|
232
|
-
* @
|
|
233
|
-
* @
|
|
233
|
+
* Parses an optional `<blockNumber>-<txIndexWithinBlock>-<logIndexWithinTx>` triple into a {@link LogCursor},
|
|
234
|
+
* used as the `--after-log` argument of `get-logs` to resume pagination strictly after a previously-seen log.
|
|
235
|
+
* Thin wrapper over {@link LogCursor.parseOptional} that surfaces parse errors as commander's
|
|
236
|
+
* {@link InvalidArgumentError}.
|
|
234
237
|
*/
|
|
235
|
-
export function
|
|
236
|
-
|
|
237
|
-
return
|
|
238
|
+
export function parseOptionalLogCursor(value: string): LogCursor | undefined {
|
|
239
|
+
try {
|
|
240
|
+
return LogCursor.parseOptional(value);
|
|
241
|
+
} catch (err) {
|
|
242
|
+
throw new InvalidArgumentError(err instanceof Error ? err.message : String(err));
|
|
238
243
|
}
|
|
239
|
-
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Parses a log tag from a string. Tags are field-element values; we delegate to the {@link parseField} parser.
|
|
248
|
+
*
|
|
249
|
+
* @param tag - A hex string, integer, or boolean string representing the tag.
|
|
250
|
+
* @returns A {@link Tag} wrapping the parsed field.
|
|
251
|
+
*/
|
|
252
|
+
export function parseTag(tag: string): Tag {
|
|
253
|
+
return new Tag(parseField(tag));
|
|
240
254
|
}
|
|
241
255
|
|
|
242
256
|
/**
|
|
@@ -344,16 +358,16 @@ export function parsePartialAddress(address: string): Fr {
|
|
|
344
358
|
}
|
|
345
359
|
|
|
346
360
|
/**
|
|
347
|
-
* Parses
|
|
348
|
-
* @param
|
|
349
|
-
* @returns A
|
|
361
|
+
* Parses an account signing key from a string.
|
|
362
|
+
* @param signingKey - A string
|
|
363
|
+
* @returns A signing key
|
|
350
364
|
* @throws InvalidArgumentError if the input string is not valid.
|
|
351
365
|
*/
|
|
352
|
-
export function
|
|
366
|
+
export function parseSigningKey(signingKey: string): GrumpkinScalar {
|
|
353
367
|
try {
|
|
354
|
-
return
|
|
368
|
+
return GrumpkinScalar.fromHexString(signingKey);
|
|
355
369
|
} catch {
|
|
356
|
-
throw new InvalidArgumentError(`Invalid
|
|
370
|
+
throw new InvalidArgumentError(`Invalid signing key: ${signingKey}`);
|
|
357
371
|
}
|
|
358
372
|
}
|
|
359
373
|
|
package/src/utils/inspect.ts
CHANGED
|
@@ -9,14 +9,13 @@ export async function inspectBlock(
|
|
|
9
9
|
log: LogFn,
|
|
10
10
|
opts: { showTxs?: boolean } = {},
|
|
11
11
|
) {
|
|
12
|
-
const block = await aztecNode.getBlock(blockNumber);
|
|
12
|
+
const block = await aztecNode.getBlock(blockNumber, { includeTransactions: opts.showTxs });
|
|
13
13
|
if (!block) {
|
|
14
14
|
log(`No block found for block number ${blockNumber}`);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
log(`Block ${blockNumber} (${blockHash.toString()})`);
|
|
18
|
+
log(`Block ${blockNumber} (${block.hash.toString()})`);
|
|
20
19
|
log(` Total fees: ${block.header.totalFees.toBigInt()}`);
|
|
21
20
|
log(` Total mana used: ${block.header.totalManaUsed.toBigInt()}`);
|
|
22
21
|
log(
|
|
@@ -25,12 +24,12 @@ export async function inspectBlock(
|
|
|
25
24
|
log(` Coinbase: ${block.header.globalVariables.coinbase}`);
|
|
26
25
|
log(` Fee recipient: ${block.header.globalVariables.feeRecipient}`);
|
|
27
26
|
log(` Timestamp: ${new Date(Number(block.header.globalVariables.timestamp) * 500)}`);
|
|
28
|
-
if (opts.showTxs) {
|
|
27
|
+
if (opts.showTxs && block.body) {
|
|
29
28
|
log(``);
|
|
30
29
|
for (const txHash of block.body.txEffects.map(tx => tx.txHash)) {
|
|
31
30
|
await inspectTx(aztecNode, txHash, log, { includeBlockInfo: false });
|
|
32
31
|
}
|
|
33
|
-
} else {
|
|
32
|
+
} else if (block.body) {
|
|
34
33
|
log(` Transactions: ${block.body.txEffects.length}`);
|
|
35
34
|
}
|
|
36
35
|
}
|
|
@@ -41,7 +40,7 @@ export async function inspectTx(
|
|
|
41
40
|
log: LogFn,
|
|
42
41
|
opts: { includeBlockInfo?: boolean } = {},
|
|
43
42
|
) {
|
|
44
|
-
const
|
|
43
|
+
const receipt = await aztecNode.getTxReceipt(txHash, { includeTxEffect: true });
|
|
45
44
|
// Base tx data
|
|
46
45
|
log(`Tx ${txHash.toString()}`);
|
|
47
46
|
log(` Status: ${receipt.status}`);
|
|
@@ -52,11 +51,11 @@ export async function inspectTx(
|
|
|
52
51
|
log(` Error: ${receipt.error}`);
|
|
53
52
|
}
|
|
54
53
|
|
|
55
|
-
if (!
|
|
54
|
+
if (!receipt.isMined() || !receipt.txEffect) {
|
|
56
55
|
return;
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
const effects =
|
|
58
|
+
const effects = receipt.txEffect;
|
|
60
59
|
|
|
61
60
|
if (opts.includeBlockInfo) {
|
|
62
61
|
log(` Block: ${receipt.blockNumber} (${receipt.blockHash?.toString()})`);
|