Skip to content

Commit c8f9a2c

Browse files
committed
Use next epoch protocol parameters for signer registration
1 parent 03a1a51 commit c8f9a2c

File tree

4 files changed

+28
-14
lines changed

4 files changed

+28
-14
lines changed

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

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,31 @@ mod handlers {
4040
debug!("⇄ HTTP SERVER: epoch_settings");
4141

4242
match multi_signer.read().await.get_current_beacon().await {
43-
Some(beacon) => match protocol_parameters_store
44-
.get_protocol_parameters(beacon.epoch)
45-
.await
46-
{
47-
Ok(Some(protocol_parameters)) => Ok(reply::json(
48-
&EpochSettings {
49-
epoch: beacon.epoch,
50-
protocol_parameters,
51-
},
52-
StatusCode::OK,
53-
)),
54-
Ok(None) => {
43+
Some(beacon) => match (
44+
protocol_parameters_store
45+
.get_protocol_parameters(beacon.epoch)
46+
.await,
47+
protocol_parameters_store
48+
.get_protocol_parameters(beacon.epoch + 1)
49+
.await,
50+
) {
51+
(Ok(Some(protocol_parameters)), Ok(Some(next_protocol_parameters))) => {
52+
Ok(reply::json(
53+
&EpochSettings {
54+
epoch: beacon.epoch,
55+
protocol_parameters,
56+
next_protocol_parameters,
57+
},
58+
StatusCode::OK,
59+
))
60+
}
61+
(Ok(None), Ok(Some(_))) | (Ok(Some(_)), Ok(None)) | (Ok(None), Ok(None)) => {
5562
warn!("epoch_settings::could_not_retrieve_protocol_parameters");
5663
Ok(reply::internal_server_error(
5764
"could_not_retrieve_protocol_parameters".to_string(),
5865
))
5966
}
60-
Err(err) => {
67+
(Err(err), _) | (_, Err(err)) => {
6168
warn!("epoch_settings::error"; "error" => ?err);
6269
Ok(reply::internal_server_error(err.to_string()))
6370
}

mithril-common/src/entities/epoch_settings.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@ pub struct EpochSettings {
1010
/// Current Protocol parameters
1111
#[serde(rename = "protocol")]
1212
pub protocol_parameters: ProtocolParameters,
13+
14+
/// Next Protocol parameters
15+
#[serde(rename = "next_protocol")]
16+
pub next_protocol_parameters: ProtocolParameters,
1317
}

mithril-common/src/fake_data.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,13 @@ pub fn epoch_settings() -> entities::EpochSettings {
3838

3939
// Protocol parameters
4040
let protocol_parameters = protocol_parameters();
41+
let next_protocol_parameters = protocol_parameters.clone();
4142

4243
// Epoch settings
4344
entities::EpochSettings {
4445
epoch: beacon.epoch,
4546
protocol_parameters,
47+
next_protocol_parameters,
4648
}
4749
}
4850

mithril-signer/src/runtime/state_machine.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ impl StateMachine {
215215
let beacon = self.runner.get_current_beacon().await?;
216216
self.runner.update_stake_distribution(beacon.epoch).await?;
217217
self.runner
218-
.register_signer_to_aggregator(beacon.epoch, &epoch_settings.protocol_parameters)
218+
.register_signer_to_aggregator(beacon.epoch, &epoch_settings.next_protocol_parameters)
219219
.await?;
220220

221221
Ok(RegisteredState { beacon })
@@ -304,6 +304,7 @@ mod tests {
304304
let epoch_settings = EpochSettings {
305305
epoch: Epoch(3),
306306
protocol_parameters: fake_data::protocol_parameters(),
307+
next_protocol_parameters: fake_data::protocol_parameters(),
307308
};
308309
let known_epoch = Epoch(4);
309310
runner

0 commit comments

Comments
 (0)