Skip to content

Commit 417c9b4

Browse files
committed
Improve building of EpochSettingMessage
1 parent df20a54 commit 417c9b4

File tree

3 files changed

+45
-28
lines changed

3 files changed

+45
-28
lines changed

mithril-aggregator/src/http_server/routes/epoch_routes.rs

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ fn epoch_settings(
2222
mod handlers {
2323
use crate::dependency_injection::EpochServiceWrapper;
2424
use crate::http_server::routes::reply;
25-
use crate::ToEpochSettingsMessageAdapter;
26-
use mithril_common::entities::{EpochSettings, Signer};
27-
use mithril_common::messages::ToMessageAdapter;
25+
use mithril_common::messages::{EpochSettingsMessage, SignerMessagePart};
2826
use slog_scope::{debug, warn};
2927
use std::convert::Infallible;
3028
use warp::http::StatusCode;
@@ -40,32 +38,30 @@ mod handlers {
4038
epoch_service.epoch_of_current_data(),
4139
epoch_service.next_protocol_parameters(),
4240
epoch_service.upcoming_protocol_parameters(),
41+
epoch_service.current_signers(),
42+
epoch_service.next_signers(),
4343
) {
44-
(Ok(epoch), Ok(protocol_parameters), Ok(next_protocol_parameters)) => {
45-
let epoch_settings = EpochSettings {
44+
(
45+
Ok(epoch),
46+
Ok(protocol_parameters),
47+
Ok(next_protocol_parameters),
48+
Ok(current_signers),
49+
Ok(next_signers),
50+
) => {
51+
let epoch_settings_message = EpochSettingsMessage {
4652
epoch,
4753
protocol_parameters: protocol_parameters.clone(),
4854
next_protocol_parameters: next_protocol_parameters.clone(),
49-
// TODO : create a test to check the affectation ?
50-
// TODO : create current_signers() and next_signers() in EpochService (with "cache")
51-
// TODO : How to handle unwrap ?
52-
current_signers: epoch_service
53-
.current_signers_with_stake()
54-
.unwrap()
55-
.iter()
56-
.map(|s| Signer::from(s.clone()))
57-
.collect(),
58-
next_signers: epoch_service
59-
.next_signers_with_stake()
60-
.unwrap()
61-
.iter()
62-
.map(|s| Signer::from(s.clone()))
63-
.collect(),
55+
current_signers: SignerMessagePart::from_signers(current_signers.to_vec()),
56+
next_signers: SignerMessagePart::from_signers(next_signers.to_vec()),
6457
};
65-
let epoch_settings_message = ToEpochSettingsMessageAdapter::adapt(epoch_settings);
6658
Ok(reply::json(&epoch_settings_message, StatusCode::OK))
6759
}
68-
(Err(err), _, _) | (_, Err(err), _) | (_, _, Err(err)) => {
60+
(Err(err), _, _, _, _)
61+
| (_, Err(err), _, _, _)
62+
| (_, _, Err(err), _, _)
63+
| (_, _, _, Err(err), _)
64+
| (_, _, _, _, Err(err)) => {
6965
warn!("epoch_settings::error"; "error" => ?err);
7066
Ok(reply::server_error(err))
7167
}

mithril-aggregator/src/services/epoch_service.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -346,12 +346,12 @@ impl FakeEpochService {
346346
.unwrap()
347347
.build_multi_signer();
348348
let next_protocol_multi_signer =
349-
SignerBuilder::new(current_signers_with_stake, protocol_parameters)
350-
// TODO Is it correct to use current_signers_with_stake here and not next_signers_with_stake ?
351-
SignerBuilder::new(current_signers_with_stake, protocol_parameters)
352-
.with_context(|| "Could not build protocol_multi_signer for epoch service")
353-
.unwrap()
354-
.build_multi_signer();
349+
// SignerBuilder::new(current_signers_with_stake, protocol_parameters)
350+
// TODO Is it correct to use current_signers_with_stake here and not next_signers_with_stake ?
351+
SignerBuilder::new(current_signers_with_stake, protocol_parameters)
352+
.with_context(|| "Could not build protocol_multi_signer for epoch service")
353+
.unwrap()
354+
.build_multi_signer();
355355

356356
let current_signers_with_stake = current_signers_with_stake.to_vec();
357357
let next_signers_with_stake = next_signers_with_stake.to_vec();

mithril-common/src/messages/message_parts/signer.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,11 @@ impl SignerMessagePart {
210210
Ok(signers)
211211
}
212212

213+
/// Convert a set of signers into message parts
214+
pub fn from_signers(signers: Vec<Signer>) -> Vec<Self> {
215+
signers.into_iter().map(|signer| signer.into()).collect()
216+
}
217+
213218
cfg_test_tools! {
214219
/// Return a dummy test entity (test-only).
215220
pub fn dummy() -> Self {
@@ -226,6 +231,22 @@ impl SignerMessagePart {
226231
}
227232
}
228233

234+
impl From<Signer> for SignerMessagePart {
235+
fn from(value: Signer) -> Self {
236+
Self {
237+
party_id: value.party_id,
238+
verification_key: value.verification_key.try_into().unwrap(),
239+
verification_key_signature: value
240+
.verification_key_signature
241+
.map(|k| k.try_into().unwrap()),
242+
operational_certificate: value
243+
.operational_certificate
244+
.map(|op_cert| (op_cert.try_into().unwrap())),
245+
kes_period: value.kes_period,
246+
}
247+
}
248+
}
249+
229250
impl Debug for SignerWithStakeMessagePart {
230251
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
231252
let should_be_exhaustive = f.alternate();

0 commit comments

Comments
 (0)