Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion mithril-signer/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "mithril-signer"
version = "0.2.277"
version = "0.2.278"
description = "A Mithril Signer"
authors = { workspace = true }
edition = { workspace = true }
Expand Down
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