Skip to content

Commit 64d77cf

Browse files
committed
WIP: make protocol_parameters and cardano_transaction_signing_config optionnal (mandatory for leader)
1 parent fd0a2cb commit 64d77cf

16 files changed

+50
-37
lines changed

mithril-aggregator/src/configuration.rs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ pub trait ConfigurationSource {
109109
}
110110

111111
/// Protocol parameters
112-
fn protocol_parameters(&self) -> ProtocolParameters {
112+
fn protocol_parameters(&self) -> Option<ProtocolParameters> {
113113
panic!("protocol_parameters is not implemented.");
114114
}
115115

@@ -251,7 +251,7 @@ pub trait ConfigurationSource {
251251
}
252252

253253
/// Cardano transactions signing configuration
254-
fn cardano_transactions_signing_config(&self) -> CardanoTransactionsSigningConfig {
254+
fn cardano_transactions_signing_config(&self) -> Option<CardanoTransactionsSigningConfig> {
255255
panic!("cardano_transactions_signing_config is not implemented.");
256256
}
257257

@@ -373,12 +373,20 @@ pub trait ConfigurationSource {
373373
}
374374
}
375375

376-
/// Infer the [AggregatorEpochSettings] from the configuration.
377-
fn get_epoch_settings_configuration(&self) -> AggregatorEpochSettings {
378-
AggregatorEpochSettings {
379-
protocol_parameters: self.protocol_parameters(),
380-
cardano_transactions_signing_config: self.cardano_transactions_signing_config(),
381-
}
376+
/// `leader aggregator only` Infer the [AggregatorEpochSettings] from the configuration.
377+
fn get_leader_aggregator_epoch_settings_configuration(
378+
&self,
379+
) -> StdResult<AggregatorEpochSettings> {
380+
Ok(AggregatorEpochSettings {
381+
protocol_parameters: self.protocol_parameters().with_context(
382+
|| "Configuration `protocol_parameter` is mandatory for a Leader Aggregator",
383+
)?,
384+
cardano_transactions_signing_config: self
385+
.cardano_transactions_signing_config()
386+
.with_context(
387+
|| "Configuration `cardano_transactions_signing_config` is mandatory for a Leader Aggregator",
388+
)?,
389+
})
382390
}
383391

384392
/// Check if the aggregator is running in follower mode.
@@ -453,7 +461,7 @@ pub struct ServeCommandConfiguration {
453461

454462
/// Protocol parameters
455463
#[example = "`{ k: 5, m: 100, phi_f: 0.65 }`"]
456-
pub protocol_parameters: ProtocolParameters,
464+
pub protocol_parameters: Option<ProtocolParameters>,
457465

458466
/// Type of snapshot uploader to use
459467
#[example = "`gcp` or `local`"]
@@ -556,7 +564,7 @@ pub struct ServeCommandConfiguration {
556564

557565
/// Cardano transactions signing configuration
558566
#[example = "`{ security_parameter: 3000, step: 120 }`"]
559-
pub cardano_transactions_signing_config: CardanoTransactionsSigningConfig,
567+
pub cardano_transactions_signing_config: Option<CardanoTransactionsSigningConfig>,
560568

561569
/// Maximum number of transactions hashes allowed by request to the prover of the Cardano transactions
562570
pub cardano_transactions_prover_max_hashes_allowed_by_request: usize,
@@ -672,11 +680,11 @@ impl ServeCommandConfiguration {
672680
network_magic: Some(42),
673681
dmq_network_magic: Some(3141592),
674682
chain_observer_type: ChainObserverType::Fake,
675-
protocol_parameters: ProtocolParameters {
683+
protocol_parameters: Some(ProtocolParameters {
676684
k: 5,
677685
m: 100,
678686
phi_f: 0.95,
679-
},
687+
}),
680688
snapshot_uploader_type: SnapshotUploaderType::Local,
681689
snapshot_bucket_name: None,
682690
snapshot_use_cdn_domain: false,
@@ -710,10 +718,10 @@ impl ServeCommandConfiguration {
710718
allow_unparsable_block: false,
711719
cardano_transactions_prover_cache_pool_size: 3,
712720
cardano_transactions_database_connection_pool_size: 5,
713-
cardano_transactions_signing_config: CardanoTransactionsSigningConfig {
721+
cardano_transactions_signing_config: Some(CardanoTransactionsSigningConfig {
714722
security_parameter: BlockNumber(120),
715723
step: BlockNumber(15),
716-
},
724+
}),
717725
cardano_transactions_prover_max_hashes_allowed_by_request: 100,
718726
cardano_transactions_block_streamer_max_roll_forwards_per_poll: 1000,
719727
enable_metrics_server: true,
@@ -773,7 +781,7 @@ impl ConfigurationSource for ServeCommandConfiguration {
773781
self.chain_observer_type.clone()
774782
}
775783

776-
fn protocol_parameters(&self) -> ProtocolParameters {
784+
fn protocol_parameters(&self) -> Option<ProtocolParameters> {
777785
self.protocol_parameters.clone()
778786
}
779787

@@ -877,7 +885,7 @@ impl ConfigurationSource for ServeCommandConfiguration {
877885
self.cardano_transactions_database_connection_pool_size
878886
}
879887

880-
fn cardano_transactions_signing_config(&self) -> CardanoTransactionsSigningConfig {
888+
fn cardano_transactions_signing_config(&self) -> Option<CardanoTransactionsSigningConfig> {
881889
self.cardano_transactions_signing_config.clone()
882890
}
883891

mithril-aggregator/src/dependency_injection/builder/enablers/cardano_node.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,9 @@ impl DependenciesBuilder {
136136
self.get_transactions_importer().await?,
137137
self.configuration
138138
.cardano_transactions_signing_config()
139-
.security_parameter,
139+
// Todo: should we replace this with a new `preload_security_parameter` like the signer ?
140+
.map(|c| c.security_parameter)
141+
.unwrap_or(mithril_common::entities::BlockNumber(3000)),
140142
self.get_chain_observer().await?,
141143
self.root_logger(),
142144
Arc::new(CardanoTransactionsPreloaderActivation::new(activation)),

mithril-aggregator/src/dependency_injection/builder/enablers/epoch.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ impl DependenciesBuilder {
5353
))
5454
} else {
5555
Arc::new(LocalMithrilNetworkConfigurationProvider::new(
56-
self.configuration.get_epoch_settings_configuration(),
56+
self.configuration
57+
.get_leader_aggregator_epoch_settings_configuration()?,
5758
self.configuration
5859
.compute_allowed_signed_entity_types_discriminants()?,
5960
self.get_epoch_settings_store().await?,

mithril-aggregator/src/dependency_injection/builder/support/stores.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ impl DependenciesBuilder {
115115
error: Some(e.into()),
116116
})?;
117117

118-
let epoch_settings_configuration = self.configuration.get_epoch_settings_configuration();
118+
let epoch_settings_configuration = self
119+
.configuration
120+
.get_leader_aggregator_epoch_settings_configuration()?;
119121
debug!(
120122
logger,
121123
"Handle discrepancies at startup of epoch settings store, will record epoch settings from the configuration for epoch {retrieval_epoch}";

mithril-aggregator/src/services/certifier/certifier_service.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ mod tests {
481481
dependency_manager
482482
.init_state_from_fixture(
483483
fixture,
484-
&cardano_transactions_signing_config,
484+
&cardano_transactions_signing_config.unwrap(),
485485
epochs_with_signers,
486486
)
487487
.await;

mithril-aggregator/tests/cardano_stake_distribution_verify_stakes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ async fn cardano_stake_distribution_verify_stakes() {
2222
phi_f: 0.95,
2323
};
2424
let configuration = ServeCommandConfiguration {
25-
protocol_parameters: protocol_parameters.clone(),
25+
protocol_parameters: Some(protocol_parameters.clone()),
2626
signed_entity_types: Some(
2727
SignedEntityTypeDiscriminants::CardanoStakeDistribution.to_string(),
2828
),

mithril-aggregator/tests/certificate_chain.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ async fn certificate_chain() {
2222
phi_f: 0.95,
2323
};
2424
let configuration = ServeCommandConfiguration {
25-
protocol_parameters: protocol_parameters.clone(),
25+
protocol_parameters: Some(protocol_parameters.clone()),
2626
data_stores_directory: get_test_dir("certificate_chain"),
2727
signed_entity_types: Some(SignedEntityTypeDiscriminants::CardanoDatabase.to_string()),
2828
..ServeCommandConfiguration::new_sample(temp_dir!())

mithril-aggregator/tests/create_certificate.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ async fn create_certificate() {
2222
phi_f: 0.95,
2323
};
2424
let configuration = ServeCommandConfiguration {
25-
protocol_parameters: protocol_parameters.clone(),
25+
protocol_parameters: Some(protocol_parameters.clone()),
2626
signed_entity_types: Some(
2727
[
2828
SignedEntityTypeDiscriminants::CardanoTransactions.to_string(),
@@ -31,10 +31,10 @@ async fn create_certificate() {
3131
.join(","),
3232
),
3333
data_stores_directory: get_test_dir("create_certificate"),
34-
cardano_transactions_signing_config: CardanoTransactionsSigningConfig {
34+
cardano_transactions_signing_config: Some(CardanoTransactionsSigningConfig {
3535
security_parameter: BlockNumber(0),
3636
step: BlockNumber(30),
37-
},
37+
}),
3838
..ServeCommandConfiguration::new_sample(temp_dir!())
3939
};
4040
let mut tester = RuntimeTester::build(

mithril-aggregator/tests/create_certificate_follower.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ async fn create_certificate_follower() {
9898
},
9999
};
100100
let leader_configuration = ServeCommandConfiguration {
101-
protocol_parameters: protocol_parameters.clone(),
101+
protocol_parameters: Some(protocol_parameters.clone()),
102102
data_stores_directory: get_test_dir("create_certificate_leader"),
103103
signed_entity_types: Some(
104104
SignedEntityTypeDiscriminants::CardanoStakeDistribution.to_string(),

mithril-aggregator/tests/create_certificate_with_buffered_signatures.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ async fn create_certificate_with_buffered_signatures() {
2222
phi_f: 0.95,
2323
};
2424
let configuration = ServeCommandConfiguration {
25-
protocol_parameters: protocol_parameters.clone(),
25+
protocol_parameters: Some(protocol_parameters.clone()),
2626
signed_entity_types: Some(SignedEntityTypeDiscriminants::CardanoTransactions.to_string()),
2727
data_stores_directory: get_test_dir("create_certificate_with_buffered_signatures"),
28-
cardano_transactions_signing_config: CardanoTransactionsSigningConfig {
28+
cardano_transactions_signing_config: Some(CardanoTransactionsSigningConfig {
2929
security_parameter: BlockNumber(0),
3030
step: BlockNumber(30),
31-
},
31+
}),
3232
..ServeCommandConfiguration::new_sample(temp_dir!())
3333
};
3434
let mut tester = RuntimeTester::build(

0 commit comments

Comments
 (0)