Skip to content
3 changes: 2 additions & 1 deletion mithril-signer/src/dependency_injection/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,6 @@ impl<'a> DependenciesBuilder<'a> {

let services = SignerDependencyContainer {
ticker_service,
certificate_handler: aggregator_client,
chain_observer,
digester,
single_signer,
Expand All @@ -529,6 +528,8 @@ impl<'a> DependenciesBuilder<'a> {
upkeep_service,
epoch_service,
certifier,
signer_registration_publisher: aggregator_client.clone(),
signers_registration_retriever: aggregator_client,
kes_signer,
network_configuration_service,
};
Expand Down
13 changes: 8 additions & 5 deletions mithril-signer/src/dependency_injection/containers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ use mithril_ticker::TickerService;

use crate::MetricsService;
use crate::services::{
AggregatorClient, CertifierService, EpochService, SingleSigner, UpkeepService,
CertifierService, EpochService, SignerRegistrationPublisher, SignersRegistrationRetriever,
SingleSigner, UpkeepService,
};
use crate::store::ProtocolInitializerStorer;

type StakeStoreService = Arc<dyn StakeStorer>;
type CertificateHandlerService = Arc<dyn AggregatorClient>;
type ChainObserverService = Arc<dyn ChainObserver>;
type DigesterService = Arc<dyn ImmutableDigester>;
type SingleSignerService = Arc<dyn SingleSigner>;
Expand All @@ -40,9 +40,6 @@ pub struct SignerDependencyContainer {
/// Stake store service
pub stake_store: StakeStoreService,

/// Certificate handler service
pub certificate_handler: CertificateHandlerService,

/// Chain Observer service
pub chain_observer: ChainObserverService,

Expand Down Expand Up @@ -85,6 +82,12 @@ pub struct SignerDependencyContainer {
/// Certifier service
pub certifier: Arc<dyn CertifierService>,

/// Signer registration publisher
pub signer_registration_publisher: Arc<dyn SignerRegistrationPublisher>,

/// Signers registration retriever
pub signers_registration_retriever: Arc<dyn SignersRegistrationRetriever>,

/// Kes signer service
pub kes_signer: Option<Arc<dyn KesSigner>>,

Expand Down
4 changes: 2 additions & 2 deletions mithril-signer/src/entities/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//! This module provide domain entities for the services & state machine.

mod beacon_to_sign;
mod signer_epoch_settings;
mod registered_signers;

pub use beacon_to_sign::*;
pub use signer_epoch_settings::*;
pub use registered_signers::*;
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use mithril_common::entities::{Epoch, Signer};

/// SignerEpochSettings represents the settings of an epoch
/// `RegisteredSigners` represents the registered signers of an epoch
#[derive(Clone, Debug, PartialEq)]
pub struct SignerEpochSettings {
/// Current Epoch
pub struct RegisteredSigners {
/// Epoch for which those registrations are active.
pub epoch: Epoch,

/// Current Signers
Expand All @@ -14,9 +14,9 @@ pub struct SignerEpochSettings {
}

#[cfg(test)]
impl mithril_common::test::double::Dummy for SignerEpochSettings {
/// Create a dummy `SignerEpochSettings`
fn dummy() -> SignerEpochSettings {
impl mithril_common::test::double::Dummy for RegisteredSigners {
/// Create a dummy `RegisteredSigners`
fn dummy() -> RegisteredSigners {
use mithril_common::test::double::fake_data;

// Beacon
Expand All @@ -28,7 +28,7 @@ impl mithril_common::test::double::Dummy for SignerEpochSettings {
let next_signers = signers[2..5].to_vec();

// Signer Epoch settings
SignerEpochSettings {
RegisteredSigners {
epoch: beacon.epoch,
current_signers,
next_signers,
Expand Down
2 changes: 1 addition & 1 deletion mithril-signer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ pub mod store;

pub use commands::*;
pub use configuration::{Configuration, DefaultConfiguration};
pub use entities::SignerEpochSettings;
pub use entities::RegisteredSigners;
pub use message_adapters::{FromEpochSettingsAdapter, ToRegisterSignerMessageAdapter};
pub use metrics::*;
pub use runtime::*;
Expand Down
10 changes: 5 additions & 5 deletions mithril-signer/src/message_adapters/from_epoch_settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ use mithril_common::{
messages::{EpochSettingsMessage, SignerMessagePart, TryFromMessageAdapter},
};

use crate::entities::SignerEpochSettings;
use crate::entities::RegisteredSigners;

/// Adapter to convert [EpochSettingsMessage] to [SignerEpochSettings].
/// Adapter to convert [EpochSettingsMessage] to [RegisteredSigners].
pub struct FromEpochSettingsAdapter;

impl TryFromMessageAdapter<EpochSettingsMessage, SignerEpochSettings> for FromEpochSettingsAdapter {
impl TryFromMessageAdapter<EpochSettingsMessage, RegisteredSigners> for FromEpochSettingsAdapter {
/// Method to convert.
fn try_adapt(message: EpochSettingsMessage) -> StdResult<SignerEpochSettings> {
let epoch_settings = SignerEpochSettings {
fn try_adapt(message: EpochSettingsMessage) -> StdResult<RegisteredSigners> {
let epoch_settings = RegisteredSigners {
epoch: message.epoch,
current_signers: SignerMessagePart::try_into_signers(message.current_signers)
.with_context(|| "'FromMessageAdapter' can not convert the current signers")?,
Expand Down
45 changes: 24 additions & 21 deletions mithril-signer/src/runtime/runner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use mithril_protocol_config::model::MithrilNetworkConfiguration;

use crate::Configuration;
use crate::dependency_injection::SignerDependencyContainer;
use crate::entities::{BeaconToSign, SignerEpochSettings};
use crate::entities::{BeaconToSign, RegisteredSigners};
use crate::services::{EpochService, MithrilProtocolInitializerBuilder};

/// This trait is mainly intended for mocking.
Expand All @@ -29,7 +29,7 @@ pub trait Runner: Send + Sync {
/// Fetch the current epoch settings if any.
async fn get_signer_registrations_from_aggregator(
&self,
) -> StdResult<Option<SignerEpochSettings>>;
) -> StdResult<Option<RegisteredSigners>>;

/// Fetch the beacon to sign if any.
async fn get_beacon_to_sign(&self, time_point: TimePoint) -> StdResult<Option<BeaconToSign>>;
Expand Down Expand Up @@ -131,10 +131,13 @@ impl Runner for SignerRunner {

async fn get_signer_registrations_from_aggregator(
&self,
) -> StdResult<Option<SignerEpochSettings>> {
) -> StdResult<Option<RegisteredSigners>> {
debug!(self.logger, ">> get_epoch_settings");

self.services.certificate_handler.retrieve_epoch_settings().await
self.services
.signers_registration_retriever
.retrieve_all_signer_registrations()
.await
}

async fn get_beacon_to_sign(&self, time_point: TimePoint) -> StdResult<Option<BeaconToSign>> {
Expand Down Expand Up @@ -233,7 +236,7 @@ impl Runner for SignerRunner {
kes_period,
);
self.services
.certificate_handler
.signer_registration_publisher
.register_signer(epoch_offset_to_recording_epoch, &signer)
.await?;

Expand Down Expand Up @@ -414,9 +417,10 @@ mod tests {
use crate::database::test_helper::main_db_connection;
use crate::metrics::MetricsService;
use crate::services::{
CardanoTransactionsImporter, DumbAggregatorClient, MithrilEpochService,
MithrilSingleSigner, MockTransactionStore, MockUpkeepService, SignerCertifierService,
SignerSignableSeedBuilder, SignerSignedEntityConfigProvider,
CardanoTransactionsImporter, DumbSignersRegistrationRetriever, MithrilEpochService,
MithrilSingleSigner, MockTransactionStore, MockUpkeepService, SignaturePublisherNoop,
SignerCertifierService, SignerSignableSeedBuilder, SignerSignedEntityConfigProvider,
SpySignerRegistrationPublisher,
};
use crate::test_tools::TestLogger;

Expand Down Expand Up @@ -546,13 +550,12 @@ mod tests {
Arc::new(CardanoTransactionsPreloaderActivation::new(true)),
));
let upkeep_service = Arc::new(MockUpkeepService::new());
let aggregator_client = Arc::new(DumbAggregatorClient::default());
let certifier = Arc::new(SignerCertifierService::new(
Arc::new(SignedBeaconRepository::new(sqlite_connection.clone(), None)),
Arc::new(SignerSignedEntityConfigProvider::new(epoch_service.clone())),
signed_entity_type_lock.clone(),
single_signer.clone(),
aggregator_client.clone(),
Arc::new(SignaturePublisherNoop),
logger.clone(),
));
let kes_signer = None;
Expand All @@ -569,7 +572,6 @@ mod tests {

SignerDependencyContainer {
stake_store,
certificate_handler: aggregator_client,
chain_observer,
digester,
single_signer,
Expand All @@ -585,6 +587,8 @@ mod tests {
upkeep_service,
epoch_service,
certifier,
signer_registration_publisher: Arc::new(SpySignerRegistrationPublisher::default()),
signers_registration_retriever: Arc::new(DumbSignersRegistrationRetriever::default()),
kes_signer,
network_configuration_service,
}
Expand Down Expand Up @@ -659,8 +663,8 @@ mod tests {
async fn test_register_signer_to_aggregator() {
let mut services = init_services().await;
let fixture = MithrilFixtureBuilder::default().with_signers(5).build();
let certificate_handler = Arc::new(DumbAggregatorClient::default());
services.certificate_handler = certificate_handler.clone();
let registration_publisher_spy = Arc::new(SpySignerRegistrationPublisher::default());
services.signer_registration_publisher = registration_publisher_spy.clone();
let protocol_initializer_store = services.protocol_initializer_store.clone();
let current_epoch = services.ticker_service.get_current_epoch().await.unwrap();

Expand Down Expand Up @@ -699,7 +703,7 @@ mod tests {
.expect("registering a signer to the aggregator should not fail");

let last_registered_signer_first_registration =
certificate_handler.get_last_registered_signer().await.unwrap();
registration_publisher_spy.get_last_registered_signer().await.unwrap();
let maybe_protocol_initializer_first_registration = protocol_initializer_store
.get_protocol_initializer(current_epoch.offset_to_recording_epoch())
.await
Expand All @@ -709,7 +713,8 @@ mod tests {
"A protocol initializer should have been registered at the 'Recording' epoch"
);

let total_registered_signers = certificate_handler.get_total_registered_signers().await;
let total_registered_signers =
registration_publisher_spy.get_total_registered_signers().await;
assert_eq!(1, total_registered_signers);

runner
Expand All @@ -718,7 +723,7 @@ mod tests {
.expect("registering a signer to the aggregator should not fail");

let last_registered_signer_second_registration =
certificate_handler.get_last_registered_signer().await.unwrap();
registration_publisher_spy.get_last_registered_signer().await.unwrap();
let maybe_protocol_initializer_second_registration = protocol_initializer_store
.get_protocol_initializer(current_epoch.offset_to_recording_epoch())
.await
Expand All @@ -733,7 +738,8 @@ mod tests {
"The signer registration should be the same and should have been registered twice"
);

let total_registered_signers = certificate_handler.get_total_registered_signers().await;
let total_registered_signers =
registration_publisher_spy.get_total_registered_signers().await;
assert_eq!(1, total_registered_signers);
}

Expand Down Expand Up @@ -769,10 +775,7 @@ mod tests {

#[tokio::test]
async fn test_inform_epoch_setting_pass_available_signed_entity_types_to_epoch_service() {
let mut services = init_services().await;
let certificate_handler = Arc::new(DumbAggregatorClient::default());

services.certificate_handler = certificate_handler;
let services = init_services().await;
let runner = init_runner(Some(services), None).await;

let epoch = Epoch(1);
Expand Down
10 changes: 5 additions & 5 deletions mithril-signer/src/runtime/state_machine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,7 @@ mod tests {
use mithril_common::entities::{ChainPoint, Epoch, ProtocolMessage, SignedEntityType};
use mithril_common::test::double::Dummy;

use crate::SignerEpochSettings;
use crate::RegisteredSigners;
use crate::runtime::runner::MockSignerRunner;
use crate::test_tools::TestLogger;

Expand Down Expand Up @@ -547,7 +547,7 @@ mod tests {
#[tokio::test]
async fn unregistered_epoch_settings_behind_known_epoch() {
let mut runner = MockSignerRunner::new();
let epoch_settings = SignerEpochSettings {
let epoch_settings = RegisteredSigners {
epoch: Epoch(3),
current_signers: vec![],
next_signers: vec![],
Expand Down Expand Up @@ -594,7 +594,7 @@ mod tests {
runner
.expect_get_signer_registrations_from_aggregator()
.once()
.returning(|| Ok(Some(SignerEpochSettings::dummy())));
.returning(|| Ok(Some(RegisteredSigners::dummy())));

runner
.expect_get_mithril_network_configuration()
Expand Down Expand Up @@ -646,7 +646,7 @@ mod tests {
runner
.expect_get_signer_registrations_from_aggregator()
.once()
.returning(|| Ok(Some(SignerEpochSettings::dummy())));
.returning(|| Ok(Some(RegisteredSigners::dummy())));

runner
.expect_get_mithril_network_configuration()
Expand Down Expand Up @@ -702,7 +702,7 @@ mod tests {
runner
.expect_get_signer_registrations_from_aggregator()
.once()
.returning(|| Ok(Some(SignerEpochSettings::dummy())));
.returning(|| Ok(Some(RegisteredSigners::dummy())));

runner
.expect_get_mithril_network_configuration()
Expand Down
Loading
Loading