Skip to content

Commit 407ea74

Browse files
committed
WIP: implement local configuration for mithril network configuration and adapt dependencies
1 parent f7ad3de commit 407ea74

File tree

3 files changed

+69
-10
lines changed

3 files changed

+69
-10
lines changed
Lines changed: 56 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
1-
use std::collections::BTreeSet;
1+
use std::{collections::BTreeSet, sync::Arc};
22

3-
use crate::entities::AggregatorEpochSettings;
3+
use crate::{
4+
ConfigurationSource,
5+
dependency_injection::{DependenciesBuilder, Result},
6+
entities::AggregatorEpochSettings,
7+
get_dependency,
8+
};
49
use async_trait::async_trait;
5-
use mithril_common::{StdResult, entities::SignedEntityTypeDiscriminants, test::double::Dummy};
10+
use mithril_common::{
11+
StdResult,
12+
entities::{Epoch, SignedEntityTypeDiscriminants},
13+
};
614
use mithril_protocol_config::{
7-
interface::MithrilNetworkConfigurationProvider, model::MithrilNetworkConfiguration,
15+
interface::MithrilNetworkConfigurationProvider,
16+
model::{MithrilNetworkConfiguration, SignedEntityTypeConfiguration},
817
};
918

1019
pub struct LocalMithrilNetworkConfigurationProvider {
@@ -13,10 +22,12 @@ pub struct LocalMithrilNetworkConfigurationProvider {
1322
}
1423

1524
impl LocalMithrilNetworkConfigurationProvider {
16-
pub fn new(
17-
epoch_settings: AggregatorEpochSettings,
18-
allowed_discriminants: BTreeSet<SignedEntityTypeDiscriminants>,
19-
) -> Self {
25+
pub fn new(configuration: Arc<dyn ConfigurationSource>) -> Self {
26+
let epoch_settings = configuration.get_epoch_settings_configuration();
27+
let allowed_discriminants = configuration
28+
.compute_allowed_signed_entity_types_discriminants()
29+
.expect("Failed to compute allowed signed entity types discriminants");
30+
2031
Self {
2132
epoch_settings,
2233
allowed_discriminants,
@@ -26,7 +37,42 @@ impl LocalMithrilNetworkConfigurationProvider {
2637

2738
#[async_trait]
2839
impl MithrilNetworkConfigurationProvider for LocalMithrilNetworkConfigurationProvider {
29-
async fn get(&self) -> StdResult<MithrilNetworkConfiguration> {
30-
Ok(MithrilNetworkConfiguration::dummy())
40+
async fn get_network_configuration(&self) -> StdResult<MithrilNetworkConfiguration> {
41+
let epoch = Epoch(42); // TODO implement proper epoch retrieval
42+
let signer_registration_protocol_parameters =
43+
self.epoch_settings.protocol_parameters.clone();
44+
let available_signed_entity_types = self.allowed_discriminants.clone();
45+
let signed_entity_types_config = SignedEntityTypeConfiguration {
46+
cardano_transactions: Some(
47+
self.epoch_settings.cardano_transactions_signing_config.clone(),
48+
),
49+
};
50+
51+
let config = MithrilNetworkConfiguration {
52+
epoch, //TODO implement
53+
signer_registration_protocol_parameters,
54+
available_signed_entity_types,
55+
signed_entity_types_config,
56+
};
57+
Ok(config)
58+
}
59+
}
60+
61+
impl DependenciesBuilder {
62+
async fn build_mithril_network_configuration_provider(
63+
&mut self,
64+
) -> Result<Arc<dyn MithrilNetworkConfigurationProvider>> {
65+
let network_configuration_provider = Arc::new(
66+
LocalMithrilNetworkConfigurationProvider::new(self.configuration.clone()),
67+
);
68+
69+
Ok(network_configuration_provider)
70+
}
71+
72+
/// [MithrilNetworkConfigurationProvider][mithril_protocol_config::interface::MithrilNetworkConfigurationProvider] service
73+
pub async fn get_mithril_network_configuration_provider(
74+
&mut self,
75+
) -> Result<Arc<dyn MithrilNetworkConfigurationProvider>> {
76+
get_dependency!(self.mithril_network_configuration_provider)
3177
}
3278
}

mithril-aggregator/src/dependency_injection/builder/mod.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ use mithril_persistence::{
3535
database::repository::CardanoTransactionRepository,
3636
sqlite::{SqliteConnection, SqliteConnectionPool},
3737
};
38+
use mithril_protocol_config::interface::MithrilNetworkConfigurationProvider;
3839
use mithril_signed_entity_lock::SignedEntityTypeLock;
3940
use mithril_ticker::TickerService;
4041

@@ -251,6 +252,10 @@ pub struct DependenciesBuilder {
251252
/// Epoch service.
252253
pub epoch_service: Option<EpochServiceWrapper>,
253254

255+
/// Mithril network configuration provider
256+
pub mithril_network_configuration_provider:
257+
Option<Arc<dyn MithrilNetworkConfigurationProvider>>,
258+
254259
/// Signed Entity storer
255260
pub signed_entity_storer: Option<Arc<dyn SignedEntityStorer>>,
256261

@@ -336,6 +341,7 @@ impl DependenciesBuilder {
336341
signed_entity_service: None,
337342
certifier_service: None,
338343
epoch_service: None,
344+
mithril_network_configuration_provider: None,
339345
signed_entity_storer: None,
340346
message_service: None,
341347
prover_service: None,
@@ -392,6 +398,9 @@ impl DependenciesBuilder {
392398
signed_entity_service: self.get_signed_entity_service().await?,
393399
certifier_service: self.get_certifier_service().await?,
394400
epoch_service: self.get_epoch_service().await?,
401+
mithril_network_configuration_provider: self
402+
.get_mithril_network_configuration_provider()
403+
.await?,
395404
ticker_service: self.get_ticker_service().await?,
396405
signed_entity_storer: self.get_signed_entity_storer().await?,
397406
signer_getter: self.get_signer_store().await?,

mithril-aggregator/src/dependency_injection/containers/serve.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use mithril_protocol_config::interface::MithrilNetworkConfigurationProvider;
12
use slog::Logger;
23
use std::sync::Arc;
34
use tokio::sync::RwLock;
@@ -100,6 +101,9 @@ pub struct ServeCommandDependenciesContainer {
100101
/// Epoch service
101102
pub(crate) epoch_service: EpochServiceWrapper,
102103

104+
/// Mithril network configuration provider
105+
pub(crate) mithril_network_configuration_provider: Arc<dyn MithrilNetworkConfigurationProvider>,
106+
103107
/// Ticker Service
104108
pub(crate) ticker_service: Arc<dyn TickerService>,
105109

0 commit comments

Comments
 (0)