diff --git a/.gitignore b/.gitignore index 0d4ee0c481..4ef7878add 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,9 @@ **/.direnv **/*.bkp *.sqlite -results.csv \ No newline at end of file +results.csv +.github/workflows/preserve-build-and-test-self-hosted.yml +.github/workflows/preserve-build-and-test.yml +config/ValidatorConfigOutput +scripts/aws_ecs_nginx_benchmarks.sh +scripts/preserve_ci_ecs_benchmarks.sh \ No newline at end of file diff --git a/config/ValidatorConfigExample b/config/ValidatorConfigExample index 7984083fdd..3170b75f9f 100644 --- a/config/ValidatorConfigExample +++ b/config/ValidatorConfigExample @@ -1,28 +1,32 @@ ValidatorConfig { - public_key: BLSPubKey { - pub_key: VerKey( - ( - QuadExtField( - 2264797523581107490935262917175769123227923636811928330606075281145117212394 - + 15807017392833049888165434456991157794698032464874424842715555348468160607934 * u - ), - QuadExtField( - 7996517616082121122160563552650547601395271017260499735456299700133762512689 - + 7504045709281061282278228438613345070383424761478787301859187055302953740948 * u - ), - QuadExtField( - 1515973040548822760825076242090160370742046237881440422068330135941139244581 - + 20251846261653098602911417004145145971080304248810966341160788194007704966108 * u - ) - ) + public_key: VerKey( + ( + QuadExtField(2264797523581107490935262917175769123227923636811928330606075281145117212394 + 15807017392833049888165434456991157794698032464874424842715555348468160607934 * u), + QuadExtField(7996517616082121122160563552650547601395271017260499735456299700133762512689 + 7504045709281061282278228438613345070383424761478787301859187055302953740948 * u), + QuadExtField(1515973040548822760825076242090160370742046237881440422068330135941139244581 + 20251846261653098602911417004145145971080304248810966341160788194007704966108 * u) + ) + ), + private_key: SignKey( + BigInt( + [3505488234151006356, 6655477166151225138, 3291219027844407676, 2153641080015542578] + ) + ), + stake_value: 1, + state_key_pair: StateKeyPair( + KeyPair { + sk: SignKey( + BigInt( + [2822822805887490846, 6664316196088353173, 4926510007447087464, 116097479308258694] + ) + ), + vk: VerKey( + Projective { + x: BigInt([11315198235793138814, 4744451806709910489, 6921831025042192557, 1125393823825936625]), + y: BigInt([13035879815613524256, 18225673961538637854, 12006860967936477969, 1516668567229692859]), + t: BigInt([13450777528397789701, 12242009376162249168, 12596256366242272750, 3368076418495976469]), + z: BigInt([10465708325245823445, 13967918689717629445, 14943426723808572731, 621075342718756551]) + } + ) + } ) - }, - private_key: BLSPrivKey { - priv_key: SignKey( - BigInt( - [3505488234151006356, 6655477166151225138, 3291219027844407676, 2153641080015542578] - ) - ) - }, - stake_value: 1 -} + } \ No newline at end of file diff --git a/crates/examples/infra/mod.rs b/crates/examples/infra/mod.rs index ce8f461ed1..405fe9642b 100644 --- a/crates/examples/infra/mod.rs +++ b/crates/examples/infra/mod.rs @@ -64,7 +64,7 @@ use std::{collections::BTreeSet, sync::Arc}; use std::{fs, time::Instant}; use std::{num::NonZeroUsize, str::FromStr}; use surf_disco::Url; -use tracing::{error, info, warn}; +use tracing::{debug, error, info, warn}; use versioned_binary_serialization::version::StaticVersionType; #[derive(Debug, Clone)] @@ -172,6 +172,22 @@ pub fn read_orchestrator_init_config() -> ( .help("Sets the url of the orchestrator") .required(false), ) + .arg( + Arg::new("webserver_url") + .short('w') + .long("webserver_url") + .value_name("URL") + .help("Sets the url of the webserver") + .required(false), + ) + .arg( + Arg::new("da_webserver_url") + .short('a') + .long("da_webserver_url") + .value_name("URL") + .help("Sets the url of the da webserver") + .required(false), + ) .get_matches(); if let Some(config_file_string) = matches.get_one::("config_file") { @@ -212,6 +228,20 @@ pub fn read_orchestrator_init_config() -> ( if let Some(orchestrator_url_string) = matches.get_one::("orchestrator_url") { orchestrator_url = Url::parse(orchestrator_url_string).unwrap(); } + if let Some(webserver_url_string) = matches.get_one::("webserver_url") { + let updated_web_server_config = WebServerConfig { + url: Url::parse(webserver_url_string).unwrap(), + wait_between_polls: config.web_server_config.unwrap().wait_between_polls, + }; + config.web_server_config = Some(updated_web_server_config); + } + if let Some(da_webserver_url_string) = matches.get_one::("da_webserver_url") { + let updated_da_web_server_config = WebServerConfig { + url: Url::parse(da_webserver_url_string).unwrap(), + wait_between_polls: config.da_web_server_config.unwrap().wait_between_polls, + }; + config.da_web_server_config = Some(updated_da_web_server_config); + } (config, orchestrator_url) } @@ -260,7 +290,7 @@ pub async fn run_orchestrator< >( OrchestratorArgs { url, config }: OrchestratorArgs, ) { - error!("Starting orchestrator",); + println!("Starting orchestrator",); let _result = hotshot_orchestrator::run_orchestrator::< TYPES::SignatureKey, TYPES::ElectionConfigType, @@ -540,10 +570,10 @@ pub trait RunDA< let mut total_latency = 0; let mut num_latency = 0; - error!("Sleeping for {start_delay_seconds} seconds before starting hotshot!"); + debug!("Sleeping for {start_delay_seconds} seconds before starting hotshot!"); async_sleep(Duration::from_secs(start_delay_seconds)).await; - error!("Starting HotShot example!"); + debug!("Starting HotShot example!"); let start = Instant::now(); let mut event_stream = context.get_event_stream(); @@ -638,7 +668,7 @@ pub trait RunDA< failed_num_views += 1; warn!("Timed out in view {:?}", view_number); } - _ => {} + _ => {} // mostly DA proposal } } } @@ -647,19 +677,21 @@ pub trait RunDA< let consensus = consensus_lock.read().await; let total_num_views = usize::try_from(consensus.locked_view.get_u64()).unwrap(); // When posting to the orchestrator, note that the total number of views also include un-finalized views. - error!("Failed views: {failed_num_views}, Total views: {total_num_views}, num_successful_commits: {num_successful_commits}"); + println!("[{node_index}]: Total views: {total_num_views}, Failed views: {failed_num_views}, num_successful_commits: {num_successful_commits}"); // +2 is for uncommitted views assert!(total_num_views <= (failed_num_views + num_successful_commits + 2)); // Output run results let total_time_elapsed = start.elapsed(); // in seconds - error!("[{node_index}]: {rounds} rounds completed in {total_time_elapsed:?} - Total transactions sent: {total_transactions_sent} - Total transactions committed: {total_transactions_committed} - Total commitments: {num_successful_commits}"); + println!("[{node_index}]: {rounds} rounds completed in {total_time_elapsed:?} - Total transactions sent: {total_transactions_sent} - Total transactions committed: {total_transactions_committed} - Total commitments: {num_successful_commits}"); if total_transactions_committed != 0 { // extra 8 bytes for timestamp let throughput_bytes_per_sec = total_transactions_committed * (transaction_size_in_bytes + 8) / total_time_elapsed.as_secs(); + let avg_latency_in_sec = total_latency / num_latency; + println!("[{node_index}]: throughput: {throughput_bytes_per_sec} bytes/sec, avg_latency: {avg_latency_in_sec} sec."); BenchResults { - avg_latency_in_sec: total_latency / num_latency, + avg_latency_in_sec, num_latency, minimum_latency_in_sec: minimum_latency, maximum_latency_in_sec: maximum_latency, @@ -1056,7 +1088,7 @@ pub async fn main_entry_point< setup_logging(); setup_backtrace(); - error!("Starting validator"); + debug!("Starting validator"); // see what our public identity will be let public_ip = match args.public_ip { @@ -1128,13 +1160,13 @@ pub async fn main_entry_point< } if let NetworkConfigSource::Orchestrator = source { - error!("Waiting for the start command from orchestrator"); + debug!("Waiting for the start command from orchestrator"); orchestrator_client .wait_for_all_nodes_ready(run_config.clone().node_index) .await; } - error!("Starting HotShot"); + println!("Starting HotShot"); let bench_results = run .run_hotshot( hotshot, diff --git a/crates/orchestrator/run-config.toml b/crates/orchestrator/run-config.toml index 905184591d..69dd92e285 100644 --- a/crates/orchestrator/run-config.toml +++ b/crates/orchestrator/run-config.toml @@ -1,4 +1,4 @@ -rounds = 100 +rounds = 10 transactions_per_round = 10 transaction_size = 1000 node_index = 0 @@ -77,25 +77,25 @@ url = "http://localhost:9001" [web_server_config.wait_between_polls] secs = 0 -nanos = 100000000 # 10 ms +nanos = 10_000_000 [da_web_server_config.wait_between_polls] secs = 0 -nanos = 100000000 # 10 ms +nanos = 10_000_000 +[config.view_sync_timeout] +secs = 2 +nanos = 0 + [config.data_request_delay] secs = 0 -nanos = 2000000000 # 200 ms +nanos = 200_000_000 [config.propose_min_round_time] secs = 0 nanos = 0 -[config.view_sync_timeout] -secs = 2 -nanos = 0 - # TODO (Keyao) Clean up configuration parameters. # [config.propose_max_round_time] diff --git a/crates/orchestrator/src/lib.rs b/crates/orchestrator/src/lib.rs index 03b8ea98b5..b1af27e658 100644 --- a/crates/orchestrator/src/lib.rs +++ b/crates/orchestrator/src/lib.rs @@ -11,6 +11,7 @@ use hotshot_types::{ traits::{election::ElectionConfig, signature_key::SignatureKey}, PeerConfig, }; +use std::fs::OpenOptions; use std::{ collections::HashSet, io, @@ -125,8 +126,14 @@ impl total_num_views: self.bench_results.total_num_views, failed_num_views: self.bench_results.failed_num_views, }; + // Open the CSV file in append mode + let results_csv_file = OpenOptions::new() + .create(true) + .append(true) // Open in append mode + .open("scripts/benchmarks_results/results.csv") + .unwrap(); // Open a file for writing - let mut wtr = Writer::from_path("scripts/benchmarks_results/results.csv").unwrap(); + let mut wtr = Writer::from_writer(results_csv_file); let _ = wtr.serialize(output_csv); let _ = wtr.flush(); println!("Results successfully saved in scripts/benchmarks_results/results.csv"); @@ -266,7 +273,7 @@ where } self.pub_posted.insert(node_index); - // The guess is the first extra 8 bytes are from orchestrator serialization + // The guess is the first extra 12 bytes are from orchestrator serialization pubkey.drain(..12); let register_pub_key_with_stake = PeerConfig::::from_bytes(pubkey).unwrap(); self.config.config.known_nodes_with_stake[node_index as usize] = diff --git a/docker/orchestrator-webserver.Dockerfile b/docker/orchestrator-webserver.Dockerfile index 9868ae28a5..b5961c7c94 100644 --- a/docker/orchestrator-webserver.Dockerfile +++ b/docker/orchestrator-webserver.Dockerfile @@ -15,5 +15,4 @@ ENV RUST_LOG="warn" # log format. JSON no ansi ENV RUST_LOG_FORMAT="json" -ENTRYPOINT ["tini", "--"] -CMD ["orchestrator-webserver"] +ENTRYPOINT ["orchestrator-webserver"] diff --git a/docker/validator-webserver-local.Dockerfile b/docker/validator-webserver-local.Dockerfile new file mode 100644 index 0000000000..02a51aad1a --- /dev/null +++ b/docker/validator-webserver-local.Dockerfile @@ -0,0 +1,17 @@ +FROM ubuntu:jammy + +RUN apt-get update \ + && apt-get install -y curl libcurl4 wait-for-it tini \ + && rm -rf /var/lib/apt/lists/* + +ARG ASYNC_EXECUTOR=async-std + +COPY ./target/${ASYNC_EXECUTOR}/debug/examples/validator-webserver /usr/local/bin/validator-webserver + +# logging +ENV RUST_LOG="warn" + +# log format. JSON no ansi +ENV RUST_LOG_FORMAT="json" + +ENTRYPOINT ["validator-webserver"] diff --git a/docker/validator-webserver.Dockerfile b/docker/validator-webserver.Dockerfile index f6fb63f568..88706bc568 100644 --- a/docker/validator-webserver.Dockerfile +++ b/docker/validator-webserver.Dockerfile @@ -15,5 +15,4 @@ ENV RUST_LOG="warn" # log format. JSON no ansi ENV RUST_LOG_FORMAT="json" -ENTRYPOINT ["tini", "--"] -CMD ["validator-webserver"] +ENTRYPOINT ["validator-webserver"] diff --git a/docker/webserver.Dockerfile b/docker/webserver.Dockerfile index 51773d8ff2..cf6c275e46 100644 --- a/docker/webserver.Dockerfile +++ b/docker/webserver.Dockerfile @@ -15,5 +15,4 @@ ENV RUST_LOG="warn" # log format. JSON no ansi ENV RUST_LOG_FORMAT="json" -ENTRYPOINT ["tini", "--"] -CMD ["webserver"] +ENTRYPOINT ["webserver"] diff --git a/scripts/.gitignore b/scripts/.gitignore index f0e7c1f5f2..b95a24cbf3 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -1,2 +1,3 @@ __pycache__ -*.output \ No newline at end of file +*.output +benchmarks_results/results.csv \ No newline at end of file diff --git a/scripts/aws_ecs_benchmarks.sh b/scripts/aws_ecs_benchmarks.sh new file mode 100755 index 0000000000..9ee9f671a4 --- /dev/null +++ b/scripts/aws_ecs_benchmarks.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +source "$HOME/.cargo/env" + +# assign local ip +ip=`curl http://169.254.169.254/latest/meta-data/local-ipv4` +webserver_url=http://"$ip":9000 +da_webserver_url=http://"$ip":9001 +orchestrator_url=http://"$ip":4444 + +# build +just async_std build +sleep 30s + +# docker build and push +docker build . -f ./docker/validator-webserver-local.Dockerfile -t ghcr.io/espressosystems/hotshot/validator-webserver:main-async-std +docker push ghcr.io/espressosystems/hotshot/validator-webserver:main-async-std + +# ecs deploy +ecs deploy --region us-east-2 hotshot hotshot_centralized -i centralized ghcr.io/espressosystems/hotshot/validator-webserver:main-async-std +ecs deploy --region us-east-2 hotshot hotshot_centralized -c centralized ${orchestrator_url} + +for total_nodes in 10 50 100 +do + for da_committee_size in 10 50 100 + do + if [ $da_committee_size -le $total_nodes ] + then + for transactions_per_round in 1 10 50 100 + do + for transaction_size in 512 4096 #1000000 20000000 + do + rounds=100 + # start webserver + just async_std example webserver -- http://0.0.0.0:9000 & + just async_std example webserver -- http://0.0.0.0:9001 & + sleep 1m + + # start orchestrator + just async_std example orchestrator-webserver -- --config_file ./crates/orchestrator/run-config.toml \ + --orchestrator_url http://0.0.0.0:4444 \ + --webserver_url ${webserver_url} \ + --da_webserver_url ${da_webserver_url} \ + --total_nodes ${total_nodes} \ + --da_committee_size ${da_committee_size} \ + --transactions_per_round ${transactions_per_round} \ + --transaction_size ${transaction_size} \ + --rounds ${rounds} \ + --commit_sha test & + sleep 30 + + # start validators + ecs scale --region us-east-2 hotshot hotshot_centralized ${total_nodes} --timeout -1 + sleep $(($rounds + $total_nodes)) + + # kill them + ecs scale --region us-east-2 hotshot hotshot_centralized 0 --timeout -1 + sleep 1m + for pid in $(ps -ef | grep "orchestrator" | awk '{print $2}'); do kill -9 $pid; done + for pid in $(ps -ef | grep "webserver" | awk '{print $2}'); do kill -9 $pid; done + done + done + fi + done +done diff --git a/scripts/benchmarks_results/results.csv b/scripts/benchmarks_results/results.csv deleted file mode 100644 index e16f3d5c72..0000000000 --- a/scripts/benchmarks_results/results.csv +++ /dev/null @@ -1,2 +0,0 @@ -commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views -test,100,100,10,1016,100,hotshot::traits::election::static_committee::StaticElectionConfig,1,0,3,17576,519,30,100,0 diff --git a/scripts/benchmarks_results/results_init_run.csv b/scripts/benchmarks_results/results_init_run.csv new file mode 100644 index 0000000000..2e27b3af0a --- /dev/null +++ b/scripts/benchmarks_results/results_init_run.csv @@ -0,0 +1,98 @@ +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,1,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,22,1,48,26400,2500,50,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,10,10,1,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,2,1,6,7022,532,41,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,10,10,1,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,2,1,7,58650,542,38,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,10,10,10,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,15,1,21,3313,251,40,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,10,10,10,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,14,3,20,26569,252,39,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,10,10,50,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,5,3,8,3577,271,41,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,10,10,50,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,5,3,8,28475,277,40,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,10,10,100,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,3,2,6,3644,283,41,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,10,10,100,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,3,2,6,30948,286,39,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,1,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,22,1,50,26865,2595,51,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,1,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,24,1,53,206646,2764,56,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,10,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,24,2,47,4213,391,49,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,10,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,24,1,48,33231,396,50,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,50,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,12,3,31,4510,410,48,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,50,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,13,3,32,33735,402,49,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,100,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,10,3,28,4587,417,48,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,10,100,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,11,3,29,34490,411,50,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,50,1,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,18,1,40,13520,1434,56,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,50,1,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,18,1,40,106493,1528,59,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,50,10,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,22,1,30,2640,275,55,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,50,10,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,22,1,30,22762,310,56,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,50,50,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,7,4,10,2640,275,55,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,50,50,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,7,4,9,20788,273,55,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,50,100,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,4,3,7,2832,295,56,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,50,50,100,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,4,3,7,23377,307,54,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,10,1,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,32,2,76,18438,2689,77,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,10,1,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,36,2,85,143967,3046,87,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,10,10,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,30,2,41,2773,394,76,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,10,10,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,29,3,41,22698,414,76,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,10,50,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,9,5,13,2054,284,74,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,10,50,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,10,4,13,16069,297,76,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,10,100,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,6,4,9,2112,300,75,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,10,100,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,6,4,9,16285,301,76,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,50,1,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,38,2,83,15920,2563,85,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,50,1,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,42,3,96,123317,2909,98,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,50,10,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,33,3,46,2760,434,83,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,50,10,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,35,3,48,20843,441,87,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,50,50,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,11,4,14,1892,301,84,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,50,50,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,11,5,15,14196,290,84,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,50,100,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,7,4,9,1905,296,82,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,50,100,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,7,5,10,13659,289,88,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,100,1,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,36,3,91,12775,2347,97,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,100,1,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,41,3,106,96191,2620,112,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,100,10,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,37,3,52,2095,373,94,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,100,10,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,37,3,54,17083,403,98,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,100,50,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,13,5,16,1600,297,98,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,100,50,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,13,5,17,11962,288,100,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,100,100,528,100,hotshot::traits::election::static_committee::StaticElectionConfig,8,4,11,1667,300,95,99,0 +commit_sha,total_nodes,da_committee_size,transactions_per_round,transaction_size,rounds,leader_election_type,avg_latency_in_sec,minimum_latency_in_sec,maximum_latency_in_sec,throughput_bytes_per_sec,total_transactions_committed,total_time_elapsed_in_sec,total_num_views,failed_num_views +test,100,100,100,4112,100,hotshot::traits::election::static_committee::StaticElectionConfig,8,6,11,13014,307,97,99,0 diff --git a/scripts/benchmarks.sh b/scripts/local_benchmarks.sh similarity index 100% rename from scripts/benchmarks.sh rename to scripts/local_benchmarks.sh