Skip to content

Commit 1f87a4a

Browse files
committed
feature(mithril-signer): ensure compatibility epoch service with the new Cardano blocks and transactions signing configuration
1 parent d415fc0 commit 1f87a4a

File tree

3 files changed

+62
-12
lines changed

3 files changed

+62
-12
lines changed

mithril-signer/src/services/certifier.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ mod tests {
153153
use mockall::predicate::eq;
154154

155155
use mithril_common::entities::{
156-
CardanoTransactionsSigningConfig, ChainPoint, Epoch, ProtocolMessagePartKey,
157-
SignedEntityTypeDiscriminants,
156+
CardanoBlocksTransactionsSigningConfig, CardanoTransactionsSigningConfig, ChainPoint,
157+
Epoch, ProtocolMessagePartKey, SignedEntityTypeDiscriminants,
158158
};
159159
use mithril_common::test::double::{Dummy, fake_data};
160160

@@ -170,8 +170,10 @@ mod tests {
170170
}
171171
let certifier_service = SignerCertifierService {
172172
signed_entity_type_lock: locker.clone(),
173+
//TODO make a dummy DumbSignedEntityConfigProvider ? to avoid providing each timme dummy signing config ?
173174
signed_entity_config_provider: Arc::new(DumbSignedEntityConfigProvider::new(
174175
CardanoTransactionsSigningConfig::dummy(),
176+
CardanoBlocksTransactionsSigningConfig::dummy(),
175177
SignedEntityTypeDiscriminants::all(),
176178
)),
177179
..SignerCertifierService::dumb_dependencies()
@@ -194,6 +196,7 @@ mod tests {
194196
signed_entity_type_lock: locker.clone(),
195197
signed_entity_config_provider: Arc::new(DumbSignedEntityConfigProvider::new(
196198
CardanoTransactionsSigningConfig::dummy(),
199+
CardanoBlocksTransactionsSigningConfig::dummy(),
197200
SignedEntityTypeDiscriminants::all(),
198201
)),
199202
..SignerCertifierService::dumb_dependencies()
@@ -219,6 +222,7 @@ mod tests {
219222
signed_beacon_store: signed_beacon_store.clone(),
220223
signed_entity_config_provider: Arc::new(DumbSignedEntityConfigProvider::new(
221224
CardanoTransactionsSigningConfig::dummy(),
225+
CardanoBlocksTransactionsSigningConfig::dummy(),
222226
SignedEntityTypeDiscriminants::all(),
223227
)),
224228
..SignerCertifierService::dumb_dependencies()
@@ -253,6 +257,7 @@ mod tests {
253257
signed_beacon_store: signed_beacon_store.clone(),
254258
signed_entity_config_provider: Arc::new(DumbSignedEntityConfigProvider::new(
255259
CardanoTransactionsSigningConfig::dummy(),
260+
CardanoBlocksTransactionsSigningConfig::dummy(),
256261
SignedEntityTypeDiscriminants::all(),
257262
)),
258263
..SignerCertifierService::dumb_dependencies()
@@ -297,6 +302,7 @@ mod tests {
297302
signed_beacon_store: signed_beacon_store.clone(),
298303
signed_entity_config_provider: Arc::new(DumbSignedEntityConfigProvider::new(
299304
CardanoTransactionsSigningConfig::dummy(),
305+
CardanoBlocksTransactionsSigningConfig::dummy(),
300306
SignedEntityTypeDiscriminants::all(),
301307
)),
302308
..SignerCertifierService::dumb_dependencies()
@@ -491,6 +497,7 @@ mod tests {
491497
}
492498

493499
pub mod tests_tooling {
500+
use mithril_common::entities::CardanoBlocksTransactionsSigningConfig;
494501
use std::collections::BTreeSet;
495502
use tokio::sync::RwLock;
496503

@@ -504,6 +511,7 @@ mod tests {
504511
signed_beacon_store: Arc::new(DumbSignedBeaconStore::default()),
505512
signed_entity_config_provider: Arc::new(DumbSignedEntityConfigProvider::new(
506513
CardanoTransactionsSigningConfig::dummy(),
514+
CardanoBlocksTransactionsSigningConfig::dummy(),
507515
SignedEntityTypeDiscriminants::all(),
508516
)),
509517
signed_entity_type_lock: Arc::new(SignedEntityTypeLock::new()),
@@ -520,12 +528,16 @@ mod tests {
520528

521529
impl DumbSignedEntityConfigProvider {
522530
pub fn new(
523-
config: CardanoTransactionsSigningConfig,
531+
cardano_transactions_config: CardanoTransactionsSigningConfig,
532+
cardano_blocks_transactions_config: CardanoBlocksTransactionsSigningConfig,
524533
allowed_discriminants: BTreeSet<SignedEntityTypeDiscriminants>,
525534
) -> Self {
526535
Self {
527536
config: SignedEntityConfig {
528-
cardano_transactions_signing_config: Some(config),
537+
cardano_transactions_signing_config: Some(cardano_transactions_config),
538+
cardano_blocks_transactions_signing_config: Some(
539+
cardano_blocks_transactions_config,
540+
),
529541
allowed_discriminants,
530542
},
531543
}

mithril-signer/src/services/epoch_service.rs

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ use crate::store::ProtocolInitializerStorer;
1212
use mithril_common::StdResult;
1313
use mithril_common::crypto_helper::ProtocolInitializer;
1414
use mithril_common::entities::{
15-
CardanoTransactionsSigningConfig, Epoch, PartyId, ProtocolParameters, SignedEntityConfig,
16-
SignedEntityTypeDiscriminants, Signer, SignerWithStake,
15+
CardanoBlocksTransactionsSigningConfig, CardanoTransactionsSigningConfig, Epoch, PartyId,
16+
ProtocolParameters, SignedEntityConfig, SignedEntityTypeDiscriminants, Signer, SignerWithStake,
1717
};
1818
use mithril_common::logging::LoggerExtensions;
1919
use mithril_persistence::store::StakeStorer;
@@ -72,6 +72,11 @@ pub trait EpochService: Sync + Send {
7272
&self,
7373
) -> StdResult<&Option<CardanoTransactionsSigningConfig>>;
7474

75+
/// Get the cardano blocks and transactions signing configuration for the current epoch
76+
fn cardano_blocks_transactions_signing_config(
77+
&self,
78+
) -> StdResult<&Option<CardanoBlocksTransactionsSigningConfig>>;
79+
7580
/// Check if the given signer can sign for the current epoch
7681
fn can_signer_sign_current_epoch(&self, party_id: PartyId) -> StdResult<bool>;
7782
}
@@ -84,6 +89,7 @@ pub(crate) struct EpochData {
8489
pub next_signers: Vec<Signer>,
8590
pub allowed_discriminants: BTreeSet<SignedEntityTypeDiscriminants>,
8691
pub cardano_transactions_signing_config: Option<CardanoTransactionsSigningConfig>,
92+
pub cardano_blocks_transactions_signing_config: Option<CardanoBlocksTransactionsSigningConfig>,
8793
}
8894

8995
/// Implementation of the [epoch service][EpochService].
@@ -193,11 +199,15 @@ impl EpochService for MithrilEpochService {
193199
.enabled_signed_entity_types
194200
.clone();
195201

196-
let cardano_transactions_signing_config = mithril_network_configuration
202+
let signed_entity_types_config = &mithril_network_configuration
197203
.configuration_for_aggregation
198-
.signed_entity_types_config
199-
.cardano_transactions
200-
.clone();
204+
.signed_entity_types_config;
205+
206+
let cardano_transactions_signing_config =
207+
signed_entity_types_config.cardano_transactions.clone();
208+
209+
let cardano_blocks_transactions_signing_config =
210+
signed_entity_types_config.cardano_blocks_transactions.clone();
201211

202212
self.epoch_data = Some(EpochData {
203213
epoch: aggregator_signer_registration_epoch,
@@ -207,6 +217,7 @@ impl EpochService for MithrilEpochService {
207217
next_signers,
208218
allowed_discriminants,
209219
cardano_transactions_signing_config,
220+
cardano_blocks_transactions_signing_config,
210221
});
211222

212223
Ok(())
@@ -260,6 +271,12 @@ impl EpochService for MithrilEpochService {
260271
Ok(&self.unwrap_data()?.cardano_transactions_signing_config)
261272
}
262273

274+
fn cardano_blocks_transactions_signing_config(
275+
&self,
276+
) -> StdResult<&Option<CardanoBlocksTransactionsSigningConfig>> {
277+
Ok(&self.unwrap_data()?.cardano_blocks_transactions_signing_config)
278+
}
279+
263280
fn can_signer_sign_current_epoch(&self, party_id: PartyId) -> StdResult<bool> {
264281
let epoch = self.epoch_of_current_data()?;
265282
if let Some(protocol_initializer) = self.protocol_initializer()? {
@@ -313,6 +330,9 @@ impl SignedEntityConfigProvider for SignerSignedEntityConfigProvider {
313330
cardano_transactions_signing_config: epoch_service
314331
.cardano_transactions_signing_config()?
315332
.clone(),
333+
cardano_blocks_transactions_signing_config: epoch_service
334+
.cardano_blocks_transactions_signing_config()?
335+
.clone(),
316336
})
317337
}
318338
}
@@ -353,6 +373,7 @@ impl MithrilEpochService {
353373
next_signers: vec![],
354374
allowed_discriminants: BTreeSet::new(),
355375
cardano_transactions_signing_config: None,
376+
cardano_blocks_transactions_signing_config: None,
356377
};
357378
self.epoch_data = Some(epoch_data);
358379
self
@@ -406,6 +427,10 @@ pub(crate) mod mock_epoch_service {
406427
&self,
407428
) -> StdResult<&'static Option<CardanoTransactionsSigningConfig>>;
408429

430+
fn cardano_blocks_transactions_signing_config(
431+
&self,
432+
) -> StdResult<&'static Option<CardanoBlocksTransactionsSigningConfig>>;
433+
409434
fn can_signer_sign_current_epoch(&self, party_id: PartyId) -> StdResult<bool>;
410435
}
411436
}
@@ -912,6 +937,7 @@ mod tests {
912937
let configuration_for_aggregation = MithrilNetworkConfigurationForEpoch {
913938
signed_entity_types_config: SignedEntityTypeConfiguration {
914939
cardano_transactions: None,
940+
cardano_blocks_transactions: None,
915941
},
916942
enabled_signed_entity_types: allowed_discriminants.clone(),
917943
..Dummy::dummy()
@@ -940,6 +966,7 @@ mod tests {
940966
SignedEntityConfig {
941967
allowed_discriminants,
942968
cardano_transactions_signing_config: None,
969+
cardano_blocks_transactions_signing_config: None,
943970
},
944971
config
945972
);
@@ -981,6 +1008,9 @@ mod tests {
9811008
cardano_transactions_signing_config: Some(
9821009
CardanoTransactionsSigningConfig::dummy()
9831010
),
1011+
cardano_blocks_transactions_signing_config: Some(
1012+
CardanoBlocksTransactionsSigningConfig::dummy()
1013+
),
9841014
},
9851015
config
9861016
);

mithril-signer/tests/test_extensions/state_machine_tester.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ use mithril_common::{
3535
api_version::APIVersionProvider,
3636
crypto_helper::{KesSigner, KesSignerStandard},
3737
entities::{
38-
BlockNumber, CardanoTransactionsSigningConfig, ChainPoint, Epoch, SignedEntityType,
39-
SignedEntityTypeDiscriminants, SignerWithStake, SlotNumber, SupportedEra, TimePoint,
38+
BlockNumber, CardanoBlocksTransactionsSigningConfig, CardanoTransactionsSigningConfig,
39+
ChainPoint, Epoch, SignedEntityType, SignedEntityTypeDiscriminants, SignerWithStake,
40+
SlotNumber, SupportedEra, TimePoint,
4041
},
4142
signable_builder::{
4243
CardanoStakeDistributionSignableBuilder, CardanoTransactionsSignableBuilder,
@@ -161,11 +162,18 @@ impl StateMachineTester {
161162
security_parameter: BlockNumber(0),
162163
step: BlockNumber(30),
163164
};
165+
let cardano_blocks_transactions_signing_config = CardanoBlocksTransactionsSigningConfig {
166+
security_parameter: BlockNumber(0),
167+
step: BlockNumber(30),
168+
};
164169
let fake_aggregator = Arc::new(FakeAggregator::new(ticker_service.clone()));
165170

166171
let configuration_for_aggregation = MithrilNetworkConfigurationForEpoch {
167172
signed_entity_types_config: SignedEntityTypeConfiguration {
168173
cardano_transactions: Some(cardano_transactions_signing_config.clone()),
174+
cardano_blocks_transactions: Some(
175+
cardano_blocks_transactions_signing_config.clone(),
176+
),
169177
},
170178
enabled_signed_entity_types: SignedEntityTypeDiscriminants::all(),
171179
..Dummy::dummy()

0 commit comments

Comments
 (0)