Skip to content

Commit ac59749

Browse files
committed
feat: add dummy CardanoTransactions signable builder
1 parent 10d0f87 commit ac59749

File tree

8 files changed

+127
-29
lines changed

8 files changed

+127
-29
lines changed

mithril-aggregator/src/database/provider/open_message.rs

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -910,27 +910,21 @@ else json_group_array( \
910910
let repository = OpenMessageRepository::new(connection.clone());
911911
let beacon = Beacon::new("devnet".to_string(), 1, 1);
912912

913-
let signed_entity_type = SignedEntityType::MithrilStakeDistribution(beacon.epoch);
914-
repository
915-
.create_open_message(beacon.epoch, &signed_entity_type, &ProtocolMessage::new())
916-
.await
917-
.unwrap();
918-
let open_message_result = repository
919-
.get_open_message(&signed_entity_type)
920-
.await
921-
.unwrap();
922-
assert!(open_message_result.is_some());
923-
924-
let signed_entity_type = SignedEntityType::CardanoImmutableFilesFull(beacon.clone());
925-
repository
926-
.create_open_message(beacon.epoch, &signed_entity_type, &ProtocolMessage::new())
927-
.await
928-
.unwrap();
929-
let open_message_result = repository
930-
.get_open_message(&signed_entity_type)
931-
.await
932-
.unwrap();
933-
assert!(open_message_result.is_some());
913+
for signed_entity_type in [
914+
SignedEntityType::MithrilStakeDistribution(beacon.epoch),
915+
SignedEntityType::CardanoImmutableFilesFull(beacon.clone()),
916+
SignedEntityType::CardanoTransactions(beacon.clone()),
917+
] {
918+
repository
919+
.create_open_message(beacon.epoch, &signed_entity_type, &ProtocolMessage::new())
920+
.await
921+
.unwrap();
922+
let open_message_result = repository
923+
.get_open_message(&signed_entity_type)
924+
.await
925+
.unwrap();
926+
assert!(open_message_result.is_some());
927+
}
934928
}
935929

936930
#[tokio::test]

mithril-aggregator/src/dependency_injection/builder.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ use mithril_common::{
3535
signable_builder::{
3636
CardanoImmutableFilesFullSignableBuilder, MithrilStakeDistributionSignableBuilder,
3737
},
38-
signable_builder::{MithrilSignableBuilderService, SignableBuilderService},
38+
signable_builder::{
39+
CardanoTransactionsSignableBuilder, MithrilSignableBuilderService, SignableBuilderService,
40+
},
3941
sqlite::SqliteConnection,
4042
store::adapter::{MemoryAdapter, SQLiteAdapter, StoreAdapter},
4143
BeaconProvider, BeaconProviderImpl,
@@ -938,9 +940,11 @@ impl DependenciesBuilder {
938940
&self.configuration.db_directory,
939941
self.get_logger().await?,
940942
));
943+
let cardano_transactions_builder = Arc::new(CardanoTransactionsSignableBuilder::default());
941944
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
942945
mithril_stake_distribution_builder,
943946
immutable_signable_builder,
947+
cardano_transactions_builder,
944948
));
945949

946950
Ok(signable_builder_service)
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
use async_trait::async_trait;
2+
3+
use crate::{
4+
entities::{Beacon, ProtocolMessage, ProtocolMessagePartKey},
5+
signable_builder::SignableBuilder,
6+
StdResult,
7+
};
8+
9+
/// A [CardanoTransactionsSignableBuilder] builder
10+
#[derive(Default)]
11+
pub struct CardanoTransactionsSignableBuilder {}
12+
13+
#[async_trait]
14+
impl SignableBuilder<Beacon> for CardanoTransactionsSignableBuilder {
15+
// TODO: return a protocol message computed from the transactions when it's ready to be implemented
16+
async fn compute_protocol_message(&self, beacon: Beacon) -> StdResult<ProtocolMessage> {
17+
let mut protocol_message = ProtocolMessage::new();
18+
protocol_message.set_message_part(
19+
ProtocolMessagePartKey::CardanoTransactionsMerkleRoot,
20+
format!("{beacon}"),
21+
);
22+
23+
Ok(protocol_message)
24+
}
25+
}
26+
27+
#[cfg(test)]
28+
mod tests {
29+
use super::*;
30+
31+
#[tokio::test]
32+
async fn test_compute_signable() {
33+
let beacon = Beacon::default();
34+
let cardano_transactions_signable_builder = CardanoTransactionsSignableBuilder::default();
35+
let signable = cardano_transactions_signable_builder
36+
.compute_protocol_message(beacon.clone())
37+
.await
38+
.unwrap();
39+
let mut signable_expected = ProtocolMessage::new();
40+
signable_expected.set_message_part(
41+
ProtocolMessagePartKey::CardanoTransactionsMerkleRoot,
42+
format!("{beacon}"),
43+
);
44+
assert_eq!(signable_expected, signable);
45+
}
46+
}

mithril-common/src/signable_builder/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
33
#[cfg(feature = "fs")]
44
mod cardano_immutable_full_signable_builder;
5+
#[cfg(feature = "fs")]
6+
mod cardano_transactions;
57
mod interface;
68
mod mithril_stake_distribution;
79
mod signable_builder_service;
810

911
#[cfg(feature = "fs")]
1012
pub use cardano_immutable_full_signable_builder::*;
13+
#[cfg(feature = "fs")]
14+
pub use cardano_transactions::*;
1115
pub use interface::*;
1216
pub use mithril_stake_distribution::*;
1317
pub use signable_builder_service::*;

mithril-common/src/signable_builder/signable_builder_service.rs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,20 @@ pub trait SignableBuilderService: Send + Sync {
2626
pub struct MithrilSignableBuilderService {
2727
mithril_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
2828
immutable_signable_builder: Arc<dyn SignableBuilder<Beacon>>,
29+
cardano_transactions_signable_builder: Arc<dyn SignableBuilder<Beacon>>,
2930
}
3031

3132
impl MithrilSignableBuilderService {
3233
/// MithrilSignableBuilderService factory
3334
pub fn new(
3435
mithril_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
3536
immutable_signable_builder: Arc<dyn SignableBuilder<Beacon>>,
37+
cardano_transactions_signable_builder: Arc<dyn SignableBuilder<Beacon>>,
3638
) -> Self {
3739
Self {
3840
mithril_stake_distribution_builder,
3941
immutable_signable_builder,
42+
cardano_transactions_signable_builder,
4043
}
4144
}
4245
}
@@ -63,7 +66,13 @@ impl SignableBuilderService for MithrilSignableBuilderService {
6366
"Signable builder service can not compute protocol message with beacon: '{beacon}'"
6467
))?,
6568
SignedEntityType::CardanoStakeDistribution(_) => todo!(),
66-
SignedEntityType::CardanoTransactions(_) => todo!(),
69+
SignedEntityType::CardanoTransactions(beacon) => self
70+
.cardano_transactions_signable_builder
71+
.compute_protocol_message(beacon.clone())
72+
.await
73+
.with_context(|| format!(
74+
"Signable builder service can not compute protocol message with beacon: '{beacon}'"
75+
))?,
6776
};
6877

6978
Ok(protocol_message)
@@ -108,10 +117,12 @@ mod tests {
108117

109118
let mock_cardano_immutable_files_full_signable_builder =
110119
MockSignableBuilderImpl::<Beacon>::new();
120+
let mock_cardano_transactions_signable_builder = MockSignableBuilderImpl::<Beacon>::new();
111121

112122
let signable_builder_service = MithrilSignableBuilderService::new(
113123
Arc::new(mock_mithril_stake_distribution_signable_builder),
114124
Arc::new(mock_cardano_immutable_files_full_signable_builder),
125+
Arc::new(mock_cardano_transactions_signable_builder),
115126
);
116127

117128
let signed_entity_type = SignedEntityType::MithrilStakeDistribution(Epoch(1));
@@ -134,10 +145,12 @@ mod tests {
134145
.expect_compute_protocol_message()
135146
.once()
136147
.return_once(move |_| Ok(protocol_message_clone));
148+
let mock_cardano_transactions_signable_builder = MockSignableBuilderImpl::<Beacon>::new();
137149

138150
let signable_builder_service = MithrilSignableBuilderService::new(
139151
Arc::new(mock_mithril_stake_distribution_signable_builder),
140152
Arc::new(mock_cardano_immutable_files_full_signable_builder),
153+
Arc::new(mock_cardano_transactions_signable_builder),
141154
);
142155

143156
let signed_entity_type = SignedEntityType::CardanoImmutableFilesFull(Beacon::default());
@@ -146,4 +159,33 @@ mod tests {
146159
.await
147160
.unwrap();
148161
}
162+
163+
#[tokio::test]
164+
async fn build_transactions_signable_when_given_cardano_transactions_entity_type() {
165+
let protocol_message = ProtocolMessage::new();
166+
let protocol_message_clone = protocol_message.clone();
167+
let mock_mithril_stake_distribution_signable_builder =
168+
MockSignableBuilderImpl::<Epoch>::new();
169+
170+
let mock_cardano_immutable_files_full_signable_builder =
171+
MockSignableBuilderImpl::<Beacon>::new();
172+
let mut mock_cardano_transactions_signable_builder =
173+
MockSignableBuilderImpl::<Beacon>::new();
174+
mock_cardano_transactions_signable_builder
175+
.expect_compute_protocol_message()
176+
.once()
177+
.return_once(move |_| Ok(protocol_message_clone));
178+
179+
let signable_builder_service = MithrilSignableBuilderService::new(
180+
Arc::new(mock_mithril_stake_distribution_signable_builder),
181+
Arc::new(mock_cardano_immutable_files_full_signable_builder),
182+
Arc::new(mock_cardano_transactions_signable_builder),
183+
);
184+
185+
let signed_entity_type = SignedEntityType::CardanoTransactions(Beacon::default());
186+
signable_builder_service
187+
.compute_protocol_message(signed_entity_type)
188+
.await
189+
.unwrap();
190+
}
149191
}

mithril-signer/src/runtime/runner.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,8 +460,8 @@ mod tests {
460460
EraChecker, EraReader,
461461
},
462462
signable_builder::{
463-
CardanoImmutableFilesFullSignableBuilder, MithrilSignableBuilderService,
464-
MithrilStakeDistributionSignableBuilder,
463+
CardanoImmutableFilesFullSignableBuilder, CardanoTransactionsSignableBuilder,
464+
MithrilSignableBuilderService, MithrilStakeDistributionSignableBuilder,
465465
},
466466
store::{
467467
adapter::{DumbStoreAdapter, MemoryAdapter},
@@ -526,9 +526,11 @@ mod tests {
526526
));
527527
let mithril_stake_distribution_signable_builder =
528528
Arc::new(MithrilStakeDistributionSignableBuilder::default());
529+
let cardano_transactions_builder = Arc::new(CardanoTransactionsSignableBuilder::default());
529530
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
530531
mithril_stake_distribution_signable_builder,
531532
cardano_immutable_signable_builder,
533+
cardano_transactions_builder,
532534
));
533535

534536
SignerServices {

mithril-signer/src/runtime/signer_services.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ use mithril_common::{
1515
digesters::{CardanoImmutableDigester, ImmutableDigester, ImmutableFileSystemObserver},
1616
era::{EraChecker, EraReader},
1717
signable_builder::{
18-
CardanoImmutableFilesFullSignableBuilder, MithrilSignableBuilderService,
19-
MithrilStakeDistributionSignableBuilder, SignableBuilderService,
18+
CardanoImmutableFilesFullSignableBuilder, CardanoTransactionsSignableBuilder,
19+
MithrilSignableBuilderService, MithrilStakeDistributionSignableBuilder,
20+
SignableBuilderService,
2021
},
2122
sqlite::SqliteConnection,
2223
store::{adapter::SQLiteAdapter, StakeStore},
@@ -249,9 +250,11 @@ impl<'a> ServiceBuilder for ProductionServiceBuilder<'a> {
249250
));
250251
let mithril_stake_distribution_signable_builder =
251252
Arc::new(MithrilStakeDistributionSignableBuilder::default());
253+
let cardano_transactions_builder = Arc::new(CardanoTransactionsSignableBuilder::default());
252254
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
253255
mithril_stake_distribution_signable_builder,
254256
cardano_immutable_snapshot_builder,
257+
cardano_transactions_builder,
255258
));
256259

257260
let services = SignerServices {

mithril-signer/tests/test_extensions/state_machine_tester.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ use mithril_common::{
1515
EraChecker, EraMarker, EraReader, SupportedEra,
1616
},
1717
signable_builder::{
18-
CardanoImmutableFilesFullSignableBuilder, MithrilSignableBuilderService,
19-
MithrilStakeDistributionSignableBuilder,
18+
CardanoImmutableFilesFullSignableBuilder, CardanoTransactionsSignableBuilder,
19+
MithrilSignableBuilderService, MithrilStakeDistributionSignableBuilder,
2020
},
2121
store::{adapter::MemoryAdapter, StakeStore, StakeStorer},
2222
BeaconProvider, BeaconProviderImpl, StdError,
@@ -157,9 +157,12 @@ impl StateMachineTester {
157157
));
158158
let mithril_stake_distribution_signable_builder =
159159
Arc::new(MithrilStakeDistributionSignableBuilder::default());
160+
let cardano_transactions_signable_builder =
161+
Arc::new(CardanoTransactionsSignableBuilder::default());
160162
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
161163
mithril_stake_distribution_signable_builder,
162164
cardano_immutable_snapshot_builder,
165+
cardano_transactions_signable_builder,
163166
));
164167

165168
let services = SignerServices {

0 commit comments

Comments
 (0)