From 52da6ca298e8e62ccd1639f985c79548d8c1fe2b Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Fri, 29 Nov 2024 15:34:10 -0300
Subject: [PATCH 01/80] script that watches balance of account
---
Makefile | 6 ++++++
flamegraph.sh | 13 +++++++++++++
2 files changed, 19 insertions(+)
create mode 100644 flamegraph.sh
diff --git a/Makefile b/Makefile
index 5412ccfeaf..f292d94eef 100644
--- a/Makefile
+++ b/Makefile
@@ -105,3 +105,9 @@ clean-hive-logs: ## ๐งน Clean Hive logs
loc:
cargo run -p loc
+
+flamegraph:
+ sudo -E CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729
+
+test-load:
+ ethrex_l2 test load --path ./test_data/private_keys.txt -i 1000 -v --value 10000000 --to 0xFCbaC0713ACf16708aB6BC977227041FA1BC618D
diff --git a/flamegraph.sh b/flamegraph.sh
new file mode 100644
index 0000000000..cb853f1c00
--- /dev/null
+++ b/flamegraph.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+output=$(cast balance 0xFCbaC0713ACf16708aB6BC977227041FA1BC618D --rpc-url=http://localhost:1729 2>&1)
+end_val=$((172 * 1000 * 10000000))
+echo "ini $output"
+echo "end $end_val"
+while [[ $output -le $end_val ]]; do
+ sleep 5
+ output=$(cast balance 0xFCbaC0713ACf16708aB6BC977227041FA1BC618D --rpc-url=http://localhost:1729 2>&1)
+ echo "out $output"
+done
+
+echo "fin $output"
From 441fc6a5cfb54cb7e5dadf7e4d4ef1dfa27eb5ed Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Mon, 2 Dec 2024 10:34:38 -0300
Subject: [PATCH 02/80] Run flamegraph reporting in Github CI
---
.github/scripts/flamegraph.sh | 24 ++++++++++++++
.github/workflows/flamegraph_reporter.yaml | 37 ++++++++++++++++++++++
2 files changed, 61 insertions(+)
create mode 100644 .github/scripts/flamegraph.sh
create mode 100644 .github/workflows/flamegraph_reporter.yaml
diff --git a/.github/scripts/flamegraph.sh b/.github/scripts/flamegraph.sh
new file mode 100644
index 0000000000..4c5ecd1f13
--- /dev/null
+++ b/.github/scripts/flamegraph.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
+end_val=$((172 * 1000 * 10000000))
+
+echo "Running ethrex..."
+CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
+echo "Sleeping 10s before running test..."
+sleep 10
+echo "Sending to account $account"
+ethrex_l2 test load --path ./test_data/private_keys.txt -i 1000 -v --value 10000000 --to $account
+
+echo "Monitoring..."
+output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
+echo "ini $output"
+echo "end $end_val"
+while [[ $output -le $end_val ]]; do
+ sleep 5
+ output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
+ echo "out $output"
+done
+echo "Balance of $output reached, killing process ethrex"
+
+sudo pkill ethrex && while pgrep -l cargo flamegraph; do sleep 1;done;
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
new file mode 100644
index 0000000000..99df06008c
--- /dev/null
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -0,0 +1,37 @@
+name: Daily Flamegraph Reporter
+
+on:
+ push:
+ branches: [ "main" ]
+ pull_request:
+ branches: [ "**" ]
+ workflow_dispatch:
+
+env:
+ RUST_VERSION: 1.81.0
+
+jobs:
+ flamegraph:
+ name: Generate Flamegraph for load test
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@v4
+
+ - name: Rustup toolchain install
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ toolchain: ${{ env.RUST_VERSION }}
+
+ - name: Install flamegraph
+ run: cargo install flamegraph
+
+ - name: Install ethrex_l2 cli
+ run: cargo install --path cmd/ethrex_l2
+
+ - name: Caching
+ uses: Swatinem/rust-cache@v2
+
+ - name: Generate Flamegraph for Ethrex
+ run: |
+ sh .github/scripts/flamegraph.sh
From 1ce321d37255d9c6c69e60ed14ab1f3c1a378327 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Mon, 2 Dec 2024 12:07:08 -0300
Subject: [PATCH 03/80] feat(cli/ethrex_l2): allow --default parameter in
"ethrex_l2 config create"
---
cmd/ethrex_l2/src/commands/config.rs | 24 ++++++++++++----
cmd/ethrex_l2/src/config.rs | 9 ++++--
cmd/ethrex_l2/src/utils/config/mod.rs | 41 ++++++++++++++++++++++++---
3 files changed, 61 insertions(+), 13 deletions(-)
diff --git a/cmd/ethrex_l2/src/commands/config.rs b/cmd/ethrex_l2/src/commands/config.rs
index abe1f7cdf6..28f7e80b4c 100644
--- a/cmd/ethrex_l2/src/commands/config.rs
+++ b/cmd/ethrex_l2/src/commands/config.rs
@@ -1,3 +1,4 @@
+use crate::utils::config::default_config;
use crate::utils::{
config::{
config_file_names, config_path, config_path_interactive_selection, confirm,
@@ -28,7 +29,11 @@ pub(crate) enum Command {
opts: Box,
},
#[clap(about = "Create a new config.")]
- Create { config_name: String },
+ Create {
+ config_name: String,
+ #[arg(long = "default", required = false)]
+ default: bool,
+ },
#[clap(about = "Set the config to use.")]
Set {
#[arg(
@@ -99,7 +104,7 @@ impl Command {
let (new_config, config_path) = if let Some(ref config_name) = config_name {
let config_path = config_path(config_name)?;
if !config_path.exists() {
- return confirm_config_creation(config_name.clone()).await;
+ return confirm_config_creation(config_name.clone(), false).await;
}
let new_config = if opts.is_empty() {
edit_config_by_name_interactively(&config_path)?
@@ -117,7 +122,10 @@ impl Command {
}
set_new_config(config_path.clone(), show).await?;
}
- Command::Create { config_name } => {
+ Command::Create {
+ config_name,
+ default,
+ } => {
let config_path = config_path(&config_name)?;
if config_path.exists() {
let override_confirmation = confirm(CONFIG_OVERRIDE_PROMPT_MSG)?;
@@ -126,7 +134,11 @@ impl Command {
return Ok::<(), eyre::Error>(());
}
}
- let config = prompt_config()?;
+ let config = if default {
+ default_config()?
+ } else {
+ prompt_config()?
+ };
let toml_config = toml::to_string_pretty(&config)?;
println!(
"Config created at: {}\n{toml_config}",
@@ -138,7 +150,7 @@ impl Command {
let config_path_to_select = if let Some(config_name) = config_name {
let config_path_to_select = config_path(&config_name)?;
if !config_path_to_select.exists() {
- return confirm_config_creation(config_name).await;
+ return confirm_config_creation(config_name, false).await;
}
config_path_to_select
} else {
@@ -154,7 +166,7 @@ impl Command {
let config_to_display_path = if let Some(config_name) = config_name {
let config_to_display_path = config_path(&config_name)?;
if !config_to_display_path.exists() {
- return confirm_config_creation(config_name).await;
+ return confirm_config_creation(config_name, false).await;
}
config_to_display_path
} else {
diff --git a/cmd/ethrex_l2/src/config.rs b/cmd/ethrex_l2/src/config.rs
index b951f47878..1705b38abb 100644
--- a/cmd/ethrex_l2/src/config.rs
+++ b/cmd/ethrex_l2/src/config.rs
@@ -71,9 +71,12 @@ pub async fn load_selected_config() -> eyre::Result {
DEFAULT_CONFIG_NAME.to_owned(),
)?
.to_owned();
- commands::config::Command::Create { config_name }
- .run()
- .await?;
+ commands::config::Command::Create {
+ config_name,
+ default: false,
+ }
+ .run()
+ .await?;
}
}
let config = std::fs::read_to_string(config_path).context("Failed to read config file")?;
diff --git a/cmd/ethrex_l2/src/utils/config/mod.rs b/cmd/ethrex_l2/src/utils/config/mod.rs
index 5c405db541..7a75d244ee 100644
--- a/cmd/ethrex_l2/src/utils/config/mod.rs
+++ b/cmd/ethrex_l2/src/utils/config/mod.rs
@@ -135,13 +135,46 @@ pub fn prompt_config() -> eyre::Result {
Ok(prompted_config)
}
-pub async fn confirm_config_creation(config_name: String) -> eyre::Result<()> {
+pub fn default_config() -> eyre::Result {
+ let prompted_config = EthrexL2Config {
+ network: NetworkConfig {
+ l1_rpc_url: DEFAULT_L1_RPC_URL.into(),
+ l1_chain_id: DEFAULT_L1_CHAIN_ID,
+ l2_rpc_url: DEFAULT_L2_RPC_URL.into(),
+ l2_chain_id: DEFAULT_L2_CHAIN_ID,
+ l2_explorer_url: DEFAULT_L2_EXPLORER_URL.into(),
+ l1_explorer_url: DEFAULT_L1_EXPLORER_URL.into(),
+ },
+ wallet: WalletConfig {
+ private_key: {
+ let prompted_private_key = format!(
+ "0x{}",
+ hex::encode(
+ SecretKey::from_slice(DEFAULT_PRIVATE_KEY.as_bytes())?.secret_bytes(),
+ )
+ );
+ SecretKey::from_slice(H256::from_str(&prompted_private_key[2..])?.as_fixed_bytes())?
+ },
+ address: DEFAULT_ADDRESS,
+ },
+ contracts: ContractsConfig {
+ common_bridge: DEFAULT_CONTRACTS_COMMON_BRIDGE_ADDRESS,
+ on_chain_proposer: DEFAULT_CONTRACTS_ON_CHAIN_PROPOSER_ADDRESS,
+ },
+ };
+ Ok(prompted_config)
+}
+
+pub async fn confirm_config_creation(config_name: String, default: bool) -> eyre::Result<()> {
let create_confirmation = confirm(CONFIG_CREATE_PROMPT_MSG)?;
if create_confirmation {
Box::pin(async {
- commands::config::Command::Create { config_name }
- .run()
- .await
+ commands::config::Command::Create {
+ config_name,
+ default,
+ }
+ .run()
+ .await
})
.await
} else {
From f9cb7bcfe262b9389e9feeac1f761bc225eb8c85 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Mon, 2 Dec 2024 12:09:57 -0300
Subject: [PATCH 04/80] fix: create ethrex_l2 config in
flamegraph_reporter.yaml
---
.github/scripts/flamegraph.sh | 8 ++++----
.github/workflows/flamegraph_reporter.yaml | 18 ++++++++++++++----
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/.github/scripts/flamegraph.sh b/.github/scripts/flamegraph.sh
index 4c5ecd1f13..0810f40de3 100644
--- a/.github/scripts/flamegraph.sh
+++ b/.github/scripts/flamegraph.sh
@@ -3,10 +3,10 @@
account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
end_val=$((172 * 1000 * 10000000))
-echo "Running ethrex..."
-CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
-echo "Sleeping 10s before running test..."
-sleep 10
+#echo "Running ethrex..."
+#CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
+#echo "Sleeping 10s before running test..."
+#sleep 10
echo "Sending to account $account"
ethrex_l2 test load --path ./test_data/private_keys.txt -i 1000 -v --value 10000000 --to $account
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 99df06008c..3ad4eb298c 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -23,15 +23,25 @@ jobs:
with:
toolchain: ${{ env.RUST_VERSION }}
+ - name: Caching
+ uses: Swatinem/rust-cache@v2
+
- name: Install flamegraph
run: cargo install flamegraph
- name: Install ethrex_l2 cli
- run: cargo install --path cmd/ethrex_l2
+ run: |
+ cargo install --path cmd/ethrex_l2
+ ethrex_l2 config create default --default
+ ethrex_l2 config set default
- - name: Caching
- uses: Swatinem/rust-cache@v2
+ - name: Install Foundry
+ uses: foundry-rs/foundry-toolchain@v1
- name: Generate Flamegraph for Ethrex
+ shell: bash
run: |
- sh .github/scripts/flamegraph.sh
+ CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release --bin ethrex --features dev &&
+ CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
+ sleep 10 &&
+ bash .github/scripts/flamegraph.sh
From d3679ece3ce68973ed086447e8ff8d90dbe6f4a1 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Mon, 2 Dec 2024 14:38:38 -0300
Subject: [PATCH 05/80] Make load test retry if connection failed
---
.github/scripts/flamegraph.sh | 21 +++---
.github/workflows/flamegraph_reporter.yaml | 48 ++++++++++---
cmd/ethrex_l2/src/commands/test.rs | 78 ++++++++++++++--------
3 files changed, 100 insertions(+), 47 deletions(-)
diff --git a/.github/scripts/flamegraph.sh b/.github/scripts/flamegraph.sh
index 0810f40de3..08eebcac47 100644
--- a/.github/scripts/flamegraph.sh
+++ b/.github/scripts/flamegraph.sh
@@ -1,24 +1,19 @@
#!/bin/bash
+iterations=10
+value=10000000
account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
-end_val=$((172 * 1000 * 10000000))
+end_val=$((172 * $iterations * $value))
-#echo "Running ethrex..."
-#CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
-#echo "Sleeping 10s before running test..."
-#sleep 10
echo "Sending to account $account"
-ethrex_l2 test load --path ./test_data/private_keys.txt -i 1000 -v --value 10000000 --to $account
+ethrex_l2 test load --path ./test_data/private_keys.txt -i $iterations -v --value $value --to $account
-echo "Monitoring..."
+echo "Waiting for transactions to be processed..."
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
-echo "ini $output"
-echo "end $end_val"
while [[ $output -le $end_val ]]; do
sleep 5
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
- echo "out $output"
done
-echo "Balance of $output reached, killing process ethrex"
-
-sudo pkill ethrex && while pgrep -l cargo flamegraph; do sleep 1;done;
+echo "Done. Balance of $output reached, killing process ethrex"
+sudo pkill ethrex && while pgrep -l "cargo-flamegraph"; do sleep 1;done;
+echo "ethrex killed"
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 3ad4eb298c..63921cbe6a 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -26,8 +26,18 @@ jobs:
- name: Caching
uses: Swatinem/rust-cache@v2
+ - name: Change perf settings
+ run: |
+ sudo sysctl kernel.perf_event_paranoid=-1
+ sudo perf list hw
+
- name: Install flamegraph
- run: cargo install flamegraph
+ run: |
+ cargo install flamegraph
+ cargo install inferno
+
+ - name: Install Foundry
+ uses: foundry-rs/foundry-toolchain@v1
- name: Install ethrex_l2 cli
run: |
@@ -35,13 +45,35 @@ jobs:
ethrex_l2 config create default --default
ethrex_l2 config set default
- - name: Install Foundry
- uses: foundry-rs/foundry-toolchain@v1
+ - name: Build ethrex
+ run: CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release --bin ethrex --features dev
- - name: Generate Flamegraph for Ethrex
+ - name: Generate Flamegraph data for Ethrex
shell: bash
run: |
- CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release --bin ethrex --features dev &&
- CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
- sleep 10 &&
- bash .github/scripts/flamegraph.sh
+ CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
+ echo "waiting to execute load test..."
+ sleep 30 &&
+ echo "executing load test..."
+ bash .github/scripts/flamegraph.sh &&
+ echo "Load test finished"
+
+ - name: Generate SVG
+ shell: bash
+ run: |
+ perf script -v -i perf.data > stack.data
+ inferno-collapse-perf < stack.data > collapsed.data
+ inferno-flamegraph < collapsed.data > flamegraph.svg
+ file flamegraph.svg
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: perf.data
+ path: ./perf.data
+
+ - name: Upload artifacts - flamegraph.svg
+ uses: actions/upload-artifact@v4
+ with:
+ name: flamegraph.svg
+ path: ./flamegraph.svg
diff --git a/cmd/ethrex_l2/src/commands/test.rs b/cmd/ethrex_l2/src/commands/test.rs
index 3551fa423e..8be1b4928d 100644
--- a/cmd/ethrex_l2/src/commands/test.rs
+++ b/cmd/ethrex_l2/src/commands/test.rs
@@ -115,6 +115,25 @@ async fn transfer_from(
retries
}
+async fn test_connection(cfg: EthrexL2Config) -> bool {
+ let client = EthClient::new(&cfg.network.l2_rpc_url);
+ let mut retries = 0;
+ while retries < 50 {
+ match client.get_chain_id().await {
+ Ok(_) => {
+ return true;
+ }
+ Err(err) => {
+ println!("Connection to server failed: {err}, retrying ({retries}/50)");
+ retries += 1;
+ sleep(std::time::Duration::from_secs(30));
+ }
+ }
+ }
+ println!("Failed to establish connection to the server");
+ false
+}
+
impl Command {
pub async fn run(self, cfg: EthrexL2Config) -> eyre::Result<()> {
match self {
@@ -125,34 +144,41 @@ impl Command {
iterations,
verbose,
} => {
- if let Ok(lines) = read_lines(path) {
- let to_address = match to {
- Some(address) => address,
- None => Address::random(),
- };
- println!("Sending to: {to_address:#x}");
-
- let mut threads = vec![];
- for pk in lines.map_while(Result::ok) {
- let thread = tokio::spawn(transfer_from(
- pk,
- to_address,
- value,
- iterations,
- verbose,
- cfg.clone(),
- ));
- threads.push(thread);
- }
-
- let mut retries = 0;
- for thread in threads {
- retries += thread.await?;
- }
-
- println!("Total retries: {retries}");
+ let Ok(lines) = read_lines(path) else {
+ return Ok(());
+ };
+
+ if !test_connection(cfg.clone()).await {
+ println!("Test failed to establish connection to server");
+ return Ok(());
+ }
+
+ let to_address = match to {
+ Some(address) => address,
+ None => Address::random(),
+ };
+ println!("Sending to: {to_address:#x}");
+
+ let mut threads = vec![];
+ for pk in lines.map_while(Result::ok) {
+ let thread = tokio::spawn(transfer_from(
+ pk,
+ to_address,
+ value,
+ iterations,
+ verbose,
+ cfg.clone(),
+ ));
+ threads.push(thread);
}
+ let mut retries = 0;
+ for thread in threads {
+ retries += thread.await?;
+ }
+
+ println!("Total retries: {retries}");
+
Ok(())
}
}
From 37fcfd1f79f80acde4c7fecf2363156e50f9145e Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Tue, 3 Dec 2024 16:27:05 -0300
Subject: [PATCH 06/80] Use addr2line for faster perf usage
---
.github/workflows/flamegraph_reporter.yaml | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 63921cbe6a..be4b6b1839 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -36,6 +36,16 @@ jobs:
cargo install flamegraph
cargo install inferno
+ - name: Build addr2line
+ shell: bash
+ run: |
+ cd ${HOME}
+ git clone https://github.com/gimli-rs/addr2line
+ cd addr2line
+ cargo build --release --bin addr2line --features=bin
+ cd $HOME
+
+
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
@@ -51,7 +61,7 @@ jobs:
- name: Generate Flamegraph data for Ethrex
shell: bash
run: |
- CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
+ PATH=$HOME/addr2line/target/release:$PATH CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
echo "waiting to execute load test..."
sleep 30 &&
echo "executing load test..."
From 122a4a8e31d8441722dff9ac9faea29249b1eecd Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Tue, 3 Dec 2024 16:49:00 -0300
Subject: [PATCH 07/80] Use addr2line for faster perf usage 2
---
.github/workflows/flamegraph_reporter.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index be4b6b1839..4718912c67 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -39,6 +39,7 @@ jobs:
- name: Build addr2line
shell: bash
run: |
+ echo "bulding addr2line"
cd ${HOME}
git clone https://github.com/gimli-rs/addr2line
cd addr2line
From 830159fef96fbfc43c3f7ecac407830837ae32a3 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Tue, 3 Dec 2024 17:12:19 -0300
Subject: [PATCH 08/80] Run perf with --no-inline to make it faster
---
.github/workflows/flamegraph_reporter.yaml | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 4718912c67..aafe14443e 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -36,17 +36,6 @@ jobs:
cargo install flamegraph
cargo install inferno
- - name: Build addr2line
- shell: bash
- run: |
- echo "bulding addr2line"
- cd ${HOME}
- git clone https://github.com/gimli-rs/addr2line
- cd addr2line
- cargo build --release --bin addr2line --features=bin
- cd $HOME
-
-
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
@@ -62,7 +51,7 @@ jobs:
- name: Generate Flamegraph data for Ethrex
shell: bash
run: |
- PATH=$HOME/addr2line/target/release:$PATH CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
+ CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
echo "waiting to execute load test..."
sleep 30 &&
echo "executing load test..."
@@ -72,7 +61,7 @@ jobs:
- name: Generate SVG
shell: bash
run: |
- perf script -v -i perf.data > stack.data
+ perf script -v -i perf.data --no-inline > stack.data
inferno-collapse-perf < stack.data > collapsed.data
inferno-flamegraph < collapsed.data > flamegraph.svg
file flamegraph.svg
From 967e79e90f0e706155e866404f37ede0434b340b Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Tue, 3 Dec 2024 17:29:53 -0300
Subject: [PATCH 09/80] Run perf with --no-inline to make it faster (2)
---
.github/workflows/flamegraph_reporter.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index aafe14443e..97bfd2cfa7 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -61,6 +61,7 @@ jobs:
- name: Generate SVG
shell: bash
run: |
+ echo "running perf"
perf script -v -i perf.data --no-inline > stack.data
inferno-collapse-perf < stack.data > collapsed.data
inferno-flamegraph < collapsed.data > flamegraph.svg
From fbb456fce17d91d46375dc40309a4f0a36a3e33e Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Tue, 3 Dec 2024 17:53:51 -0300
Subject: [PATCH 10/80] Run inferno-collapse-perf with --tid parameter
---
.github/scripts/flamegraph.sh | 2 +-
.github/workflows/flamegraph_reporter.yaml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/scripts/flamegraph.sh b/.github/scripts/flamegraph.sh
index 08eebcac47..aa5d18e207 100644
--- a/.github/scripts/flamegraph.sh
+++ b/.github/scripts/flamegraph.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-iterations=10
+iterations=1000
value=10000000
account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
end_val=$((172 * $iterations * $value))
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 97bfd2cfa7..93a521281d 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -63,7 +63,7 @@ jobs:
run: |
echo "running perf"
perf script -v -i perf.data --no-inline > stack.data
- inferno-collapse-perf < stack.data > collapsed.data
+ inferno-collapse-perf --tid < stack.data > collapsed.data
inferno-flamegraph < collapsed.data > flamegraph.svg
file flamegraph.svg
From 803a72f97dcb428ae0bc0b2592551e252f5da090 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Tue, 3 Dec 2024 18:06:30 -0300
Subject: [PATCH 11/80] Run inferno-collapse-perf without --tid parameter
---
.github/workflows/flamegraph_reporter.yaml | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 93a521281d..af28b6dc35 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -63,16 +63,10 @@ jobs:
run: |
echo "running perf"
perf script -v -i perf.data --no-inline > stack.data
- inferno-collapse-perf --tid < stack.data > collapsed.data
+ inferno-collapse-perf < stack.data > collapsed.data
inferno-flamegraph < collapsed.data > flamegraph.svg
file flamegraph.svg
- - name: Upload artifacts
- uses: actions/upload-artifact@v4
- with:
- name: perf.data
- path: ./perf.data
-
- name: Upload artifacts - flamegraph.svg
uses: actions/upload-artifact@v4
with:
From 0b783ea02528010f30eb63901852341a76cbc86e Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Wed, 4 Dec 2024 09:55:44 -0300
Subject: [PATCH 12/80] Run flamegraph for reth as well
---
.github/scripts/flamegraph_reth.sh | 21 +++++++++++++++++
.github/workflows/flamegraph_reporter.yaml | 26 +++++++++++++++++++++-
2 files changed, 46 insertions(+), 1 deletion(-)
create mode 100644 .github/scripts/flamegraph_reth.sh
diff --git a/.github/scripts/flamegraph_reth.sh b/.github/scripts/flamegraph_reth.sh
new file mode 100644
index 0000000000..ef976586b3
--- /dev/null
+++ b/.github/scripts/flamegraph_reth.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+cd "$(dirname "$0")" || exit # Make sure to run from script's directory
+
+account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
+value=10000000
+end_val=$((172 * 1000 * $value))
+
+ethrex_l2 test load --path ../../test_data/private_keys.txt -i 1000 -v --value $value --to $account
+
+echo "Monitoring..."
+output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
+echo "ini $output"
+echo "end $end_val"
+while [[ $output -le $end_val ]]; do
+ sleep 5
+ output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
+ echo "out $output"
+done
+echo "Balance of $output reached, killing process reth"
+
+sudo pkill reth && while pgrep -l cargo flamegraph; do sleep 1;done;
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index af28b6dc35..7de2ccd2df 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -9,6 +9,7 @@ on:
env:
RUST_VERSION: 1.81.0
+ RUST_RETH_VERSION: 1.82.0
jobs:
flamegraph:
@@ -21,7 +22,7 @@ jobs:
- name: Rustup toolchain install
uses: dtolnay/rust-toolchain@stable
with:
- toolchain: ${{ env.RUST_VERSION }}
+ toolchain: ${{ env.RUST_RETH_VERSION }}
- name: Caching
uses: Swatinem/rust-cache@v2
@@ -45,6 +46,29 @@ jobs:
ethrex_l2 config create default --default
ethrex_l2 config set default
+ - name: Checkout reth
+ uses: actions/checkout@v4
+ with:
+ repository: paradigmxyz/reth
+ path: './reth'
+
+ - name: Build and test reth
+ shell: bash
+ run: |
+ ls -las
+ mv ./reth ..
+ cd ../reth
+ ls -las
+ cargo flamegraph --bin reth --profile profiling -- node --chain ../ethrex/test_data/genesis-load-test.json --dev \
+ --dev.block-time 5000ms --http.port 1729 --txpool.max-pending-txns 100000000 --txpool.max-new-txns 1000000000 \
+ --txpool.pending-max-count 100000000 --txpool.pending-max-size 10000000000 --txpool.basefee-max-count 100000000000 \
+ --txpool.basefee-max-size 1000000000000 --txpool.queued-max-count 1000000000 &
+ echo "waiting to execute load test..."
+ sleep 30 &&
+ echo "executing load test..."
+ bash ../ethrex/.github/scripts/flamegraph_reth.sh &&
+ echo "Load test finished"
+
- name: Build ethrex
run: CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release --bin ethrex --features dev
From 6349a7acd23f179e56b856782015bbf14f93d63f Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Wed, 4 Dec 2024 10:54:37 -0300
Subject: [PATCH 13/80] Run flamegraph for reth in parallel in a separate job
---
.github/scripts/flamegraph.sh | 2 +-
.github/scripts/flamegraph_reth.sh | 9 ++-
.github/workflows/flamegraph_reporter.yaml | 87 +++++++++++++++++-----
3 files changed, 73 insertions(+), 25 deletions(-)
diff --git a/.github/scripts/flamegraph.sh b/.github/scripts/flamegraph.sh
index aa5d18e207..4d41d1dea1 100644
--- a/.github/scripts/flamegraph.sh
+++ b/.github/scripts/flamegraph.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-iterations=1000
+iterations=3
value=10000000
account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
end_val=$((172 * $iterations * $value))
diff --git a/.github/scripts/flamegraph_reth.sh b/.github/scripts/flamegraph_reth.sh
index ef976586b3..5fa50444cb 100644
--- a/.github/scripts/flamegraph_reth.sh
+++ b/.github/scripts/flamegraph_reth.sh
@@ -1,11 +1,12 @@
#!/bin/bash
cd "$(dirname "$0")" || exit # Make sure to run from script's directory
-account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
+iterations=3
value=10000000
-end_val=$((172 * 1000 * $value))
+account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
+end_val=$((172 * $iterations * $value))
-ethrex_l2 test load --path ../../test_data/private_keys.txt -i 1000 -v --value $value --to $account
+ethrex_l2 test load --path ../../test_data/private_keys.txt -i $iterations -v --value $value --to $account
echo "Monitoring..."
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
@@ -18,4 +19,4 @@ while [[ $output -le $end_val ]]; do
done
echo "Balance of $output reached, killing process reth"
-sudo pkill reth && while pgrep -l cargo flamegraph; do sleep 1;done;
+sudo pkill reth && while pgrep -l "cargo-flamegraph"; do sleep 1;done;
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 7de2ccd2df..3209819193 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -15,6 +15,68 @@ jobs:
flamegraph:
name: Generate Flamegraph for load test
runs-on: ubuntu-latest
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@v4
+
+ - name: Rustup toolchain install
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ toolchain: ${{ env.RUST_VERSION }}
+
+ - name: Caching
+ uses: Swatinem/rust-cache@v2
+
+ - name: Change perf settings
+ run: |
+ sudo sysctl kernel.perf_event_paranoid=-1
+ sudo perf list hw
+
+ - name: Install flamegraph
+ run: |
+ cargo install flamegraph
+ cargo install inferno
+
+ - name: Install Foundry
+ uses: foundry-rs/foundry-toolchain@v1
+
+ - name: Install ethrex_l2 cli
+ run: |
+ cargo install --path cmd/ethrex_l2
+ ethrex_l2 config create default --default
+ ethrex_l2 config set default
+
+ - name: Build ethrex
+ run: CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release --bin ethrex --features dev
+
+ - name: Generate Flamegraph data for Ethrex
+ shell: bash
+ run: |
+ CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
+ echo "waiting to execute load test..."
+ sleep 30 &&
+ echo "executing load test..."
+ bash .github/scripts/flamegraph.sh &&
+ echo "Load test finished"
+
+ - name: Generate SVG
+ shell: bash
+ run: |
+ echo "running perf"
+ perf script -v -i perf.data --no-inline > stack.data
+ inferno-collapse-perf < stack.data > collapsed.data
+ inferno-flamegraph < collapsed.data > flamegraph.svg
+ file flamegraph.svg
+
+ - name: Upload artifacts - flamegraph.svg
+ uses: actions/upload-artifact@v4
+ with:
+ name: flamegraph.svg
+ path: ./flamegraph.svg
+
+ flamegraph-reth:
+ name: Generate Flamegraph for Reth
+ runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
@@ -55,10 +117,8 @@ jobs:
- name: Build and test reth
shell: bash
run: |
- ls -las
mv ./reth ..
cd ../reth
- ls -las
cargo flamegraph --bin reth --profile profiling -- node --chain ../ethrex/test_data/genesis-load-test.json --dev \
--dev.block-time 5000ms --http.port 1729 --txpool.max-pending-txns 100000000 --txpool.max-new-txns 1000000000 \
--txpool.pending-max-count 100000000 --txpool.pending-max-size 10000000000 --txpool.basefee-max-count 100000000000 \
@@ -69,30 +129,17 @@ jobs:
bash ../ethrex/.github/scripts/flamegraph_reth.sh &&
echo "Load test finished"
- - name: Build ethrex
- run: CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release --bin ethrex --features dev
-
- - name: Generate Flamegraph data for Ethrex
- shell: bash
- run: |
- CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
- echo "waiting to execute load test..."
- sleep 30 &&
- echo "executing load test..."
- bash .github/scripts/flamegraph.sh &&
- echo "Load test finished"
-
- name: Generate SVG
shell: bash
run: |
echo "running perf"
perf script -v -i perf.data --no-inline > stack.data
inferno-collapse-perf < stack.data > collapsed.data
- inferno-flamegraph < collapsed.data > flamegraph.svg
- file flamegraph.svg
+ inferno-flamegraph < collapsed.data > flamegraph_reth.svg
+ file flamegraph_reth.svg
- - name: Upload artifacts - flamegraph.svg
+ - name: Upload artifacts - flamegraph_reth.svg
uses: actions/upload-artifact@v4
with:
- name: flamegraph.svg
- path: ./flamegraph.svg
+ name: flamegraph_reth.svg
+ path: ./flamegraph_reth.svg
From 89799a39476245f04ec18fd99e6a144bd6684f44 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Wed, 4 Dec 2024 12:02:39 -0300
Subject: [PATCH 14/80] Add balance to account in genesis-load-test.json
---
test_data/genesis-load-test.json | 1122 +++++++++++++++---------------
1 file changed, 563 insertions(+), 559 deletions(-)
diff --git a/test_data/genesis-load-test.json b/test_data/genesis-load-test.json
index 733ab3ba7b..f7a65c072c 100644
--- a/test_data/genesis-load-test.json
+++ b/test_data/genesis-load-test.json
@@ -1,561 +1,565 @@
{
- "config": {
- "chainId": 1729,
- "homesteadBlock": 0,
- "eip150Block": 0,
- "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "eip155Block": 0,
- "eip158Block": 0,
- "daoForkBlock": 0,
- "frontierBlock": 0,
- "byzantiumBlock": 0,
- "constantinopleBlock": 0,
- "petersburgBlock": 0,
- "muirGlacierBlock": 0,
- "istanbulBlock": 0,
- "berlinBlock": 0,
- "londonBlock": 0,
- "terminalTotalDifficulty": "0x0",
- "mergeNetsplitBlock": 0,
- "shanghaiTime": 0,
- "cancunTime": 0,
- "clique": {
- "period": 0,
- "epoch": 30000
- }
- },
- "nonce": "0x0",
- "timestamp": "0x5ca9158b",
- "gasLimit": "0x37e11d600",
- "difficulty": "0x0",
- "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "coinbase": "0x0000000000000000000000000000000000000000",
- "alloc": {
- "0x0000bd19F707CA481886244bDd20Bd6B8a81bd3e": {
- "balance": "0xc097ce7bc90715b34b9f1000000000",
- "nonce": "0"
- },
- "0x000cD1537A823Ae7609E3897DA8d95801B557a8a": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0006d77295a0260ceAC113c5Aa15CFf0d28d9723": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000eA2e72065A2ceCA7f677Bc5E648279c2D843d": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000a52D537c4150ec274dcE3962a0d179B7E71B0": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0009aEFF154De37C8e02E83f93D2FeC5EC96f8a3": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000f1EB7F258D4A7683E5D0FC3C01058841DDC6f": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000aC79590dCc656c00c4453f123AcBf10DBb086": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0002Bf507275217c9E5EE250bC1B5ca177bb4f74": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000a3fC3BFD55b37025E6F4f57B0B6121F54e5bF": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000b4C43cce938dfD3420F975591Ee46D872C136": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0004b0C6de796fD980554cc7ff7B062b3B5079E1": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00025eea83bA285532F5054b238c938076833d13": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000352E93fe11f9B715fdc61864315970B3DC082": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000c0d6b7C4516a5B274C51EA331A9410fe69127": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000D06C23EeD09A7Fa81cADd7eD5C783E8a25635": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0003Ea7fDFCdb89E9ddAb0128ec5C628F8D09D45": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0005C34d7B8b06CE8019C3Bb232dE82B2748A560": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00079f33619F70F1DCE64EB6782E45D3498d807C": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0003E72436Ff296B3d39339784499D021b72Aca5": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00075af7E665F3Ca4A4b05520CD6d5c13BbFEAf8": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000b59AeD48ADCd6c36Ae5f437AbB9CA730a2c43": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0004e4dfCed9d798767A4d7BA2B03495cE80A2b7": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000e73282F60E2CdE0D4FA9B323B6D54d860f330": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00010AB05661Bfde304A4d884DF99d3011A83C54": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000B9Ea41A9dF00b7ae597afc0D10AF42666081F": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00087C666bf7f52758DE186570979C4C79747157": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0008a52c83D34f0791D07FfeD04Fb6b14f94E2D4": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000A7Bbde38Fc53925D0De9cc1beE3038d36c2d2": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000Aa0154ed6560257d222B5dbE6ce4b66c48979": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000b681738e1f8aF387c41b2b1f0A04E0C33e9DB": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000D66A7706f2DD5F557d5b68e01E07E8FFDfaf5": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00069DA530A71Dc92D02090d7f5f63e326e9beD0": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000db74a3da16609F183ACE7AF65B43D896349CE": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0003B1aB565508e095a543C89531e3fbc4a349DA": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0001c94c108BcE19CDb36b00F867A1798A81DedA": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000995137728C7C2a9142F4628f95c98Cac433d7": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000Ec60762AD0425A04C40c118Db5B9710Aa639e": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000Ebf88AE1BA960B06b0a9bbE576baa3B72E92E": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000e1a554572dd96fF3d1F2664832F3E4a66E7b7": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00032C03f3b02D816128Fb5D2752398E2919a03c": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000A073dAC5ec2058a0De0e175874D5E297E086E": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000e06626Bb8618D9A1867362D46ddb1bF95ad75": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000212949b4866db43bAF7c4e0975426710ED081": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00094cc0653B52406170105F4eb96C5e2f31Ab74": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000E67E4b1A23A3826304099cb24f337c916CF4b": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000885A4932ebeD6D760EA381e4EdAe51A53db05": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000883A40409Fa2193b698928459CB9E4DD5f8D8": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0002590DD45738F909115B163F1322A8A24a8B4E": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0005f132597da3152a6Da6beDB7C10bcC9B1B7f5": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00031470def99c1d4dfE1fd08DD7A8520Ce21DB7": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0001Ebe3a3bA36f57F5989B3F0e5BEEBc710569C": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0006Bd0469166f63D0A1c33F71898D2b2E009b9b": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00000A8d3f37af8DeF18832962Ee008d8dCa4F7b": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000e490f26249951F8527779399aa8F281509aC0": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0000638374f7dB166990BDc6aBeE884Ee01a8920": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00031dE95353DeE86dc9B1248e825500DE0B39aF": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000511B42328794337D8b6846E5cFFef30c2d77A": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000d0576AdEf7083d53F6676bfc7c30d03b6Db1B": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0001E8Ff6406a7cd9071F46B8255Db6C16178448": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000C47c771A8db282eC233b28AD8525dc74D13FE": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000798832bb08268dB237898b95A8DaE9D58b62c": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000c877a5D9b9De61e5318B3f4330c56ecdC0865": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0003Ffc1f09d39FBFE87eD63E98249039C7b1d9A": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000d72403c18B2516d8ada074E1E7822bF1084DB": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00054e17Db8C8Db028B19cB0f631888AdEb35E4b": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0002d9b2a816717C4d70040D66A714795F9B27a4": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0002AfCC1B0B608E86b5a1Dc45dE08184E629796": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000b1db69627F04688aA47951d847c8BFAB3fFaE": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000c2de896E4a92e796d6A9c1E4B01feB3e6Ed61": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000EDC52118DadB4B81f013005b6db2665B682ac": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0009e10C0D2F1a7A2b00b61c476aa8b608c60aDc": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000f2AbaA7581fAA2ad5C82b604C77ef68c3eAD9": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000F74AA6EE08C15076b3576eE33Ed3a80c9A1AD": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0001533C6C5b425815b2BaDdCdd42DFF3be04BCb": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0002D79686DeF20a0aB43FEA4a41a1Ad56529621": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00077A336FCA40F933a7A301F4a39C26594F3EB5": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000B05E15C62CBC266A4DD1804b017d1f6dB078b": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000130badE00212bE1AA2F4aCFe965934635C9cD": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0008Bd31Ee6A758e168844cBEA107Ca4d87251aF": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000A390975F21371F1Cf3C783a4A7C1aF49074Fe": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000701F7d594Fb146e4d1c71342012e48A788055": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0005c6BeD054FEad199D72C6f663fC6fBf996153": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0009d862F87F26c638AAd14F2cc48FCa54DBf49d": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00029637dA962294449549f804f8184046F5fbB0": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000279CB54E00B858774afEA4601034Db41c1A05": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0003dDe6f01e3B755e24891a5B0f2463BaD83e15": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000086Eeea461Ca48e4D319F9789F3Efd134E574": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0004351AD413792131011CC7ed8299dd783C6487": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00097B4463159340Ac83B9bdf657C304cD70c11c": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0004ad0D0823e3d31C6ECA2A3495373fA76c43aC": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0005E815c1A3F40011Bd70C76062bbcBc51c546B": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0006A070bAC6195b59d4bC7f73741DCBe4e16b5e": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0006cEE23d8E9BC8d99E826cDa50481394aD9bDD": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000a523148845bEe3EE1e9F83df8257a1191C85B": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000D268F322F10925cdB5d2AD527E582259Da655": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000E5DE0a0175866d21F4Ec6c41F0422A05f14D6": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000cDF8Dba2393a40857cbCB0FCD9b998a941078": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000A341763112a5E3452c7AEE45c382a3fb7dc78": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000635BCbB109781Cea0Cd53e9f1370Dbac9937f": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000E0ea540095B3853c4cb09E5Cdd197330D3B55": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00044cbfb4Ef6054667994C37c0fe0B6BB639718": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00065fC4337dF331242bEE738031dAf35817Ee9e": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000815A8A659a51A8EF01F02441947Ea99182568": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0004C8da21c68dED2F63efD9836De7D43e7cDa10": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0006ed38815a9439c59bD917c12f77a9A7D39BCE": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0004Aa0442d0d43222431b3017912EC6a099771C": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000b3F6da04b6261B4154C8FaEd119632C49DBd5": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000AEBc2568796FDB763CAB67B31e0feE58Fe17d": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000425E97fC6692891876012824a210451cC06C4": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000036e0f87f8Cd3e97f9cfDB2e4E5Ff193c217a": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000305CD7184aB37fdd3D826B92A640218D09527": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000c95f1D83De53B76a0828F1bCdB1DfE12C0ab3": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000882c5FbD315801e4C367BCB04dBD299B9F571": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0000E101815A78EbB9FBBa34F4871aD32d5eb6CD": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000A997c1ceCB1DA78C16249e032e77d1865646a": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00056bde49E3cAA9166C2a4C4951d0Cf067956A0": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000e65342176C7dac47bc75113F569695d6A113C": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0008D608884cd733642ab17aCa0c8504850B94fA": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000dFE27e1b71a49B641ad762aB95558584878D1": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00085D9D1a71acf1080cED44CB501B350900627f": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0007d272a1f7Dfe862b030adE2922D149f3bDe3B": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0004b230511F921934F33E8B4425E43295232680": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0007514395022786B59ff91408692462C48d872c": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0005b34eB0d99dE72DB14d466f692009c4049D46": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0001a2c749FE0Ab1C09f1131BA17530f9D764fBC": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000c6c1D8F778D981968F9904772B0c455E1C17c": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000e64e0a2Fd76B4883c800833c82c5F2420b813": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000577bDc84B4019F77D9D09BDD8ED6145E0e890": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000029bD811D292E7f1CF36c0FA08fd753C45074": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000cE6740261E297FaD4c975D6D8F89f95C29add": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0001d0bAE8B1B9fe61d0B788E562A987813cbD98": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000E3388598A0534275104Ad44745620AF31EC7E": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000791D3185781e14eBb342E5df3BC9910f62E6F": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000Df55E76cf6dfD9598DD2b54948dE937f50f2B": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000055acf237931902ceBf4B905BF59813180555": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00009074D8fc5Eeb25f1548Df05AD955E21FB08D": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000C1aE5FeCf09595C0C76Db609FEB2a5Af0962E": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000F76B2Fe7cCC13474de28586A877664EBA16B4": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000F7cFBa0B176Afc2eBadA9d4764d2eA6BBC5a1": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00002132cE94eEfB06eB15898C1AABd94feb0AC2": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00069dC0cc6b9d7B48B5348b12F625E8aB704104": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000A0191cf913E03bd594bC8817FC3B2895C0a25": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0007316aEDc52EB35c9B5c2E44e9fD712d1DF887": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000EBd066B6FEBB9d7f3B767DF06C08e369Dc20F": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00096af89fd96f0d6E1721d9145944e813317d46": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000C5e39879228A1Fc8dF2470822CB8ce2Af8e07": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000ea86B4A3d7e4AF8CFab052c8b9a040149b507": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000796370C839773893a2cEFA5fc81f2332936fB": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000990B05481b1661bc6211298f6429451B09425": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0008a02d3E8507621f430345b98478058cDca79A": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000d35f8cd11bd989216b3669cBaac6fd8c07196": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000541653a96ABAdDba52fAA8D118e570d529543": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0006264bf7E3395309F728222641Ff8D0e1ad2C0": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000688AA0fBfB3F1e6554A63dF13bE08cB671b3b": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00030da862690D170F096074e9E8b38db7D6f037": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0005e37296348571bd3604f7E56B67a7022801f6": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000ed6E0F4Fdc3615663BF4A601E35e7A8d66E1c": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000c53b37fA4977B59FD3Efdb473D8069844aDeA": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00057714949aD700733C5b8E6cF3e8c6B7D228a2": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000C8FC4132881c31f67638c3941dF8D94a92299": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000fA71E446e1EcFd74d835b5bD6fA848A770d26": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000784B47aC2843419Df4cAd697d4e7b65CE1F93": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0002869e27c6FaEe08cCA6b765a726E7a076Ee0F": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0003135C47c441506b58483Ec6173F767182670B": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0006E80d584cbF9EB8C41CF2b009C607744a70F6": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000C1C05dBFf111c79D5c9E91420DFBEA1c31716": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0009Bf72AF31A4E6B8Ef6FbbFcb017823E4d2aF2": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x00021C20F3e68F930077Cca109Ca3C044E8B39bD": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000E90875aC71eD46A11dc1b509d2B35E2c9C31F": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x000f17eB09AA3f28132323E6075C672949526d5A": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x0000000000000000000000000000000000000000": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- },
- "0x3d1e15a1a55578f7c920884a9943b3b35d0d885b": {
- "balance": "0xc097ce7bc90715b34b9f1000000000"
- }
- },
- "number": "0x0",
- "gasUsed": "0x0",
- "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "baseFeePerGas": 1,
- "excessBlobGas": "0x0",
- "blobGasUsed": 0
+ "config": {
+ "chainId": 1729,
+ "homesteadBlock": 0,
+ "eip150Block": 0,
+ "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "eip155Block": 0,
+ "eip158Block": 0,
+ "daoForkBlock": 0,
+ "frontierBlock": 0,
+ "byzantiumBlock": 0,
+ "constantinopleBlock": 0,
+ "petersburgBlock": 0,
+ "muirGlacierBlock": 0,
+ "istanbulBlock": 0,
+ "berlinBlock": 0,
+ "londonBlock": 0,
+ "terminalTotalDifficulty": "0x0",
+ "mergeNetsplitBlock": 0,
+ "shanghaiTime": 0,
+ "cancunTime": 0,
+ "clique": {
+ "period": 0,
+ "epoch": 30000
+ }
+ },
+ "nonce": "0x0",
+ "timestamp": "0x5ca9158b",
+ "gasLimit": "0x37e11d600",
+ "difficulty": "0x0",
+ "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase": "0x0000000000000000000000000000000000000000",
+ "alloc": {
+ "0x0007a881CD95B1484fca47615B64803dad620C8d": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000",
+ "nonce": "0"
+ },
+ "0x0000bd19F707CA481886244bDd20Bd6B8a81bd3e": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000",
+ "nonce": "0"
+ },
+ "0x000cD1537A823Ae7609E3897DA8d95801B557a8a": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0006d77295a0260ceAC113c5Aa15CFf0d28d9723": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000eA2e72065A2ceCA7f677Bc5E648279c2D843d": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000a52D537c4150ec274dcE3962a0d179B7E71B0": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0009aEFF154De37C8e02E83f93D2FeC5EC96f8a3": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000f1EB7F258D4A7683E5D0FC3C01058841DDC6f": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000aC79590dCc656c00c4453f123AcBf10DBb086": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0002Bf507275217c9E5EE250bC1B5ca177bb4f74": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000a3fC3BFD55b37025E6F4f57B0B6121F54e5bF": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000b4C43cce938dfD3420F975591Ee46D872C136": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0004b0C6de796fD980554cc7ff7B062b3B5079E1": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00025eea83bA285532F5054b238c938076833d13": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000352E93fe11f9B715fdc61864315970B3DC082": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000c0d6b7C4516a5B274C51EA331A9410fe69127": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000D06C23EeD09A7Fa81cADd7eD5C783E8a25635": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0003Ea7fDFCdb89E9ddAb0128ec5C628F8D09D45": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0005C34d7B8b06CE8019C3Bb232dE82B2748A560": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00079f33619F70F1DCE64EB6782E45D3498d807C": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0003E72436Ff296B3d39339784499D021b72Aca5": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00075af7E665F3Ca4A4b05520CD6d5c13BbFEAf8": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000b59AeD48ADCd6c36Ae5f437AbB9CA730a2c43": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0004e4dfCed9d798767A4d7BA2B03495cE80A2b7": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000e73282F60E2CdE0D4FA9B323B6D54d860f330": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00010AB05661Bfde304A4d884DF99d3011A83C54": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000B9Ea41A9dF00b7ae597afc0D10AF42666081F": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00087C666bf7f52758DE186570979C4C79747157": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0008a52c83D34f0791D07FfeD04Fb6b14f94E2D4": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000A7Bbde38Fc53925D0De9cc1beE3038d36c2d2": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000Aa0154ed6560257d222B5dbE6ce4b66c48979": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000b681738e1f8aF387c41b2b1f0A04E0C33e9DB": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000D66A7706f2DD5F557d5b68e01E07E8FFDfaf5": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00069DA530A71Dc92D02090d7f5f63e326e9beD0": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000db74a3da16609F183ACE7AF65B43D896349CE": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0003B1aB565508e095a543C89531e3fbc4a349DA": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0001c94c108BcE19CDb36b00F867A1798A81DedA": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000995137728C7C2a9142F4628f95c98Cac433d7": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000Ec60762AD0425A04C40c118Db5B9710Aa639e": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000Ebf88AE1BA960B06b0a9bbE576baa3B72E92E": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000e1a554572dd96fF3d1F2664832F3E4a66E7b7": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00032C03f3b02D816128Fb5D2752398E2919a03c": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000A073dAC5ec2058a0De0e175874D5E297E086E": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000e06626Bb8618D9A1867362D46ddb1bF95ad75": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000212949b4866db43bAF7c4e0975426710ED081": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00094cc0653B52406170105F4eb96C5e2f31Ab74": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000E67E4b1A23A3826304099cb24f337c916CF4b": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000885A4932ebeD6D760EA381e4EdAe51A53db05": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000883A40409Fa2193b698928459CB9E4DD5f8D8": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0002590DD45738F909115B163F1322A8A24a8B4E": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0005f132597da3152a6Da6beDB7C10bcC9B1B7f5": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00031470def99c1d4dfE1fd08DD7A8520Ce21DB7": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0001Ebe3a3bA36f57F5989B3F0e5BEEBc710569C": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0006Bd0469166f63D0A1c33F71898D2b2E009b9b": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00000A8d3f37af8DeF18832962Ee008d8dCa4F7b": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000e490f26249951F8527779399aa8F281509aC0": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0000638374f7dB166990BDc6aBeE884Ee01a8920": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00031dE95353DeE86dc9B1248e825500DE0B39aF": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000511B42328794337D8b6846E5cFFef30c2d77A": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000d0576AdEf7083d53F6676bfc7c30d03b6Db1B": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0001E8Ff6406a7cd9071F46B8255Db6C16178448": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000C47c771A8db282eC233b28AD8525dc74D13FE": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000798832bb08268dB237898b95A8DaE9D58b62c": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000c877a5D9b9De61e5318B3f4330c56ecdC0865": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0003Ffc1f09d39FBFE87eD63E98249039C7b1d9A": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000d72403c18B2516d8ada074E1E7822bF1084DB": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00054e17Db8C8Db028B19cB0f631888AdEb35E4b": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0002d9b2a816717C4d70040D66A714795F9B27a4": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0002AfCC1B0B608E86b5a1Dc45dE08184E629796": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000b1db69627F04688aA47951d847c8BFAB3fFaE": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000c2de896E4a92e796d6A9c1E4B01feB3e6Ed61": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000EDC52118DadB4B81f013005b6db2665B682ac": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0009e10C0D2F1a7A2b00b61c476aa8b608c60aDc": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000f2AbaA7581fAA2ad5C82b604C77ef68c3eAD9": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000F74AA6EE08C15076b3576eE33Ed3a80c9A1AD": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0001533C6C5b425815b2BaDdCdd42DFF3be04BCb": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0002D79686DeF20a0aB43FEA4a41a1Ad56529621": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00077A336FCA40F933a7A301F4a39C26594F3EB5": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000B05E15C62CBC266A4DD1804b017d1f6dB078b": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000130badE00212bE1AA2F4aCFe965934635C9cD": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0008Bd31Ee6A758e168844cBEA107Ca4d87251aF": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000A390975F21371F1Cf3C783a4A7C1aF49074Fe": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000701F7d594Fb146e4d1c71342012e48A788055": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0005c6BeD054FEad199D72C6f663fC6fBf996153": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0009d862F87F26c638AAd14F2cc48FCa54DBf49d": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00029637dA962294449549f804f8184046F5fbB0": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000279CB54E00B858774afEA4601034Db41c1A05": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0003dDe6f01e3B755e24891a5B0f2463BaD83e15": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000086Eeea461Ca48e4D319F9789F3Efd134E574": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0004351AD413792131011CC7ed8299dd783C6487": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00097B4463159340Ac83B9bdf657C304cD70c11c": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0004ad0D0823e3d31C6ECA2A3495373fA76c43aC": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0005E815c1A3F40011Bd70C76062bbcBc51c546B": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0006A070bAC6195b59d4bC7f73741DCBe4e16b5e": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0006cEE23d8E9BC8d99E826cDa50481394aD9bDD": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000a523148845bEe3EE1e9F83df8257a1191C85B": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000D268F322F10925cdB5d2AD527E582259Da655": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000E5DE0a0175866d21F4Ec6c41F0422A05f14D6": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000cDF8Dba2393a40857cbCB0FCD9b998a941078": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000A341763112a5E3452c7AEE45c382a3fb7dc78": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000635BCbB109781Cea0Cd53e9f1370Dbac9937f": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000E0ea540095B3853c4cb09E5Cdd197330D3B55": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00044cbfb4Ef6054667994C37c0fe0B6BB639718": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00065fC4337dF331242bEE738031dAf35817Ee9e": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000815A8A659a51A8EF01F02441947Ea99182568": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0004C8da21c68dED2F63efD9836De7D43e7cDa10": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0006ed38815a9439c59bD917c12f77a9A7D39BCE": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0004Aa0442d0d43222431b3017912EC6a099771C": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000b3F6da04b6261B4154C8FaEd119632C49DBd5": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000AEBc2568796FDB763CAB67B31e0feE58Fe17d": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000425E97fC6692891876012824a210451cC06C4": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000036e0f87f8Cd3e97f9cfDB2e4E5Ff193c217a": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000305CD7184aB37fdd3D826B92A640218D09527": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000c95f1D83De53B76a0828F1bCdB1DfE12C0ab3": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000882c5FbD315801e4C367BCB04dBD299B9F571": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0000E101815A78EbB9FBBa34F4871aD32d5eb6CD": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000A997c1ceCB1DA78C16249e032e77d1865646a": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00056bde49E3cAA9166C2a4C4951d0Cf067956A0": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000e65342176C7dac47bc75113F569695d6A113C": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0008D608884cd733642ab17aCa0c8504850B94fA": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000dFE27e1b71a49B641ad762aB95558584878D1": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00085D9D1a71acf1080cED44CB501B350900627f": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0007d272a1f7Dfe862b030adE2922D149f3bDe3B": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0004b230511F921934F33E8B4425E43295232680": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0007514395022786B59ff91408692462C48d872c": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0005b34eB0d99dE72DB14d466f692009c4049D46": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0001a2c749FE0Ab1C09f1131BA17530f9D764fBC": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000c6c1D8F778D981968F9904772B0c455E1C17c": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000e64e0a2Fd76B4883c800833c82c5F2420b813": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000577bDc84B4019F77D9D09BDD8ED6145E0e890": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000029bD811D292E7f1CF36c0FA08fd753C45074": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000cE6740261E297FaD4c975D6D8F89f95C29add": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0001d0bAE8B1B9fe61d0B788E562A987813cbD98": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000E3388598A0534275104Ad44745620AF31EC7E": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000791D3185781e14eBb342E5df3BC9910f62E6F": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000Df55E76cf6dfD9598DD2b54948dE937f50f2B": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000055acf237931902ceBf4B905BF59813180555": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00009074D8fc5Eeb25f1548Df05AD955E21FB08D": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000C1aE5FeCf09595C0C76Db609FEB2a5Af0962E": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000F76B2Fe7cCC13474de28586A877664EBA16B4": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000F7cFBa0B176Afc2eBadA9d4764d2eA6BBC5a1": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00002132cE94eEfB06eB15898C1AABd94feb0AC2": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00069dC0cc6b9d7B48B5348b12F625E8aB704104": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000A0191cf913E03bd594bC8817FC3B2895C0a25": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0007316aEDc52EB35c9B5c2E44e9fD712d1DF887": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000EBd066B6FEBB9d7f3B767DF06C08e369Dc20F": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00096af89fd96f0d6E1721d9145944e813317d46": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000C5e39879228A1Fc8dF2470822CB8ce2Af8e07": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000ea86B4A3d7e4AF8CFab052c8b9a040149b507": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000796370C839773893a2cEFA5fc81f2332936fB": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000990B05481b1661bc6211298f6429451B09425": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0008a02d3E8507621f430345b98478058cDca79A": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000d35f8cd11bd989216b3669cBaac6fd8c07196": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000541653a96ABAdDba52fAA8D118e570d529543": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0006264bf7E3395309F728222641Ff8D0e1ad2C0": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000688AA0fBfB3F1e6554A63dF13bE08cB671b3b": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00030da862690D170F096074e9E8b38db7D6f037": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0005e37296348571bd3604f7E56B67a7022801f6": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000ed6E0F4Fdc3615663BF4A601E35e7A8d66E1c": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000c53b37fA4977B59FD3Efdb473D8069844aDeA": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00057714949aD700733C5b8E6cF3e8c6B7D228a2": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000C8FC4132881c31f67638c3941dF8D94a92299": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000fA71E446e1EcFd74d835b5bD6fA848A770d26": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000784B47aC2843419Df4cAd697d4e7b65CE1F93": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0002869e27c6FaEe08cCA6b765a726E7a076Ee0F": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0003135C47c441506b58483Ec6173F767182670B": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0006E80d584cbF9EB8C41CF2b009C607744a70F6": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000C1C05dBFf111c79D5c9E91420DFBEA1c31716": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0009Bf72AF31A4E6B8Ef6FbbFcb017823E4d2aF2": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x00021C20F3e68F930077Cca109Ca3C044E8B39bD": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000E90875aC71eD46A11dc1b509d2B35E2c9C31F": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x000f17eB09AA3f28132323E6075C672949526d5A": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x0000000000000000000000000000000000000000": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ },
+ "0x3d1e15a1a55578f7c920884a9943b3b35d0d885b": {
+ "balance": "0xc097ce7bc90715b34b9f1000000000"
+ }
+ },
+ "number": "0x0",
+ "gasUsed": "0x0",
+ "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "baseFeePerGas": 1,
+ "excessBlobGas": "0x0",
+ "blobGasUsed": 0
}
From 5d3429cd28c505ca220d6920f7ba9d2bab1a5995 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Wed, 4 Dec 2024 12:24:28 -0300
Subject: [PATCH 15/80] Run cargo flamegraph with perf options
---
.github/scripts/flamegraph_reth.sh | 1 -
.github/workflows/flamegraph_reporter.yaml | 32 ++++++++--------------
2 files changed, 11 insertions(+), 22 deletions(-)
diff --git a/.github/scripts/flamegraph_reth.sh b/.github/scripts/flamegraph_reth.sh
index 5fa50444cb..f577e5204b 100644
--- a/.github/scripts/flamegraph_reth.sh
+++ b/.github/scripts/flamegraph_reth.sh
@@ -1,5 +1,4 @@
#!/bin/bash
-cd "$(dirname "$0")" || exit # Make sure to run from script's directory
iterations=3
value=10000000
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 3209819193..75acaa2e87 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -91,6 +91,7 @@ jobs:
- name: Change perf settings
run: |
+ pwd
sudo sysctl kernel.perf_event_paranoid=-1
sudo perf list hw
@@ -112,34 +113,23 @@ jobs:
uses: actions/checkout@v4
with:
repository: paradigmxyz/reth
- path: './reth'
+ path: 'reth'
- name: Build and test reth
shell: bash
run: |
- mv ./reth ..
- cd ../reth
- cargo flamegraph --bin reth --profile profiling -- node --chain ../ethrex/test_data/genesis-load-test.json --dev \
+ cd ./reth
+ cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin reth --profile profiling \
+ -- node --chain ../ethrex/test_data/genesis-load-test.json --dev \
--dev.block-time 5000ms --http.port 1729 --txpool.max-pending-txns 100000000 --txpool.max-new-txns 1000000000 \
--txpool.pending-max-count 100000000 --txpool.pending-max-size 10000000000 --txpool.basefee-max-count 100000000000 \
--txpool.basefee-max-size 1000000000000 --txpool.queued-max-count 1000000000 &
echo "waiting to execute load test..."
- sleep 30 &&
+ sleep 120 &&
echo "executing load test..."
- bash ../ethrex/.github/scripts/flamegraph_reth.sh &&
+ echo ${{ github.workspace }}
+ echo $GITHUB_WORKSPACE
+ pwd
+ ls -las ../
+ bash ../.github/scripts/flamegraph_reth.sh &&
echo "Load test finished"
-
- - name: Generate SVG
- shell: bash
- run: |
- echo "running perf"
- perf script -v -i perf.data --no-inline > stack.data
- inferno-collapse-perf < stack.data > collapsed.data
- inferno-flamegraph < collapsed.data > flamegraph_reth.svg
- file flamegraph_reth.svg
-
- - name: Upload artifacts - flamegraph_reth.svg
- uses: actions/upload-artifact@v4
- with:
- name: flamegraph_reth.svg
- path: ./flamegraph_reth.svg
From 0dd0e05105bc9417dfae8e5c1bf2e2885f1b6363 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Wed, 4 Dec 2024 14:46:21 -0300
Subject: [PATCH 16/80] Adjust paths in workflow
---
.github/scripts/flamegraph_reth.sh | 5 +----
.github/workflows/flamegraph_reporter.yaml | 25 ++++++++++++++++------
2 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/.github/scripts/flamegraph_reth.sh b/.github/scripts/flamegraph_reth.sh
index f577e5204b..93b69a5456 100644
--- a/.github/scripts/flamegraph_reth.sh
+++ b/.github/scripts/flamegraph_reth.sh
@@ -5,16 +5,13 @@ value=10000000
account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
end_val=$((172 * $iterations * $value))
-ethrex_l2 test load --path ../../test_data/private_keys.txt -i $iterations -v --value $value --to $account
+ethrex_l2 test load --path /home/runner/work/ethrex/ethrex/test_data/private_keys.txt -i $iterations -v --value $value --to $account
echo "Monitoring..."
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
-echo "ini $output"
-echo "end $end_val"
while [[ $output -le $end_val ]]; do
sleep 5
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
- echo "out $output"
done
echo "Balance of $output reached, killing process reth"
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 75acaa2e87..332b896214 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -120,16 +120,27 @@ jobs:
run: |
cd ./reth
cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin reth --profile profiling \
- -- node --chain ../ethrex/test_data/genesis-load-test.json --dev \
+ -- node --chain /home/runner/work/ethrex/ethrex/test_data/genesis-load-test.json --dev \
--dev.block-time 5000ms --http.port 1729 --txpool.max-pending-txns 100000000 --txpool.max-new-txns 1000000000 \
--txpool.pending-max-count 100000000 --txpool.pending-max-size 10000000000 --txpool.basefee-max-count 100000000000 \
--txpool.basefee-max-size 1000000000000 --txpool.queued-max-count 1000000000 &
echo "waiting to execute load test..."
sleep 120 &&
- echo "executing load test..."
- echo ${{ github.workspace }}
- echo $GITHUB_WORKSPACE
- pwd
- ls -las ../
- bash ../.github/scripts/flamegraph_reth.sh &&
+ bash /home/runner/work/ethrex/ethrex/.github/scripts/flamegraph_reth.sh &&
echo "Load test finished"
+ ls -las
+
+ - name: Generate SVG
+ shell: bash
+ run: |
+ echo "running perf"
+ perf script -v -i perf.data --no-inline > stack.data
+ inferno-collapse-perf < stack.data > collapsed.data
+ inferno-flamegraph < collapsed.data > flamegraph_reth.svg
+ file flamegraph_reth.svg
+
+ - name: Upload artifacts - flamegraph_reth.svg
+ uses: actions/upload-artifact@v4
+ with:
+ name: flamegraph_reth.svg
+ path: ./flamegraph_reth.svg
From 71b2c5de906382be52b5e773257b200415381b84 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Wed, 4 Dec 2024 15:10:22 -0300
Subject: [PATCH 17/80] Adjust paths in workflow 2
---
.github/workflows/flamegraph_reporter.yaml | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 332b896214..06f3c511c9 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -133,8 +133,11 @@ jobs:
- name: Generate SVG
shell: bash
run: |
- echo "running perf"
- perf script -v -i perf.data --no-inline > stack.data
+ pwd
+ echo "running perf 2"
+ ls -las /home/runner/work/ethrex/
+ ls -las /home/runner/work/ethrex/ethrex/
+ perf script -v -i /home/runner/work/ethrex/ethrex/reth/perf.data --no-inline > stack.data
inferno-collapse-perf < stack.data > collapsed.data
inferno-flamegraph < collapsed.data > flamegraph_reth.svg
file flamegraph_reth.svg
From 73c5edf06de17591133c3385fbb101dd27987445 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Wed, 4 Dec 2024 16:21:06 -0300
Subject: [PATCH 18/80] Deploy page workflow
---
.github/workflows/deploy_page.yaml | 41 +++
pages/flamegraph.svg | 491 +++++++++++++++++++++++++++++
pages/index.html | 7 +
3 files changed, 539 insertions(+)
create mode 100644 .github/workflows/deploy_page.yaml
create mode 100644 pages/flamegraph.svg
create mode 100644 pages/index.html
diff --git a/.github/workflows/deploy_page.yaml b/.github/workflows/deploy_page.yaml
new file mode 100644
index 0000000000..90e474d76d
--- /dev/null
+++ b/.github/workflows/deploy_page.yaml
@@ -0,0 +1,41 @@
+# Simple workflow for deploying static content to GitHub Pages
+name: Deploy static content to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: [ "automate-perf-tests" ]
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+jobs:
+ # Single deploy job since we're just deploying
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Setup Pages
+ uses: actions/configure-pages@v5
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: 'pages/'
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/pages/flamegraph.svg b/pages/flamegraph.svg
new file mode 100644
index 0000000000..e0d81faba3
--- /dev/null
+++ b/pages/flamegraph.svg
@@ -0,0 +1,491 @@
+
\ No newline at end of file
diff --git a/pages/index.html b/pages/index.html
new file mode 100644
index 0000000000..f527e094c1
--- /dev/null
+++ b/pages/index.html
@@ -0,0 +1,7 @@
+
+
+
+Flamegraphs
+
+
+
From b128f48efed41d60c564bab2097c7a45c38b9608 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Thu, 5 Dec 2024 10:28:18 -0300
Subject: [PATCH 19/80] Update deployed page with generated flamegraphs
---
.github/scripts/flamegraph.sh | 6 ++-
.github/scripts/flamegraph_reth.sh | 3 +-
.github/workflows/deploy_page.yaml | 41 --------------
.github/workflows/flamegraph_reporter.yaml | 57 ++++++++++++++++++--
pages/index.html | 49 +++++++++++++++--
pages/style.css | 62 ++++++++++++++++++++++
6 files changed, 165 insertions(+), 53 deletions(-)
delete mode 100644 .github/workflows/deploy_page.yaml
create mode 100644 pages/style.css
diff --git a/.github/scripts/flamegraph.sh b/.github/scripts/flamegraph.sh
index 4d41d1dea1..82a592d53c 100644
--- a/.github/scripts/flamegraph.sh
+++ b/.github/scripts/flamegraph.sh
@@ -10,10 +10,12 @@ ethrex_l2 test load --path ./test_data/private_keys.txt -i $iterations -v --val
echo "Waiting for transactions to be processed..."
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
-while [[ $output -le $end_val ]]; do
+retries=0
+while [[ $output -le $end_val && $retries -lt 30 ]]; do
sleep 5
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
+ echo "balance was $output still not reached value of $end_val"
done
echo "Done. Balance of $output reached, killing process ethrex"
-sudo pkill ethrex && while pgrep -l "cargo-flamegraph"; do sleep 1;done;
+sudo pkill ethrex && while pgrep -l "cargo-flamegraph"; do echo "waiting for reth to exit... "; sleep 1;done;
echo "ethrex killed"
diff --git a/.github/scripts/flamegraph_reth.sh b/.github/scripts/flamegraph_reth.sh
index 93b69a5456..77e481cc97 100644
--- a/.github/scripts/flamegraph_reth.sh
+++ b/.github/scripts/flamegraph_reth.sh
@@ -12,7 +12,8 @@ output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
while [[ $output -le $end_val ]]; do
sleep 5
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
+ echo "balance was $output still not reached value of $end_val"
done
echo "Balance of $output reached, killing process reth"
-sudo pkill reth && while pgrep -l "cargo-flamegraph"; do sleep 1;done;
+sudo pkill reth && while pgrep -l "cargo-flamegraph"; do echo "waiting for reth to exit... "; sleep 1;done;
diff --git a/.github/workflows/deploy_page.yaml b/.github/workflows/deploy_page.yaml
deleted file mode 100644
index 90e474d76d..0000000000
--- a/.github/workflows/deploy_page.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-# Simple workflow for deploying static content to GitHub Pages
-name: Deploy static content to Pages
-
-on:
- # Runs on pushes targeting the default branch
- push:
- branches: [ "automate-perf-tests" ]
- # Allows you to run this workflow manually from the Actions tab
- workflow_dispatch:
-
-# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
-permissions:
- contents: read
- pages: write
- id-token: write
-
-# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
-# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
-concurrency:
- group: "pages"
- cancel-in-progress: false
-
-jobs:
- # Single deploy job since we're just deploying
- deploy:
- environment:
- name: github-pages
- url: ${{ steps.deployment.outputs.page_url }}
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Setup Pages
- uses: actions/configure-pages@v5
- - name: Upload artifact
- uses: actions/upload-pages-artifact@v3
- with:
- path: 'pages/'
- - name: Deploy to GitHub Pages
- id: deployment
- uses: actions/deploy-pages@v4
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 06f3c511c9..3f2aad99fe 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -1,5 +1,10 @@
name: Daily Flamegraph Reporter
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
on:
push:
branches: [ "main" ]
@@ -65,14 +70,14 @@ jobs:
echo "running perf"
perf script -v -i perf.data --no-inline > stack.data
inferno-collapse-perf < stack.data > collapsed.data
- inferno-flamegraph < collapsed.data > flamegraph.svg
- file flamegraph.svg
+ inferno-flamegraph < collapsed.data > flamegraph_ethrex.svg
+ file flamegraph_ethrex.svg
- - name: Upload artifacts - flamegraph.svg
+ - name: Upload artifacts - flamegraph_ethrex.svg
uses: actions/upload-artifact@v4
with:
- name: flamegraph.svg
- path: ./flamegraph.svg
+ name: flamegraph_ethrex.svg
+ path: ./flamegraph_ethrex.svg
flamegraph-reth:
name: Generate Flamegraph for Reth
@@ -147,3 +152,45 @@ jobs:
with:
name: flamegraph_reth.svg
path: ./flamegraph_reth.svg
+
+ upload-static-page:
+ name: Upload artifacts for static page
+ runs-on: ubuntu-latest
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ needs: [ flamegraph, flamegraph-reth ]
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@v4
+
+ - name: Download ethrex flamegraph artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: flamegraph_ethrex
+ path: flamegraph_ethrex.svg
+
+ - name: Download reth flamegraph artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: flamegraph_reth
+ path: flamegraph_reth.svg
+
+ - name: Update static page locally with new data
+ run: |
+ cp flamegraph_ethrex.svg pages/
+ cp flamegraph_reth.svg pages/
+ echo "NOW=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_ENV
+ sed -i "s/{{LAST_UPDATE}}/$NOW/g" pages/index.html
+
+ - name: Setup Pages
+ uses: actions/configure-pages@v5
+
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: 'pages/'
+
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/pages/index.html b/pages/index.html
index f527e094c1..21b9408f96 100644
--- a/pages/index.html
+++ b/pages/index.html
@@ -1,7 +1,48 @@
-
-
+
+
+
+
+
+ Ethrex Flamegraph Comparison
+
+
-Flamegraphs
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/style.css b/pages/style.css
new file mode 100644
index 0000000000..c2c5a29aff
--- /dev/null
+++ b/pages/style.css
@@ -0,0 +1,62 @@
+body {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ min-height: 100vh;
+ margin: 0;
+ font-family: Arial, sans-serif;
+ background-color: #f9f9f9;
+}
+
+header {
+ text-align: center;
+ margin-bottom: 1.5em;
+}
+
+h1 {
+ margin-bottom: 0;
+}
+
+.last-updated {
+ margin-top: 0.5em;
+ font-weight: lighter;
+ color: dimgray;
+}
+
+.container {
+ display: flex;
+ gap: 10px;
+ width: 90%;
+}
+
+.column {
+ flex: 1;
+ text-align: center;
+ background: #fff;
+ border: 1px solid #ddd;
+ border-radius: 8px;
+ padding: 5px;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-between;
+ height: 80vh;
+}
+
+img {
+ width: 80%;
+ height: auto;
+ max-width: 200px;
+ max-height: 150px; /* Prevent SVGs from being too tall */
+}
+
+h2 {
+ margin-bottom: 5px;
+ font-size: 1.5rem;
+}
+
+.col-header {
+ margin-bottom: 2em;
+}
From 9a7c430683881450a5fd204ebdf1250cae091fa7 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Thu, 5 Dec 2024 11:05:35 -0300
Subject: [PATCH 20/80] Update deployed page with generated flamegraphs 2
---
.github/scripts/flamegraph.sh | 3 ++-
.github/scripts/flamegraph_reth.sh | 6 ++++--
.github/workflows/flamegraph_reporter.yaml | 16 ++++++++++------
3 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/.github/scripts/flamegraph.sh b/.github/scripts/flamegraph.sh
index 82a592d53c..77f6aa5455 100644
--- a/.github/scripts/flamegraph.sh
+++ b/.github/scripts/flamegraph.sh
@@ -14,7 +14,8 @@ retries=0
while [[ $output -le $end_val && $retries -lt 30 ]]; do
sleep 5
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
- echo "balance was $output still not reached value of $end_val"
+ echo "balance was $output still not reached value of $end_val (retry $retries/30)"
+ ((retries++))
done
echo "Done. Balance of $output reached, killing process ethrex"
sudo pkill ethrex && while pgrep -l "cargo-flamegraph"; do echo "waiting for reth to exit... "; sleep 1;done;
diff --git a/.github/scripts/flamegraph_reth.sh b/.github/scripts/flamegraph_reth.sh
index 77e481cc97..3d57e914ee 100644
--- a/.github/scripts/flamegraph_reth.sh
+++ b/.github/scripts/flamegraph_reth.sh
@@ -9,10 +9,12 @@ ethrex_l2 test load --path /home/runner/work/ethrex/ethrex/test_data/private_key
echo "Monitoring..."
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
-while [[ $output -le $end_val ]]; do
+retries=0
+while [[ $output -le $end_val && $retries -lt 30 ]]; do
sleep 5
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
- echo "balance was $output still not reached value of $end_val"
+ echo "balance was $output still not reached value of $end_val (retry $retries/30)"
+ ((retries++))
done
echo "Balance of $output reached, killing process reth"
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 3f2aad99fe..0930a6b6c4 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -167,21 +167,25 @@ jobs:
- name: Download ethrex flamegraph artifact
uses: actions/download-artifact@v4
with:
- name: flamegraph_ethrex
+ name: flamegraph_ethrex.svg
path: flamegraph_ethrex.svg
- name: Download reth flamegraph artifact
uses: actions/download-artifact@v4
with:
- name: flamegraph_reth
+ name: flamegraph_reth.svg
path: flamegraph_reth.svg
- name: Update static page locally with new data
+ shell: bash
run: |
- cp flamegraph_ethrex.svg pages/
- cp flamegraph_reth.svg pages/
- echo "NOW=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_ENV
- sed -i "s/{{LAST_UPDATE}}/$NOW/g" pages/index.html
+ file flamegraph_ethrex.svg
+ file flamegraph_reth.svg
+ cp -r flamegraph_ethrex.svg pages/
+ cp -r flamegraph_reth.svg pages/
+ ls -las pages/
+ date +'%Y-%m-%dT%H:%M:%S'
+ sed -i "s/{{LAST_UPDATE}}/$(date +'%Y-%m-%dT%H:%M:%S')/g" pages/index.html
- name: Setup Pages
uses: actions/configure-pages@v5
From 29d50a4033afd4d15af0b6d582d56fb1e8c50af0 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Thu, 5 Dec 2024 13:24:59 -0300
Subject: [PATCH 21/80] Fix .svg paths
---
pages/index.html | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/pages/index.html b/pages/index.html
index 21b9408f96..6dc4dc3fb6 100644
--- a/pages/index.html
+++ b/pages/index.html
@@ -15,16 +15,19 @@ Ethrex Flamegraph Comparison
-
+
-
+
From 2d2160bcd4f0dcf64a186a22350b5645f311fb96 Mon Sep 17 00:00:00 2001
From: Dylan Socolobsky
Date: Thu, 5 Dec 2024 14:30:22 -0300
Subject: [PATCH 22/80] Add elapsed time for each test to static page
---
.github/scripts/flamegraph.sh | 19 +++++++++++++------
.github/scripts/flamegraph_reth.sh | 14 +++++++++++---
.github/workflows/flamegraph_reporter.yaml | 19 ++++++++++++++++++-
pages/index.html | 6 ++++--
pages/style.css | 7 ++++++-
5 files changed, 52 insertions(+), 13 deletions(-)
diff --git a/.github/scripts/flamegraph.sh b/.github/scripts/flamegraph.sh
index 77f6aa5455..ef384d69d0 100644
--- a/.github/scripts/flamegraph.sh
+++ b/.github/scripts/flamegraph.sh
@@ -1,14 +1,13 @@
#!/bin/bash
-iterations=3
+iterations=10
value=10000000
account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
end_val=$((172 * $iterations * $value))
-echo "Sending to account $account"
-ethrex_l2 test load --path ./test_data/private_keys.txt -i $iterations -v --value $value --to $account
+ethrex_l2 test load --path /home/runner/work/ethrex/ethrex/test_data/private_keys.txt -i $iterations -v --value $value --to $account
-echo "Waiting for transactions to be processed..."
+start_time=$(date +%s)
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
retries=0
while [[ $output -le $end_val && $retries -lt 30 ]]; do
@@ -17,6 +16,14 @@ while [[ $output -le $end_val && $retries -lt 30 ]]; do
echo "balance was $output still not reached value of $end_val (retry $retries/30)"
((retries++))
done
-echo "Done. Balance of $output reached, killing process ethrex"
+end_time=$(date +%s)
+elapsed_time=$((end_time - start_time))
+minutes=$((elapsed_time / 60))
+seconds=$((elapsed_time % 60))
+echo "Balance of $output reached in $minutes min $seconds s, killing process ethrex"
+
sudo pkill ethrex && while pgrep -l "cargo-flamegraph"; do echo "waiting for reth to exit... "; sleep 1;done;
-echo "ethrex killed"
+
+# We need this for the following job, to add to the static page
+# Using Github Outputs would be easier, but I couldn't get it to work
+echo -e "$minutes minutes $seconds seconds" >> /home/runner/work/ethrex/ethrex/times.txt
diff --git a/.github/scripts/flamegraph_reth.sh b/.github/scripts/flamegraph_reth.sh
index 3d57e914ee..38d6609c54 100644
--- a/.github/scripts/flamegraph_reth.sh
+++ b/.github/scripts/flamegraph_reth.sh
@@ -1,13 +1,13 @@
#!/bin/bash
-iterations=3
+iterations=10
value=10000000
account=0x33c6b73432B3aeA0C1725E415CC40D04908B85fd
end_val=$((172 * $iterations * $value))
ethrex_l2 test load --path /home/runner/work/ethrex/ethrex/test_data/private_keys.txt -i $iterations -v --value $value --to $account
-echo "Monitoring..."
+start_time=$(date +%s)
output=$(cast balance $account --rpc-url=http://localhost:1729 2>&1)
retries=0
while [[ $output -le $end_val && $retries -lt 30 ]]; do
@@ -16,6 +16,14 @@ while [[ $output -le $end_val && $retries -lt 30 ]]; do
echo "balance was $output still not reached value of $end_val (retry $retries/30)"
((retries++))
done
-echo "Balance of $output reached, killing process reth"
+end_time=$(date +%s)
+elapsed_time=$((end_time - start_time))
+minutes=$((elapsed_time / 60))
+seconds=$((elapsed_time % 60))
+echo "Balance of $output reached in $minutes min $seconds s, killing process reth"
sudo pkill reth && while pgrep -l "cargo-flamegraph"; do echo "waiting for reth to exit... "; sleep 1;done;
+
+# We need this for the following job, to add to the static page
+# Using Github Outputs would be easier, but I couldn't get it to work
+echo -e "$minutes minutes $seconds seconds" >> /home/runner/work/ethrex/ethrex/times.txt
diff --git a/.github/workflows/flamegraph_reporter.yaml b/.github/workflows/flamegraph_reporter.yaml
index 0930a6b6c4..4e0605de68 100644
--- a/.github/workflows/flamegraph_reporter.yaml
+++ b/.github/workflows/flamegraph_reporter.yaml
@@ -54,7 +54,8 @@ jobs:
- name: Build ethrex
run: CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release --bin ethrex --features dev
- - name: Generate Flamegraph data for Ethrex
+ - id: generate-flamegraph
+ name: Generate Flamegraph data for Ethrex
shell: bash
run: |
CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" --bin ethrex --features dev -- --network test_data/genesis-l2.json --http.port 1729 &
@@ -176,6 +177,18 @@ jobs:
name: flamegraph_reth.svg
path: flamegraph_reth.svg
+ - name: Download time reports for ethrex
+ uses: actions/download-artifact@v4
+ with:
+ name: times_ethrex
+ path: times_ethrex.txt
+
+ - name: Download time reports for reth
+ uses: actions/download-artifact@v4
+ with:
+ name: times_reth
+ path: times_reth.txt
+
- name: Update static page locally with new data
shell: bash
run: |
@@ -185,7 +198,11 @@ jobs:
cp -r flamegraph_reth.svg pages/
ls -las pages/
date +'%Y-%m-%dT%H:%M:%S'
+ ethrex_time=$(cat times_ethrex.txt)
+ reth_time=$(cat times_reth.txt)
sed -i "s/{{LAST_UPDATE}}/$(date +'%Y-%m-%dT%H:%M:%S')/g" pages/index.html
+ sed -i "s/{{ETHREX_TIME}}/$ethrex_time/g" pages/index.html
+ sed -i "s/{{RETH_TIME}}/$reth_time/g" pages/index.html
- name: Setup Pages
uses: actions/configure-pages@v5
diff --git a/pages/index.html b/pages/index.html
index 6dc4dc3fb6..a2ed1046bf 100644
--- a/pages/index.html
+++ b/pages/index.html
@@ -18,7 +18,8 @@ Ethrex
Download
-
+
-