Skip to content

Commit ada9659

Browse files
committed
feat(aggregator): make protocol_parameters and cardano_transaction_signing_config optionnal (mandatory for leader)
1 parent 7709907 commit ada9659

16 files changed

+48
-39
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

@@ -378,12 +378,20 @@ pub trait ConfigurationSource {
378378
}
379379
}
380380

381-
/// Infer the [AggregatorEpochSettings] from the configuration.
382-
fn get_epoch_settings_configuration(&self) -> AggregatorEpochSettings {
383-
AggregatorEpochSettings {
384-
protocol_parameters: self.protocol_parameters(),
385-
cardano_transactions_signing_config: self.cardano_transactions_signing_config(),
386-
}
381+
/// `leader aggregator only` Infer the [AggregatorEpochSettings] from the configuration.
382+
fn get_leader_aggregator_epoch_settings_configuration(
383+
&self,
384+
) -> StdResult<AggregatorEpochSettings> {
385+
Ok(AggregatorEpochSettings {
386+
protocol_parameters: self.protocol_parameters().with_context(
387+
|| "Configuration `protocol_parameter` is mandatory for a Leader Aggregator",
388+
)?,
389+
cardano_transactions_signing_config: self
390+
.cardano_transactions_signing_config()
391+
.with_context(
392+
|| "Configuration `cardano_transactions_signing_config` is mandatory for a Leader Aggregator",
393+
)?,
394+
})
387395
}
388396

389397
/// Check if the aggregator is running in follower mode.
@@ -458,7 +466,7 @@ pub struct ServeCommandConfiguration {
458466

459467
/// Protocol parameters
460468
#[example = "`{ k: 5, m: 100, phi_f: 0.65 }`"]
461-
pub protocol_parameters: ProtocolParameters,
469+
pub protocol_parameters: Option<ProtocolParameters>,
462470

463471
/// Type of snapshot uploader to use
464472
#[example = "`gcp` or `local`"]
@@ -561,7 +569,7 @@ pub struct ServeCommandConfiguration {
561569

562570
/// Cardano transactions signing configuration
563571
#[example = "`{ security_parameter: 3000, step: 120 }`"]
564-
pub cardano_transactions_signing_config: CardanoTransactionsSigningConfig,
572+
pub cardano_transactions_signing_config: Option<CardanoTransactionsSigningConfig>,
565573

566574
/// Blocks offset, from the tip of the chain, to exclude during the cardano transactions preload
567575
/// `[default: 2160]`.
@@ -681,11 +689,11 @@ impl ServeCommandConfiguration {
681689
network_magic: Some(42),
682690
dmq_network_magic: Some(3141592),
683691
chain_observer_type: ChainObserverType::Fake,
684-
protocol_parameters: ProtocolParameters {
692+
protocol_parameters: Some(ProtocolParameters {
685693
k: 5,
686694
m: 100,
687695
phi_f: 0.95,
688-
},
696+
}),
689697
snapshot_uploader_type: SnapshotUploaderType::Local,
690698
snapshot_bucket_name: None,
691699
snapshot_use_cdn_domain: false,
@@ -719,10 +727,10 @@ impl ServeCommandConfiguration {
719727
allow_unparsable_block: false,
720728
cardano_transactions_prover_cache_pool_size: 3,
721729
cardano_transactions_database_connection_pool_size: 5,
722-
cardano_transactions_signing_config: CardanoTransactionsSigningConfig {
730+
cardano_transactions_signing_config: Some(CardanoTransactionsSigningConfig {
723731
security_parameter: BlockNumber(120),
724732
step: BlockNumber(15),
725-
},
733+
}),
726734
preload_security_parameter: BlockNumber(30),
727735
cardano_transactions_prover_max_hashes_allowed_by_request: 100,
728736
cardano_transactions_block_streamer_max_roll_forwards_per_poll: 1000,
@@ -783,7 +791,7 @@ impl ConfigurationSource for ServeCommandConfiguration {
783791
self.chain_observer_type.clone()
784792
}
785793

786-
fn protocol_parameters(&self) -> ProtocolParameters {
794+
fn protocol_parameters(&self) -> Option<ProtocolParameters> {
787795
self.protocol_parameters.clone()
788796
}
789797

@@ -887,7 +895,7 @@ impl ConfigurationSource for ServeCommandConfiguration {
887895
self.cardano_transactions_database_connection_pool_size
888896
}
889897

890-
fn cardano_transactions_signing_config(&self) -> CardanoTransactionsSigningConfig {
898+
fn cardano_transactions_signing_config(&self) -> Option<CardanoTransactionsSigningConfig> {
891899
self.cardano_transactions_signing_config.clone()
892900
}
893901

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,7 @@ impl DependenciesBuilder {
134134
let cardano_transactions_preloader = CardanoTransactionsPreloader::new(
135135
self.get_signed_entity_type_lock().await?,
136136
self.get_transactions_importer().await?,
137-
self.configuration
138-
.cardano_transactions_signing_config()
139-
.security_parameter,
137+
self.configuration.preload_security_parameter(),
140138
self.get_chain_observer().await?,
141139
self.root_logger(),
142140
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)