Skip to content

Commit 44f93b3

Browse files
committed
feat: store current_cardano_transactions_signing_config in signer epoch service
1 parent ee63b2b commit 44f93b3

File tree

7 files changed

+50
-3
lines changed

7 files changed

+50
-3
lines changed

mithril-common/src/entities/epoch_settings.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::entities::{Epoch, ProtocolParameters};
1+
use crate::entities::{CardanoTransactionsSigningConfig, Epoch, ProtocolParameters};
22

33
use super::Signer;
44

@@ -19,4 +19,7 @@ pub struct EpochSettings {
1919

2020
/// Signers that will be able to sign on the next epoch
2121
pub next_signers: Vec<Signer>,
22+
23+
/// Cardano transactions signing configuration for the current epoch
24+
pub current_cardano_transactions_signing_config: Option<CardanoTransactionsSigningConfig>,
2225
}

mithril-common/src/messages/epoch_settings.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ impl EpochSettingsMessage {
4545
},
4646
current_signers: [SignerMessagePart::dummy()].to_vec(),
4747
next_signers: [SignerMessagePart::dummy()].to_vec(),
48-
current_cardano_transactions_signing_config: None,
48+
current_cardano_transactions_signing_config: Some(CardanoTransactionsSigningConfig::dummy()),
4949
}
5050
}
5151
}

mithril-common/src/test_utils/fake_data.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,18 @@ pub fn epoch_settings() -> entities::EpochSettings {
6666
let current_signers = signers[1..3].to_vec();
6767
let next_signers = signers[2..5].to_vec();
6868

69+
// Cardano transactions signing configuration for the current epoch
70+
let current_cardano_transactions_signing_config =
71+
Some(entities::CardanoTransactionsSigningConfig::dummy());
72+
6973
// Epoch settings
7074
entities::EpochSettings {
7175
epoch: beacon.epoch,
7276
protocol_parameters,
7377
next_protocol_parameters,
7478
current_signers,
7579
next_signers,
80+
current_cardano_transactions_signing_config,
7681
}
7782
}
7883

mithril-signer/src/message_adapters/from_epoch_settings.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ impl TryFromMessageAdapter<EpochSettingsMessage, EpochSettings> for FromEpochSet
1919
.with_context(|| "'FromMessageAdapter' can not convert the current signers")?,
2020
next_signers: SignerMessagePart::try_into_signers(message.next_signers)
2121
.with_context(|| "'FromMessageAdapter' can not convert the next signers")?,
22+
current_cardano_transactions_signing_config: message
23+
.current_cardano_transactions_signing_config,
2224
};
2325
Ok(epoch_settings)
2426
}

mithril-signer/src/runtime/runner.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,10 @@ mod tests {
458458
MKMap, MKMapNode, MKTreeNode, MKTreeStoreInMemory, MKTreeStorer, ProtocolInitializer,
459459
},
460460
digesters::{DumbImmutableDigester, DumbImmutableFileObserver},
461-
entities::{BlockNumber, BlockRange, CardanoDbBeacon, Epoch, ProtocolParameters},
461+
entities::{
462+
BlockNumber, BlockRange, CardanoDbBeacon, CardanoTransactionsSigningConfig, Epoch,
463+
ProtocolParameters,
464+
},
462465
era::{adapters::EraReaderBootstrapAdapter, EraChecker, EraReader},
463466
signable_builder::{
464467
BlockRangeRootRetriever, CardanoImmutableFilesFullSignableBuilder,
@@ -545,6 +548,11 @@ mod tests {
545548
async fn next_signers_with_stake(&self) -> StdResult<Vec<SignerWithStake>> {
546549
Ok(vec![])
547550
}
551+
fn current_cardano_transactions_signing_config(
552+
&self,
553+
) -> StdResult<&Option<CardanoTransactionsSigningConfig>> {
554+
Ok(&None)
555+
}
548556

549557
fn is_signer_included_in_current_stake_distribution(
550558
&self,

mithril-signer/src/runtime/state_machine.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,7 @@ mod tests {
548548
next_protocol_parameters: fake_data::protocol_parameters(),
549549
current_signers: vec![],
550550
next_signers: vec![],
551+
current_cardano_transactions_signing_config: None,
551552
};
552553
let known_epoch = Epoch(4);
553554
runner

mithril-signer/src/services/epoch_service.rs

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

33
use async_trait::async_trait;
44
use mithril_common::crypto_helper::ProtocolInitializer;
5+
use mithril_common::entities::CardanoTransactionsSigningConfig;
56
use mithril_common::entities::Epoch;
67
use mithril_common::entities::PartyId;
78
use mithril_common::entities::ProtocolParameters;
@@ -49,6 +50,11 @@ pub trait EpochService: Sync + Send {
4950
/// Get signers with stake for the next epoch
5051
async fn next_signers_with_stake(&self) -> StdResult<Vec<SignerWithStake>>;
5152

53+
/// Get the cardano transactions signing configuration for the current epoch
54+
fn current_cardano_transactions_signing_config(
55+
&self,
56+
) -> StdResult<&Option<CardanoTransactionsSigningConfig>>;
57+
5258
/// Check if a signer is included in the current stake distribution
5359
fn is_signer_included_in_current_stake_distribution(
5460
&self,
@@ -62,6 +68,7 @@ struct EpochData {
6268
next_protocol_parameters: ProtocolParameters,
6369
current_signers: Vec<Signer>,
6470
next_signers: Vec<Signer>,
71+
current_cardano_transactions_signing_config: Option<CardanoTransactionsSigningConfig>,
6572
}
6673

6774
/// Implementation of the [epoch service][EpochService].
@@ -138,6 +145,8 @@ impl EpochService for MithrilEpochService {
138145
next_protocol_parameters: epoch_settings.next_protocol_parameters,
139146
current_signers: epoch_settings.current_signers,
140147
next_signers: epoch_settings.next_signers,
148+
current_cardano_transactions_signing_config: epoch_settings
149+
.current_cardano_transactions_signing_config,
141150
});
142151

143152
Ok(())
@@ -177,6 +186,14 @@ impl EpochService for MithrilEpochService {
177186
.await
178187
}
179188

189+
fn current_cardano_transactions_signing_config(
190+
&self,
191+
) -> StdResult<&Option<CardanoTransactionsSigningConfig>> {
192+
Ok(&self
193+
.unwrap_data()?
194+
.current_cardano_transactions_signing_config)
195+
}
196+
180197
fn is_signer_included_in_current_stake_distribution(
181198
&self,
182199
party_id: PartyId,
@@ -302,6 +319,9 @@ mod tests {
302319
assert!(service.next_signers().is_err());
303320
assert!(service.current_signers_with_stake().await.is_err());
304321
assert!(service.next_signers_with_stake().await.is_err());
322+
assert!(service
323+
.current_cardano_transactions_signing_config()
324+
.is_err());
305325
}
306326

307327
#[test]
@@ -350,6 +370,14 @@ mod tests {
350370
epoch_settings.next_protocol_parameters,
351371
*service.next_protocol_parameters().unwrap()
352372
);
373+
374+
// Check current_cardano_transactions_signing_config
375+
assert_eq!(
376+
epoch_settings.current_cardano_transactions_signing_config,
377+
*service
378+
.current_cardano_transactions_signing_config()
379+
.unwrap()
380+
)
353381
}
354382

355383
#[tokio::test]

0 commit comments

Comments
 (0)