Skip to content

Fix aggregator stress test #2287

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion mithril-test-lab/mithril-end-to-end/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "mithril-end-to-end"
version = "0.4.67"
version = "0.4.68"
authors = { workspace = true }
edition = { workspace = true }
documentation = { workspace = true }
Expand Down
25 changes: 13 additions & 12 deletions mithril-test-lab/mithril-end-to-end/src/bin/load-aggregator/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use tokio::sync::oneshot;

use mithril_common::{
digesters::{DummyCardanoDb, DummyCardanoDbBuilder},
entities::{CardanoDbBeacon, Epoch, ProtocolParameters, SignedEntityType, SingleSignatures},
entities::{CardanoDbBeacon, Epoch, ProtocolParameters, SignedEntityType},
test_utils::MithrilFixture,
StdResult,
};
Expand Down Expand Up @@ -51,13 +51,6 @@ async fn main() -> StdResult<()> {
let signers_fixture =
payload_builder::generate_signer_data(opts.num_signers, protocol_parameters);

let mithril_stake_distribution_signatures =
payload_builder::precompute_mithril_stake_distribution_signatures(
&signers_fixture,
Duration::from_secs(180),
)
.await?;

let aggregator = aggregator_helpers::bootstrap_aggregator(
&aggregator_parameters,
&signers_fixture,
Expand All @@ -73,7 +66,6 @@ async fn main() -> StdResult<()> {
signers_fixture,
cardano_db,
reporter,
precomputed_mithril_stake_distribution_signatures: mithril_stake_distribution_signatures,
};

let scenario_counters = ScenarioCounters {
Expand Down Expand Up @@ -122,7 +114,6 @@ struct ScenarioParameters {
aggregator_parameters: AggregatorParameters,
signers_fixture: MithrilFixture,
cardano_db: DummyCardanoDb,
precomputed_mithril_stake_distribution_signatures: Vec<SingleSignatures>,
reporter: Reporter,
}

Expand Down Expand Up @@ -189,14 +180,24 @@ async fn main_scenario(
)
.await?;

info!(">> Compute the mithril stake distribution signature");
let mithril_stake_distribution_signatures =
payload_builder::compute_mithril_stake_distribution_signatures(
current_epoch,
&parameters.signers_fixture,
Duration::from_secs(180),
)
.await
.unwrap();

info!(
">> Send the Signer Signatures payloads for MithrilStakeDistribution({:?})",
current_epoch
);
parameters.reporter.start("signatures registration");
let errors = fake_signer::register_signatures_to_aggregator(
&parameters.aggregator,
&parameters.precomputed_mithril_stake_distribution_signatures,
&mithril_stake_distribution_signatures,
SignedEntityType::MithrilStakeDistribution(current_epoch),
)
.await?;
Expand Down Expand Up @@ -238,7 +239,7 @@ async fn main_scenario(
&parameters.cardano_db,
current_epoch,
&parameters.signers_fixture,
Duration::from_secs(60),
Duration::from_secs(180),
)
.await
.unwrap();
Expand Down
2 changes: 1 addition & 1 deletion mithril-test-lab/mithril-end-to-end/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ pub struct Args {
mithril_run_interval: u32,

/// Mithril era to run
#[clap(long, default_value = "thales")]
#[clap(long, default_value = "pythagoras")]
mithril_era: String,

/// Mithril next era to run
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ pub struct MainOpts {
pub num_clients: usize,

/// Mithril technical Era
#[arg(long, default_value = "thales")]
#[arg(long, default_value = "pythagoras")]
pub mithril_era: String,

/// Aggregator HTTP port
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,9 @@ pub fn generate_register_signature_message(
.collect::<Vec<_>>()
}

/// Precompute all signers single signatures for the given fixture
pub async fn precompute_mithril_stake_distribution_signatures(
/// Compute all signers single signatures for mithril stake distribution for the given fixture
pub async fn compute_mithril_stake_distribution_signatures(
epoch: Epoch,
signers_fixture: &MithrilFixture,
timeout: Duration,
) -> StdResult<Vec<SingleSignatures>> {
Expand All @@ -75,9 +76,17 @@ pub async fn precompute_mithril_stake_distribution_signatures(
let mithril_stake_distribution_message = {
let mut message = ProtocolMessage::new();
message.set_message_part(
mithril_common::entities::ProtocolMessagePartKey::NextAggregateVerificationKey,
signers_fixture.compute_and_encode_avk(),
);
mithril_common::entities::ProtocolMessagePartKey::NextAggregateVerificationKey,
signers_fixture.compute_and_encode_avk(),
);
message.set_message_part(
mithril_common::entities::ProtocolMessagePartKey::NextProtocolParameters,
signers_fixture.protocol_parameters().compute_hash(),
);
message.set_message_part(
mithril_common::entities::ProtocolMessagePartKey::CurrentEpoch,
epoch.to_string(),
);

message
};
Expand All @@ -89,12 +98,12 @@ pub async fn precompute_mithril_stake_distribution_signatures(
Ok(signatures)
},
timeout,
format!("Precompute signatures for MithrilStakeDistribution signed entity"),
format!("Precomputing signatures timeout after {timeout:?}")
format!("Compute signatures for MithrilStakeDistribution signed entity"),
format!("Computing signatures timeout after {timeout:?}")
)
}

/// Compute all signers single signatures for the given fixture
/// Compute all signers single signatures for immutable files full for the given fixture
pub async fn compute_immutable_files_signatures(
cardano_db: &DummyCardanoDb,
epoch: Epoch,
Expand Down Expand Up @@ -122,25 +131,33 @@ pub async fn compute_immutable_files_signatures(
let signers_fixture = signers_fixture.clone();

let signatures = tokio::task::spawn_blocking(move || -> Vec<SingleSignatures> {
let mithril_stake_distribution_message = {
let cardano_immutable_files_full_message = {
let mut message = ProtocolMessage::new();
message.set_message_part(ProtocolMessagePartKey::SnapshotDigest, digest);
message.set_message_part(
ProtocolMessagePartKey::NextAggregateVerificationKey,
signers_fixture.compute_and_encode_avk(),
);
message.set_message_part(
mithril_common::entities::ProtocolMessagePartKey::NextProtocolParameters,
signers_fixture.protocol_parameters().compute_hash(),
);
message.set_message_part(
mithril_common::entities::ProtocolMessagePartKey::CurrentEpoch,
epoch.to_string(),
);

message
};

signers_fixture.sign_all(&mithril_stake_distribution_message)
signers_fixture.sign_all(&cardano_immutable_files_full_message)
})
.await?;

Ok((beacon, signatures))
},
timeout,
format!("Precompute signatures for CardanoImmutableFiles signed entity"),
format!("Precomputing signatures timeout after {timeout:?}")
format!("Compute signatures for CardanoImmutableFiles signed entity"),
format!("Computing signatures timeout after {timeout:?}")
)
}