Skip to content

Commit c0c33d7

Browse files
apollo_consensus_orchestrator: add validators_ids to ContextConfig
1 parent e30be0f commit c0c33d7

File tree

6 files changed

+51
-5
lines changed

6 files changed

+51
-5
lines changed

config/papyrus/default_config.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,16 @@
214214
"privacy": "Public",
215215
"value": 10000
216216
},
217+
"context.validator_ids": {
218+
"description": "Optional explicit set of validator IDs.",
219+
"privacy": "Public",
220+
"value": []
221+
},
222+
"context.validator_ids.#is_none": {
223+
"description": "Flag for an optional field.",
224+
"privacy": "TemporaryValue",
225+
"value": true
226+
},
217227
"monitoring_gateway.collect_metrics": {
218228
"description": "If true, collect and return metrics in the monitoring gateway.",
219229
"pointer_target": "collect_metrics",

crates/apollo_consensus_orchestrator/src/sequencer_consensus_context.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,16 @@ impl SequencerConsensusContext {
188188
} else {
189189
L1DataAvailabilityMode::Calldata
190190
};
191+
let validators = if let Some(ids) = config.validator_ids.clone() {
192+
ids.into_iter().collect()
193+
} else {
194+
(0..num_validators).map(|i| ValidatorId::from(DEFAULT_VALIDATOR_ID + i)).collect()
195+
};
191196
Self {
192197
config,
193198
deps,
194199
// TODO(Matan): Set the actual validator IDs (contract addresses).
195-
validators: (0..num_validators)
196-
.map(|i| ValidatorId::from(DEFAULT_VALIDATOR_ID + i))
197-
.collect(),
200+
validators,
198201
valid_proposals: Arc::new(Mutex::new(BuiltProposals::new())),
199202
proposal_id: 0,
200203
current_height: None,

crates/apollo_consensus_orchestrator_config/src/config.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ pub struct ContextConfig {
9393
pub proposal_buffer_size: usize,
9494
/// The number of validators.
9595
pub num_validators: u64,
96+
/// Optional explicit set of validator IDs (contract addresses) to use.
97+
/// If provided, this overrides `num_validators`.
98+
pub validator_ids: Option<Vec<ContractAddress>>,
9699
/// The chain id of the Starknet chain.
97100
pub chain_id: ChainId,
98101
/// Maximum allowed deviation (seconds) of a proposed block's timestamp from the current time.
@@ -132,7 +135,7 @@ pub struct ContextConfig {
132135

133136
impl SerializeConfig for ContextConfig {
134137
fn dump(&self) -> BTreeMap<ParamPath, SerializedParam> {
135-
BTreeMap::from_iter([
138+
let mut config = BTreeMap::from_iter([
136139
ser_param(
137140
"proposal_buffer_size",
138141
&self.proposal_buffer_size,
@@ -227,7 +230,15 @@ impl SerializeConfig for ContextConfig {
227230
"If true, sets STRK gas price to its minimum price from the versioned constants.",
228231
ParamPrivacyInput::Public,
229232
),
230-
])
233+
]);
234+
config.extend(ser_optional_param(
235+
&self.validator_ids,
236+
Default::default(),
237+
"validator_ids",
238+
"Optional explicit set of validator IDs.",
239+
ParamPrivacyInput::Public,
240+
));
241+
config
231242
}
232243
}
233244

@@ -236,6 +247,7 @@ impl Default for ContextConfig {
236247
Self {
237248
proposal_buffer_size: 100,
238249
num_validators: 1,
250+
validator_ids: None,
239251
chain_id: ChainId::Mainnet,
240252
block_timestamp_window_seconds: 1,
241253
l1_da_mode: true,

crates/apollo_deployments/resources/app_configs/consensus_manager_config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"consensus_manager_config.context_config.max_l1_gas_price_wei": 1000000000000,
2727
"consensus_manager_config.context_config.min_l1_data_gas_price_wei": 1,
2828
"consensus_manager_config.context_config.max_l1_data_gas_price_wei": 1000000000000,
29+
"consensus_manager_config.context_config.validator_ids.#is_none": true,
2930
"consensus_manager_config.immediate_active_height": 1,
3031
"consensus_manager_config.assume_no_malicious_validators": true,
3132
"consensus_manager_config.network_config.broadcasted_message_metadata_buffer_size": 100000,

crates/apollo_node/resources/config_schema.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1629,6 +1629,16 @@
16291629
"privacy": "Public",
16301630
"value": 10000
16311631
},
1632+
"consensus_manager_config.context_config.validator_ids": {
1633+
"description": "Optional explicit set of validator IDs.",
1634+
"privacy": "Public",
1635+
"value": []
1636+
},
1637+
"consensus_manager_config.context_config.validator_ids.#is_none": {
1638+
"description": "Flag for an optional field.",
1639+
"privacy": "TemporaryValue",
1640+
"value": true
1641+
},
16321642
"consensus_manager_config.immediate_active_height": {
16331643
"description": "The height at which the node may actively participate in consensus.",
16341644
"privacy": "Public",

crates/papyrus_node/src/config/snapshots/papyrus_node__config__config_test__dump_default_config.snap

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,16 @@ expression: dumped_default_config
264264
},
265265
"privacy": "Public"
266266
},
267+
"context.validator_ids": {
268+
"description": "Optional explicit set of validator IDs.",
269+
"value": [],
270+
"privacy": "Public"
271+
},
272+
"context.validator_ids.#is_none": {
273+
"description": "Flag for an optional field.",
274+
"value": true,
275+
"privacy": "TemporaryValue"
276+
},
267277
"monitoring_gateway.collect_metrics": {
268278
"description": "If true, collect and return metrics in the monitoring gateway.",
269279
"value": false,

0 commit comments

Comments
 (0)