Skip to content

Commit 0beba25

Browse files
committed
feature(aggretor, protocol-config): cleanning builder adapter mecanism, and rework protocol-configuration command parameters
1 parent e2f8473 commit 0beba25

8 files changed

Lines changed: 53 additions & 218 deletions

File tree

internal/mithril-protocol-config/src/adapters/builder.rs

Lines changed: 0 additions & 160 deletions
This file was deleted.

internal/mithril-protocol-config/src/adapters/mod.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
//! Module dedicated to ProtocolConfigurationReaderAdapter implementations.
22
3-
mod builder;
43
mod cardano_chain;
54

6-
pub use builder::{
7-
AdapterBuilder as ProtocolConfigurationReaderAdapterBuilder,
8-
AdapterType as ProtocolConfigurationReaderAdapterType,
9-
};
105
pub use cardano_chain::{
116
CardanoChainAdapter as ProtocolConfigurationReaderCardanoChainAdapter,
127
ProtocolConfigurationMarkersPayload as ProtocolConfigurationMarkersPayloadCardanoChain,

mithril-aggregator/src/commands/protocol_configuration_command.rs

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use std::{
1313
use thiserror::Error;
1414

1515
use mithril_cardano_node_chain::chain_observer::ChainObserverType;
16+
use mithril_cli_helper::serde_deserialization;
1617
use mithril_common::StdResult;
1718
use mithril_common::crypto_helper::{
1819
ProtocolConfigurationMarkersSigner, ProtocolConfigurationMarkersVerifierSecretKey,
@@ -24,7 +25,10 @@ use mithril_common::entities::{
2425
};
2526
use mithril_doc::{Documenter, StructDoc};
2627

27-
use crate::{ConfigurationSource, ExecutionEnvironment, extract_all};
28+
use crate::{
29+
ConfigurationSource, ExecutionEnvironment,
30+
configuration::ProtocolConfigurationReaderParameters, extract_all,
31+
};
2832
use crate::{dependency_injection::DependenciesBuilder, tools::ProtocolConfigurationTools};
2933

3034
#[derive(Debug, Error)]
@@ -38,27 +42,32 @@ pub enum UserConfImportVerificationError {
3842

3943
#[derive(Debug, Clone, Deserialize, Documenter)]
4044
pub struct ProtocolConfigurationParametersConfiguration {
41-
/// Cardano Network Magic number
42-
///
43-
/// useful for TestNet & DevNet
44-
#[example = "`1097911063` or `42`"]
45-
pub network_magic: Option<u64>,
45+
/// Path of the socket opened by the Cardano node
46+
#[example = "`/ipc/node.socket`"]
47+
pub cardano_node_socket_path: PathBuf,
4648

4749
/// Cardano network
4850
#[example = "`mainnet` or `preprod` or `devnet`"]
4951
network: String,
5052

5153
/// Cardano chain observer type
5254
pub chain_observer_type: ChainObserverType,
55+
56+
/// Protocol configuration Reader Adapter Parameters
57+
#[example = "\
58+
`{ \"address\": \"address\", \"verification_key\": \"key\" }`\
59+
"]
60+
#[serde(deserialize_with = "serde_deserialization::string_or_struct")]
61+
pub protocol_configuration_reader_adapter_params: ProtocolConfigurationReaderParameters,
5362
}
5463

5564
impl ConfigurationSource for ProtocolConfigurationParametersConfiguration {
5665
fn environment(&self) -> ExecutionEnvironment {
5766
ExecutionEnvironment::Production
5867
}
5968

60-
fn network_magic(&self) -> Option<u64> {
61-
self.network_magic
69+
fn cardano_node_socket_path(&self) -> PathBuf {
70+
self.cardano_node_socket_path.clone()
6271
}
6372

6473
fn network(&self) -> String {
@@ -69,8 +78,8 @@ impl ConfigurationSource for ProtocolConfigurationParametersConfiguration {
6978
self.chain_observer_type.clone()
7079
}
7180

72-
fn store_retention_limit(&self) -> Option<usize> {
73-
None
81+
fn protocol_configuration_reader_parameters(&self) -> ProtocolConfigurationReaderParameters {
82+
self.protocol_configuration_reader_adapter_params.clone()
7483
}
7584
}
7685

@@ -103,15 +112,6 @@ impl HumanReadableProtocolConfiguration {
103112

104113
#[derive(Parser, Debug, Clone)]
105114
pub struct ProtocolConfigurationCommand {
106-
/// Protocol configuration reader adapter type
107-
#[clap(long, env = "PROTOCOL_CONFIGURATION_READER_ADAPTER_TYPE")]
108-
pub protocol_configuration_reader_adapter_type: String,
109-
110-
/// Protocol configation reader adapter parameters
111-
/// example {"address":"your-address","verification_key":"your-verification-key"}
112-
#[clap(long, env = "PROTOCOL_CONFIGURATION_READER_ADAPTER_PARAMS")]
113-
pub protocol_configuration_reader_adapter_params: String,
114-
115115
/// commands
116116
#[clap(subcommand)]
117117
pub protocol_configuration_sub_command: ProtocolConfigurationSubCommand,
@@ -243,7 +243,6 @@ impl ImportProtocolConfigurationSubCommand {
243243
let tools = ProtocolConfigurationTools::from_dependencies(dependencies)
244244
.await
245245
.with_context(|| "protocol-configuration-tools: initialization error")?;
246-
247246
tools.verify_configurations_against_chain(protocol_configurations.clone())?;
248247

249248
//4 - Generate Tx datum
@@ -410,7 +409,7 @@ mod tests {
410409
ImportProtocolConfigurationSubCommand::try_parse_from([
411410
"import-markers",
412411
"--import-path",
413-
"tests/human_readable_protocol_configuration.json",
412+
"tests/human_readable_protocol_configuration_toto.json",
414413
"--target-path",
415414
"/tests/protocol_configuration_tx_datum",
416415
"--protocol-configuration-markers-secret-key",

mithril-aggregator/src/configuration.rs

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ use std::str::FromStr;
44

55
use anyhow::Context;
66
use config::{ConfigError, Map, Source, Value, ValueKind};
7-
use mithril_protocol_config::adapters::ProtocolConfigurationReaderAdapterType;
87
use semver::Version;
98
use serde::Deserialize;
109

1110
use mithril_cardano_node_chain::chain_observer::ChainObserverType;
1211
use mithril_cli_helper::{register_config_value, serde_deserialization};
13-
use mithril_common::crypto_helper::{GenesisEd25519Signer, ManifestSigner};
12+
use mithril_common::crypto_helper::{
13+
GenesisEd25519Signer, ManifestSigner, ProtocolConfigurationMarkersVerifierVerificationKey,
14+
};
1415
use mithril_common::entities::{
1516
BlockNumber, BlockNumberOffset, CardanoBlocksTransactionsSigningConfig,
1617
CardanoTransactionsSigningConfig, CompressionAlgorithm, ConfigSecret,
@@ -197,14 +198,9 @@ pub trait ConfigurationSource {
197198
panic!("era_reader_adapter_params is not implemented.");
198199
}
199200

200-
/// Protocol configuration reader adapter type
201-
fn protocol_configuration_reader_adapter_type(&self) -> ProtocolConfigurationReaderAdapterType {
202-
panic!("protocol_configuration_reader_adapter_type is not implemented.");
203-
}
204-
205201
/// Protocol configuration reader adapter parameters
206-
fn protocol_configuration_reader_adapter_params(&self) -> Option<String> {
207-
panic!("protocol_configuration_reader_adapter_params is not implemented.");
202+
fn protocol_configuration_reader_parameters(&self) -> ProtocolConfigurationReaderParameters {
203+
panic!("protocol_configuration_reader_parameters is not implemented.");
208204
}
209205

210206
/// Configuration of the ancillary files signer
@@ -783,6 +779,24 @@ impl FromStr for AncillaryFilesSignerConfig {
783779
}
784780
}
785781

782+
/// Configuration of the protocol Configuration Reader
783+
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
784+
pub struct ProtocolConfigurationReaderParameters {
785+
/// Address
786+
pub address: String,
787+
788+
/// Verification key
789+
pub verification_key: ProtocolConfigurationMarkersVerifierVerificationKey,
790+
}
791+
792+
impl FromStr for ProtocolConfigurationReaderParameters {
793+
type Err = serde_json::Error;
794+
795+
fn from_str(s: &str) -> Result<Self, Self::Err> {
796+
serde_json::from_str(s)
797+
}
798+
}
799+
786800
impl ServeCommandConfiguration {
787801
/// Create a sample configuration mainly for tests
788802
pub fn new_sample(tmp_path: PathBuf) -> Self {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,6 @@ impl DependenciesBuilder {
410410
signer_registration_round_opener: self.get_signer_registration_round_opener().await?,
411411
era_checker: self.get_era_checker().await?,
412412
era_reader: self.get_era_reader().await?,
413-
protocol_configuration_reader: self.get_protocol_configuration_reader().await?,
414413
event_transmitter: self.get_event_transmitter().await?,
415414
api_version_provider: self.get_api_version_provider().await?,
416415
stake_distribution_service: self.get_stake_distribution_service().await?,

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use mithril_common::api_version::APIVersionProvider;
44
use mithril_common::entities::{Epoch, SupportedEra};
55
use mithril_era::adapters::{EraReaderAdapterBuilder, EraReaderDummyAdapter};
66
use mithril_era::{EraChecker, EraMarker, EraReader, EraReaderAdapter};
7-
use mithril_protocol_config::adapters::ProtocolConfigurationReaderAdapterBuilder;
7+
use mithril_protocol_config::adapters::ProtocolConfigurationReaderCardanoChainAdapter;
88
use mithril_protocol_config::test::double::ProtocolConfigurationReaderDummyAdapter;
99
use mithril_protocol_config::{ProtocolConfigurationReader, ProtocolConfigurationReaderAdapter};
1010

@@ -91,16 +91,14 @@ impl DependenciesBuilder {
9191
) -> Result<Arc<ProtocolConfigurationReader>> {
9292
let protocol_configuration_adapter: Arc<dyn ProtocolConfigurationReaderAdapter> =
9393
match self.configuration.environment() {
94-
ExecutionEnvironment::Production => ProtocolConfigurationReaderAdapterBuilder::new(
95-
&self.configuration.protocol_configuration_reader_adapter_type(),
96-
&self.configuration.protocol_configuration_reader_adapter_params(),
97-
)
98-
.build(self.get_chain_observer().await?)
99-
.map_err(|e| DependenciesBuilderError::Initialization {
100-
message: "Could not build ProtocolConfigurationReader as dependency."
101-
.to_string(),
102-
error: Some(e.into()),
103-
})?,
94+
ExecutionEnvironment::Production => {
95+
let parameters = self.configuration.protocol_configuration_reader_parameters();
96+
Arc::new(ProtocolConfigurationReaderCardanoChainAdapter::new(
97+
parameters.address,
98+
self.get_chain_observer().await?,
99+
parameters.verification_key,
100+
))
101+
}
104102
_ => Arc::new(ProtocolConfigurationReaderDummyAdapter::from_markers(
105103
vec![], //TODO
106104
)),

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use mithril_protocol_config::ProtocolConfigurationReader;
21
use slog::Logger;
32
use std::sync::Arc;
43
use tokio::sync::RwLock;
@@ -69,9 +68,6 @@ pub struct ServeCommandDependenciesContainer {
6968
/// Era reader service
7069
pub(crate) era_reader: Arc<EraReader>,
7170

72-
/// Protocol configuration service
73-
pub(crate) protocol_configuration_reader: Arc<ProtocolConfigurationReader>,
74-
7571
/// Event Transmitter Service
7672
pub(crate) event_transmitter: Arc<TransmitterService<EventMessage>>,
7773

0 commit comments

Comments
 (0)