Skip to content

Commit f8c3222

Browse files
committed
add sigable builder in signer
1 parent 0173a98 commit f8c3222

File tree

10 files changed

+57
-39
lines changed

10 files changed

+57
-39
lines changed

mithril-aggregator/src/dependency_injection/builder.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use mithril_common::{
1616
adapters::{EraReaderAdapterBuilder, EraReaderDummyAdapter},
1717
EraChecker, EraMarker, EraReader, EraReaderAdapter, SupportedEra,
1818
},
19+
signable_builder::ImmutableSignableBuilder,
1920
store::adapter::{MemoryAdapter, SQLiteAdapter, StoreAdapter},
2021
BeaconProvider, BeaconProviderImpl,
2122
};
@@ -42,9 +43,7 @@ use crate::{
4243
},
4344
event_store::{EventMessage, EventStore, TransmitterService},
4445
http_server::routes::router,
45-
signable_builder::{
46-
ImmutableSignableBuilder, MithrilStakeDistributionSignableBuilder, SignableBuilderService,
47-
},
46+
signable_builder::{MithrilStakeDistributionSignableBuilder, SignableBuilderService},
4847
signer_registerer::SignerRecorder,
4948
stake_distribution_service::{MithrilStakeDistributionService, StakeDistributionService},
5049
ticker_service::{MithrilTickerService, TickerService},
@@ -877,8 +876,10 @@ impl DependenciesBuilder {
877876
let multi_signer = self.get_multi_signer().await?;
878877
let mithril_stake_distribution_builder =
879878
MithrilStakeDistributionSignableBuilder::new(multi_signer);
880-
let immutable_signable_builder =
881-
ImmutableSignableBuilder::new(self.get_immutable_digester().await?);
879+
let immutable_signable_builder = ImmutableSignableBuilder::new(
880+
self.get_immutable_digester().await?,
881+
self.get_logger().await?,
882+
);
882883
let signable_builder_service = Arc::new(SignableBuilderService::new(
883884
mithril_stake_distribution_builder,
884885
immutable_signable_builder,
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
//! The module used for building signables
22
3-
mod immutable_signable_builder;
43
mod mithril_stake_distribution;
54
mod signable_builder_service;
65

7-
pub use immutable_signable_builder::*;
86
pub use mithril_stake_distribution::*;
97
pub use signable_builder_service::*;

mithril-aggregator/src/signable_builder/signable_builder_service.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ use std::sync::Arc;
22

33
use mithril_common::{
44
entities::SignedEntityType,
5-
signable_builder::{Signable, SignableBuilder},
5+
signable_builder::{ImmutableSignableBuilder, Signable, SignableBuilder},
66
StdResult,
77
};
88

9-
use super::{ImmutableSignableBuilder, MithrilStakeDistributionSignableBuilder};
9+
use super::MithrilStakeDistributionSignableBuilder;
1010

1111
/// SignableBuilder Service
1212
pub struct SignableBuilderService {

mithril-aggregator/src/signable_builder/immutable_signable_builder.rs renamed to mithril-common/src/signable_builder/immutable_signable_builder.rs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,36 @@
11
use std::sync::Arc;
22

3-
use async_trait::async_trait;
4-
use mithril_common::{
3+
use crate::{
54
digesters::ImmutableDigester,
65
entities::{Beacon, ProtocolMessage, ProtocolMessagePartKey},
76
signable_builder::SignableBuilder,
87
StdResult,
98
};
9+
use async_trait::async_trait;
10+
use slog::{debug, info, Logger};
1011

11-
/// A [SignableBuilder] for cardano immutable files.
12+
/// This structure is responsible of calculating the message for Cardano immutable files snapshots.
1213
pub struct ImmutableSignableBuilder {
1314
immutable_digester: Arc<dyn ImmutableDigester>,
15+
logger: Logger,
1416
}
1517

1618
impl ImmutableSignableBuilder {
1719
/// Constructor
18-
pub fn new(immutable_digester: Arc<dyn ImmutableDigester>) -> Self {
19-
Self { immutable_digester }
20+
pub fn new(immutable_digester: Arc<dyn ImmutableDigester>, logger: Logger) -> Self {
21+
Self {
22+
immutable_digester,
23+
logger,
24+
}
2025
}
2126
}
2227

2328
#[async_trait]
2429
impl SignableBuilder<Beacon, ProtocolMessage> for ImmutableSignableBuilder {
2530
async fn compute_signable(&self, beacon: Beacon) -> StdResult<ProtocolMessage> {
31+
debug!(self.logger, "SignableBuilder::compute_signable({beacon:?})");
2632
let digest = self.immutable_digester.compute_digest(&beacon).await?;
33+
info!(self.logger, "SignableBuilder: digest = '{digest}'.");
2734
let mut protocol_message = ProtocolMessage::new();
2835
protocol_message.set_message_part(ProtocolMessagePartKey::SnapshotDigest, digest);
2936

@@ -35,9 +42,10 @@ impl SignableBuilder<Beacon, ProtocolMessage> for ImmutableSignableBuilder {
3542
mod tests {
3643
use super::*;
3744

45+
use crate::digesters::{ImmutableDigester, ImmutableDigesterError};
46+
use crate::entities::Beacon;
3847
use async_trait::async_trait;
39-
use mithril_common::digesters::{ImmutableDigester, ImmutableDigesterError};
40-
use mithril_common::entities::Beacon;
48+
use slog::Drain;
4149

4250
#[derive(Default)]
4351
pub struct ImmutableDigesterImpl;
@@ -48,10 +56,17 @@ mod tests {
4856
Ok(format!("immutable {}", beacon.immutable_file_number))
4957
}
5058
}
59+
60+
fn create_logger() -> slog::Logger {
61+
let decorator = slog_term::PlainDecorator::new(slog_term::TestStdoutWriter);
62+
let drain = slog_term::CompactFormat::new(decorator).build().fuse();
63+
let drain = slog_async::Async::new(drain).build().fuse();
64+
slog::Logger::root(Arc::new(drain), slog::o!())
65+
}
5166
#[tokio::test]
5267
async fn compute_signable() {
5368
let digester = ImmutableDigesterImpl::default();
54-
let signable_builder = ImmutableSignableBuilder::new(Arc::new(digester));
69+
let signable_builder = ImmutableSignableBuilder::new(Arc::new(digester), create_logger());
5570
let protocol_message = signable_builder
5671
.compute_signable(Beacon::default())
5772
.await
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
//! The module used for building signables
22
33
mod dummy_signable;
4+
mod immutable_signable_builder;
45
mod interface;
56

67
pub use dummy_signable::*;
8+
pub use immutable_signable_builder::*;
79
pub use interface::*;

mithril-signer/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ pub use message_adapters::{
2323
};
2424
pub use protocol_initializer_store::{ProtocolInitializerStore, ProtocolInitializerStorer};
2525
pub use runtime::*;
26-
pub use signable_builder::SignableBuilderService;
26+
pub use signable_builder::*;
2727
pub use single_signer::*;

mithril-signer/src/runtime/runner.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ mod tests {
485485
adapters::{EraReaderAdapterType, EraReaderBootstrapAdapter},
486486
EraChecker, EraReader,
487487
},
488-
signable_builder::DummySignableBuilder,
488+
signable_builder::ImmutableSignableBuilder,
489489
store::{
490490
adapter::{DumbStoreAdapter, MemoryAdapter},
491491
StakeStore, StakeStorer,
@@ -533,16 +533,17 @@ mod tests {
533533
));
534534

535535
let api_version_provider = Arc::new(APIVersionProvider::new(era_checker.clone()));
536+
let digester = Arc::new(DumbImmutableDigester::new(DIGESTER_RESULT, true));
537+
let signable_builder =
538+
ImmutableSignableBuilder::new(digester.clone(), slog_scope::logger());
536539

537-
let dummy_signable_builder = DummySignableBuilder::new();
538-
let signable_builder_service =
539-
Arc::new(SignableBuilderService::new(dummy_signable_builder));
540+
let signable_builder_service = Arc::new(SignableBuilderService::new(signable_builder));
540541

541542
SignerServices {
542543
stake_store: Arc::new(StakeStore::new(Box::new(DumbStoreAdapter::new()), None)),
543544
certificate_handler: Arc::new(DumbCertificateHandler::default()),
544545
chain_observer,
545-
digester: Arc::new(DumbImmutableDigester::new(DIGESTER_RESULT, true)),
546+
digester,
546547
single_signer: Arc::new(MithrilSingleSigner::new("1".to_string())),
547548
beacon_provider,
548549
protocol_initializer_store: Arc::new(ProtocolInitializerStore::new(

mithril-signer/src/runtime/signer_services.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ use mithril_common::{
1414
},
1515
digesters::{CardanoImmutableDigester, ImmutableDigester, ImmutableFileSystemObserver},
1616
era::{EraChecker, EraReader},
17-
signable_builder::DummySignableBuilder,
17+
signable_builder::ImmutableSignableBuilder,
1818
store::{adapter::SQLiteAdapter, StakeStore},
1919
BeaconProvider, BeaconProviderImpl, StdError,
2020
};
2121

2222
use crate::{
23-
certificate_handler::CertificateHandler, signable_builder::SignableBuilderService,
24-
single_signer::SingleSigner, CertificateHandlerHTTPClient, Configuration, MithrilSingleSigner,
25-
ProtocolInitializerStore, ProtocolInitializerStorer,
23+
certificate_handler::CertificateHandler, single_signer::SingleSigner,
24+
CertificateHandlerHTTPClient, Configuration, MithrilSingleSigner, ProtocolInitializerStore,
25+
ProtocolInitializerStorer, SignableBuilderService,
2626
};
2727

2828
type StakeStoreService = Arc<StakeStore>;
@@ -201,7 +201,8 @@ impl<'a> ServiceBuilder for ProductionServiceBuilder<'a> {
201201
api_version_provider.clone(),
202202
));
203203

204-
let dummy_signable_builder = DummySignableBuilder::new();
204+
let dummy_signable_builder =
205+
ImmutableSignableBuilder::new(digester.clone(), slog_scope::logger());
205206
let signable_builder_service =
206207
Arc::new(SignableBuilderService::new(dummy_signable_builder));
207208

mithril-signer/src/signable_builder/signable_builder_service.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ use std::sync::Arc;
22

33
use mithril_common::{
44
entities::SignedEntityType,
5-
signable_builder::{DummyBeacon, DummySignableBuilder, Signable, SignableBuilder},
5+
signable_builder::{ImmutableSignableBuilder, Signable, SignableBuilder},
66
StdResult,
77
};
88

99
/// SignableBuilder Service
1010
// TODO: temporary implementation
1111
pub struct SignableBuilderService {
12-
dummy_signable_builder: DummySignableBuilder,
12+
immutable_signable_builder: ImmutableSignableBuilder,
1313
}
1414

1515
impl SignableBuilderService {
1616
/// SignableBuilderService factory
17-
pub fn new(dummy_signable_builder: DummySignableBuilder) -> Self {
17+
pub fn new(immutable_signable_builder: ImmutableSignableBuilder) -> Self {
1818
Self {
19-
dummy_signable_builder,
19+
immutable_signable_builder,
2020
}
2121
}
2222
}
@@ -28,9 +28,9 @@ impl SignableBuilderService {
2828
signed_entity_type: SignedEntityType,
2929
) -> StdResult<Arc<dyn Signable>> {
3030
let signable: Arc<dyn Signable> = match signed_entity_type {
31-
SignedEntityType::MithrilStakeDistribution(e) => Arc::new(
32-
self.dummy_signable_builder
33-
.compute_signable(DummyBeacon { epoch: e })
31+
SignedEntityType::CardanoImmutableFilesFull(beacon) => Arc::new(
32+
self.immutable_signable_builder
33+
.compute_signable(beacon)
3434
.await?,
3535
),
3636
_ => todo!(),

mithril-signer/tests/test_extensions/state_machine_tester.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use mithril_common::era::{
77
EraChecker, EraReader,
88
};
99
use mithril_common::era::{EraMarker, SupportedEra};
10-
use mithril_common::signable_builder::DummySignableBuilder;
10+
use mithril_common::signable_builder::ImmutableSignableBuilder;
1111
use mithril_common::BeaconProvider;
1212
use slog::Drain;
1313
use slog_scope::debug;
@@ -150,9 +150,9 @@ impl StateMachineTester {
150150

151151
let api_version_provider = Arc::new(APIVersionProvider::new(era_checker.clone()));
152152

153-
let dummy_signable_builder = DummySignableBuilder::new();
154-
let signable_builder_service =
155-
Arc::new(SignableBuilderService::new(dummy_signable_builder));
153+
let signable_builder =
154+
ImmutableSignableBuilder::new(digester.clone(), slog_scope::logger());
155+
let signable_builder_service = Arc::new(SignableBuilderService::new(signable_builder));
156156

157157
let services = SignerServices {
158158
certificate_handler: certificate_handler.clone(),

0 commit comments

Comments
 (0)