Skip to content

Commit 53c6db3

Browse files
committed
Refactor remove Signable trait
Which is not needed anymore as Signable Builder returns a ProtocolMessage directly.
1 parent ae755b5 commit 53c6db3

File tree

11 files changed

+64
-149
lines changed

11 files changed

+64
-149
lines changed

mithril-aggregator/src/artifact_builder/artifact_builder_service.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ impl ArtifactBuilderService for MithrilArtifactBuilderService {
6969
.compute_artifact(beacon, certificate)
7070
.await?,
7171
)),
72-
_ => todo!(),
72+
SignedEntityType::CardanoStakeDistribution(_) => todo!(),
7373
}
7474
}
7575
}

mithril-aggregator/src/artifact_builder/dummy_artifact.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
use async_trait::async_trait;
22
use mithril_common::{
3-
entities::Certificate,
4-
signable_builder::{Artifact, DummyBeacon},
3+
entities::{Beacon, Certificate},
4+
signable_builder::Artifact,
55
StdResult,
66
};
77
use serde::{Deserialize, Serialize};
88

99
use crate::artifact_builder::ArtifactBuilder;
1010

11+
type DummyBeacon = Beacon;
12+
1113
/// Dummy artifact
1214
#[derive(Serialize, Deserialize, PartialEq, Debug)]
1315
pub struct DummyArtifact {

mithril-aggregator/src/runtime/runner.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,12 +356,11 @@ impl AggregatorRunnerTrait for AggregatorRunner {
356356
signed_entity_type: &SignedEntityType,
357357
) -> Result<ProtocolMessage, Box<dyn StdError + Sync + Send>> {
358358
debug!("RUNNER: compute protocol message");
359-
let signable = self
359+
let mut protocol_message = self
360360
.dependencies
361361
.signable_builder_service
362-
.compute_signable(signed_entity_type.to_owned())
362+
.compute_protocol_message(signed_entity_type.to_owned())
363363
.await?;
364-
let mut protocol_message = signable.compute_protocol_message()?;
365364

366365
let multi_signer = self.dependencies.multi_signer.write().await;
367366
protocol_message.set_message_part(

mithril-aggregator/src/signable_builder/signable_builder_service.rs

Lines changed: 33 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::sync::Arc;
33

44
use mithril_common::{
55
entities::{Beacon, Epoch, ProtocolMessage, SignedEntityType},
6-
signable_builder::{Signable, SignableBuilder},
6+
signable_builder::SignableBuilder,
77
StdResult,
88
};
99

@@ -15,23 +15,23 @@ use mockall::automock;
1515
#[async_trait]
1616
pub trait SignableBuilderService: Send + Sync {
1717
/// Compute signable from signed entity type
18-
async fn compute_signable(
18+
async fn compute_protocol_message(
1919
&self,
2020
signed_entity_type: SignedEntityType,
21-
) -> StdResult<Arc<dyn Signable>>;
21+
) -> StdResult<ProtocolMessage>;
2222
}
2323

2424
/// Mithril Signable Builder Service
2525
pub struct MithrilSignableBuilderService {
26-
mithril_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch, ProtocolMessage>>,
27-
immutable_signable_builder: Arc<dyn SignableBuilder<Beacon, ProtocolMessage>>,
26+
mithril_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
27+
immutable_signable_builder: Arc<dyn SignableBuilder<Beacon>>,
2828
}
2929

3030
impl MithrilSignableBuilderService {
3131
/// MithrilSignableBuilderService factory
3232
pub fn new(
33-
mithril_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch, ProtocolMessage>>,
34-
immutable_signable_builder: Arc<dyn SignableBuilder<Beacon, ProtocolMessage>>,
33+
mithril_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
34+
immutable_signable_builder: Arc<dyn SignableBuilder<Beacon>>,
3535
) -> Self {
3636
Self {
3737
mithril_stake_distribution_builder,
@@ -42,26 +42,25 @@ impl MithrilSignableBuilderService {
4242

4343
#[async_trait]
4444
impl SignableBuilderService for MithrilSignableBuilderService {
45-
#[allow(dead_code)]
46-
async fn compute_signable(
45+
async fn compute_protocol_message(
4746
&self,
4847
signed_entity_type: SignedEntityType,
49-
) -> StdResult<Arc<dyn Signable>> {
50-
let signable: Arc<dyn Signable> = match signed_entity_type {
51-
SignedEntityType::MithrilStakeDistribution(e) => Arc::new(
48+
) -> StdResult<ProtocolMessage> {
49+
let protocol_message = match signed_entity_type {
50+
SignedEntityType::MithrilStakeDistribution(e) => {
5251
self.mithril_stake_distribution_builder
53-
.compute_signable(e)
54-
.await?,
55-
),
56-
SignedEntityType::CardanoImmutableFilesFull(beacon) => Arc::new(
52+
.compute_protocol_message(e)
53+
.await?
54+
}
55+
SignedEntityType::CardanoImmutableFilesFull(beacon) => {
5756
self.immutable_signable_builder
58-
.compute_signable(beacon)
59-
.await?,
60-
),
61-
_ => todo!(),
57+
.compute_protocol_message(beacon)
58+
.await?
59+
}
60+
SignedEntityType::CardanoStakeDistribution(_) => todo!(),
6261
};
6362

64-
Ok(signable)
63+
Ok(protocol_message)
6564
}
6665
}
6766

@@ -71,22 +70,21 @@ mod tests {
7170

7271
use mithril_common::{
7372
entities::{Epoch, ProtocolMessage},
74-
signable_builder::{Beacon as Beaconnable, Signable, SignableBuilder},
73+
signable_builder::{Beacon as Beaconnable, SignableBuilder},
7574
StdResult,
7675
};
7776

7877
use async_trait::async_trait;
7978
use mockall::mock;
8079

8180
mock! {
82-
SignableBuilderImpl<U, V> { }
81+
SignableBuilderImpl<U> { }
8382

8483
#[async_trait]
85-
impl<U, V> SignableBuilder<U, V> for SignableBuilderImpl<U, V> where
86-
U: Beaconnable,
87-
V: Signable,{
84+
impl<U> SignableBuilder<U> for SignableBuilderImpl<U> where U: Beaconnable,
85+
{
8886

89-
async fn compute_signable(&self, beacon: U) -> StdResult<V>;
87+
async fn compute_protocol_message(&self, beacon: U) -> StdResult<ProtocolMessage>;
9088
}
9189
}
9290

@@ -96,14 +94,14 @@ mod tests {
9694
let protocol_message = ProtocolMessage::new();
9795
let protocol_message_clone = protocol_message.clone();
9896
let mut mock_mithril_stake_distribution_signable_builder =
99-
MockSignableBuilderImpl::<Epoch, ProtocolMessage>::new();
97+
MockSignableBuilderImpl::<Epoch>::new();
10098
mock_mithril_stake_distribution_signable_builder
101-
.expect_compute_signable()
99+
.expect_compute_protocol_message()
102100
.once()
103101
.return_once(move |_| Ok(protocol_message_clone));
104102

105103
let mock_cardano_immutable_files_full_signable_builder =
106-
MockSignableBuilderImpl::<Beacon, ProtocolMessage>::new();
104+
MockSignableBuilderImpl::<Beacon>::new();
107105

108106
let signable_builder_service = MithrilSignableBuilderService::new(
109107
Arc::new(mock_mithril_stake_distribution_signable_builder),
@@ -112,7 +110,7 @@ mod tests {
112110

113111
let signed_entity_type = SignedEntityType::MithrilStakeDistribution(Epoch(1));
114112
signable_builder_service
115-
.compute_signable(signed_entity_type)
113+
.compute_protocol_message(signed_entity_type)
116114
.await
117115
.unwrap();
118116
}
@@ -122,12 +120,12 @@ mod tests {
122120
let protocol_message = ProtocolMessage::new();
123121
let protocol_message_clone = protocol_message.clone();
124122
let mock_mithril_stake_distribution_signable_builder =
125-
MockSignableBuilderImpl::<Epoch, ProtocolMessage>::new();
123+
MockSignableBuilderImpl::<Epoch>::new();
126124

127125
let mut mock_cardano_immutable_files_full_signable_builder =
128-
MockSignableBuilderImpl::<Beacon, ProtocolMessage>::new();
126+
MockSignableBuilderImpl::<Beacon>::new();
129127
mock_cardano_immutable_files_full_signable_builder
130-
.expect_compute_signable()
128+
.expect_compute_protocol_message()
131129
.once()
132130
.return_once(move |_| Ok(protocol_message_clone));
133131

@@ -138,7 +136,7 @@ mod tests {
138136

139137
let signed_entity_type = SignedEntityType::CardanoImmutableFilesFull(Beacon::default());
140138
signable_builder_service
141-
.compute_signable(signed_entity_type)
139+
.compute_protocol_message(signed_entity_type)
142140
.await
143141
.unwrap();
144142
}

mithril-common/src/entities/protocol_message.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ use serde::{Deserialize, Serialize};
22
use sha2::{Digest, Sha256};
33
use std::{collections::BTreeMap, fmt::Display};
44

5-
use crate::{signable_builder::Signable, StdResult};
6-
75
/// The key of a ProtocolMessage
86
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
97
pub enum ProtocolMessagePartKey {
@@ -75,12 +73,6 @@ impl ProtocolMessage {
7573
}
7674
}
7775

78-
impl Signable for ProtocolMessage {
79-
fn compute_protocol_message(&self) -> StdResult<ProtocolMessage> {
80-
Ok(self.clone())
81-
}
82-
}
83-
8476
#[cfg(test)]
8577
mod tests {
8678
use super::*;

mithril-common/src/signable_builder/cardano_immutable_full_signable_builder.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ impl CardanoImmutableFilesFullSignableBuilder {
2626
}
2727

2828
#[async_trait]
29-
impl SignableBuilder<Beacon, ProtocolMessage> for CardanoImmutableFilesFullSignableBuilder {
30-
async fn compute_signable(&self, beacon: Beacon) -> StdResult<ProtocolMessage> {
29+
impl SignableBuilder<Beacon> for CardanoImmutableFilesFullSignableBuilder {
30+
async fn compute_protocol_message(&self, beacon: Beacon) -> StdResult<ProtocolMessage> {
3131
debug!(self.logger, "SignableBuilder::compute_signable({beacon:?})");
3232
let digest = self.immutable_digester.compute_digest(&beacon).await?;
3333
info!(self.logger, "SignableBuilder: digest = '{digest}'.");
@@ -69,7 +69,7 @@ mod tests {
6969
let signable_builder =
7070
CardanoImmutableFilesFullSignableBuilder::new(Arc::new(digester), create_logger());
7171
let protocol_message = signable_builder
72-
.compute_signable(Beacon::default())
72+
.compute_protocol_message(Beacon::default())
7373
.await
7474
.unwrap();
7575

mithril-common/src/signable_builder/dummy_signable.rs

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

mithril-common/src/signable_builder/interface.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,17 @@ use mockall::automock;
99
/// Beacon trait
1010
pub trait Beacon: Send + Sync {}
1111

12-
/// Signable is a trait for types that can be converted to a protocol message
13-
pub trait Signable: Send + Sync {
14-
/// Compute protocol message
15-
fn compute_protocol_message(&self) -> StdResult<ProtocolMessage>;
16-
}
17-
1812
/// Artifact is a trait for types that represent signed artifacts
1913
#[typetag::serde(tag = "type")]
2014
pub trait Artifact: Debug + Send + Sync {}
2115

22-
/// SignableBuilder is trait for building a signable for a beacon
16+
/// SignableBuilder is trait for building a protocol message for a beacon
2317
#[cfg_attr(test, automock)]
2418
#[async_trait]
25-
pub trait SignableBuilder<U, V>: Send + Sync
19+
pub trait SignableBuilder<U>: Send + Sync
2620
where
2721
U: Beacon,
28-
V: Signable,
2922
{
30-
/// Compute a signable
31-
async fn compute_signable(&self, beacon: U) -> StdResult<V>;
23+
/// Compute a protocol message
24+
async fn compute_protocol_message(&self, beacon: U) -> StdResult<ProtocolMessage>;
3225
}

mithril-common/src/signable_builder/mithril_stake_distribution.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ use crate::{
1111
pub struct MithrilStakeDistributionSignableBuilder {}
1212

1313
#[async_trait]
14-
impl SignableBuilder<Epoch, ProtocolMessage> for MithrilStakeDistributionSignableBuilder {
14+
impl SignableBuilder<Epoch> for MithrilStakeDistributionSignableBuilder {
1515
// We just need to return an empty protocol message as the next AVK will be appended by the signing engine automatically
16-
async fn compute_signable(&self, _beacon: Epoch) -> StdResult<ProtocolMessage> {
16+
async fn compute_protocol_message(&self, _beacon: Epoch) -> StdResult<ProtocolMessage> {
1717
Ok(ProtocolMessage::new())
1818
}
1919
}
@@ -27,7 +27,7 @@ mod tests {
2727
let mithril_stake_distribution_signable_builder =
2828
MithrilStakeDistributionSignableBuilder::default();
2929
let signable = mithril_stake_distribution_signable_builder
30-
.compute_signable(Epoch(1))
30+
.compute_protocol_message(Epoch(1))
3131
.await
3232
.unwrap();
3333
let signable_expected = ProtocolMessage::new();
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
//! The module used for building signables
22
33
mod cardano_immutable_full_signable_builder;
4-
mod dummy_signable;
54
mod interface;
65
mod mithril_stake_distribution;
76

87
pub use cardano_immutable_full_signable_builder::*;
9-
pub use dummy_signable::*;
108
pub use interface::*;
119
pub use mithril_stake_distribution::*;

0 commit comments

Comments
 (0)