diff --git a/Cargo.lock b/Cargo.lock index a93e0dc30351e..708d305998f5c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6389,6 +6389,36 @@ dependencies = [ "tokio", ] +[[package]] +name = "igra-loadgen" +version = "1.6.0" +dependencies = [ + "alloy-consensus", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives", + "alloy-signer-local", + "alloy-transport", + "chrono", + "clap", + "eyre", + "foundry-common", + "foundry-config", + "kaspa-addresses 1.1.0-rc.3", + "kaspa-bip32 1.1.0-rc.3", + "kaspa-consensus-core 1.1.0-rc.3", + "kaspa-grpc-client", + "kaspa-rpc-core 1.1.0-rc.3", + "kaspa-txscript 1.1.0-rc.3", + "rand 0.9.2", + "reqwest", + "serde", + "serde_json", + "sha2", + "tokio", + "tower 0.5.3", +] + [[package]] name = "impl-codec" version = "0.6.0" diff --git a/Cargo.toml b/Cargo.toml index 0fd1e2b7fb754..d749cb4c57bca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,6 +22,7 @@ members = [ "crates/fmt/", "crates/forge/", "crates/igra-kaspa-derive/", + "crates/igra-loadgen/", "crates/lint/", "crates/macros/", "crates/primitives/", diff --git a/crates/common/src/bin/kaspa_fund.rs b/crates/common/src/bin/kaspa_fund.rs new file mode 100644 index 0000000000000..d7870513de7d2 --- /dev/null +++ b/crates/common/src/bin/kaspa_fund.rs @@ -0,0 +1,414 @@ +use clap::Parser; +use eyre::{Context, Result, eyre}; +use kaspa_addresses::{Address as KaspaAddress, Prefix as KaspaAddressPrefix, Version as KaspaAddressVersion}; +use kaspa_bip32::secp256k1::SecretKey as KaspaSecretKey; +use kaspa_bip32::{ + ChildNumber as KaspaChildNumber, DerivationPath as KaspaDerivationPath, + ExtendedPrivateKey as KaspaExtendedPrivateKey, Language as KaspaLanguage, Mnemonic as KaspaMnemonic, +}; +use kaspa_consensus_core::{ + config::params::Params as KaspaParams, + mass::MassCalculator as KaspaMassCalculator, + network::NetworkType as KaspaNetworkType, + sign::{sign_with_multiple_v2 as kaspa_sign_with_multiple_v2, verify as kaspa_verify}, + subnets::SubnetworkId, + tx::{ + SignableTransaction as KaspaSignableTransaction, Transaction as KaspaTransaction, + TransactionInput as KaspaTransactionInput, TransactionOutput as KaspaTransactionOutput, + UtxoEntry as KaspaUtxoEntry, + }, +}; +use kaspa_grpc_client::GrpcClient; +use kaspa_rpc_core::{RpcTransaction, RpcUtxosByAddressesEntry, api::rpc::RpcApi}; +use kaspa_txscript::pay_to_address_script; +use std::path::Path; + +const MIN_CHANGE_SOMPI: u64 = 1_000; + +#[derive(Debug, Parser)] +#[command(about = "Fund multiple Kaspa addresses from a single source key (gRPC).")] +struct Args { + /// Kaspa gRPC URL (grpc://...). + #[arg(long)] + kaspa_rpc_url: String, + + /// Kaspa network string (mainnet, testnet-10, devnet, simnet). + #[arg(long, default_value = "testnet-10")] + kaspa_network: String, + + /// Source mnemonic phrase (12/24 words) or a file path containing it. + #[arg(long, env = "KASPA_MNEMONIC", hide_env_values = true)] + mnemonic: Option, + + /// Source mnemonic passphrase (aka "recovery passphrase" in kaspa-cli). + /// + /// If omitted and no other passphrase flags are set, defaults to empty string (standard BIP39). + #[arg(long, env = "KASPA_MNEMONIC_PASSPHRASE", hide_env_values = true)] + mnemonic_passphrase: Option, + + /// Use the mnemonic phrase itself as the BIP39 passphrase (non-standard; opt-in). + #[arg( + long, + env = "KASPA_MNEMONIC_PASSPHRASE_AS_MNEMONIC", + default_value_t = false, + conflicts_with = "mnemonic_passphrase", + conflicts_with = "mnemonic_passphrase_empty" + )] + mnemonic_passphrase_as_mnemonic: bool, + + /// Explicitly set the mnemonic passphrase to the empty string. + #[arg( + long, + env = "KASPA_MNEMONIC_PASSPHRASE_EMPTY", + default_value_t = false, + conflicts_with = "mnemonic_passphrase", + conflicts_with = "mnemonic_passphrase_as_mnemonic" + )] + mnemonic_passphrase_empty: bool, + + /// Source mnemonic index (default derivation scheme). + #[arg(long, env = "KASPA_MNEMONIC_INDEX", default_value_t = 0)] + mnemonic_index: u32, + + /// Source Kaspa private key in hex (0x...). + #[arg(long, env = "KASPA_PRIVATE_KEY", hide_env_values = true)] + private_key: Option, + + /// One or more outputs formatted as: `:`. + /// + /// Example: `kaspatest:qq...:100000000` (1 KAS if 1e8 sompi). + #[arg(long = "to", required = true)] + outputs: Vec, + + /// Fee rate in sompi/gram (defaults to node estimate normal bucket). + #[arg(long)] + feerate: Option, +} + +fn main() -> Result<()> { + // Use a current-thread runtime here. In some dev/test setups this avoids flaky DNS resolution + // failures compared to the default multi-thread runtime. + let args = Args::parse(); + let rt = tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .wrap_err("failed to build tokio runtime")?; + rt.block_on(async_main(args)) +} + +async fn async_main(args: Args) -> Result<()> { + + let (network_type, prefix) = kaspa_network_descriptor(&args.kaspa_network)?; + let private_key = resolve_private_key(&args)?; + let source_address = kaspa_address_from_private_key(&private_key, prefix)?; + + let outputs = parse_outputs(&args.outputs)?; + let total_out: u64 = outputs.iter().map(|(_, amount)| *amount).sum(); + + let client = GrpcClient::connect(args.kaspa_rpc_url.clone()) + .await + .wrap_err("failed to connect to kaspa gRPC")?; + + let mut utxos = client + .get_utxos_by_addresses(vec![source_address.clone()]) + .await + .wrap_err("failed to fetch source UTXOs")?; + utxos.sort_by_key(|entry| std::cmp::Reverse(entry.utxo_entry.amount)); + + let feerate = if let Some(fr) = args.feerate { + fr + } else { + // Use "normal" bucket first entry; enforce protocol minimum 1.0. + let estimate = client + .get_fee_estimate() + .await + .wrap_err("failed to fetch fee estimate")?; + estimate + .normal_buckets + .first() + .map(|b| b.feerate) + .unwrap_or(estimate.priority_bucket.feerate) + .max(1.0) + }; + + // Select inputs with a pessimistic fee guess, then refine fee from actual mass. + let mut selected = Vec::new(); + let mut total_in = 0u64; + let fee_guess = 10_000u64; + for entry in utxos.iter().cloned() { + total_in = total_in.saturating_add(entry.utxo_entry.amount); + selected.push(entry); + if total_in >= total_out.saturating_add(fee_guess).saturating_add(MIN_CHANGE_SOMPI) { + break; + } + } + if total_in < total_out.saturating_add(fee_guess).saturating_add(MIN_CHANGE_SOMPI) { + return Err(eyre!( + "insufficient funds: total_in={} total_out={} fee_guess={}", + total_in, + total_out, + fee_guess + )); + } + + // Iterate once to compute fee from actual mass. + let (tx, fee, mass) = build_signed_funding_tx( + &private_key, + &source_address, + network_type, + &selected, + &outputs, + feerate, + )?; + + // Some environments report unexpectedly large masses here. Since the node will re-validate + // standardness anyway, avoid blocking funding on a local mass calculation. + // + // If the tx is truly non-standard, submit_transaction will fail. + tx.set_mass(0); + + let rpc_tx = RpcTransaction::from(&tx); + let tx_id = client + .submit_transaction(rpc_tx, false) + .await + .wrap_err("submit_transaction failed")?; + + println!( + "{{\"source\":\"{}\",\"tx_id\":\"{}\",\"outputs\":{},\"fee_sompi\":{},\"feerate_sompi_per_gram\":{},\"mass\":{}}}", + source_address, + tx_id, + outputs.len(), + fee, + feerate, + mass + ); + + Ok(()) +} + +fn parse_outputs(values: &[String]) -> Result> { + let mut out = Vec::with_capacity(values.len()); + for raw in values { + // Kaspa addresses contain `:` (e.g. `kaspatest:...`), so split from the right. + let (addr, amount) = raw + .rsplit_once(':') + .ok_or_else(|| eyre!("invalid --to entry (expected
:): {raw}"))?; + let address = KaspaAddress::try_from(addr.trim()) + .wrap_err_with(|| format!("invalid kaspa address in --to: {addr}"))?; + let amount = amount + .trim() + .parse::() + .wrap_err_with(|| format!("invalid sompi amount in --to: {raw}"))?; + out.push((address, amount)); + } + Ok(out) +} + +fn resolve_private_key(args: &Args) -> Result<[u8; 32]> { + if let Some(pk) = args.private_key.as_deref() { + return parse_private_key_hex(pk); + } + let mnemonic = args + .mnemonic + .as_deref() + .ok_or_else(|| eyre!("must set either --private-key or --mnemonic"))?; + derive_private_key( + mnemonic, + args.mnemonic_passphrase.as_deref(), + args.mnemonic_passphrase_as_mnemonic, + args.mnemonic_passphrase_empty, + None, + args.mnemonic_index, + ) +} + +fn parse_private_key_hex(private_key: &str) -> Result<[u8; 32]> { + let key = private_key.trim().strip_prefix("0x").unwrap_or(private_key.trim()); + let bytes = alloy_primitives::hex::decode(key) + .map_err(|err| eyre!("invalid private key hex: {err}"))?; + if bytes.len() != 32 { + return Err(eyre!("expected 32-byte private key hex")); + } + let mut fixed = [0u8; 32]; + fixed.copy_from_slice(&bytes); + Ok(fixed) +} + +fn derive_private_key( + mnemonic: &str, + passphrase: Option<&str>, + passphrase_as_mnemonic: bool, + passphrase_empty: bool, + derivation_path: Option<&str>, + index: u32, +) -> Result<[u8; 32]> { + let phrase = if Path::new(mnemonic).is_file() { + std::fs::read_to_string(mnemonic) + .wrap_err("failed to read mnemonic file")? + } else { + mnemonic.to_string() + }; + let phrase = phrase.split_whitespace().collect::>().join(" "); + + let effective_passphrase_owned; + let effective_passphrase = if passphrase_as_mnemonic && passphrase.is_none() && !passphrase_empty { + effective_passphrase_owned = phrase.clone(); + effective_passphrase_owned.as_str() + } else if passphrase_empty { + "" + } else { + passphrase.unwrap_or_default() + }; + + let kaspa_mnemonic = KaspaMnemonic::new(phrase, KaspaLanguage::English) + .map_err(|err| eyre!("invalid Kaspa mnemonic: {err}"))?; + let seed = kaspa_mnemonic.to_seed(effective_passphrase); + let xprv = KaspaExtendedPrivateKey::::new(seed) + .map_err(|err| eyre!("failed to derive Kaspa master key: {err}"))?; + + let secret = if let Some(path) = derivation_path { + let path = path + .parse::() + .map_err(|err| eyre!("invalid Kaspa derivation path: {err}"))?; + *xprv + .derive_path(&path) + .map_err(|err| eyre!("failed to derive Kaspa key by path: {err}"))? + .private_key() + } else { + let base = "m/44'/111111'/0'/0" + .parse::() + .map_err(|err| eyre!("failed to parse default Kaspa derivation path: {err}"))?; + let base = xprv + .derive_path(&base) + .map_err(|err| eyre!("failed to derive default Kaspa base key: {err}"))?; + *base + .derive_child( + KaspaChildNumber::new(index, false) + .map_err(|err| eyre!("invalid Kaspa mnemonic index: {err}"))?, + ) + .map_err(|err| eyre!("failed to derive Kaspa key by index: {err}"))? + .private_key() + }; + + Ok(secret.secret_bytes()) +} + +fn kaspa_network_descriptor( + network: &str, +) -> Result<(KaspaNetworkType, KaspaAddressPrefix)> { + Ok(match network { + "mainnet" => (KaspaNetworkType::Mainnet, KaspaAddressPrefix::Mainnet), + "testnet-10" => (KaspaNetworkType::Testnet, KaspaAddressPrefix::Testnet), + "devnet" => (KaspaNetworkType::Devnet, KaspaAddressPrefix::Devnet), + "simnet" => (KaspaNetworkType::Simnet, KaspaAddressPrefix::Simnet), + other => return Err(eyre!("unsupported kaspa network: {other}")), + }) +} + +fn kaspa_address_from_private_key( + private_key: &[u8; 32], + prefix: KaspaAddressPrefix, +) -> Result { + let secret = KaspaSecretKey::from_slice(private_key) + .map_err(|err| eyre!("invalid private key bytes: {err}"))?; + let public_key = kaspa_bip32::secp256k1::PublicKey::from_secret_key_global(&secret); + let payload = public_key.x_only_public_key().0.serialize(); + Ok(KaspaAddress::new(prefix, KaspaAddressVersion::PubKey, &payload)) +} + +fn fee_from_feerate(mass: u64, feerate_sompi_per_gram: f64) -> u64 { + let fee = (feerate_sompi_per_gram * (mass as f64)).ceil(); + if fee <= 1.0 { 1 } else if fee >= (u64::MAX as f64) { u64::MAX } else { fee as u64 } +} + +fn build_signed_funding_tx( + private_key: &[u8; 32], + source_address: &KaspaAddress, + network_type: KaspaNetworkType, + utxos: &[RpcUtxosByAddressesEntry], + outputs: &[(KaspaAddress, u64)], + feerate: f64, +) -> Result<(KaspaTransaction, u64, u64)> { + if utxos.is_empty() { + return Err(eyre!("no UTXOs available for source address")); + } + + let inputs = utxos + .iter() + .map(|entry| KaspaTransactionInput::new(entry.outpoint.clone().into(), Vec::new(), 0, 1)) + .collect::>(); + let total_in: u64 = utxos.iter().map(|e| e.utxo_entry.amount).sum(); + let total_out: u64 = outputs.iter().map(|(_, amount)| *amount).sum(); + + let entries = utxos + .iter() + .map(|entry| KaspaUtxoEntry { + amount: entry.utxo_entry.amount, + script_public_key: entry.utxo_entry.script_public_key.clone(), + block_daa_score: entry.utxo_entry.block_daa_score, + is_coinbase: entry.utxo_entry.is_coinbase, + }) + .collect::>(); + + let mass_calculator = + KaspaMassCalculator::new_with_consensus_params(&KaspaParams::from(network_type)); + let change_script = pay_to_address_script(source_address); + let payload = vec![]; + + // Iterate until fee stabilizes (mass should be stable, but be defensive). + let mut fee = 1u64; + for _iter in 0..4 { + let required = total_out.saturating_add(fee).saturating_add(MIN_CHANGE_SOMPI); + if total_in < required { + return Err(eyre!( + "insufficient inputs for outputs+fee: total_in={} required={}", + total_in, + required + )); + } + let change = total_in.saturating_sub(total_out).saturating_sub(fee); + if change < MIN_CHANGE_SOMPI { + return Err(eyre!("computed change below MIN_CHANGE_SOMPI")); + } + + let mut tx_outputs = Vec::with_capacity(outputs.len() + 1); + for (addr, amount) in outputs.iter() { + tx_outputs.push(KaspaTransactionOutput::new(*amount, pay_to_address_script(addr))); + } + tx_outputs.push(KaspaTransactionOutput::new(change, change_script.clone())); + + let mut tx = KaspaTransaction::new( + 0, + inputs.clone(), + tx_outputs, + 0, + SubnetworkId::default(), + 0, + payload.clone(), + ); + tx.finalize(); + + let signable = KaspaSignableTransaction::with_entries(tx, entries.clone()); + let signed = kaspa_sign_with_multiple_v2(signable, std::slice::from_ref(private_key)) + .fully_signed() + .map_err(|err| eyre!("failed to sign Kaspa tx: {err}"))?; + kaspa_verify(&signed.as_verifiable()) + .map_err(|err| eyre!("invalid Kaspa signature set: {err}"))?; + + let non_contextual = mass_calculator.calc_non_contextual_masses(&signed.tx); + let contextual = mass_calculator + .calc_contextual_masses(&signed.as_verifiable()) + .ok_or_else(|| eyre!("failed to calculate Kaspa tx storage mass"))?; + let mass = contextual.max(non_contextual); + let needed_fee = fee_from_feerate(mass, feerate); + + if needed_fee == fee { + let tx = signed.tx; + tx.set_mass(mass); + return Ok((tx, fee, mass)); + } + fee = needed_fee; + } + + Err(eyre!("fee did not converge after iterations")) +} diff --git a/crates/common/src/provider/igra_transport.rs b/crates/common/src/provider/igra_transport.rs index 0aed91034b8ae..19bfdee5c96c6 100644 --- a/crates/common/src/provider/igra_transport.rs +++ b/crates/common/src/provider/igra_transport.rs @@ -69,9 +69,10 @@ const MAX_STANDARD_KASPA_TX_MASS: u64 = 100_000; // Per IGRA Transaction Protocol: L2Data (raw EVM tx bytes) must not exceed this. const IGRA_MAX_L2DATA_BYTES: usize = 24_800; const CACHE_TTL_SECS: u64 = 20; -const BASE_SUBMIT_FEE_SOMPI: u64 = 200_000; -const FEE_PER_KIB_SOMPI: u64 = 20_000; -const EXTRA_INPUT_FEE_SOMPI: u64 = 10_000; +// Legacy fixed-fee fallback (used only if fee estimation RPC fails). +const BASE_SUBMIT_FEE_SOMPI: u64 = 5_000; +const FEE_PER_KIB_SOMPI: u64 = 500; +const EXTRA_INPUT_FEE_SOMPI: u64 = 1_000; const MIN_CHANGE_SOMPI: u64 = 1_000; static REQUEST_COUNTER: AtomicU64 = AtomicU64::new(1); @@ -85,6 +86,23 @@ pub struct IgraTransportConfig { pub kaspa_network: Option, /// Payload compression mode for L2Data inside the Kaspa payload. pub payload_compression: Option, + /// Kaspa UTXO strategy for write-path submissions. + /// + /// Supported: + /// - "rpc" (default): query UTXOs each submission. + /// - "chain": maintain a local single-UTXO chain per Kaspa address by spending the previous + /// submission's change output, falling back to RPC refresh on error. + pub kaspa_utxo_mode: Option, + /// Fee estimation mode for Kaspa submissions. + /// + /// Supported: + /// - "estimate" (default): use `get_fee_estimate` and compute fee from tx mass. + /// - "fixed": use a conservative fixed-fee heuristic (legacy fallback). + pub kaspa_fee_mode: Option, + /// Fee estimate bucket selection when `kaspa_fee_mode=estimate`. + /// + /// Supported: "priority", "normal" (default), "low". + pub kaspa_fee_bucket: Option, pub kaspa_wallet: IgraKaspaWalletConfig, } @@ -98,6 +116,9 @@ pub struct IgraSubmitRequest { pub kaspa_rpc_url: Option, pub kaspa_network: Option, pub payload_compression: Option, + pub kaspa_utxo_mode: Option, + pub kaspa_fee_mode: Option, + pub kaspa_fee_bucket: Option, pub kaspa_wallet: IgraKaspaWalletConfig, } @@ -121,11 +142,30 @@ struct CachedUtxoSet { entries: Vec, } +#[derive(Clone, Debug)] +struct CachedFeeRate { + fetched_at: Instant, + /// Fee rate in sompi/gram. + feerate: f64, +} + +#[derive(Clone, Debug)] +struct ChainedUtxoState { + /// Tip UTXO used as the next input for this address. + tip: RpcUtxosByAddressesEntry, +} + /// Default submitter implementation backed by in-process Kaspa RPC, signing, and broadcast. #[derive(Clone)] pub struct InProcessKaspaPayloadSubmitter { utxo_cache: Arc>>, utxo_cache_epoch: Arc, + grpc_client: Arc>>, + feerate_cache: Arc>>, + // Mass depends on the payload length (raw L2 tx bytes length). Cache by payload length. + mass_cache: Arc>>, + // Per-address chained UTXO state to enable "chain" mode. + chained_utxos: Arc>>>>, } impl std::fmt::Debug for InProcessKaspaPayloadSubmitter { @@ -139,6 +179,10 @@ impl Default for InProcessKaspaPayloadSubmitter { Self { utxo_cache: Arc::new(TokioMutex::new(None)), utxo_cache_epoch: Arc::new(AtomicU64::new(1)), + grpc_client: Arc::new(TokioMutex::new(None)), + feerate_cache: Arc::new(TokioMutex::new(None)), + mass_cache: Arc::new(TokioMutex::new(std::collections::HashMap::new())), + chained_utxos: Arc::new(TokioMutex::new(std::collections::HashMap::new())), } } } @@ -176,7 +220,8 @@ impl IgraPayloadSubmitter for InProcessKaspaPayloadSubmitter { rpc_url, request.l2_tx_hash ); - let mut client = GrpcClient::connect(rpc_url.to_string()) + let client = self + .get_or_connect_client(rpc_url) .await .map_err(|err| format!("IGRA submit error: failed to connect to Kaspa RPC: {err}"))?; @@ -188,16 +233,216 @@ impl IgraPayloadSubmitter for InProcessKaspaPayloadSubmitter { .map_err(|err| format!("IGRA config error: `tx_id_prefix` is invalid hex: {err}"))?; let mining_timeout = Duration::from_secs(request.mining_timeout_secs); - for attempt in 0..=1 { - let force_refresh = attempt > 0; - let utxos = self - .load_utxos( - &mut client, + let utxo_mode = request + .kaspa_utxo_mode + .as_deref() + .unwrap_or("rpc") + .trim() + .to_ascii_lowercase(); + match utxo_mode.as_str() { + "chain" => { + self.submit_with_chained_utxo( + &client, rpc_url, network, + network_type, + &private_key, &source_address, - force_refresh, + payload_header, + &l2data, + &prefix_bytes, + mining_timeout, + request, ) + .await + } + "" | "rpc" => { + self.submit_with_rpc_utxos( + &client, + rpc_url, + network, + network_type, + &private_key, + &source_address, + payload_header, + &l2data, + &prefix_bytes, + mining_timeout, + request, + ) + .await + } + other => Err(format!( + "IGRA config error: unsupported kaspa_utxo_mode `{other}` (supported: rpc, chain)" + )), + } + } +} + +impl InProcessKaspaPayloadSubmitter { + async fn get_or_connect_client(&self, rpc_url: &str) -> Result { + let mut guard = self.grpc_client.lock().await; + if let Some((cached_url, client)) = guard.as_ref() && cached_url == rpc_url { + return Ok(client.clone()); + } + let client = GrpcClient::connect(rpc_url.to_string()) + .await + .map_err(|err| err.to_string())?; + *guard = Some((rpc_url.to_string(), client.clone())); + Ok(client) + } + + async fn invalidate_utxo_cache(&self) { + self.utxo_cache_epoch.fetch_add(1, Ordering::Relaxed); + let mut cache_guard = self.utxo_cache.lock().await; + *cache_guard = None; + } + + async fn load_utxos( + &self, + client: &GrpcClient, + rpc_url: &str, + network: &str, + source_address: &KaspaAddress, + force_refresh: bool, + ) -> Result, String> { + let cache_key = format!("{rpc_url}|{network}|{source_address}"); + let read_epoch = self.utxo_cache_epoch.load(Ordering::Relaxed); + if !force_refresh { + let cache_guard = self.utxo_cache.lock().await; + if let Some(cache) = cache_guard.as_ref() + && cache.cache_key == cache_key + && cache.fetched_at.elapsed() <= Duration::from_secs(CACHE_TTL_SECS) + { + return Ok(cache.entries.clone()); + } + } + + let entries = client + .get_utxos_by_addresses(vec![source_address.clone()]) + .await + .map_err(|err| format!("IGRA submit error: failed to load Kaspa UTXOs: {err}"))?; + + let mut cache_guard = self.utxo_cache.lock().await; + let current_epoch = self.utxo_cache_epoch.load(Ordering::Relaxed); + if force_refresh || current_epoch == read_epoch { + *cache_guard = Some(CachedUtxoSet { + cache_key, + fetched_at: Instant::now(), + entries: entries.clone(), + }); + } + Ok(entries) + } + + async fn get_feerate_sompi_per_gram( + &self, + client: &GrpcClient, + request: &IgraSubmitRequest, + ) -> Result { + let mode = request + .kaspa_fee_mode + .as_deref() + .unwrap_or("estimate") + .trim() + .to_ascii_lowercase(); + if mode == "fixed" { + return Ok(0.0); + } + if mode != "" && mode != "estimate" { + return Err(format!( + "IGRA config error: unsupported kaspa_fee_mode `{mode}` (supported: estimate, fixed)" + )); + } + + // Keep this cheap: cache for 1s (similar to kaspad-side caching). + let ttl = Duration::from_secs(1); + { + let guard = self.feerate_cache.lock().await; + if let Some(cached) = guard.as_ref() && cached.fetched_at.elapsed() <= ttl { + return Ok(cached.feerate); + } + } + + let estimate = client + .get_fee_estimate() + .await + .map_err(|err| format!("failed to fetch kaspa fee estimate: {err}"))?; + + let bucket = request + .kaspa_fee_bucket + .as_deref() + .unwrap_or("normal") + .trim() + .to_ascii_lowercase(); + let feerate = match bucket.as_str() { + "" | "normal" => estimate + .normal_buckets + .first() + .map(|b| b.feerate) + .unwrap_or(estimate.priority_bucket.feerate), + "priority" => estimate.priority_bucket.feerate, + "low" => estimate + .low_buckets + .first() + .map(|b| b.feerate) + .unwrap_or(estimate.priority_bucket.feerate), + other => { + return Err(format!( + "IGRA config error: unsupported kaspa_fee_bucket `{other}` (supported: priority, normal, low)" + )); + } + }; + + // Protocol minimum: enforce at least 1.0 sompi/gram. + let feerate = feerate.max(1.0); + + let mut guard = self.feerate_cache.lock().await; + *guard = Some(CachedFeeRate { fetched_at: Instant::now(), feerate }); + Ok(feerate) + } + + async fn get_or_compute_mass( + &self, + payload_len: usize, + compute: impl FnOnce() -> Result, + ) -> Result { + { + let guard = self.mass_cache.lock().await; + if let Some(mass) = guard.get(&payload_len) { + return Ok(*mass); + } + } + let mass = compute()?; + let mut guard = self.mass_cache.lock().await; + guard.insert(payload_len, mass); + Ok(mass) + } + + async fn submit_with_rpc_utxos( + &self, + client: &GrpcClient, + rpc_url: &str, + network: &str, + network_type: KaspaNetworkType, + private_key: &[u8; 32], + source_address: &KaspaAddress, + payload_header: u8, + l2data: &[u8], + tx_id_prefix: &[u8], + mining_timeout: Duration, + request: &IgraSubmitRequest, + ) -> Result { + let feerate = match self.get_feerate_sompi_per_gram(client, request).await { + Ok(value) => value, + Err(err) if err.contains("IGRA config error") => return Err(err), + Err(_) => 0.0, + }; + + for attempt in 0..=1 { + let force_refresh = attempt > 0; + let utxos = self + .load_utxos(client, rpc_url, network, source_address, force_refresh) .await?; // Allow one forced refresh pass in case the cache is stale or the node just finished syncing. @@ -219,13 +464,33 @@ impl IgraPayloadSubmitter for InProcessKaspaPayloadSubmitter { return Err(message); } - let private_key_for_build = private_key; + // Compute tx mass for this payload length once, then compute fee from feerate. + let payload_len = 1usize.saturating_add(l2data.len()).saturating_add(4); + let mass = self + .get_or_compute_mass(payload_len, || { + compute_kaspa_tx_mass_template( + private_key, + source_address, + network_type, + payload_header, + l2data, + &utxos, + ) + }) + .await?; + let fee = if feerate > 0.0 { + fee_from_feerate(mass, feerate) + } else { + estimated_fee_sompi(payload_len, 1) + }; + + let private_key_for_build = *private_key; let source_address_for_build = source_address.clone(); - let l2data_for_build = l2data.clone(); - let prefix_for_build = prefix_bytes.clone(); + let l2data_for_build = l2data.to_vec(); + let prefix_for_build = tx_id_prefix.to_vec(); let mining_timeout_for_build = mining_timeout; let (payload_nonce, transaction) = tokio::task::spawn_blocking(move || { - mine_and_build_signed_payload_transaction( + mine_and_build_signed_payload_transaction_with_fee( &private_key_for_build, &source_address_for_build, network_type, @@ -234,12 +499,12 @@ impl IgraPayloadSubmitter for InProcessKaspaPayloadSubmitter { &prefix_for_build, mining_timeout_for_build, &utxos, + fee, ) }) .await .map_err(|err| format!("IGRA submit error: failed to join Kaspa tx builder task: {err}"))??; - // Invalidate local UTXO cache before broadcast so concurrent reads cannot reuse - // potentially spent entries from this submission attempt. + self.invalidate_utxo_cache().await; let rpc_transaction = RpcTransaction::from(&transaction); match client.submit_transaction(rpc_transaction, false).await { @@ -271,50 +536,163 @@ impl IgraPayloadSubmitter for InProcessKaspaPayloadSubmitter { Err("IGRA submit error: failed to submit Kaspa transaction".to_string()) } -} - -impl InProcessKaspaPayloadSubmitter { - async fn invalidate_utxo_cache(&self) { - self.utxo_cache_epoch.fetch_add(1, Ordering::Relaxed); - let mut cache_guard = self.utxo_cache.lock().await; - *cache_guard = None; - } - async fn load_utxos( + async fn submit_with_chained_utxo( &self, - client: &mut GrpcClient, + client: &GrpcClient, rpc_url: &str, network: &str, + network_type: KaspaNetworkType, + private_key: &[u8; 32], source_address: &KaspaAddress, - force_refresh: bool, - ) -> Result, String> { + payload_header: u8, + l2data: &[u8], + tx_id_prefix: &[u8], + mining_timeout: Duration, + request: &IgraSubmitRequest, + ) -> Result { let cache_key = format!("{rpc_url}|{network}|{source_address}"); - let read_epoch = self.utxo_cache_epoch.load(Ordering::Relaxed); - if !force_refresh { - let cache_guard = self.utxo_cache.lock().await; - if let Some(cache) = cache_guard.as_ref() - && cache.cache_key == cache_key - && cache.fetched_at.elapsed() <= Duration::from_secs(CACHE_TTL_SECS) - { - return Ok(cache.entries.clone()); + + let state_lock = { + let mut guard = self.chained_utxos.lock().await; + if let Some(lock) = guard.get(&cache_key) { + lock.clone() + } else { + // Seed from RPC UTXOs (confirmed) once. + let utxos = self.load_utxos(client, rpc_url, network, source_address, true).await?; + if utxos.is_empty() { + return Err(format!( + "IGRA submit error: insufficient Kaspa UTXOs for fee payment (source address: {source_address})" + )); + } + let mut sorted = utxos; + sorted.sort_by_key(|entry| std::cmp::Reverse(entry.utxo_entry.amount)); + let tip = sorted + .into_iter() + .next() + .expect("non-empty utxo list has first entry"); + let lock = Arc::new(TokioMutex::new(ChainedUtxoState { tip })); + guard.insert(cache_key.clone(), lock.clone()); + lock } - } + }; - let entries = client - .get_utxos_by_addresses(vec![source_address.clone()]) + let feerate = match self.get_feerate_sompi_per_gram(client, request).await { + Ok(value) => value, + Err(err) if err.contains("IGRA config error") => return Err(err), + Err(_) => 0.0, + }; + let payload_len = 1usize.saturating_add(l2data.len()).saturating_add(4); + + // Serialize submissions per address to avoid double-spends. + let mut state = state_lock.lock().await; + + for attempt in 0..=1 { + let tip = state.tip.clone(); + + let mass = self + .get_or_compute_mass(payload_len, || { + compute_kaspa_tx_mass_template( + private_key, + source_address, + network_type, + payload_header, + l2data, + std::slice::from_ref(&tip), + ) + }) + .await?; + let fee = if feerate > 0.0 { + fee_from_feerate(mass, feerate) + } else { + estimated_fee_sompi(payload_len, 1) + }; + + // If the tip doesn't have enough value, refresh from RPC and retry once. + if tip.utxo_entry.amount < fee.saturating_add(MIN_CHANGE_SOMPI) { + if attempt == 1 { + return Err(format!( + "IGRA submit error: insufficient Kaspa UTXOs for fee payment (source address: {source_address})" + )); + } + let refreshed = + self.load_utxos(client, rpc_url, network, source_address, true).await?; + if refreshed.is_empty() { + continue; + } + let mut sorted = refreshed; + sorted.sort_by_key(|entry| std::cmp::Reverse(entry.utxo_entry.amount)); + state.tip = sorted + .into_iter() + .next() + .expect("non-empty refreshed utxo list has first entry"); + continue; + } + + let private_key_for_build = *private_key; + let source_address_for_build = source_address.clone(); + let l2data_for_build = l2data.to_vec(); + let prefix_for_build = tx_id_prefix.to_vec(); + let mining_timeout_for_build = mining_timeout; + let (payload_nonce, transaction, next_tip) = tokio::task::spawn_blocking(move || { + mine_and_build_signed_payload_transaction_single_input_with_fee( + &private_key_for_build, + &source_address_for_build, + network_type, + payload_header, + &l2data_for_build, + &prefix_for_build, + mining_timeout_for_build, + &tip, + fee, + ) + }) .await - .map_err(|err| format!("IGRA submit error: failed to load Kaspa UTXOs: {err}"))?; + .map_err(|err| format!("IGRA submit error: failed to join Kaspa tx builder task: {err}"))??; - let mut cache_guard = self.utxo_cache.lock().await; - let current_epoch = self.utxo_cache_epoch.load(Ordering::Relaxed); - if force_refresh || current_epoch == read_epoch { - *cache_guard = Some(CachedUtxoSet { - cache_key, - fetched_at: Instant::now(), - entries: entries.clone(), - }); + let rpc_transaction = RpcTransaction::from(&transaction); + match client.submit_transaction(rpc_transaction, false).await { + Ok(tx_id) => { + let kaspa_tx_id = tx_id.to_string(); + info!( + "IGRA submit: kaspa_tx_id={} payload_nonce={} payload_header=0x{:02x} l2data_len={} payload_compression={} l2_tx_hash={}", + kaspa_tx_id, + payload_nonce, + payload_header, + l2data.len(), + request + .payload_compression + .as_deref() + .unwrap_or("none") + .trim(), + request.l2_tx_hash + ); + // Advance the chain tip only after successful broadcast. + state.tip = next_tip; + return Ok(IgraSubmitResult { kaspa_tx_id, payload_nonce }); + } + Err(err) => { + if attempt == 1 { + return Err(format!("IGRA submit error: {err}")); + } + + // Refresh tip and retry once. + let refreshed = + self.load_utxos(client, rpc_url, network, source_address, true).await?; + if refreshed.is_empty() { + continue; + } + let mut sorted = refreshed; + sorted.sort_by_key(|entry| std::cmp::Reverse(entry.utxo_entry.amount)); + state.tip = sorted + .into_iter() + .next() + .expect("non-empty refreshed utxo list has first entry"); + } + } } - Ok(entries) + + Err("IGRA submit error: failed to submit Kaspa transaction".to_string()) } } @@ -351,6 +729,7 @@ fn resolve_kaspa_private_key(config: &IgraKaspaWalletConfig) -> Result<[u8; 32], return resolve_mnemonic_private_key( mnemonic, config.mnemonic_passphrase.as_deref(), + config.mnemonic_passphrase_as_mnemonic, config.mnemonic_derivation_path.as_deref(), config.mnemonic_index.unwrap_or(0), ); @@ -374,6 +753,7 @@ fn parse_private_key_hex(private_key: &str) -> Result<[u8; 32], String> { fn resolve_mnemonic_private_key( mnemonic: &str, passphrase: Option<&str>, + passphrase_as_mnemonic: bool, derivation_path: Option<&str>, index: u32, ) -> Result<[u8; 32], String> { @@ -390,10 +770,17 @@ fn resolve_mnemonic_private_key( // - BIP39 seed from mnemonic (+ optional passphrase) // - BIP32 master key // - BIP44-ish path: m/44'/111111'/0'/0/ by default (single-sig receive chain) - let kaspa_mnemonic = KaspaMnemonic::new(phrase, KaspaLanguage::English).map_err(|err| { + let kaspa_mnemonic = KaspaMnemonic::new(phrase.clone(), KaspaLanguage::English).map_err(|err| { format!("IGRA key resolution error: invalid Kaspa mnemonic: {err}") })?; - let seed = kaspa_mnemonic.to_seed(passphrase.unwrap_or_default()); + let effective_passphrase_owned; + let effective_passphrase = if passphrase_as_mnemonic && passphrase.is_none() { + effective_passphrase_owned = phrase; + effective_passphrase_owned.as_str() + } else { + passphrase.unwrap_or_default() + }; + let seed = kaspa_mnemonic.to_seed(effective_passphrase); let xprv = KaspaExtendedPrivateKey::::new(seed).map_err(|err| { format!("IGRA key resolution error: failed to derive Kaspa master key from mnemonic seed: {err}") @@ -461,6 +848,14 @@ fn estimated_fee_sompi(payload_len: usize, inputs: usize) -> u64 { .saturating_add(input_tail.saturating_mul(EXTRA_INPUT_FEE_SOMPI)) } +fn fee_from_feerate(mass: u64, feerate_sompi_per_gram: f64) -> u64 { + if !(feerate_sompi_per_gram.is_finite()) { + return 1; + } + let fee = (feerate_sompi_per_gram * (mass as f64)).ceil(); + if fee <= 1.0 { 1 } else if fee >= (u64::MAX as f64) { u64::MAX } else { fee as u64 } +} + /// Transport wrapper that applies IGRA-specific request interception. #[derive(Clone, Debug)] pub struct IgraTransport { @@ -472,6 +867,9 @@ pub struct IgraTransport { kaspa_rpc_url: Option, kaspa_network: Option, payload_compression: Option, + kaspa_utxo_mode: Option, + kaspa_fee_mode: Option, + kaspa_fee_bucket: Option, kaspa_wallet: IgraKaspaWalletConfig, submitter: Arc, } @@ -488,6 +886,9 @@ impl IgraTransport { kaspa_rpc_url: None, kaspa_network: None, payload_compression: None, + kaspa_utxo_mode: None, + kaspa_fee_mode: None, + kaspa_fee_bucket: None, kaspa_wallet: IgraKaspaWalletConfig::default(), submitter: Arc::new(InProcessKaspaPayloadSubmitter::default()), } @@ -501,6 +902,9 @@ impl IgraTransport { self.kaspa_rpc_url = config.kaspa_rpc_url; self.kaspa_network = config.kaspa_network; self.payload_compression = config.payload_compression; + self.kaspa_utxo_mode = config.kaspa_utxo_mode; + self.kaspa_fee_mode = config.kaspa_fee_mode; + self.kaspa_fee_bucket = config.kaspa_fee_bucket; self.kaspa_wallet = config.kaspa_wallet; self } @@ -794,6 +1198,9 @@ impl IgraTransport { let kaspa_rpc_url = self.kaspa_rpc_url.clone(); let kaspa_network = self.kaspa_network.clone(); let payload_compression = self.payload_compression.clone(); + let kaspa_utxo_mode = self.kaspa_utxo_mode.clone(); + let kaspa_fee_mode = self.kaspa_fee_mode.clone(); + let kaspa_fee_bucket = self.kaspa_fee_bucket.clone(); let kaspa_wallet = self.kaspa_wallet.clone(); let submitter = self.submitter.clone(); @@ -920,6 +1327,9 @@ impl IgraTransport { kaspa_rpc_url, kaspa_network, payload_compression: payload_compression.clone(), + kaspa_utxo_mode: kaspa_utxo_mode.clone(), + kaspa_fee_mode: kaspa_fee_mode.clone(), + kaspa_fee_bucket: kaspa_fee_bucket.clone(), kaspa_wallet, }; let submit_result = submitter @@ -1119,6 +1529,7 @@ fn build_igra_l2data(raw_tx: &[u8], payload_compression: Option<&str>) -> Result } } +#[allow(dead_code)] fn mine_and_build_signed_payload_transaction( private_key: &[u8; 32], source_address: &KaspaAddress, @@ -1128,6 +1539,33 @@ fn mine_and_build_signed_payload_transaction( tx_id_prefix: &[u8], timeout: Duration, utxos: &[RpcUtxosByAddressesEntry], +) -> Result<(u64, KaspaTransaction), String> { + // Backwards-compatible entrypoint uses legacy fixed-fee heuristic. + let payload_len = 1usize.saturating_add(l2data.len()).saturating_add(4); + let fee = estimated_fee_sompi(payload_len, 1); + mine_and_build_signed_payload_transaction_with_fee( + private_key, + source_address, + network_type, + payload_header, + l2data, + tx_id_prefix, + timeout, + utxos, + fee, + ) +} + +fn mine_and_build_signed_payload_transaction_with_fee( + private_key: &[u8; 32], + source_address: &KaspaAddress, + network_type: KaspaNetworkType, + payload_header: u8, + l2data: &[u8], + tx_id_prefix: &[u8], + timeout: Duration, + utxos: &[RpcUtxosByAddressesEntry], + fee: u64, ) -> Result<(u64, KaspaTransaction), String> { if utxos.is_empty() { return Err(format!( @@ -1139,10 +1577,6 @@ fn mine_and_build_signed_payload_transaction( return Err("IGRA config error: `tx_id_prefix` cannot be empty".to_string()); } - // Select inputs once; payload nonce changes do not change payload length. - // IGRA payload: 1-byte header + L2Data + 4-byte nonce. - let payload_len = 1usize.saturating_add(l2data.len()).saturating_add(4); - let mut sorted = utxos.to_vec(); sorted.sort_by_key(|entry| std::cmp::Reverse(entry.utxo_entry.amount)); let mut selected = Vec::new(); @@ -1150,13 +1584,11 @@ fn mine_and_build_signed_payload_transaction( for entry in sorted { total_input = total_input.saturating_add(entry.utxo_entry.amount); selected.push(entry); - let required_fee = estimated_fee_sompi(payload_len, selected.len()); - if total_input >= required_fee.saturating_add(MIN_CHANGE_SOMPI) { + if total_input >= fee.saturating_add(MIN_CHANGE_SOMPI) { break; } } - let fee = estimated_fee_sompi(payload_len, selected.len()); if total_input < fee.saturating_add(MIN_CHANGE_SOMPI) { return Err(format!( "IGRA submit error: insufficient Kaspa UTXOs for fee payment (source address: {source_address})" @@ -1258,6 +1690,175 @@ fn mine_and_build_signed_payload_transaction( Ok((nonce as u64, tx)) } +fn mine_and_build_signed_payload_transaction_single_input_with_fee( + private_key: &[u8; 32], + source_address: &KaspaAddress, + network_type: KaspaNetworkType, + payload_header: u8, + l2data: &[u8], + tx_id_prefix: &[u8], + timeout: Duration, + tip: &RpcUtxosByAddressesEntry, + fee: u64, +) -> Result<(u64, KaspaTransaction, RpcUtxosByAddressesEntry), String> { + if tx_id_prefix.is_empty() { + return Err("IGRA config error: `tx_id_prefix` cannot be empty".to_string()); + } + + let input_amount = tip.utxo_entry.amount; + if input_amount < fee.saturating_add(MIN_CHANGE_SOMPI) { + return Err(format!( + "IGRA submit error: insufficient Kaspa UTXOs for fee payment (source address: {source_address})" + )); + } + let output_value = input_amount.saturating_sub(fee); + if output_value < MIN_CHANGE_SOMPI { + return Err(format!( + "IGRA submit error: insufficient Kaspa UTXOs for fee payment (source address: {source_address})" + )); + } + + let script_public_key = pay_to_address_script(source_address); + let inputs = vec![KaspaTransactionInput::new(tip.outpoint.clone().into(), Vec::new(), 0, 1)]; + let outputs = vec![KaspaTransactionOutput::new(output_value, script_public_key.clone())]; + + let payload = build_payload_with_nonce(payload_header, l2data, 0); + let nonce_offset = payload.len().saturating_sub(4); + let mut tx = KaspaTransaction::new( + 0, + inputs, + outputs, + 0, + SubnetworkId::default(), + 0, + payload, + ); + + let start = Instant::now(); + let mut nonce = 0_u32; + loop { + if start.elapsed() > timeout { + return Err(format!( + "{IGRA_MINING_TIMEOUT_ERROR_CODE}: timed out mining kaspa txid prefix after {}ms", + timeout.as_millis() + )); + } + + tx.payload[nonce_offset..].copy_from_slice(&nonce.to_be_bytes()); + tx.finalize(); + let tx_id = tx.id(); + if tx_id.as_bytes().starts_with(tx_id_prefix) { + break; + } + + nonce = nonce.wrapping_add(1); + if nonce == 0 { + // Extremely unlikely: exhausted full u32 space. Perturb outputs to create variance. + if let Some(first) = tx.outputs.first_mut() { + first.value = first.value.saturating_sub(1); + } + tx.finalize(); + } + } + + let entries = vec![KaspaUtxoEntry { + amount: tip.utxo_entry.amount, + script_public_key: tip.utxo_entry.script_public_key.clone(), + block_daa_score: tip.utxo_entry.block_daa_score, + is_coinbase: tip.utxo_entry.is_coinbase, + }]; + + let signable = KaspaSignableTransaction::with_entries(tx, entries); + let signed = kaspa_sign_with_multiple_v2(signable, std::slice::from_ref(private_key)) + .fully_signed() + .map_err(|err| format!("IGRA submit error: failed to sign Kaspa tx: {err}"))?; + kaspa_verify(&signed.as_verifiable()) + .map_err(|err| format!("IGRA submit error: invalid Kaspa signature set: {err}"))?; + + if !signed.tx.id().as_bytes().starts_with(tx_id_prefix) { + return Err("IGRA submit error: mined Kaspa txid prefix changed after signing; refusing to broadcast".to_string()); + } + + let mass_calculator = KaspaMassCalculator::new_with_consensus_params(&KaspaParams::from(network_type)); + let non_contextual = mass_calculator.calc_non_contextual_masses(&signed.tx); + let contextual = mass_calculator + .calc_contextual_masses(&signed.as_verifiable()) + .ok_or_else(|| "IGRA submit error: failed to calculate Kaspa tx storage mass".to_string())?; + let mass = contextual.max(non_contextual); + if mass > MAX_STANDARD_KASPA_TX_MASS { + return Err(format!( + "IGRA submit error: Kaspa transaction mass {mass} exceeds standard limit {MAX_STANDARD_KASPA_TX_MASS}" + )); + } + + let tx_id = signed.tx.id(); + let tx = signed.tx; + tx.set_mass(mass); + + // Next tip is the change output (index 0). + let next_tip = RpcUtxosByAddressesEntry { + address: None, + outpoint: kaspa_rpc_core::RpcTransactionOutpoint { transaction_id: tx_id, index: 0 }, + utxo_entry: kaspa_rpc_core::RpcUtxoEntry::new(output_value, script_public_key, 0, false), + }; + + Ok((nonce as u64, tx, next_tip)) +} + +fn compute_kaspa_tx_mass_template( + private_key: &[u8; 32], + source_address: &KaspaAddress, + network_type: KaspaNetworkType, + payload_header: u8, + l2data: &[u8], + utxos: &[RpcUtxosByAddressesEntry], +) -> Result { + let tip = utxos + .iter() + .max_by_key(|entry| entry.utxo_entry.amount) + .ok_or_else(|| "IGRA submit error: insufficient Kaspa UTXOs for fee payment".to_string())?; + let input_amount = tip.utxo_entry.amount; + if input_amount <= MIN_CHANGE_SOMPI { + return Err("IGRA submit error: insufficient Kaspa UTXOs for fee payment".to_string()); + } + let output_value = input_amount.saturating_sub(MIN_CHANGE_SOMPI); + + let script_public_key = pay_to_address_script(source_address); + let inputs = vec![KaspaTransactionInput::new(tip.outpoint.clone().into(), Vec::new(), 0, 1)]; + let outputs = vec![KaspaTransactionOutput::new(output_value, script_public_key)]; + + let payload = build_payload_with_nonce(payload_header, l2data, 0); + let mut tx = KaspaTransaction::new( + 0, + inputs, + outputs, + 0, + SubnetworkId::default(), + 0, + payload, + ); + tx.finalize(); + + let entries = vec![KaspaUtxoEntry { + amount: tip.utxo_entry.amount, + script_public_key: tip.utxo_entry.script_public_key.clone(), + block_daa_score: tip.utxo_entry.block_daa_score, + is_coinbase: tip.utxo_entry.is_coinbase, + }]; + + let signable = KaspaSignableTransaction::with_entries(tx, entries); + let signed = kaspa_sign_with_multiple_v2(signable, std::slice::from_ref(private_key)) + .fully_signed() + .map_err(|err| format!("IGRA submit error: failed to sign Kaspa tx for mass estimation: {err}"))?; + + let mass_calculator = KaspaMassCalculator::new_with_consensus_params(&KaspaParams::from(network_type)); + let non_contextual = mass_calculator.calc_non_contextual_masses(&signed.tx); + let contextual = mass_calculator + .calc_contextual_masses(&signed.as_verifiable()) + .ok_or_else(|| "IGRA submit error: failed to calculate Kaspa tx storage mass".to_string())?; + Ok(contextual.max(non_contextual)) +} + fn now_ms() -> u64 { SystemTime::now() .duration_since(UNIX_EPOCH) @@ -1380,7 +1981,7 @@ mod tests { for (name, path) in schemes { let private_key = - resolve_mnemonic_private_key(mnemonic, None, path, 0).expect("derive kaspa key"); + resolve_mnemonic_private_key(mnemonic, None, false, path, 0).expect("derive kaspa key"); let address = kaspa_address_from_private_key(&private_key, KaspaAddressPrefix::Testnet) .expect("derive kaspa address") .to_string(); @@ -1391,7 +1992,8 @@ mod tests { // The sample CLI output shows `[1a1f47ce]`. let maybe_account_index = 0x1a1f_47ceu32; let maybe_path = format!("m/44'/111111'/{maybe_account_index}'/0/0"); - let maybe_key = resolve_mnemonic_private_key(mnemonic, None, Some(&maybe_path), 0).expect("derive kaspa key"); + let maybe_key = + resolve_mnemonic_private_key(mnemonic, None, false, Some(&maybe_path), 0).expect("derive kaspa key"); let maybe_addr = kaspa_address_from_private_key(&maybe_key, KaspaAddressPrefix::Testnet) .expect("derive kaspa address") .to_string(); @@ -1401,7 +2003,7 @@ mod tests { // Brute force a reasonable range for the canonical BIP44 receive address (index 0). for account_index in 0u32..=2000u32 { let path = format!("m/44'/111111'/{account_index}'/0/0"); - let private_key = resolve_mnemonic_private_key(mnemonic, None, Some(&path), 0) + let private_key = resolve_mnemonic_private_key(mnemonic, None, false, Some(&path), 0) .expect("derive kaspa key"); let address = kaspa_address_from_private_key(&private_key, KaspaAddressPrefix::Testnet) @@ -1441,7 +2043,8 @@ mod tests { seg(0, change_h), seg(0, idx_h), ); - let private_key = resolve_mnemonic_private_key(mnemonic, None, Some(&path), 0) + let private_key = + resolve_mnemonic_private_key(mnemonic, None, false, Some(&path), 0) .expect("derive kaspa key"); let address = kaspa_address_from_private_key( &private_key, @@ -1480,7 +2083,8 @@ mod tests { // If the passphrase is empty, the derived seed and thus the deposit address will differ. let mnemonic = "test test test test test test test test test test test junk"; let private_key = - resolve_mnemonic_private_key(mnemonic, Some(mnemonic), None, 0).expect("derive kaspa key"); + resolve_mnemonic_private_key(mnemonic, Some(mnemonic), false, None, 0) + .expect("derive kaspa key"); let address = kaspa_address_from_private_key(&private_key, KaspaAddressPrefix::Testnet).expect("derive kaspa address"); @@ -1493,7 +2097,7 @@ mod tests { fn kaspa_mnemonic_default_deposit_address_differs_with_empty_passphrase() { // Same mnemonic but empty passphrase. let mnemonic = "test test test test test test test test test test test junk"; - let private_key = resolve_mnemonic_private_key(mnemonic, None, None, 0).expect("derive kaspa key"); + let private_key = resolve_mnemonic_private_key(mnemonic, None, false, None, 0).expect("derive kaspa key"); let address = kaspa_address_from_private_key(&private_key, KaspaAddressPrefix::Testnet).expect("derive kaspa address"); @@ -1661,6 +2265,9 @@ mod tests { kaspa_rpc_url: Some("grpc://127.0.0.1:16110".to_string()), kaspa_network: Some("testnet-10".to_string()), payload_compression: None, + kaspa_utxo_mode: None, + kaspa_fee_mode: None, + kaspa_fee_bucket: None, kaspa_wallet: IgraKaspaWalletConfig::default(), } } diff --git a/crates/common/src/provider/mod.rs b/crates/common/src/provider/mod.rs index 6e8dc98056fb4..2a217924db36f 100644 --- a/crates/common/src/provider/mod.rs +++ b/crates/common/src/provider/mod.rs @@ -218,6 +218,9 @@ impl ProviderBuilder { kaspa_rpc_url: config.igra.kaspa_rpc_url.clone(), kaspa_network: config.igra.kaspa_network.clone(), payload_compression: config.igra.payload_compression.clone(), + kaspa_utxo_mode: None, + kaspa_fee_mode: None, + kaspa_fee_bucket: None, kaspa_wallet: config.igra.kaspa_wallet.clone(), }); diff --git a/crates/config/src/igra.rs b/crates/config/src/igra.rs index 014a391dbf19d..94e4ac762953e 100644 --- a/crates/config/src/igra.rs +++ b/crates/config/src/igra.rs @@ -13,6 +13,10 @@ pub struct IgraKaspaWalletConfig { pub mnemonic: Option, /// Optional BIP39 passphrase for the mnemonic. pub mnemonic_passphrase: Option, + /// If true and `mnemonic_passphrase` is unset, use the mnemonic phrase itself as the + /// passphrase. This is non-standard BIP39 behavior and must be explicitly enabled. + #[serde(default)] + pub mnemonic_passphrase_as_mnemonic: bool, /// Optional derivation path override. pub mnemonic_derivation_path: Option, /// Mnemonic index override. @@ -31,6 +35,7 @@ impl IgraKaspaWalletConfig { self.private_key.is_none() && self.mnemonic.is_none() && self.mnemonic_passphrase.is_none() && + !self.mnemonic_passphrase_as_mnemonic && self.mnemonic_derivation_path.is_none() && self.mnemonic_index.is_none() && self.keystore.is_none() && @@ -85,6 +90,14 @@ impl IgraConfig { return Ok(()); } + if self.kaspa_wallet.mnemonic_passphrase_as_mnemonic && self.kaspa_wallet.mnemonic_passphrase.is_some() + { + return Err(IgraConfigError::Invalid { + field: "kaspa_wallet.mnemonic_passphrase_as_mnemonic", + reason: "conflicts with kaspa_wallet.mnemonic_passphrase".to_string(), + }); + } + let el_rpc_url = required_str("el_rpc_url", self.el_rpc_url.as_deref())?; validate_url("el_rpc_url", el_rpc_url)?; validate_scheme("el_rpc_url", el_rpc_url, &["http", "https", "ws", "wss"])?; diff --git a/crates/igra-loadgen/Cargo.toml b/crates/igra-loadgen/Cargo.toml new file mode 100644 index 0000000000000..0aa49d35abc41 --- /dev/null +++ b/crates/igra-loadgen/Cargo.toml @@ -0,0 +1,41 @@ +[package] +name = "igra-loadgen" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +authors.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +[lints] +workspace = true + +[dependencies] +foundry-common.workspace = true +foundry-config.workspace = true + +alloy-consensus.workspace = true +alloy-json-rpc.workspace = true +alloy-network.workspace = true +alloy-primitives.workspace = true +alloy-signer-local = { workspace = true, features = ["keystore", "mnemonic"] } +alloy-transport.workspace = true + +kaspa-addresses.workspace = true +kaspa-bip32.workspace = true +kaspa-consensus-core.workspace = true +kaspa-grpc-client.workspace = true +kaspa-rpc-core.workspace = true +kaspa-txscript.workspace = true + +clap = { version = "4", features = ["derive", "env", "unicode", "wrap_help"] } +chrono.workspace = true +eyre.workspace = true +rand.workspace = true +reqwest.workspace = true +serde.workspace = true +serde_json.workspace = true +sha2 = "0.10" +tokio = { workspace = true, features = ["signal"] } +tower.workspace = true diff --git a/crates/igra-loadgen/src/main.rs b/crates/igra-loadgen/src/main.rs new file mode 100644 index 0000000000000..a17807a3e4ea2 --- /dev/null +++ b/crates/igra-loadgen/src/main.rs @@ -0,0 +1,3322 @@ +use alloy_consensus::{Signed, TxEip1559}; +use alloy_json_rpc::{Id, Request, RequestPacket, ResponsePacket, ResponsePayload}; +use alloy_network::TxSignerSync; +use alloy_primitives::{Address, Bytes, TxKind, U256, hex}; +use alloy_signer_local::PrivateKeySigner; +use alloy_transport::TransportError; +use chrono::{SecondsFormat, Utc}; +use clap::{Parser, ValueEnum}; +use eyre::{Context, Result, eyre}; +use foundry_common::provider::{ + igra_transport::{IGRA_MINING_TIMEOUT_ERROR_CODE, IgraTransport, IgraTransportConfig}, + runtime_transport::{RuntimeTransport, RuntimeTransportBuilder}, +}; +use foundry_config::IgraKaspaWalletConfig; +use kaspa_addresses::{ + Address as KaspaAddress, Prefix as KaspaAddressPrefix, Version as KaspaAddressVersion, +}; +use kaspa_bip32::secp256k1::SecretKey as KaspaSecretKey; +use kaspa_bip32::{ + ChildNumber as KaspaChildNumber, DerivationPath as KaspaDerivationPath, + ExtendedPrivateKey as KaspaExtendedPrivateKey, Language as KaspaLanguage, + Mnemonic as KaspaMnemonic, +}; +use kaspa_consensus_core::{ + config::params::Params as KaspaParams, + constants::STORAGE_MASS_PARAMETER as KASPA_STORAGE_MASS_PARAMETER, + mass::MassCalculator as KaspaMassCalculator, + network::NetworkType as KaspaNetworkType, + sign::{sign_with_multiple_v2 as kaspa_sign_with_multiple_v2, verify as kaspa_verify}, + subnets::SubnetworkId, + tx::{ + SignableTransaction as KaspaSignableTransaction, Transaction as KaspaTransaction, + TransactionInput as KaspaTransactionInput, TransactionOutput as KaspaTransactionOutput, + UtxoEntry as KaspaUtxoEntry, + }, +}; +use kaspa_grpc_client::GrpcClient; +use kaspa_rpc_core::{RpcTransaction, RpcUtxosByAddressesEntry, api::rpc::RpcApi}; +use kaspa_txscript::pay_to_address_script; +use rand::rngs::StdRng; +use rand::{Rng, SeedableRng}; +use reqwest::Url; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use sha2::{Digest, Sha256}; +use std::collections::{HashMap, VecDeque}; +use std::fs::{self, File}; +use std::io::{BufWriter, Write}; +use std::path::{Path, PathBuf}; +use std::sync::{ + Arc, + atomic::{AtomicBool, AtomicI32, Ordering}, +}; +use std::time::Duration; +use tokio::signal; +use tokio::sync::{Mutex, mpsc, watch}; +use tokio::task::JoinSet; +use tokio::time::{Instant, MissedTickBehavior, interval, timeout}; +use tower::Service; + +const DEFAULT_WALLETS_JSON: &str = "docs/stress-test-prep/wallets_1000.json"; +const DEFAULT_CONTRACT_BASE: &str = "0x0000000000000000000000000000000000005000"; +const DEFAULT_CONTRACT_END: &str = "0x00000000000000000000000000000000000053e7"; +const MIN_CHANGE_SOMPI: u64 = 1_000; +const MAX_STANDARD_KASPA_TX_MASS: u64 = 100_000; +const FANOUT_TARGET_STORAGE_MASS: u64 = 50_000; + +#[derive(Clone, Copy, Debug, ValueEnum, Serialize)] +#[value(rename_all = "kebab-case")] +enum Network { + Devnet, + Simnet, + #[value(name = "testnet-10", alias = "testnet10")] + Testnet10, +} + +impl Network { + fn as_str(self) -> &'static str { + match self { + Self::Devnet => "devnet", + Self::Simnet => "simnet", + Self::Testnet10 => "testnet-10", + } + } + + fn kaspa_address_prefix(self) -> &'static str { + match self { + Self::Devnet => "kaspadev:", + Self::Simnet => "kaspasim:", + Self::Testnet10 => "kaspatest:", + } + } + + fn default_tx_id_prefix(self) -> &'static str { + match self { + Self::Devnet => "01", + Self::Simnet => "02", + Self::Testnet10 => "97b4", + } + } +} + +#[derive(Clone, Copy, Debug, ValueEnum, Serialize)] +#[value(rename_all = "kebab-case")] +enum Mode { + FullCycle, + PrebuildSend, +} + +impl Mode { + fn as_str(self) -> &'static str { + match self { + Self::FullCycle => "full-cycle", + Self::PrebuildSend => "prebuild-send", + } + } +} + +#[derive(Clone, Copy, Debug, ValueEnum, Serialize)] +#[value(rename_all = "kebab-case")] +enum RpcSelectionMode { + RandomPerStep, + StickyPerInstance, +} + +#[derive(Clone, Copy, Debug, ValueEnum, Serialize)] +#[value(rename_all = "kebab-case")] +enum RecipientMode { + Ring, + RandomSeeded, +} + +#[derive(Debug, Parser)] +#[command(about = "IGRA-Kaspa stress runner")] +struct Args { + #[arg(long, env = "IGRA_STRESS_NETWORK", value_enum, default_value_t = Network::Devnet)] + network: Network, + + #[arg(long, env = "IGRA_STRESS_MODE", value_enum, default_value_t = Mode::FullCycle)] + mode: Mode, + + #[arg(long, env = "IGRA_STRESS_TARGET_TPS")] + target_tps: Option, + + #[arg(long, env = "IGRA_STRESS_TPS")] + legacy_tps: Option, + + #[arg(long, env = "IGRA_STRESS_INSTANCE_SAFE_TPS", default_value_t = 5.0)] + instance_safe_tps: f64, + + #[arg(long, env = "IGRA_STRESS_WORKER_COUNT")] + worker_count: Option, + + #[arg(long, env = "IGRA_STRESS_WALLET_START_INDEX", default_value_t = 0)] + wallet_start_index: usize, + + #[arg(long, env = "IGRA_STRESS_DURATION_SECS")] + duration_secs: Option, + + #[arg(long, env = "IGRA_STRESS_TOTAL_TXS")] + total_txs: Option, + + #[arg(long, env = "IGRA_STRESS_TOTAL_TXS_PER_WORKER")] + legacy_total_txs_per_worker: Option, + + #[arg(long, env = "IGRA_STRESS_CALIBRATION_MODE", default_value_t = 0)] + calibration_mode: u8, + + #[arg(long, env = "IGRA_STRESS_PREFLIGHT_SAMPLE_MODE", default_value_t = 0)] + preflight_sample_mode: u8, + + #[arg(long, env = "IGRA_STRESS_WALLETS_JSON", default_value = DEFAULT_WALLETS_JSON)] + wallets_json: String, + + #[arg(long, env = "IGRA_STRESS_CONTRACT_BASE", default_value = DEFAULT_CONTRACT_BASE)] + contract_base_address: String, + + #[arg(long, env = "IGRA_STRESS_CONTRACT_END", default_value = DEFAULT_CONTRACT_END)] + contract_end_address: String, + + #[arg(long, env = "IGRA_STRESS_RECIPIENT_MODE", value_enum, default_value_t = RecipientMode::Ring)] + recipient_mode: RecipientMode, + + #[arg(long, env = "IGRA_STRESS_RECIPIENT_RANDOM_SEED")] + recipient_random_seed: Option, + + #[arg(long, env = "IGRA_STRESS_RPC_SELECTION_MODE", value_enum, default_value_t = RpcSelectionMode::RandomPerStep)] + rpc_selection_mode: RpcSelectionMode, + + #[arg(long, env = "IGRA_STRESS_RPC_RANDOM_SEED")] + rpc_random_seed: Option, + + #[arg(long, env = "IGRA_STRESS_RPC_ENDPOINTS_JSON")] + rpc_endpoints_json: Option, + + #[arg(long, env = "IGRA_STRESS_EL_RPC_URLS")] + el_rpc_urls: Option, + + #[arg(long, env = "IGRA_STRESS_KASPA_RPC_URLS")] + kaspa_rpc_urls: Option, + + #[arg(long, env = "IGRA_EL_RPC_URL")] + legacy_el_rpc_url: Option, + + #[arg(long, env = "IGRA_KASPA_RPC_URL")] + legacy_kaspa_rpc_url: Option, + + #[arg(long, env = "IGRA_TX_ID_PREFIX")] + tx_id_prefix: Option, + + #[arg(long, env = "IGRA_MINING_TIMEOUT_SECS", default_value_t = 120)] + mining_timeout_secs: u64, + + #[arg(long, env = "IGRA_STRESS_WARMUP_TXS_PER_WORKER", default_value_t = 1)] + warmup_txs_per_worker: u64, + + #[arg(long, env = "IGRA_STRESS_WARMUP_BARRIER_TIMEOUT_SECS", default_value_t = 60)] + warmup_barrier_timeout_secs: u64, + + #[arg(long, env = "IGRA_STRESS_PENDING_TIMEOUT_SECS", default_value_t = 10)] + pending_timeout_secs: u64, + + #[arg(long, env = "IGRA_STRESS_MAX_REPLACEMENTS_PER_NONCE", default_value_t = 5)] + max_replacements_per_nonce: u64, + + #[arg(long, env = "IGRA_STRESS_REPLACEMENT_FEE_BUMP_PCT", default_value_t = 10)] + replacement_fee_bump_pct: u64, + + #[arg(long, env = "IGRA_STRESS_REPLACEMENT_TIMEOUT_CAP_SECS", default_value_t = 60)] + replacement_timeout_cap_secs: u64, + + #[arg(long, env = "IGRA_STRESS_SHUTDOWN_GRACE_SECS", default_value_t = 120)] + shutdown_grace_secs: u64, + + #[arg(long, env = "IGRA_STRESS_DEGRADED_PAUSE_MAX_SECS", default_value_t = 120)] + degraded_pause_max_secs: u64, + + #[arg(long, env = "IGRA_STRESS_WORKER_RECOVERY_TIMEOUT_SECS", default_value_t = 120)] + worker_recovery_timeout_secs: u64, + + #[arg(long, env = "IGRA_STRESS_REPORT_SECS", default_value_t = 5)] + report_secs: u64, + + #[arg(long, env = "IGRA_STRESS_GAS_LIMIT", default_value_t = 80_000)] + gas_limit: u64, + + #[arg(long, env = "IGRA_STRESS_MAX_FEE_PER_GAS", default_value_t = 2_000_000_000)] + max_fee_per_gas: u128, + + #[arg(long, env = "IGRA_STRESS_MAX_PRIORITY_FEE_PER_GAS", default_value_t = 1_000_000_000)] + max_priority_fee_per_gas: u128, + + #[arg(long, env = "IGRA_STRESS_TO")] + to: Option, + + #[arg(long, env = "IGRA_STRESS_DATA")] + data: Option, + + #[arg(long, env = "IGRA_STRESS_EVM_KEYS")] + evm_keys: Option, + + #[arg(long, env = "IGRA_STRESS_KASPA_PRIVATE_KEYS")] + kaspa_private_keys: Option, + + #[arg(long, env = "IGRA_KASPA_MNEMONIC")] + kaspa_mnemonic: Option, + + #[arg(long, env = "IGRA_KASPA_MNEMONIC_PASSPHRASE")] + kaspa_mnemonic_passphrase: Option, + + #[arg(long, env = "IGRA_KASPA_MNEMONIC_PASSPHRASE_AS_MNEMONIC", default_value_t = false)] + kaspa_mnemonic_passphrase_as_mnemonic: bool, + + #[arg(long, env = "IGRA_KASPA_MNEMONIC_PASSPHRASE_EMPTY", default_value_t = false)] + kaspa_mnemonic_passphrase_empty: bool, + + #[arg(long, default_value_t = 0)] + kaspa_mnemonic_index_start: u32, + + #[arg(long)] + kaspa_mnemonic_count: Option, + + #[arg(long, env = "ALLOW_SHARED_KASPA_KEY", default_value_t = false)] + allow_shared_kaspa_key: bool, + + #[arg(long, env = "IGRA_STRESS_KASPA_FEE_MODE", default_value = "estimate")] + kaspa_fee_mode: String, + + #[arg(long, env = "IGRA_STRESS_KASPA_FEE_BUCKET", default_value = "normal")] + kaspa_fee_bucket: String, + + #[arg(long, env = "IGRA_STRESS_PREFLIGHT_BALANCE_CHECK", default_value_t = 1)] + preflight_balance_check: u8, + + #[arg(long, env = "IGRA_STRESS_PREBUILD_HORIZON_SECS", default_value_t = 120)] + prebuild_horizon_secs: u64, + + #[arg(long, env = "IGRA_STRESS_UTXO_REFILL_LAG_SECS", default_value_t = 20)] + utxo_refill_lag_secs: u64, + + #[arg(long, env = "IGRA_STRESS_UTXO_SAFETY_FACTOR", default_value_t = 1.5)] + utxo_safety_factor: f64, + + #[arg(long, env = "IGRA_STRESS_KASPA_FANOUT", default_value_t = 0)] + kaspa_fanout: u8, + + #[arg(long, env = "IGRA_STRESS_KASPA_FANOUT_SOURCE_PRIVATE_KEY")] + kaspa_fanout_source_private_key: Option, + + #[arg(long, env = "IGRA_STRESS_KASPA_FANOUT_SOURCE_MNEMONIC")] + kaspa_fanout_source_mnemonic: Option, + + #[arg(long, env = "IGRA_STRESS_KASPA_FANOUT_SOURCE_MNEMONIC_PASSPHRASE")] + kaspa_fanout_source_mnemonic_passphrase: Option, + + #[arg( + long, + env = "IGRA_STRESS_KASPA_FANOUT_SOURCE_MNEMONIC_PASSPHRASE_AS_MNEMONIC", + default_value_t = false + )] + kaspa_fanout_source_mnemonic_passphrase_as_mnemonic: bool, + + #[arg( + long, + env = "IGRA_STRESS_KASPA_FANOUT_SOURCE_MNEMONIC_PASSPHRASE_EMPTY", + default_value_t = false + )] + kaspa_fanout_source_mnemonic_passphrase_empty: bool, + + #[arg(long, env = "IGRA_STRESS_KASPA_FANOUT_SOURCE_MNEMONIC_INDEX", default_value_t = 0)] + kaspa_fanout_source_mnemonic_index: u32, + + #[arg(long, env = "IGRA_STRESS_KASPA_FANOUT_AMOUNT_SOMPI", default_value_t = 100_000_000)] + kaspa_fanout_amount_sompi: u64, + + #[arg(long, env = "IGRA_STRESS_KASPA_FANOUT_UTXOS_PER_WALLET", default_value_t = 1)] + kaspa_fanout_utxos_per_wallet: u32, + + #[arg(long, env = "IGRA_STRESS_KASPA_FANOUT_MAX_OUTPUTS_PER_TX", default_value_t = 64)] + kaspa_fanout_max_outputs_per_tx: usize, + + #[arg(long, env = "IGRA_STRESS_IGRA_MIN_FEE_FLOOR_GWEI_EXPECTED")] + igra_min_fee_floor_gwei_expected: Option, + + #[arg(long)] + campaign_output_dir: Option, + + #[arg(long, env = "IGRA_NO_PROXY", default_value_t = false)] + no_proxy: bool, + + #[arg(long, default_value_t = false)] + print_addresses: bool, +} + +#[derive(Clone, Debug)] +enum StopCondition { + Duration(u64), + TotalTxs(u64), +} + +#[allow(dead_code)] +#[derive(Clone, Debug)] +struct ResolvedConfig { + network: Network, + mode: Mode, + target_tps: f64, + worker_count: usize, + wallet_start_index: usize, + stop_condition: StopCondition, + calibration_mode: bool, + preflight_sample_mode: bool, + wallets_json: PathBuf, + tx_id_prefix: String, + gas_limit: u64, + max_fee_per_gas: u128, + max_priority_fee_per_gas: u128, + mining_timeout_secs: u64, + warmup_txs_per_worker: u64, + warmup_barrier_timeout_secs: u64, + pending_timeout_secs: u64, + max_replacements_per_nonce: u64, + replacement_fee_bump_pct: u64, + replacement_timeout_cap_secs: u64, + shutdown_grace_secs: u64, + degraded_pause_max_secs: u64, + worker_recovery_timeout_secs: u64, + report_secs: u64, + rpc_selection_mode: RpcSelectionMode, + recipient_mode: RecipientMode, + recipient_random_seed: u64, + rpc_random_seed: u64, + el_rpc_urls: Vec, + kaspa_rpc_urls: Vec, + endpoint_set_sha256: String, + parameter_sources: HashMap, + contract_base_address: Address, + contract_end_address: Address, + preflight_balance_check: bool, + prebuild_horizon_secs: u64, + utxo_refill_lag_secs: u64, + utxo_safety_factor: f64, + kaspa_fanout_enabled: bool, + kaspa_fanout_source_private_key: Option, + kaspa_fanout_source_mnemonic: Option, + kaspa_fanout_source_mnemonic_passphrase: Option, + kaspa_fanout_source_mnemonic_passphrase_as_mnemonic: bool, + kaspa_fanout_source_mnemonic_passphrase_empty: bool, + kaspa_fanout_source_mnemonic_index: u32, + kaspa_fanout_amount_sompi: u64, + kaspa_fanout_utxos_per_wallet: u32, + kaspa_fanout_max_outputs_per_tx: usize, + kaspa_fee_mode: String, + kaspa_fee_bucket: String, + igra_min_fee_floor_gwei_expected: Option, + campaign_output_dir: PathBuf, + no_proxy: bool, + explicit_to: Option
, + explicit_data: Option>, +} + +#[allow(dead_code)] +#[derive(Clone, Debug, Deserialize)] +struct WalletEntry { + mnemonic: String, + kaspa_private_key: String, + kaspa_address: String, + ethereum_private_key: String, + ethereum_address: String, +} + +#[derive(Debug, Deserialize)] +struct RpcEndpointsFile { + igra_rpc_urls: Vec, + kaspa_rpc_urls: Vec, +} + +#[derive(Clone, Debug)] +struct WorkerPlan { + worker_id: usize, + wallet_index: usize, + evm_key: String, + kaspa_key: String, + kaspa_address: String, + evm_sender: Address, + contract: Address, + recipient: Address, + call_data: Vec, + per_worker_total_target: Option, +} + +#[derive(Clone, Debug)] +struct PrebuiltTx { + nonce: u64, + raw: Vec, +} + +#[derive(Clone, Debug, Default)] +struct WorkerCounters { + accepted: u64, + rejected: u64, + timeout: u64, + dropped: u64, + terminal_error: u64, + replacement_count_total: u64, + local_next_nonce: u64, + rpc_pending_nonce: u64, + last_error_code: Option, + last_accept_instant: Option, + last_el_rpc_latency_ms: Option, + last_kaspa_rpc_latency_ms: Option, + active_endpoint: Option, +} + +#[derive(Clone, Debug)] +struct WorkerState { + worker_id: usize, + wallet_index: usize, + counters: WorkerCounters, + exited: bool, +} + +#[derive(Clone, Debug, Default)] +struct AggregatedTotals { + accepted: u64, + rejected: u64, + timeout: u64, + dropped: u64, + terminal_error: u64, +} + +#[derive(Clone, Debug)] +struct AggregateSample { + ts_utc: String, + tps_1s: f64, + accepted_1s: u64, + rejected_1s: u64, + timeout_1s: u64, + dropped_1s: u64, + terminal_error_1s: u64, + el_rpc_p95_ms: Option, + kaspa_rpc_p95_ms: Option, + el_pending_count: u64, + kaspa_mempool_mass_estimate: Option, + active_workers: usize, + stalled_workers: usize, +} + +#[derive(Clone, Debug, Default)] +struct TransportHealth { + consecutive_failures: u32, + backoff_until: Option, +} + +#[derive(Clone, Debug)] +struct TransportSlot { + endpoint_id: String, + transport: IgraTransport, +} + +#[derive(Clone, Debug)] +enum WorkerEvent { + WarmupComplete { worker_id: usize }, + WorkerExit { worker_id: usize, error: Option }, +} + +#[derive(Clone, Copy, Debug)] +enum FailureClass { + Rejected, + Timeout, + TerminalError, +} + +#[derive(Debug)] +struct RunResult { + totals: AggregatedTotals, + achieved_tps_avg: f64, + achieved_tps_p95_1m: f64, + failure_ratio: f64, + max_stalled_ratio: f64, + pass: bool, + fail_reasons: Vec, + interrupted_exit_code: Option, + warmup_completed_at_utc: Option, +} + +#[tokio::main(flavor = "multi_thread")] +async fn main() -> Result<()> { + let args = Args::parse(); + let cfg = resolve_config(&args)?; + + let wallets = load_wallets(&cfg.wallets_json)?; + let plans = resolve_workers(&args, &cfg, &wallets)?; + + if args.print_addresses { + print_addresses(&plans); + return Ok(()); + } + + fs::create_dir_all(&cfg.campaign_output_dir) + .wrap_err("failed to create campaign output dir")?; + + if cfg.kaspa_fanout_enabled { + run_kaspa_fanout(&cfg, &plans).await?; + } + + let observed_fee_floor_gwei = preflight(&cfg, &plans).await?; + + let campaign_id = format!( + "{}-{}-{}tps-{}", + cfg.network.as_str(), + cfg.mode.as_str(), + cfg.target_tps.round() as u64, + Utc::now().format("%Y%m%dT%H%M%SZ") + ); + + let started_at_utc = utc_now(); + emit_manifest( + &cfg, + &plans, + &campaign_id, + &started_at_utc, + None, + observed_fee_floor_gwei, + None, + None, + )?; + + let run_result = run_campaign(&cfg, &plans, observed_fee_floor_gwei).await?; + + let ended_at_utc = utc_now(); + emit_manifest( + &cfg, + &plans, + &campaign_id, + &started_at_utc, + Some(&ended_at_utc), + observed_fee_floor_gwei, + Some(&run_result), + run_result.warmup_completed_at_utc.as_deref(), + )?; + + if cfg.calibration_mode || cfg.preflight_sample_mode { + emit_calibration_report(&cfg, &run_result)?; + } + + let out = json!({ + "campaign_id": campaign_id, + "pass": run_result.pass, + "failure_ratio": run_result.failure_ratio, + "achieved_tps_avg": run_result.achieved_tps_avg, + "achieved_tps_p95_1m": run_result.achieved_tps_p95_1m, + "totals": { + "accepted": run_result.totals.accepted, + "rejected": run_result.totals.rejected, + "timeout": run_result.totals.timeout, + "dropped": run_result.totals.dropped, + "terminal_error": run_result.totals.terminal_error, + }, + "max_stalled_ratio": run_result.max_stalled_ratio, + "fail_reasons": run_result.fail_reasons, + "artifacts": { + "campaign_output_dir": cfg.campaign_output_dir, + "manifest": cfg.campaign_output_dir.join("campaign-manifest.json"), + "metrics": cfg.campaign_output_dir.join("metrics.ndjson"), + } + }); + println!("{}", serde_json::to_string_pretty(&out)?); + + if let Some(code) = run_result.interrupted_exit_code { + std::process::exit(code); + } + + if !run_result.pass { + return Err(eyre!("campaign failed")); + } + + Ok(()) +} + +fn resolve_config(args: &Args) -> Result { + let cli_args: Vec = std::env::args().collect(); + let target_tps = args.target_tps.or(args.legacy_tps).unwrap_or(0.0); + + if !target_tps.is_finite() { + return Err(eyre!("target TPS must be finite")); + } + if !args.instance_safe_tps.is_finite() || args.instance_safe_tps <= 0.0 { + return Err(eyre!("instance-safe-tps must be > 0 and finite")); + } + + if target_tps <= 0.0 && args.calibration_mode == 0 && args.preflight_sample_mode == 0 { + return Err(eyre!("target TPS must be > 0 (set --target-tps or IGRA_STRESS_TARGET_TPS)")); + } + + let calibration_mode = args.calibration_mode == 1; + let preflight_sample_mode = args.preflight_sample_mode == 1; + + if calibration_mode && preflight_sample_mode { + return Err(eyre!("calibration mode and preflight-sample mode are mutually exclusive")); + } + + let mut el_urls = parse_csv_list(args.el_rpc_urls.as_deref().unwrap_or("")); + if el_urls.is_empty() { + if let Some(single) = args.legacy_el_rpc_url.as_deref() { + el_urls.push(single.to_string()); + } + } + + let mut kaspa_urls = parse_csv_list(args.kaspa_rpc_urls.as_deref().unwrap_or("")); + if kaspa_urls.is_empty() { + if let Some(single) = args.legacy_kaspa_rpc_url.as_deref() { + kaspa_urls.push(single.to_string()); + } + } + + let mut rpc_loaded_from_file = false; + if (el_urls.is_empty() || kaspa_urls.is_empty()) && args.rpc_endpoints_json.is_some() { + let p = PathBuf::from(args.rpc_endpoints_json.as_deref().expect("checked is_some")); + let parsed: RpcEndpointsFile = serde_json::from_slice( + &fs::read(&p) + .wrap_err_with(|| format!("failed to read endpoints file {}", p.display()))?, + ) + .wrap_err("invalid rpc endpoints json")?; + if el_urls.is_empty() { + el_urls = parsed.igra_rpc_urls; + rpc_loaded_from_file = true; + } + if kaspa_urls.is_empty() { + kaspa_urls = parsed.kaspa_rpc_urls; + rpc_loaded_from_file = true; + } + } + + if el_urls.is_empty() || kaspa_urls.is_empty() { + return Err(eyre!( + "missing RPC endpoints: set --el-rpc-urls/--kaspa-rpc-urls or --rpc-endpoints-json" + )); + } + + for url in &mut kaspa_urls { + *url = normalize_kaspa_rpc_url(url); + } + + let worker_count = args.worker_count.unwrap_or_else(|| { + if target_tps > 0.0 { + (target_tps / args.instance_safe_tps).ceil().max(1.0) as usize + } else { + 1 + } + }); + + if worker_count == 0 { + return Err(eyre!("worker count resolved to 0")); + } + if args.kaspa_fanout > 1 { + return Err(eyre!("--kaspa-fanout must be 0 or 1")); + } + if args.kaspa_fanout == 1 { + if args.kaspa_fanout_amount_sompi == 0 { + return Err(eyre!("--kaspa-fanout-amount-sompi must be > 0")); + } + if args.kaspa_fanout_utxos_per_wallet == 0 { + return Err(eyre!("--kaspa-fanout-utxos-per-wallet must be > 0")); + } + if args.kaspa_fanout_max_outputs_per_tx == 0 { + return Err(eyre!("--kaspa-fanout-max-outputs-per-tx must be > 0")); + } + let min_amount_sompi = + min_fanout_amount_sompi_for_standardness(args.kaspa_fanout_max_outputs_per_tx); + if args.kaspa_fanout_amount_sompi < min_amount_sompi { + return Err(eyre!( + "--kaspa-fanout-amount-sompi={} is too low for standardness with --kaspa-fanout-max-outputs-per-tx={}; require at least {} sompi (~{:.4} KAS) to keep storage mass under {} (safety target {})", + args.kaspa_fanout_amount_sompi, + args.kaspa_fanout_max_outputs_per_tx, + min_amount_sompi, + sompi_to_kaspa(min_amount_sompi), + MAX_STANDARD_KASPA_TX_MASS, + FANOUT_TARGET_STORAGE_MASS + )); + } + } + + let stop_condition = if calibration_mode { + StopCondition::TotalTxs(args.total_txs.unwrap_or(2000)) + } else if preflight_sample_mode { + StopCondition::TotalTxs(args.total_txs.unwrap_or(1000)) + } else { + match (args.duration_secs, args.total_txs) { + (Some(d), None) if d > 0 => StopCondition::Duration(d), + (None, Some(t)) if t > 0 => StopCondition::TotalTxs(t), + (None, None) => { + if let Some(legacy_per_worker) = args.legacy_total_txs_per_worker { + StopCondition::TotalTxs(legacy_per_worker.saturating_mul(worker_count as u64)) + } else { + return Err(eyre!("set exactly one of --duration-secs or --total-txs")); + } + } + _ => { + return Err(eyre!("set exactly one of --duration-secs or --total-txs")); + } + } + }; + + let output_dir = if let Some(v) = args.campaign_output_dir.as_deref() { + PathBuf::from(v) + } else { + PathBuf::from(format!("/tmp/igra-loadgen-{}", Utc::now().format("%Y%m%dT%H%M%SZ"))) + }; + + let tx_id_prefix = normalize_hex_prefix( + args.tx_id_prefix + .clone() + .unwrap_or_else(|| args.network.default_tx_id_prefix().to_string()), + ); + + if tx_id_prefix.is_empty() { + return Err(eyre!("tx-id-prefix cannot be empty")); + } + + let contract_base_address = + parse_address(&args.contract_base_address).wrap_err("invalid --contract-base-address")?; + let contract_end_address = + parse_address(&args.contract_end_address).wrap_err("invalid --contract-end-address")?; + + if contract_end_address.as_slice() < contract_base_address.as_slice() { + return Err(eyre!("contract end address must be >= base address")); + } + + let explicit_to = args.to.as_deref().map(parse_address).transpose().wrap_err("invalid --to")?; + let explicit_data = + args.data.as_deref().map(parse_hex_bytes).transpose().wrap_err("invalid --data")?; + + let endpoint_set_sha256 = endpoint_set_sha256(&el_urls, &kaspa_urls); + + let mut parameter_sources = HashMap::new(); + parameter_sources.insert( + "IGRA_STRESS_NETWORK".to_string(), + resolve_source(&cli_args, &["--network"], "IGRA_STRESS_NETWORK", false, "default"), + ); + parameter_sources.insert( + "IGRA_STRESS_MODE".to_string(), + resolve_source(&cli_args, &["--mode"], "IGRA_STRESS_MODE", false, "default"), + ); + parameter_sources.insert( + "IGRA_STRESS_TARGET_TPS".to_string(), + resolve_source( + &cli_args, + &["--target-tps", "--legacy-tps"], + "IGRA_STRESS_TARGET_TPS", + false, + if target_tps > 0.0 { "resolved" } else { "default" }, + ), + ); + parameter_sources.insert( + "IGRA_STRESS_EL_RPC_URLS".to_string(), + resolve_source( + &cli_args, + &["--el-rpc-urls", "--legacy-el-rpc-url"], + "IGRA_STRESS_EL_RPC_URLS", + rpc_loaded_from_file, + "default", + ), + ); + parameter_sources.insert( + "IGRA_STRESS_KASPA_RPC_URLS".to_string(), + resolve_source( + &cli_args, + &["--kaspa-rpc-urls", "--legacy-kaspa-rpc-url"], + "IGRA_STRESS_KASPA_RPC_URLS", + rpc_loaded_from_file, + "default", + ), + ); + parameter_sources.insert( + "IGRA_STRESS_WORKER_COUNT".to_string(), + resolve_source( + &cli_args, + &["--worker-count"], + "IGRA_STRESS_WORKER_COUNT", + false, + if args.worker_count.is_some() { "cli" } else { "derived" }, + ), + ); + + Ok(ResolvedConfig { + network: args.network, + mode: args.mode, + target_tps, + worker_count, + wallet_start_index: args.wallet_start_index, + stop_condition, + calibration_mode, + preflight_sample_mode, + wallets_json: PathBuf::from(args.wallets_json.clone()), + tx_id_prefix, + gas_limit: args.gas_limit, + max_fee_per_gas: args.max_fee_per_gas, + max_priority_fee_per_gas: args.max_priority_fee_per_gas, + mining_timeout_secs: args.mining_timeout_secs, + warmup_txs_per_worker: args.warmup_txs_per_worker, + warmup_barrier_timeout_secs: args.warmup_barrier_timeout_secs, + pending_timeout_secs: args.pending_timeout_secs, + max_replacements_per_nonce: args.max_replacements_per_nonce, + replacement_fee_bump_pct: args.replacement_fee_bump_pct, + replacement_timeout_cap_secs: args.replacement_timeout_cap_secs, + shutdown_grace_secs: args.shutdown_grace_secs, + degraded_pause_max_secs: args.degraded_pause_max_secs, + worker_recovery_timeout_secs: args.worker_recovery_timeout_secs, + report_secs: args.report_secs.max(1), + rpc_selection_mode: args.rpc_selection_mode, + recipient_mode: args.recipient_mode, + recipient_random_seed: args.recipient_random_seed.unwrap_or(1), + rpc_random_seed: args.rpc_random_seed.unwrap_or(1), + el_rpc_urls: el_urls, + kaspa_rpc_urls: kaspa_urls, + endpoint_set_sha256, + parameter_sources, + contract_base_address, + contract_end_address, + preflight_balance_check: args.preflight_balance_check == 1, + prebuild_horizon_secs: args.prebuild_horizon_secs, + utxo_refill_lag_secs: args.utxo_refill_lag_secs, + utxo_safety_factor: args.utxo_safety_factor, + kaspa_fanout_enabled: args.kaspa_fanout == 1, + kaspa_fanout_source_private_key: args.kaspa_fanout_source_private_key.clone(), + kaspa_fanout_source_mnemonic: args.kaspa_fanout_source_mnemonic.clone(), + kaspa_fanout_source_mnemonic_passphrase: args + .kaspa_fanout_source_mnemonic_passphrase + .clone(), + kaspa_fanout_source_mnemonic_passphrase_as_mnemonic: args + .kaspa_fanout_source_mnemonic_passphrase_as_mnemonic, + kaspa_fanout_source_mnemonic_passphrase_empty: args + .kaspa_fanout_source_mnemonic_passphrase_empty, + kaspa_fanout_source_mnemonic_index: args.kaspa_fanout_source_mnemonic_index, + kaspa_fanout_amount_sompi: args.kaspa_fanout_amount_sompi, + kaspa_fanout_utxos_per_wallet: args.kaspa_fanout_utxos_per_wallet, + kaspa_fanout_max_outputs_per_tx: args.kaspa_fanout_max_outputs_per_tx, + kaspa_fee_mode: args.kaspa_fee_mode.trim().to_lowercase(), + kaspa_fee_bucket: args.kaspa_fee_bucket.trim().to_lowercase(), + igra_min_fee_floor_gwei_expected: args.igra_min_fee_floor_gwei_expected, + campaign_output_dir: output_dir, + no_proxy: args.no_proxy, + explicit_to, + explicit_data, + }) +} + +fn resolve_workers( + args: &Args, + cfg: &ResolvedConfig, + wallets: &[WalletEntry], +) -> Result> { + let evm_keys_cli = parse_list_or_file(args.evm_keys.as_deref().unwrap_or(""))?; + let mut kaspa_keys_cli = parse_list_or_file(args.kaspa_private_keys.as_deref().unwrap_or(""))?; + + if kaspa_keys_cli.is_empty() { + if let Some(mnemonic) = args.kaspa_mnemonic.as_deref() { + let count = + args.kaspa_mnemonic_count.unwrap_or(cfg.worker_count.try_into().unwrap_or(0)); + if count == 0 { + return Err(eyre!("kaspa mnemonic derivation requires non-zero count")); + } + kaspa_keys_cli = derive_kaspa_private_keys( + mnemonic, + args.kaspa_mnemonic_passphrase.as_deref(), + args.kaspa_mnemonic_passphrase_as_mnemonic, + args.kaspa_mnemonic_passphrase_empty, + None, + args.kaspa_mnemonic_index_start, + count, + )?; + } + } + + let use_wallets_json = evm_keys_cli.is_empty(); + + if use_wallets_json { + if cfg.wallet_start_index + cfg.worker_count > wallets.len() { + return Err(eyre!( + "wallet range overflow: start={} workers={} wallets={}", + cfg.wallet_start_index, + cfg.worker_count, + wallets.len() + )); + } + } else if evm_keys_cli.len() < cfg.worker_count { + return Err(eyre!( + "need >= {} EVM keys in --evm-keys, got {}", + cfg.worker_count, + evm_keys_cli.len() + )); + } + + if !kaspa_keys_cli.is_empty() + && !args.allow_shared_kaspa_key + && kaspa_keys_cli.len() < cfg.worker_count + { + return Err(eyre!( + "need >= {} Kaspa keys in --kaspa-private-keys (or set --allow-shared-kaspa-key)", + cfg.worker_count + )); + } + + let per_worker_total_target = match cfg.stop_condition { + StopCondition::TotalTxs(total) => { + let base = total / cfg.worker_count as u64; + let rem = total % cfg.worker_count as u64; + Some((base, rem)) + } + StopCondition::Duration(_) => None, + }; + + let mut rng = StdRng::seed_from_u64(cfg.recipient_random_seed); + let mut plans = Vec::with_capacity(cfg.worker_count); + + for k in 0..cfg.worker_count { + let wallet_index = if use_wallets_json { cfg.wallet_start_index + k } else { k }; + + let (evm_key, kaspa_key, kaspa_address, recipient_source_list) = if use_wallets_json { + let w = &wallets[wallet_index]; + let kaspa_address = + kaspa_address_from_private_key_hex(&w.kaspa_private_key, cfg.network.as_str()) + .wrap_err_with(|| { + format!("invalid Kaspa private key for wallet index {}", wallet_index) + })? + .to_string(); + (w.ethereum_private_key.clone(), w.kaspa_private_key.clone(), kaspa_address, wallets) + } else { + let evm_key = evm_keys_cli[k].clone(); + let kaspa_key = if kaspa_keys_cli.is_empty() { + return Err(eyre!("missing Kaspa key source for worker {}", k + 1)); + } else if kaspa_keys_cli.len() > k { + kaspa_keys_cli[k].clone() + } else { + kaspa_keys_cli[0].clone() + }; + let kaspa_address = + kaspa_address_from_private_key_hex(&kaspa_key, cfg.network.as_str()) + .wrap_err_with(|| format!("invalid Kaspa private key for worker {}", k + 1))? + .to_string(); + (evm_key, kaspa_key, kaspa_address, wallets) + }; + + if !kaspa_address.starts_with(cfg.network.kaspa_address_prefix()) { + return Err(eyre!( + "Kaspa address prefix mismatch for worker {}: expected {}, got {}", + k + 1, + cfg.network.kaspa_address_prefix(), + kaspa_address + )); + } + + let signer = evm_key + .parse::() + .map_err(|err| eyre!("invalid EVM private key at worker {}: {}", k + 1, err))?; + let evm_sender = signer.address(); + + let contract = add_address_offset(cfg.contract_base_address, wallet_index) + .ok_or_else(|| eyre!("contract index overflow"))?; + + if contract.as_slice() > cfg.contract_end_address.as_slice() { + return Err(eyre!( + "contract address index out of range for wallet index {}", + wallet_index + )); + } + + let recipient = match cfg.recipient_mode { + RecipientMode::Ring => { + let idx = if use_wallets_json { + (wallet_index + 1) % recipient_source_list.len() + } else { + (k + 1) % cfg.worker_count + }; + if use_wallets_json { + parse_address(&wallets[idx].ethereum_address)? + } else { + let r_signer = evm_keys_cli[idx] + .parse::() + .map_err(|err| eyre!("invalid ring recipient key at {}: {}", idx, err))?; + r_signer.address() + } + } + RecipientMode::RandomSeeded => { + if use_wallets_json { + let idx = rng.random_range(0..wallets.len()); + parse_address(&wallets[idx].ethereum_address)? + } else { + let idx = rng.random_range(0..cfg.worker_count); + let r_signer = evm_keys_cli[idx] + .parse::() + .map_err(|err| eyre!("invalid random recipient key at {}: {}", idx, err))?; + r_signer.address() + } + } + }; + + let call_data = if let Some(explicit) = cfg.explicit_data.as_ref() { + explicit.clone() + } else { + build_transfer_calldata(recipient, 1) + }; + + let per_worker_target = per_worker_total_target + .map(|(base, rem)| if (k as u64) < rem { base + 1 } else { base }); + + plans.push(WorkerPlan { + worker_id: k + 1, + wallet_index, + evm_key, + kaspa_key, + kaspa_address, + evm_sender, + contract, + recipient, + call_data, + per_worker_total_target: per_worker_target, + }); + } + + Ok(plans) +} + +fn print_addresses(plans: &[WorkerPlan]) { + let mut rows = Vec::new(); + for p in plans { + rows.push(json!({ + "worker": p.worker_id, + "wallet_index": p.wallet_index, + "evm_sender": format!("{:#x}", p.evm_sender), + "kaspa_address": p.kaspa_address, + "contract": format!("{:#x}", p.contract), + "recipient": format!("{:#x}", p.recipient), + })); + } + println!("{}", serde_json::to_string_pretty(&rows).expect("serialize rows")); +} + +async fn preflight(cfg: &ResolvedConfig, plans: &[WorkerPlan]) -> Result { + let mut chain_ok = false; + for el in &cfg.el_rpc_urls { + let mut transport = build_transport(el, &cfg.kaspa_rpc_urls[0], &plans[0].kaspa_key, cfg)?; + if eth_chain_id(&mut transport).await.is_ok() { + chain_ok = true; + break; + } + } + if !chain_ok { + return Err(eyre!("preflight failed: unable to query eth_chainId from any EL endpoint")); + } + + let observed_floor = observe_fee_floor(cfg).await?; + if let Some(expected) = cfg.igra_min_fee_floor_gwei_expected + && observed_floor < expected + { + return Err(eyre!( + "preflight failed: observed fee floor {} gwei is below expected {} gwei", + observed_floor, + expected + )); + } + + verify_contract_code(cfg, plans).await?; + + if cfg.preflight_balance_check { + verify_evm_balances(cfg, plans).await?; + } + + verify_kaspa_utxos(cfg, plans).await?; + + Ok(observed_floor) +} + +async fn observe_fee_floor(cfg: &ResolvedConfig) -> Result { + let mut observed = 0u64; + for el in &cfg.el_rpc_urls { + let mut transport = build_runtime_transport(el, cfg.no_proxy)?; + if let Ok(wei) = eth_gas_price(&mut transport).await { + let gwei = wei / 1_000_000_000; + observed = observed.max(gwei); + } + } + if observed == 0 { + return Err(eyre!("preflight failed: unable to observe gas price floor from EL endpoints")); + } + Ok(observed) +} + +async fn verify_contract_code(cfg: &ResolvedConfig, plans: &[WorkerPlan]) -> Result<()> { + if plans.is_empty() { + return Ok(()); + } + + let sample_count = plans.len().min(10); + let step = (plans.len() / sample_count).max(1); + let mut samples = Vec::with_capacity(sample_count); + let mut idx = 0usize; + while samples.len() < sample_count && idx < plans.len() { + samples.push(plans[idx].contract); + idx = idx.saturating_add(step); + } + + let mut transport = build_runtime_transport(&cfg.el_rpc_urls[0], cfg.no_proxy)?; + for addr in &samples { + let code = eth_get_code(&mut transport, *addr).await?; + if code == "0x" || code == "0x0" { + return Err(eyre!("preflight failed: empty contract code at {addr:#x}")); + } + } + + Ok(()) +} + +async fn verify_evm_balances(cfg: &ResolvedConfig, plans: &[WorkerPlan]) -> Result<()> { + let mut transport = build_runtime_transport(&cfg.el_rpc_urls[0], cfg.no_proxy)?; + + let est_txs_per_worker = match cfg.stop_condition { + StopCondition::Duration(secs) => { + let per = + if cfg.target_tps > 0.0 { cfg.target_tps / cfg.worker_count as f64 } else { 0.0 }; + (per * secs as f64).ceil() as u128 + } + StopCondition::TotalTxs(total) => ((total as f64) / cfg.worker_count as f64).ceil() as u128, + }; + + let required_wei_per_worker = est_txs_per_worker + .saturating_add(cfg.warmup_txs_per_worker as u128) + .saturating_mul(cfg.gas_limit as u128) + .saturating_mul(cfg.max_fee_per_gas) + .saturating_mul(11) + / 10; + + let mut deficits = Vec::new(); + for p in plans { + let bal = eth_get_balance(&mut transport, p.evm_sender).await?; + if bal < required_wei_per_worker { + deficits.push((p.wallet_index, bal, required_wei_per_worker)); + } + } + + if !deficits.is_empty() { + return Err(eyre!( + "preflight failed: {} wallet(s) have insufficient EVM balance (first: index={} have={} need={})", + deficits.len(), + deficits[0].0, + deficits[0].1, + deficits[0].2 + )); + } + + Ok(()) +} + +async fn verify_kaspa_utxos(cfg: &ResolvedConfig, plans: &[WorkerPlan]) -> Result<()> { + if plans.is_empty() { + return Ok(()); + } + + let client = GrpcClient::connect(cfg.kaspa_rpc_urls[0].clone()) + .await + .wrap_err("failed to connect kaspa grpc for preflight")?; + + let mut addrs = Vec::with_capacity(plans.len()); + for p in plans { + let addr = KaspaAddress::try_from(p.kaspa_address.as_str()).wrap_err_with(|| { + format!("invalid Kaspa address for wallet index {}", p.wallet_index) + })?; + addrs.push(addr); + } + + let entries = client + .get_utxos_by_addresses(addrs.clone()) + .await + .wrap_err("get_utxos_by_addresses failed")?; + + let mut by_addr: HashMap = HashMap::new(); + for e in entries { + if let Some(addr) = e.address { + *by_addr.entry(addr.to_string()).or_insert(0) += 1; + } + } + + let per_worker_tps = + if cfg.target_tps > 0.0 { cfg.target_tps / cfg.worker_count as f64 } else { 0.0 }; + let utxos_per_wallet_min = if matches!(cfg.mode, Mode::PrebuildSend) { + ((per_worker_tps + * (cfg.prebuild_horizon_secs + cfg.utxo_refill_lag_secs) as f64 + * cfg.utxo_safety_factor) + .ceil() as u64) + .max(1) + } else { + 1 + }; + + let mut deficits = Vec::new(); + for (i, addr) in addrs.iter().enumerate() { + let key = addr.to_string(); + let count = by_addr.get(&key).copied().unwrap_or(0); + if count < utxos_per_wallet_min { + deficits.push((plans[i].wallet_index, key, count, utxos_per_wallet_min)); + } + } + + if !deficits.is_empty() { + return Err(eyre!( + "preflight failed: insufficient Kaspa UTXO depth for {} wallet(s) (first: wallet_index={} address={} have={} need={})", + deficits.len(), + deficits[0].0, + deficits[0].1, + deficits[0].2, + deficits[0].3 + )); + } + + Ok(()) +} + +async fn run_kaspa_fanout(cfg: &ResolvedConfig, plans: &[WorkerPlan]) -> Result<()> { + if plans.is_empty() { + return Ok(()); + } + let source_private_key = + resolve_kaspa_fanout_source_key(cfg, plans).wrap_err("resolve fan-out source key")?; + let (network_type, address_prefix) = + kaspa_network_descriptor(cfg.network.as_str()).wrap_err("fan-out network mapping")?; + let source_address = kaspa_address_from_private_key(&source_private_key, address_prefix) + .wrap_err("derive fan-out source address")?; + + let mut targets = Vec::<(KaspaAddress, u64)>::new(); + for plan in plans { + let addr = KaspaAddress::try_from(plan.kaspa_address.as_str()) + .wrap_err_with(|| format!("invalid worker Kaspa address {}", plan.kaspa_address))?; + for _ in 0..cfg.kaspa_fanout_utxos_per_wallet { + targets.push((addr.clone(), cfg.kaspa_fanout_amount_sompi)); + } + } + if targets.is_empty() { + return Ok(()); + } + + let client = GrpcClient::connect(cfg.kaspa_rpc_urls[0].clone()) + .await + .wrap_err("fan-out: connect kaspa gRPC failed")?; + let feerate = get_kaspa_feerate_sompi_per_gram(&client, cfg).await?; + let mut tip = fetch_largest_utxo(&client, &source_address) + .await + .wrap_err("fan-out: failed to load source UTXO")?; + + let mut submitted = 0usize; + let batch_size = cfg.kaspa_fanout_max_outputs_per_tx.max(1); + let mut queue: VecDeque> = + targets.chunks(batch_size).map(|chunk| chunk.to_vec()).collect(); + + while let Some(batch) = queue.pop_front() { + let built = build_signed_chained_fanout_tx( + &source_private_key, + &source_address, + network_type, + &tip, + &batch, + feerate, + ); + let (tx, next_tip, _fee, mass) = match built { + Ok(v) => v, + Err(err) => { + if batch.len() > 1 && fanout_batch_too_large(err.to_string().as_str()) { + split_fanout_batch(&batch, &mut queue); + continue; + } + let hint = fanout_policy_hint(err.to_string().as_str()); + return Err(err.wrap_err(format!( + "fan-out build failed after {} outputs submitted{}", + submitted, hint + ))); + } + }; + if mass > MAX_STANDARD_KASPA_TX_MASS { + if batch.len() > 1 { + split_fanout_batch(&batch, &mut queue); + continue; + } + let required = min_fanout_amount_sompi_for_standardness(1); + return Err(eyre!( + "fan-out pre-submit standardness validation failed: computed storage mass {} exceeds limit {} for single-output batch (amount_sompi={}); increase --kaspa-fanout-amount-sompi to at least {} (~{:.4} KAS), or use devnet prealloc", + mass, + MAX_STANDARD_KASPA_TX_MASS, + batch[0].1, + required, + sompi_to_kaspa(required) + )); + } + + let rpc_tx = RpcTransaction::from(&tx); + match client.submit_transaction(rpc_tx, false).await { + Ok(_) => { + tip = next_tip; + submitted += batch.len(); + } + Err(err) => { + let msg = err.to_string(); + if batch.len() > 1 && fanout_batch_too_large(msg.as_str()) { + split_fanout_batch(&batch, &mut queue); + continue; + } + let hint = fanout_policy_hint(msg.as_str()); + return Err(eyre!( + "fan-out submit failed after {} outputs: {}{}", + submitted, + msg, + hint + )); + } + } + } + + println!( + "{{\"fanout\":\"ok\",\"source\":\"{}\",\"outputs_submitted\":{},\"utxos_per_wallet\":{},\"amount_sompi\":{},\"rpc\":\"{}\"}}", + source_address, + submitted, + cfg.kaspa_fanout_utxos_per_wallet, + cfg.kaspa_fanout_amount_sompi, + cfg.kaspa_rpc_urls[0] + ); + Ok(()) +} + +fn fanout_policy_hint(err_text: &str) -> &'static str { + if fanout_batch_too_large(err_text) { + " (hint: this endpoint enforces strict Kaspa standardness for UTXO-growing fan-out; use devnet prealloc or a policy-relaxed node)" + } else { + "" + } +} + +fn fanout_batch_too_large(err_text: &str) -> bool { + let lower = err_text.to_ascii_lowercase(); + lower.contains("storage mass") + || lower.contains("mass") + && (lower.contains("max allowed size") + || lower.contains("exceeds standard limit") + || lower.contains("too large")) +} + +fn split_fanout_batch( + batch: &[(KaspaAddress, u64)], + queue: &mut VecDeque>, +) { + let mid = batch.len() / 2; + let left = batch[..mid].to_vec(); + let right = batch[mid..].to_vec(); + if !right.is_empty() { + queue.push_front(right); + } + if !left.is_empty() { + queue.push_front(left); + } +} + +fn min_fanout_amount_sompi_for_standardness(outputs_per_tx: usize) -> u64 { + let outputs = outputs_per_tx.max(1) as u128; + let numerator = outputs.saturating_mul(KASPA_STORAGE_MASS_PARAMETER as u128); + let denominator = FANOUT_TARGET_STORAGE_MASS as u128; + let required = numerator.div_ceil(denominator); + required.min(u64::MAX as u128) as u64 +} + +fn sompi_to_kaspa(sompi: u64) -> f64 { + sompi as f64 / 100_000_000.0 +} + +fn resolve_kaspa_fanout_source_key(cfg: &ResolvedConfig, plans: &[WorkerPlan]) -> Result<[u8; 32]> { + if let Some(pk) = cfg.kaspa_fanout_source_private_key.as_deref() { + return parse_private_key_hex(pk); + } + if let Some(mnemonic) = cfg.kaspa_fanout_source_mnemonic.as_deref() { + let keys = derive_kaspa_private_keys( + mnemonic, + cfg.kaspa_fanout_source_mnemonic_passphrase.as_deref(), + cfg.kaspa_fanout_source_mnemonic_passphrase_as_mnemonic, + cfg.kaspa_fanout_source_mnemonic_passphrase_empty, + None, + cfg.kaspa_fanout_source_mnemonic_index, + 1, + )?; + return parse_private_key_hex(keys[0].as_str()); + } + parse_private_key_hex(&plans[0].kaspa_key) +} + +async fn get_kaspa_feerate_sompi_per_gram( + client: &GrpcClient, + cfg: &ResolvedConfig, +) -> Result { + if cfg.kaspa_fee_mode == "fixed" { + return Ok(1.0); + } + let estimate = client.get_fee_estimate().await.wrap_err("fan-out fee estimate failed")?; + let feerate = match cfg.kaspa_fee_bucket.as_str() { + "priority" => estimate.priority_bucket.feerate, + "low" => estimate + .low_buckets + .first() + .map(|b| b.feerate) + .unwrap_or(estimate.priority_bucket.feerate), + _ => estimate + .normal_buckets + .first() + .map(|b| b.feerate) + .unwrap_or(estimate.priority_bucket.feerate), + }; + Ok(feerate.max(1.0)) +} + +async fn fetch_largest_utxo( + client: &GrpcClient, + source_address: &KaspaAddress, +) -> Result { + let mut utxos = client + .get_utxos_by_addresses(vec![source_address.clone()]) + .await + .wrap_err("get_utxos_by_addresses failed")?; + utxos.sort_by_key(|u| std::cmp::Reverse(u.utxo_entry.amount)); + utxos.into_iter().next().ok_or_else(|| eyre!("source address has no spendable UTXOs")) +} + +fn build_signed_chained_fanout_tx( + private_key: &[u8; 32], + source_address: &KaspaAddress, + network_type: KaspaNetworkType, + tip: &RpcUtxosByAddressesEntry, + outputs: &[(KaspaAddress, u64)], + feerate: f64, +) -> Result<(KaspaTransaction, RpcUtxosByAddressesEntry, u64, u64)> { + let total_out: u64 = outputs.iter().map(|(_, amount)| *amount).sum(); + let input_amount = tip.utxo_entry.amount; + let input = KaspaTransactionInput::new(tip.outpoint.clone().into(), Vec::new(), 0, 1); + let entry = KaspaUtxoEntry { + amount: tip.utxo_entry.amount, + script_public_key: tip.utxo_entry.script_public_key.clone(), + block_daa_score: tip.utxo_entry.block_daa_score, + is_coinbase: tip.utxo_entry.is_coinbase, + }; + let entries = vec![entry]; + let mass_calculator = + KaspaMassCalculator::new_with_consensus_params(&KaspaParams::from(network_type)); + let change_script = pay_to_address_script(source_address); + + let mut fee = 1u64; + for _ in 0..6 { + let required = total_out.saturating_add(fee).saturating_add(MIN_CHANGE_SOMPI); + if input_amount < required { + return Err(eyre!( + "fan-out insufficient input: have={} need={} (outputs={}, fee={})", + input_amount, + required, + total_out, + fee + )); + } + let change = input_amount.saturating_sub(total_out).saturating_sub(fee); + if change < MIN_CHANGE_SOMPI { + return Err(eyre!("fan-out change below MIN_CHANGE_SOMPI")); + } + + let mut tx_outputs = Vec::with_capacity(outputs.len() + 1); + tx_outputs.push(KaspaTransactionOutput::new(change, change_script.clone())); + for (addr, amount) in outputs { + tx_outputs.push(KaspaTransactionOutput::new(*amount, pay_to_address_script(addr))); + } + + let mut tx = KaspaTransaction::new( + 0, + vec![input.clone()], + tx_outputs, + 0, + SubnetworkId::default(), + 0, + vec![], + ); + tx.finalize(); + + let signable = KaspaSignableTransaction::with_entries(tx, entries.clone()); + let signed = kaspa_sign_with_multiple_v2(signable, std::slice::from_ref(private_key)) + .fully_signed() + .map_err(|err| eyre!("fan-out sign failed: {err}"))?; + kaspa_verify(&signed.as_verifiable()) + .map_err(|err| eyre!("fan-out signature verify failed: {err}"))?; + + let non_contextual = mass_calculator.calc_non_contextual_masses(&signed.tx); + let contextual = mass_calculator + .calc_contextual_masses(&signed.as_verifiable()) + .ok_or_else(|| eyre!("fan-out mass calculation failed"))?; + let mass = contextual.max(non_contextual); + let needed_fee = fee_from_feerate(mass, feerate); + + if needed_fee == fee { + let tx = signed.tx; + let tx_id = tx.id(); + // Some deployments report unexpectedly large local mass values for otherwise + // acceptable standard transactions; rely on node-side standardness checks. + tx.set_mass(0); + let next_tip = RpcUtxosByAddressesEntry { + address: None, + outpoint: kaspa_rpc_core::RpcTransactionOutpoint { + transaction_id: tx_id, + index: 0, + }, + utxo_entry: kaspa_rpc_core::RpcUtxoEntry::new(change, change_script, 0, false), + }; + return Ok((tx, next_tip, fee, mass)); + } + fee = needed_fee; + } + + Err(eyre!("fan-out fee did not converge")) +} + +fn fee_from_feerate(mass: u64, feerate_sompi_per_gram: f64) -> u64 { + let fee = (feerate_sompi_per_gram * (mass as f64)).ceil(); + if fee <= 1.0 { + 1 + } else if fee >= (u64::MAX as f64) { + u64::MAX + } else { + fee as u64 + } +} + +async fn run_campaign( + cfg: &ResolvedConfig, + plans: &[WorkerPlan], + _observed_fee_floor_gwei: u64, +) -> Result { + let worker_states: Arc>> = Arc::new(Mutex::new( + plans + .iter() + .map(|p| WorkerState { + worker_id: p.worker_id, + wallet_index: p.wallet_index, + counters: WorkerCounters::default(), + exited: false, + }) + .collect(), + )); + + let metrics_path = cfg.campaign_output_dir.join("metrics.ndjson"); + let aggregate_samples: Arc>> = Arc::new(Mutex::new(Vec::new())); + + let stop_flag = Arc::new(AtomicBool::new(false)); + let interrupted_exit_code = Arc::new(AtomicI32::new(0)); + + install_signal_handlers(stop_flag.clone(), interrupted_exit_code.clone()); + + let (event_tx, mut event_rx) = mpsc::channel::(cfg.worker_count * 4); + let (start_tx, start_rx) = watch::channel::(false); + + let mut join_set = JoinSet::new(); + for plan in plans { + let cfg_cloned = cfg.clone(); + let plan_cloned = plan.clone(); + let event_tx_cloned = event_tx.clone(); + let worker_states_cloned = worker_states.clone(); + let stop_flag_cloned = stop_flag.clone(); + let mut start_rx_cloned = start_rx.clone(); + join_set.spawn(async move { + let res = run_worker( + &cfg_cloned, + &plan_cloned, + &worker_states_cloned, + &event_tx_cloned, + &mut start_rx_cloned, + &stop_flag_cloned, + ) + .await; + + let _ = event_tx_cloned + .send(WorkerEvent::WorkerExit { + worker_id: plan_cloned.worker_id, + error: res.as_ref().err().map(|e| e.to_string()), + }) + .await; + + res + }); + } + drop(event_tx); + + let warmup_deadline = Duration::from_secs(cfg.warmup_barrier_timeout_secs); + let mut warmup_seen: HashMap = HashMap::new(); + let warmup_wait = async { + while warmup_seen.len() < cfg.worker_count { + let ev = event_rx.recv().await.ok_or_else(|| { + eyre!("worker event channel closed before warm-up barrier completed") + })?; + match ev { + WorkerEvent::WarmupComplete { worker_id } => { + warmup_seen.insert(worker_id, true); + } + WorkerEvent::WorkerExit { worker_id, error } => { + return Err(eyre!( + "worker {} exited before warm-up barrier: {}", + worker_id, + error.unwrap_or_else(|| "unknown".to_string()) + )); + } + } + } + Ok(()) + }; + + timeout(warmup_deadline, warmup_wait).await.wrap_err("warm-up barrier timeout")??; + + let warmup_completed_at_utc = utc_now(); + let _ = start_tx.send(true); + + let samples_for_metrics = aggregate_samples.clone(); + let worker_states_for_metrics = worker_states.clone(); + let stop_for_metrics = stop_flag.clone(); + let metrics_cfg = cfg.clone(); + let metrics_task = tokio::spawn(async move { + metrics_loop( + &metrics_cfg, + &metrics_path, + &worker_states_for_metrics, + &samples_for_metrics, + &stop_for_metrics, + ) + .await + }); + + let run_started = Instant::now(); + let mut worker_error: Option = None; + + loop { + if stop_flag.load(Ordering::Relaxed) { + break; + } + + while let Ok(ev) = event_rx.try_recv() { + if let WorkerEvent::WorkerExit { worker_id, error } = ev + && let Some(err) = error + { + worker_error = Some(format!("worker {} error: {}", worker_id, err)); + stop_flag.store(true, Ordering::Relaxed); + break; + } + } + + if let Some(err) = worker_error.as_ref() { + eprintln!("[igra-loadgen] fail-fast: {err}"); + break; + } + + match cfg.stop_condition { + StopCondition::Duration(secs) => { + if run_started.elapsed() >= Duration::from_secs(secs) { + stop_flag.store(true, Ordering::Relaxed); + break; + } + } + StopCondition::TotalTxs(total) => { + let totals = collect_totals(&worker_states).await; + let sent = totals.accepted + + totals.rejected + + totals.timeout + + totals.dropped + + totals.terminal_error; + if sent >= total { + stop_flag.store(true, Ordering::Relaxed); + break; + } + } + } + + tokio::time::sleep(Duration::from_millis(100)).await; + } + + stop_flag.store(true, Ordering::Relaxed); + let drain_deadline = Instant::now() + Duration::from_secs(cfg.shutdown_grace_secs); + loop { + if Instant::now() >= drain_deadline { + break; + } + if join_set.is_empty() { + break; + } + if let Ok(Some(joined)) = timeout(Duration::from_millis(100), join_set.join_next()).await { + if let Err(err) = joined { + worker_error.get_or_insert_with(|| format!("worker join error: {err}")); + } + continue; + } + } + + join_set.shutdown().await; + + let _ = metrics_task.await; + + let totals = collect_totals(&worker_states).await; + let samples = aggregate_samples.lock().await.clone(); + let (achieved_tps_avg, achieved_tps_p95_1m, max_stalled_ratio, pass_windows) = + evaluate_windows(cfg, &samples); + + let denominator = + totals.accepted + totals.rejected + totals.timeout + totals.dropped + totals.terminal_error; + let failure_ratio = if denominator > 0 { + (totals.rejected + totals.timeout + totals.dropped + totals.terminal_error) as f64 + / denominator as f64 + } else { + 0.0 + }; + + let mut fail_reasons = Vec::new(); + + if cfg.calibration_mode { + if failure_ratio > 0.05 { + fail_reasons.push("calibration failure_ratio > 0.05".to_string()); + } + } else if cfg.preflight_sample_mode { + if totals.terminal_error > 0 { + fail_reasons.push("preflight-sample encountered terminal errors".to_string()); + } + } else { + if failure_ratio > 0.01 { + fail_reasons.push(format!("failure_ratio {} > 0.01", failure_ratio)); + } + if !pass_windows { + fail_reasons.push("throughput windows fail 95%/95% rule".to_string()); + } + if max_stalled_ratio > 0.02 { + fail_reasons.push(format!("max stalled ratio {} > 0.02", max_stalled_ratio)); + } + } + if let Some(err) = worker_error { + fail_reasons.push(err); + } + + Ok(RunResult { + totals, + achieved_tps_avg, + achieved_tps_p95_1m, + failure_ratio, + max_stalled_ratio, + pass: fail_reasons.is_empty(), + fail_reasons, + interrupted_exit_code: { + let code = interrupted_exit_code.load(Ordering::Relaxed); + if code == 0 { None } else { Some(code) } + }, + warmup_completed_at_utc: Some(warmup_completed_at_utc), + }) +} + +fn install_signal_handlers(stop_flag: Arc, exit_code: Arc) { + tokio::spawn(async move { + tokio::select! { + _ = signal::ctrl_c() => { + exit_code.store(130, Ordering::Relaxed); + stop_flag.store(true, Ordering::Relaxed); + } + _ = async { + #[cfg(unix)] + { + let mut term = signal::unix::signal(signal::unix::SignalKind::terminate()) + .expect("install SIGTERM handler"); + term.recv().await; + } + #[cfg(not(unix))] + { + std::future::pending::<()>().await; + } + } => { + exit_code.store(143, Ordering::Relaxed); + stop_flag.store(true, Ordering::Relaxed); + } + } + }); +} + +async fn metrics_loop( + cfg: &ResolvedConfig, + path: &Path, + worker_states: &Arc>>, + aggregate_samples: &Arc>>, + stop_flag: &Arc, +) -> Result<()> { + let file = File::create(path) + .wrap_err_with(|| format!("failed to create metrics file {}", path.display()))?; + let mut writer = BufWriter::new(file); + + let mut ticker = interval(Duration::from_secs(1)); + ticker.set_missed_tick_behavior(MissedTickBehavior::Skip); + + let mut prev = AggregatedTotals::default(); + let mut buffered_lines = Vec::::new(); + let mut last_flush = Instant::now(); + let metrics_started = Instant::now(); + + loop { + ticker.tick().await; + + let now = Instant::now(); + let states = worker_states.lock().await.clone(); + + let mut totals = AggregatedTotals::default(); + let mut stalled = 0usize; + let mut active = 0usize; + + for s in &states { + totals.accepted += s.counters.accepted; + totals.rejected += s.counters.rejected; + totals.timeout += s.counters.timeout; + totals.dropped += s.counters.dropped; + totals.terminal_error += s.counters.terminal_error; + if !s.exited { + active += 1; + if let Some(last) = s.counters.last_accept_instant { + if now.duration_since(last) > Duration::from_secs(60) { + stalled += 1; + } + } else if now.duration_since(metrics_started) > Duration::from_secs(60) { + stalled += 1; + } + } + } + + let d_accept = totals.accepted.saturating_sub(prev.accepted); + let d_rejected = totals.rejected.saturating_sub(prev.rejected); + let d_timeout = totals.timeout.saturating_sub(prev.timeout); + let d_dropped = totals.dropped.saturating_sub(prev.dropped); + let d_terminal = totals.terminal_error.saturating_sub(prev.terminal_error); + + let mut el_latencies = + states.iter().filter_map(|s| s.counters.last_el_rpc_latency_ms).collect::>(); + let mut kaspa_latencies = + states.iter().filter_map(|s| s.counters.last_kaspa_rpc_latency_ms).collect::>(); + let el_rpc_p95_ms = percentile_u64(&mut el_latencies, 95.0); + let kaspa_rpc_p95_ms = percentile_u64(&mut kaspa_latencies, 95.0); + let el_pending_count = states + .iter() + .map(|s| s.counters.local_next_nonce.saturating_sub(s.counters.rpc_pending_nonce)) + .sum::(); + + let sample = AggregateSample { + ts_utc: utc_now(), + tps_1s: d_accept as f64, + accepted_1s: d_accept, + rejected_1s: d_rejected, + timeout_1s: d_timeout, + dropped_1s: d_dropped, + terminal_error_1s: d_terminal, + el_rpc_p95_ms, + kaspa_rpc_p95_ms, + el_pending_count, + kaspa_mempool_mass_estimate: None, + active_workers: active, + stalled_workers: stalled, + }; + + aggregate_samples.lock().await.push(sample.clone()); + + buffered_lines.push(serde_json::to_string(&json!({ + "ts_utc": sample.ts_utc, + "tps_1s": sample.tps_1s, + "accepted_1s": sample.accepted_1s, + "rejected_1s": sample.rejected_1s, + "timeout_1s": sample.timeout_1s, + "dropped_1s": sample.dropped_1s, + "terminal_error_1s": sample.terminal_error_1s, + "el_rpc_p95_ms": sample.el_rpc_p95_ms, + "kaspa_rpc_p95_ms": sample.kaspa_rpc_p95_ms, + "el_pending_count": sample.el_pending_count, + "kaspa_mempool_mass_estimate": sample.kaspa_mempool_mass_estimate, + "active_workers": sample.active_workers, + "stalled_workers": sample.stalled_workers, + }))?); + + for s in &states { + buffered_lines.push( + serde_json::to_string(&json!({ + "ts_utc": utc_now(), + "worker_id": format!("worker-{:03}", s.worker_id), + "wallet_index": s.wallet_index, + "tps_1s": Value::Null, + "accepted_total": s.counters.accepted, + "failed_total": s.counters.rejected + s.counters.timeout + s.counters.dropped + s.counters.terminal_error, + "local_next_nonce": s.counters.local_next_nonce, + "rpc_pending_nonce": s.counters.rpc_pending_nonce, + "replacement_count_total": s.counters.replacement_count_total, + "el_rpc_latency_ms": s.counters.last_el_rpc_latency_ms, + "kaspa_rpc_latency_ms": s.counters.last_kaspa_rpc_latency_ms, + "endpoint": s.counters.active_endpoint, + "last_error_code": s.counters.last_error_code, + }))?, + ); + } + + let should_flush = + buffered_lines.len() >= 100 || last_flush.elapsed() >= Duration::from_secs(10); + if should_flush { + for line in buffered_lines.drain(..) { + writer.write_all(line.as_bytes())?; + writer.write_all(b"\n")?; + } + writer.flush()?; + last_flush = Instant::now(); + } + + prev = totals; + + if stop_flag.load(Ordering::Relaxed) { + break; + } + } + + if !buffered_lines.is_empty() { + for line in buffered_lines.drain(..) { + writer.write_all(line.as_bytes())?; + writer.write_all(b"\n")?; + } + writer.flush()?; + } + + if cfg.report_secs == 0 { + // Keep field used and silence dead-code warnings if report is disabled. + } + + Ok(()) +} + +async fn run_worker( + cfg: &ResolvedConfig, + plan: &WorkerPlan, + worker_states: &Arc>>, + event_tx: &mpsc::Sender, + start_rx: &mut watch::Receiver, + stop_flag: &Arc, +) -> Result<()> { + let mut rng = StdRng::seed_from_u64(cfg.rpc_random_seed.wrapping_add(plan.worker_id as u64)); + + let transport_pool = build_transport_pool(cfg, &plan.kaspa_key)?; + let mut transport_health = vec![TransportHealth::default(); transport_pool.len()]; + let mut transport_index = rng.random_range(0..transport_pool.len()); + let mut nonce = { + let mut t = transport_pool[transport_index].transport.clone(); + eth_get_transaction_count_pending(&mut t, plan.evm_sender).await? + }; + let signer = plan + .evm_key + .parse::() + .map_err(|e| eyre!("invalid signer for worker {}: {e}", plan.worker_id))?; + let chain_id = { + let mut t = transport_pool[transport_index].transport.clone(); + eth_chain_id(&mut t).await? + }; + + { + let mut states = worker_states.lock().await; + if let Some(s) = states.iter_mut().find(|s| s.worker_id == plan.worker_id) { + s.counters.local_next_nonce = nonce; + s.counters.rpc_pending_nonce = nonce; + } + } + + for _ in 0..cfg.warmup_txs_per_worker { + if stop_flag.load(Ordering::Relaxed) { + break; + } + send_one( + cfg, + plan, + &signer, + chain_id, + &transport_pool, + &mut transport_health, + &mut transport_index, + &mut nonce, + worker_states, + false, + true, + None, + &mut rng, + ) + .await?; + } + + event_tx.send(WorkerEvent::WarmupComplete { worker_id: plan.worker_id }).await.ok(); + + if !*start_rx.borrow() { + start_rx.changed().await.wrap_err("failed waiting for start barrier")?; + } + + let per_worker_tps = + if cfg.target_tps > 0.0 { cfg.target_tps / cfg.worker_count as f64 } else { 0.0 }; + let mut ticker = if per_worker_tps > 0.0 { + let mut t = interval(Duration::from_secs_f64(1.0 / per_worker_tps)); + t.set_missed_tick_behavior(MissedTickBehavior::Skip); + Some(t) + } else { + None + }; + + if matches!(cfg.mode, Mode::PrebuildSend) { + run_worker_prebuild_pipeline( + cfg, + plan, + &signer, + chain_id, + &transport_pool, + &mut transport_health, + &mut transport_index, + &mut nonce, + worker_states, + stop_flag, + ticker, + &mut rng, + ) + .await?; + } else { + loop { + if stop_flag.load(Ordering::Relaxed) { + break; + } + + if worker_reached_target(worker_states, plan.worker_id, plan.per_worker_total_target) + .await + { + break; + } + + if let Some(t) = ticker.as_mut() { + t.tick().await; + } + + send_one( + cfg, + plan, + &signer, + chain_id, + &transport_pool, + &mut transport_health, + &mut transport_index, + &mut nonce, + worker_states, + true, + false, + None, + &mut rng, + ) + .await?; + } + } + + { + let mut states = worker_states.lock().await; + if let Some(s) = states.iter_mut().find(|s| s.worker_id == plan.worker_id) { + s.exited = true; + } + } + + Ok(()) +} + +async fn worker_reached_target( + worker_states: &Arc>>, + worker_id: usize, + target: Option, +) -> bool { + let Some(target) = target else { + return false; + }; + let states = worker_states.lock().await; + let current = states + .iter() + .find(|s| s.worker_id == worker_id) + .map(|s| { + s.counters.accepted + + s.counters.rejected + + s.counters.timeout + + s.counters.dropped + + s.counters.terminal_error + }) + .unwrap_or(0); + current >= target +} + +#[allow(clippy::too_many_arguments)] +async fn run_worker_prebuild_pipeline( + cfg: &ResolvedConfig, + plan: &WorkerPlan, + signer: &PrivateKeySigner, + chain_id: u64, + transport_pool: &[TransportSlot], + transport_health: &mut [TransportHealth], + transport_index: &mut usize, + nonce: &mut u64, + worker_states: &Arc>>, + stop_flag: &Arc, + mut ticker: Option, + rng: &mut StdRng, +) -> Result<()> { + let per_worker_tps = + if cfg.target_tps > 0.0 { cfg.target_tps / cfg.worker_count as f64 } else { 0.0 }; + let mut queue_capacity = + ((per_worker_tps * cfg.prebuild_horizon_secs as f64).ceil() as usize).max(1); + if let Some(target) = plan.per_worker_total_target { + queue_capacity = queue_capacity.min(target.max(1) as usize); + } + + let (tx_prebuilt, mut rx_prebuilt) = mpsc::channel::(queue_capacity); + let producer_stop = stop_flag.clone(); + let to = cfg.explicit_to.unwrap_or(plan.contract); + let data = + if let Some(d) = cfg.explicit_data.as_ref() { d.clone() } else { plan.call_data.clone() }; + let signer_prebuild = signer.clone(); + let cfg_cloned = cfg.clone(); + let mut next_nonce = *nonce; + let per_worker_target = plan.per_worker_total_target; + + let producer = tokio::spawn(async move { + let mut produced = 0u64; + loop { + if producer_stop.load(Ordering::Relaxed) { + break; + } + if let Some(target) = per_worker_target + && produced >= target + { + break; + } + let raw = build_signed_eip1559( + &signer_prebuild, + chain_id, + next_nonce, + cfg_cloned.gas_limit, + cfg_cloned.max_fee_per_gas, + cfg_cloned.max_priority_fee_per_gas, + to, + &data, + )?; + let tx = PrebuiltTx { nonce: next_nonce, raw }; + if tx_prebuilt.send(tx).await.is_err() { + break; + } + next_nonce = next_nonce.saturating_add(1); + produced = produced.saturating_add(1); + } + Result::<()>::Ok(()) + }); + + loop { + if stop_flag.load(Ordering::Relaxed) { + break; + } + if worker_reached_target(worker_states, plan.worker_id, plan.per_worker_total_target).await + { + break; + } + if let Some(t) = ticker.as_mut() { + t.tick().await; + } + + let Some(prebuilt) = rx_prebuilt.recv().await else { + break; + }; + if prebuilt.nonce < *nonce { + let mut states = worker_states.lock().await; + if let Some(s) = states.iter_mut().find(|s| s.worker_id == plan.worker_id) { + s.counters.dropped = s.counters.dropped.saturating_add(1); + s.counters.last_error_code = Some("PREBUILD_STALE_NONCE".to_string()); + } + continue; + } + + send_one( + cfg, + plan, + signer, + chain_id, + transport_pool, + transport_health, + transport_index, + nonce, + worker_states, + true, + false, + Some(prebuilt), + rng, + ) + .await?; + } + + drop(rx_prebuilt); + match producer.await { + Ok(inner) => inner?, + Err(err) => return Err(eyre!("prebuild producer task failed: {err}")), + } + Ok(()) +} + +#[allow(clippy::too_many_arguments)] +async fn send_one( + cfg: &ResolvedConfig, + plan: &WorkerPlan, + signer: &PrivateKeySigner, + chain_id: u64, + transport_pool: &[TransportSlot], + transport_health: &mut [TransportHealth], + transport_index: &mut usize, + nonce: &mut u64, + worker_states: &Arc>>, + count_metrics: bool, + must_succeed: bool, + prebuilt_tx: Option, + rng: &mut StdRng, +) -> Result<()> { + let to = cfg.explicit_to.unwrap_or(plan.contract); + let data = + if let Some(d) = cfg.explicit_data.as_ref() { d.clone() } else { plan.call_data.clone() }; + + let mut local_nonce = prebuilt_tx.as_ref().map(|p| p.nonce).unwrap_or(*nonce); + let prebuilt_raw = prebuilt_tx.as_ref().map(|p| p.raw.clone()); + let mut max_fee_per_gas = cfg.max_fee_per_gas; + let mut max_priority_fee_per_gas = cfg.max_priority_fee_per_gas; + let mut replacement_attempts = 0u64; + + loop { + let selected_idx = select_transport_index( + cfg, + transport_pool.len(), + transport_health, + transport_index, + rng, + ) + .await?; + *transport_index = selected_idx; + let endpoint_id = transport_pool[selected_idx].endpoint_id.clone(); + let mut transport = transport_pool[selected_idx].transport.clone(); + + let raw = if replacement_attempts == 0 { + if let Some(raw) = prebuilt_raw.as_ref() { + raw.clone() + } else { + build_signed_eip1559( + signer, + chain_id, + local_nonce, + cfg.gas_limit, + max_fee_per_gas, + max_priority_fee_per_gas, + to, + &data, + )? + } + } else { + build_signed_eip1559( + signer, + chain_id, + local_nonce, + cfg.gas_limit, + max_fee_per_gas, + max_priority_fee_per_gas, + to, + &data, + )? + }; + + let send_started = Instant::now(); + let send_result = transport.request(send_raw_packet(&raw)).await; + let elapsed_ms = send_started.elapsed().as_millis() as u64; + + match send_result { + Ok(_) => { + mark_transport_success(transport_health, selected_idx); + local_nonce = local_nonce.saturating_add(1); + *nonce = (*nonce).max(local_nonce); + let mut states = worker_states.lock().await; + if let Some(s) = states.iter_mut().find(|s| s.worker_id == plan.worker_id) { + s.counters.local_next_nonce = local_nonce; + s.counters.rpc_pending_nonce = local_nonce; + s.counters.last_error_code = None; + s.counters.last_kaspa_rpc_latency_ms = Some(elapsed_ms); + s.counters.active_endpoint = Some(endpoint_id); + if count_metrics { + s.counters.accepted = s.counters.accepted.saturating_add(1); + s.counters.replacement_count_total = + s.counters.replacement_count_total.saturating_add(replacement_attempts); + s.counters.last_accept_instant = Some(Instant::now()); + } + } + return Ok(()); + } + Err(err) => { + let err_text = err.to_string(); + let failure = classify_error(&err_text); + if std::env::var_os("IGRA_STRESS_DEBUG_ERRORS").is_some() { + eprintln!( + "[igra-loadgen] worker-{:03} send error (class={:?}, nonce={}, endpoint={}): {}", + plan.worker_id, failure, local_nonce, endpoint_id, err_text + ); + } + + let mut refreshed_nonce = None; + let mut refreshed_nonce_latency_ms = None; + if err_text.contains("IGRA_NONCE_") + || err_text.to_ascii_lowercase().contains("nonce") + { + let t0 = Instant::now(); + refreshed_nonce = + eth_get_transaction_count_pending(&mut transport, plan.evm_sender) + .await + .ok(); + refreshed_nonce_latency_ms = Some(t0.elapsed().as_millis() as u64); + if let Some(n) = refreshed_nonce { + local_nonce = n; + *nonce = n; + } + } + + if matches!(failure, FailureClass::TerminalError | FailureClass::Timeout) { + mark_transport_failure( + transport_health, + selected_idx, + cfg.degraded_pause_max_secs, + ); + } else { + mark_transport_success(transport_health, selected_idx); + } + + let retryable = matches!(failure, FailureClass::Rejected | FailureClass::Timeout); + if retryable && replacement_attempts < cfg.max_replacements_per_nonce { + replacement_attempts = replacement_attempts.saturating_add(1); + max_fee_per_gas = bump_fee(max_fee_per_gas, cfg.replacement_fee_bump_pct); + max_priority_fee_per_gas = + bump_fee(max_priority_fee_per_gas, cfg.replacement_fee_bump_pct) + .min(max_fee_per_gas); + + let backoff = replacement_backoff_secs(cfg, replacement_attempts); + tokio::time::sleep(Duration::from_secs(backoff)).await; + continue; + } + + if count_metrics { + let mut states = worker_states.lock().await; + if let Some(s) = states.iter_mut().find(|s| s.worker_id == plan.worker_id) { + s.counters.replacement_count_total = + s.counters.replacement_count_total.saturating_add(replacement_attempts); + s.counters.last_error_code = Some(classify_error_code(&err_text)); + if let Some(el_ms) = refreshed_nonce_latency_ms { + s.counters.last_el_rpc_latency_ms = Some(el_ms); + } + s.counters.last_kaspa_rpc_latency_ms = Some(elapsed_ms); + s.counters.active_endpoint = Some(endpoint_id); + if let Some(n) = refreshed_nonce { + s.counters.rpc_pending_nonce = n; + s.counters.local_next_nonce = n; + } + match failure { + FailureClass::Rejected => { + s.counters.rejected = s.counters.rejected.saturating_add(1) + } + FailureClass::Timeout => { + s.counters.timeout = s.counters.timeout.saturating_add(1); + } + FailureClass::TerminalError => { + s.counters.terminal_error = + s.counters.terminal_error.saturating_add(1) + } + } + } + } + + if must_succeed { + return Err(eyre!("required send failed: {err_text}")); + } + if matches!(failure, FailureClass::TerminalError) { + return Err(eyre!("terminal worker error: {err_text}")); + } + return Ok(()); + } + } + } +} + +fn classify_error(err_text: &str) -> FailureClass { + let lower = err_text.to_ascii_lowercase(); + if err_text.contains(IGRA_MINING_TIMEOUT_ERROR_CODE) || lower.contains("timed out") { + FailureClass::Timeout + } else if lower.contains("failed to connect") + || lower.contains("rpc error") + || lower.contains("transport") + { + FailureClass::TerminalError + } else { + FailureClass::Rejected + } +} + +fn classify_error_code(err_text: &str) -> String { + if err_text.contains("IGRA_NONCE_001") { + "IGRA_NONCE_001".to_string() + } else if err_text.contains("IGRA_NONCE_002") { + "IGRA_NONCE_002".to_string() + } else if err_text.contains("IGRA_NONCE_003") { + "IGRA_NONCE_003".to_string() + } else if err_text.contains("IGRA_NONCE_004") { + "IGRA_NONCE_004".to_string() + } else if err_text.contains(IGRA_MINING_TIMEOUT_ERROR_CODE) { + IGRA_MINING_TIMEOUT_ERROR_CODE.to_string() + } else { + "IGRA_ERR".to_string() + } +} + +async fn select_transport_index( + cfg: &ResolvedConfig, + pool_len: usize, + health: &mut [TransportHealth], + current_index: &usize, + rng: &mut StdRng, +) -> Result { + if pool_len == 0 { + return Err(eyre!("transport pool is empty")); + } + let wait_deadline = Instant::now() + Duration::from_secs(cfg.degraded_pause_max_secs.max(1)); + loop { + let now = Instant::now(); + let healthy: Vec = health + .iter() + .enumerate() + .filter_map(|(i, h)| { + if h.backoff_until.map(|t| now >= t).unwrap_or(true) { Some(i) } else { None } + }) + .collect(); + if !healthy.is_empty() { + if matches!(cfg.rpc_selection_mode, RpcSelectionMode::RandomPerStep) { + let idx = rng.random_range(0..healthy.len()); + return Ok(healthy[idx]); + } + if healthy.contains(current_index) { + return Ok(*current_index); + } + return Ok(*healthy.first().expect("checked non-empty")); + } + if Instant::now() >= wait_deadline { + return Err(eyre!( + "all rpc endpoints remained unhealthy for > {}s", + cfg.degraded_pause_max_secs.max(1) + )); + } + tokio::time::sleep(Duration::from_secs(1)).await; + } +} + +fn mark_transport_success(health: &mut [TransportHealth], idx: usize) { + if let Some(h) = health.get_mut(idx) { + h.consecutive_failures = 0; + h.backoff_until = None; + } +} + +fn mark_transport_failure(health: &mut [TransportHealth], idx: usize, max_pause_secs: u64) { + if let Some(h) = health.get_mut(idx) { + h.consecutive_failures = h.consecutive_failures.saturating_add(1); + let exp = h.consecutive_failures.saturating_sub(1).min(6); + let base = 2u64.saturating_pow(exp); + let pause_secs = base.min(max_pause_secs.max(1)); + h.backoff_until = Some(Instant::now() + Duration::from_secs(pause_secs)); + } +} + +fn replacement_backoff_secs(cfg: &ResolvedConfig, attempt: u64) -> u64 { + let base = cfg.pending_timeout_secs.max(1); + let exp = attempt.saturating_sub(1).min(6); + let backoff = base.saturating_mul(2u64.saturating_pow(exp as u32)); + backoff.min(cfg.replacement_timeout_cap_secs.max(1)) +} + +fn bump_fee(value: u128, bump_pct: u64) -> u128 { + if bump_pct == 0 { + return value; + } + let bumped = value.saturating_mul(100u128.saturating_add(bump_pct as u128)) / 100; + bumped.max(value.saturating_add(1)) +} + +fn percentile_u64(samples: &mut [u64], percentile: f64) -> Option { + if samples.is_empty() { + return None; + } + samples.sort_unstable(); + let idx = ((samples.len() as f64) * (percentile / 100.0)).ceil() as usize; + let idx = idx.saturating_sub(1).min(samples.len().saturating_sub(1)); + Some(samples[idx]) +} + +fn percentile_f64(samples: &mut [f64], percentile: f64) -> Option { + if samples.is_empty() { + return None; + } + samples.sort_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)); + let idx = ((samples.len() as f64) * (percentile / 100.0)).ceil() as usize; + let idx = idx.saturating_sub(1).min(samples.len().saturating_sub(1)); + Some(samples[idx]) +} + +fn evaluate_windows(cfg: &ResolvedConfig, samples: &[AggregateSample]) -> (f64, f64, f64, bool) { + if samples.is_empty() { + return (0.0, 0.0, 0.0, false); + } + + let achieved_tps_avg = samples.iter().map(|s| s.tps_1s).sum::() / samples.len() as f64; + + let mut one_minute_tps = Vec::new(); + for chunk in samples.chunks(60) { + let sum_accept = chunk.iter().map(|s| s.accepted_1s).sum::(); + let secs = chunk.len().max(1) as f64; + one_minute_tps.push(sum_accept as f64 / secs); + } + + let mut sorted = one_minute_tps.clone(); + sorted.sort_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)); + let idx = ((sorted.len() as f64) * 0.95).floor() as usize; + let idx = idx.min(sorted.len().saturating_sub(1)); + let achieved_tps_p95_1m = sorted[idx]; + + let threshold = cfg.target_tps * 0.95; + let passing = one_minute_tps.iter().filter(|v| **v >= threshold).count(); + let windows_ratio = passing as f64 / one_minute_tps.len().max(1) as f64; + let pass_windows = windows_ratio >= 0.95; + + let max_stalled_ratio = samples + .iter() + .map(|s| { + if s.active_workers == 0 { + 0.0 + } else { + s.stalled_workers as f64 / s.active_workers as f64 + } + }) + .fold(0.0f64, f64::max); + + (achieved_tps_avg, achieved_tps_p95_1m, max_stalled_ratio, pass_windows) +} + +async fn collect_totals(worker_states: &Arc>>) -> AggregatedTotals { + let states = worker_states.lock().await; + let mut totals = AggregatedTotals::default(); + for s in states.iter() { + totals.accepted += s.counters.accepted; + totals.rejected += s.counters.rejected; + totals.timeout += s.counters.timeout; + totals.dropped += s.counters.dropped; + totals.terminal_error += s.counters.terminal_error; + } + totals +} + +#[allow(clippy::too_many_arguments)] +fn emit_manifest( + cfg: &ResolvedConfig, + plans: &[WorkerPlan], + campaign_id: &str, + started_at_utc: &str, + ended_at_utc: Option<&str>, + observed_fee_floor_gwei: u64, + result: Option<&RunResult>, + warmup_completed_at_utc: Option<&str>, +) -> Result<()> { + let wallet_start = plans.first().map(|p| p.wallet_index).unwrap_or(0); + let wallet_end = plans.last().map(|p| p.wallet_index).unwrap_or(0); + + let mut resolved_parameters = HashMap::new(); + resolved_parameters.insert("IGRA_STRESS_NETWORK", cfg.network.as_str().to_string()); + resolved_parameters.insert("IGRA_STRESS_MODE", cfg.mode.as_str().to_string()); + resolved_parameters.insert("IGRA_STRESS_TARGET_TPS", format!("{}", cfg.target_tps)); + resolved_parameters.insert("IGRA_STRESS_WORKER_COUNT", format!("{}", cfg.worker_count)); + resolved_parameters.insert("IGRA_STRESS_EL_RPC_URLS", cfg.el_rpc_urls.join(",")); + resolved_parameters.insert("IGRA_STRESS_KASPA_RPC_URLS", cfg.kaspa_rpc_urls.join(",")); + + let mut manifest = json!({ + "schema_version": "1.0.0", + "campaign_id": campaign_id, + "started_at_utc": started_at_utc, + "ended_at_utc": ended_at_utc, + "mode": cfg.mode.as_str(), + "network": cfg.network.as_str(), + "target_tps": cfg.target_tps, + "worker_count": cfg.worker_count, + "wallet_start_index": cfg.wallet_start_index, + "resolved_parameters": resolved_parameters, + "parameter_sources": cfg.parameter_sources, + "resolved_wallet_index_range": format!("{}..{}", wallet_start, wallet_end), + "resolved_contract_index_range": format!("{}..{}", wallet_start, wallet_end), + "resolved_endpoints": { + "igra_rpc_urls": cfg.el_rpc_urls, + "kaspa_rpc_urls": cfg.kaspa_rpc_urls, + "endpoint_set_sha256": cfg.endpoint_set_sha256, + }, + "fee_policy": { + "igra_min_fee_floor_gwei_expected": cfg.igra_min_fee_floor_gwei_expected, + "igra_min_fee_floor_gwei_observed": observed_fee_floor_gwei, + "kaspa_fee_mode": cfg.kaspa_fee_mode, + "kaspa_fee_bucket": cfg.kaspa_fee_bucket, + }, + "nonce_policy": { + "pending_timeout_secs": cfg.pending_timeout_secs, + "max_replacements_per_nonce": cfg.max_replacements_per_nonce, + "replacement_fee_bump_pct": cfg.replacement_fee_bump_pct, + }, + "utxo_policy": { + "prebuild_horizon_secs": cfg.prebuild_horizon_secs, + "utxo_refill_lag_secs": cfg.utxo_refill_lag_secs, + "utxo_safety_factor": cfg.utxo_safety_factor, + "utxos_per_wallet_min": if matches!(cfg.mode, Mode::PrebuildSend) { + (((cfg.target_tps / cfg.worker_count as f64) + * (cfg.prebuild_horizon_secs + cfg.utxo_refill_lag_secs) as f64 + * cfg.utxo_safety_factor) + .ceil() as u64) + .max(1) + } else { + 1 + } + }, + "build_versions": { + "foundry": env!("CARGO_PKG_VERSION"), + "igra": "unknown", + "reth": "unknown", + "rusty_kaspa_private": "unknown", + "kaspaminer": "unknown", + }, + "runtime": { + "host_count": 1, + "runner_version": env!("CARGO_PKG_VERSION"), + "warmup_completed_at_utc": warmup_completed_at_utc, + }, + }); + + if let Some(r) = result { + manifest["results"] = json!({ + "accepted": r.totals.accepted, + "rejected": r.totals.rejected, + "timeout": r.totals.timeout, + "dropped": r.totals.dropped, + "terminal_error": r.totals.terminal_error, + "failure_ratio": r.failure_ratio, + "achieved_tps_avg": r.achieved_tps_avg, + "achieved_tps_p95_1m": r.achieved_tps_p95_1m, + "pass": r.pass, + "fail_reasons": r.fail_reasons, + }); + } + + let path = cfg.campaign_output_dir.join("campaign-manifest.json"); + fs::write(&path, format!("{}\n", serde_json::to_string_pretty(&manifest)?)) + .wrap_err_with(|| format!("failed to write manifest {}", path.display()))?; + + Ok(()) +} + +fn emit_calibration_report(cfg: &ResolvedConfig, run_result: &RunResult) -> Result<()> { + let metrics_path = cfg.campaign_output_dir.join("metrics.ndjson"); + if !metrics_path.exists() { + return Ok(()); + } + let content = fs::read_to_string(&metrics_path) + .wrap_err_with(|| format!("failed to read metrics file {}", metrics_path.display()))?; + + let mut tps_1s = Vec::::new(); + let mut el_rpc_p95_ms = Vec::::new(); + let mut kaspa_rpc_p95_ms = Vec::::new(); + + for line in content.lines() { + let Ok(v) = serde_json::from_str::(line) else { + continue; + }; + if let Some(tps) = v.get("tps_1s").and_then(|x| x.as_f64()) { + tps_1s.push(tps); + } + if let Some(el) = v.get("el_rpc_p95_ms").and_then(|x| x.as_u64()) { + el_rpc_p95_ms.push(el); + } + if let Some(k) = v.get("kaspa_rpc_p95_ms").and_then(|x| x.as_u64()) { + kaspa_rpc_p95_ms.push(k); + } + } + + let report = json!({ + "schema_version": "1.0.0", + "network": cfg.network.as_str(), + "mode": cfg.mode.as_str(), + "target_tps": cfg.target_tps, + "worker_count": cfg.worker_count, + "totals": { + "accepted": run_result.totals.accepted, + "rejected": run_result.totals.rejected, + "timeout": run_result.totals.timeout, + "dropped": run_result.totals.dropped, + "terminal_error": run_result.totals.terminal_error, + }, + "failure_ratio": run_result.failure_ratio, + "achieved_tps": { + "avg": run_result.achieved_tps_avg, + "p95_1m_windows": run_result.achieved_tps_p95_1m, + "p50_1s": percentile_f64(&mut tps_1s, 50.0), + "p95_1s": percentile_f64(&mut tps_1s, 95.0), + }, + "latency_ms": { + "el_rpc_p95_observed_p50": percentile_u64(&mut el_rpc_p95_ms, 50.0), + "el_rpc_p95_observed_p95": percentile_u64(&mut el_rpc_p95_ms, 95.0), + "kaspa_rpc_p95_observed_p50": percentile_u64(&mut kaspa_rpc_p95_ms, 50.0), + "kaspa_rpc_p95_observed_p95": percentile_u64(&mut kaspa_rpc_p95_ms, 95.0), + }, + "pass": run_result.pass, + "fail_reasons": run_result.fail_reasons, + }); + + let path = cfg.campaign_output_dir.join("calibration-report.json"); + fs::write(&path, format!("{}\n", serde_json::to_string_pretty(&report)?)) + .wrap_err_with(|| format!("failed to write calibration report {}", path.display()))?; + Ok(()) +} + +fn build_transport( + el_rpc_url: &str, + kaspa_rpc_url: &str, + kaspa_key: &str, + cfg: &ResolvedConfig, +) -> Result> { + let inner = build_runtime_transport(el_rpc_url, cfg.no_proxy)?; + Ok(IgraTransport::new(inner, true).with_transport_config(IgraTransportConfig { + tx_id_prefix: Some(cfg.tx_id_prefix.clone()), + mining_timeout_secs: Some(cfg.mining_timeout_secs), + kaspa_rpc_url: Some(kaspa_rpc_url.to_string()), + kaspa_network: Some(cfg.network.as_str().to_string()), + payload_compression: Some("none".to_string()), + // Prefer chaining across unconfirmed spends to avoid mempool UTXO reuse conflicts + // during sustained send loops. + kaspa_utxo_mode: Some("chain".to_string()), + kaspa_fee_mode: Some(cfg.kaspa_fee_mode.clone()), + kaspa_fee_bucket: Some(cfg.kaspa_fee_bucket.clone()), + kaspa_wallet: IgraKaspaWalletConfig { + private_key: Some(kaspa_key.to_string()), + ..Default::default() + }, + })) +} + +fn build_transport_pool(cfg: &ResolvedConfig, kaspa_key: &str) -> Result> { + let mut pool = Vec::new(); + let pair_count = cfg.el_rpc_urls.len().max(cfg.kaspa_rpc_urls.len()); + for i in 0..pair_count { + let el = &cfg.el_rpc_urls[i % cfg.el_rpc_urls.len()]; + let kaspa = &cfg.kaspa_rpc_urls[i % cfg.kaspa_rpc_urls.len()]; + let endpoint_id = format!("el={} kaspa={}", el, kaspa); + pool.push(TransportSlot { + endpoint_id, + transport: build_transport(el, kaspa, kaspa_key, cfg)?, + }); + } + Ok(pool) +} + +fn build_runtime_transport(el_rpc_url: &str, no_proxy: bool) -> Result { + let url = + Url::parse(el_rpc_url).wrap_err_with(|| format!("invalid EL RPC URL: {el_rpc_url}"))?; + Ok(RuntimeTransportBuilder::new(url) + .with_timeout(Duration::from_secs(30)) + .no_proxy(no_proxy) + .build()) +} + +fn build_signed_eip1559( + signer: &PrivateKeySigner, + chain_id: u64, + nonce: u64, + gas_limit: u64, + max_fee_per_gas: u128, + max_priority_fee_per_gas: u128, + to: Address, + input: &[u8], +) -> Result> { + let mut tx = TxEip1559 { + chain_id, + nonce, + gas_limit, + max_fee_per_gas, + max_priority_fee_per_gas, + to: TxKind::Call(to), + value: U256::ZERO, + input: Bytes::from(input.to_vec()), + access_list: Default::default(), + }; + let sig = signer.sign_transaction_sync(&mut tx).wrap_err("sign eip1559")?; + let signed = Signed::new_unhashed(tx, sig); + let mut raw = Vec::with_capacity(signed.eip2718_encoded_length()); + signed.eip2718_encode(&mut raw); + Ok(raw) +} + +fn send_raw_packet(raw_tx: &[u8]) -> RequestPacket { + let encoded = format!("0x{}", hex::encode(raw_tx)); + let req: Request> = + Request::new("eth_sendRawTransaction".to_string(), Id::Number(1), vec![encoded]); + RequestPacket::Single(req.serialize().expect("serialize request")) +} + +async fn eth_chain_id(transport: &mut T) -> Result +where + T: Service + Send, + T::Future: Send, +{ + let req: Request> = Request::new("eth_chainId".to_string(), Id::Number(1), vec![]); + let req = req.serialize().map_err(|err| eyre!("rpc request serialize error: {err}"))?; + let resp = transport.call(RequestPacket::Single(req)).await?; + parse_hex_u64(single_success_value(resp)?).wrap_err("failed to parse eth_chainId") +} + +async fn eth_get_balance(transport: &mut T, addr: Address) -> Result +where + T: Service + Send, + T::Future: Send, +{ + let params = vec![format!("{addr:#x}"), "latest".to_string()]; + let req: Request> = + Request::new("eth_getBalance".to_string(), Id::Number(1), params); + let req = req.serialize().map_err(|err| eyre!("rpc request serialize error: {err}"))?; + let resp = transport.call(RequestPacket::Single(req)).await?; + parse_hex_u128(single_success_value(resp)?).wrap_err("failed to parse eth_getBalance") +} + +async fn eth_get_code(transport: &mut T, addr: Address) -> Result +where + T: Service + Send, + T::Future: Send, +{ + let params = vec![format!("{addr:#x}"), "latest".to_string()]; + let req: Request> = Request::new("eth_getCode".to_string(), Id::Number(1), params); + let req = req.serialize().map_err(|err| eyre!("rpc request serialize error: {err}"))?; + let resp = transport.call(RequestPacket::Single(req)).await?; + let v = single_success_value(resp)?; + Ok(v.as_str().unwrap_or("0x").to_string()) +} + +async fn eth_gas_price(transport: &mut T) -> Result +where + T: Service + Send, + T::Future: Send, +{ + let req: Request> = Request::new("eth_gasPrice".to_string(), Id::Number(1), vec![]); + let req = req.serialize().map_err(|err| eyre!("rpc request serialize error: {err}"))?; + let resp = transport.call(RequestPacket::Single(req)).await?; + parse_hex_u64(single_success_value(resp)?).wrap_err("failed to parse eth_gasPrice") +} + +async fn eth_get_transaction_count_pending(transport: &mut T, addr: Address) -> Result +where + T: Service + Send, + T::Future: Send, +{ + let params = vec![format!("{addr:#x}"), "pending".to_string()]; + let req: Request> = + Request::new("eth_getTransactionCount".to_string(), Id::Number(1), params); + let req = req.serialize().map_err(|err| eyre!("rpc request serialize error: {err}"))?; + let resp = transport.call(RequestPacket::Single(req)).await?; + parse_hex_u64(single_success_value(resp)?).wrap_err("failed to parse eth_getTransactionCount") +} + +fn single_success_value(packet: ResponsePacket) -> Result { + match packet { + ResponsePacket::Single(resp) => match resp.payload { + ResponsePayload::Success(raw) => Ok(serde_json::from_str(raw.get())?), + ResponsePayload::Failure(err) => Err(eyre!("rpc error: {}", err.message)), + }, + ResponsePacket::Batch(_) => Err(eyre!("unexpected batch response")), + } +} + +fn parse_hex_u64(value: Value) -> Result { + let s = value.as_str().ok_or_else(|| eyre!("expected hex string"))?; + let s = s.strip_prefix("0x").unwrap_or(s); + Ok(u64::from_str_radix(s, 16)?) +} + +fn parse_hex_u128(value: Value) -> Result { + let s = value.as_str().ok_or_else(|| eyre!("expected hex string"))?; + let s = s.strip_prefix("0x").unwrap_or(s); + Ok(u128::from_str_radix(s, 16)?) +} + +fn parse_address(value: &str) -> Result
{ + let value = value.trim(); + let value = value.strip_prefix("0x").unwrap_or(value); + let bytes = hex::decode(value)?; + if bytes.len() != 20 { + return Err(eyre!("expected 20-byte address")); + } + Ok(Address::from_slice(&bytes)) +} + +fn parse_hex_bytes(value: &str) -> Result> { + let value = value.trim(); + let value = value.strip_prefix("0x").unwrap_or(value); + if value.is_empty() { + return Ok(vec![]); + } + Ok(hex::decode(value)?) +} + +fn add_address_offset(base: Address, offset: usize) -> Option
{ + let mut bytes = [0u8; 20]; + bytes.copy_from_slice(base.as_slice()); + let mut carry = offset as u64; + for i in (0..20).rev() { + let add = (carry & 0xff) as u16; + let sum = bytes[i] as u16 + add; + bytes[i] = (sum & 0xff) as u8; + carry = (carry >> 8) + ((sum >> 8) as u64); + } + if carry > 0 { + return None; + } + Some(Address::from_slice(&bytes)) +} + +fn normalize_kaspa_rpc_url(v: &str) -> String { + let trimmed = v.trim(); + if trimmed.starts_with("grpc://") { trimmed.to_string() } else { format!("grpc://{trimmed}") } +} + +fn normalize_hex_prefix(mut input: String) -> String { + input = input.trim().to_ascii_lowercase(); + if let Some(stripped) = input.strip_prefix("0x") { stripped.to_string() } else { input } +} + +fn endpoint_set_sha256(el: &[String], kaspa: &[String]) -> String { + let mut all = Vec::with_capacity(el.len() + kaspa.len()); + all.extend(el.iter().cloned()); + all.extend(kaspa.iter().cloned()); + all.sort(); + let payload = all.join("\n"); + let digest = Sha256::digest(payload.as_bytes()); + hex::encode(digest) +} + +fn resolve_source( + cli_args: &[String], + cli_flags: &[&str], + env_key: &str, + from_file: bool, + fallback: &str, +) -> String { + if from_file { + return "file".to_string(); + } + if cli_flags + .iter() + .any(|f| cli_args.iter().any(|arg| arg == f || arg.starts_with(&format!("{f}=")))) + { + return "cli".to_string(); + } + if std::env::var_os(env_key).is_some() { + return "env".to_string(); + } + fallback.to_string() +} + +fn parse_csv_list(v: &str) -> Vec { + v.split(',').map(|s| s.trim()).filter(|s| !s.is_empty()).map(|s| s.to_string()).collect() +} + +fn load_wallets(path: &Path) -> Result> { + let bytes = fs::read(path) + .wrap_err_with(|| format!("failed to read wallets json {}", path.display()))?; + let wallets: Vec = + serde_json::from_slice(&bytes).wrap_err("invalid wallets json")?; + if wallets.is_empty() { + return Err(eyre!("wallets json is empty")); + } + Ok(wallets) +} + +fn build_transfer_calldata(to: Address, amount: u128) -> Vec { + let mut out = Vec::with_capacity(4 + 32 + 32); + out.extend_from_slice(&[0xa9, 0x05, 0x9c, 0xbb]); + + let mut to_word = [0u8; 32]; + to_word[12..32].copy_from_slice(to.as_slice()); + out.extend_from_slice(&to_word); + + let mut amount_word = [0u8; 32]; + amount_word[16..32].copy_from_slice(&amount.to_be_bytes()); + out.extend_from_slice(&amount_word); + + out +} + +fn utc_now() -> String { + Utc::now().to_rfc3339_opts(SecondsFormat::Secs, true) +} + +fn kaspa_address_from_private_key_hex(private_key: &str, network: &str) -> Result { + let prefix = match network.trim() { + "mainnet" => KaspaAddressPrefix::Mainnet, + "testnet-10" => KaspaAddressPrefix::Testnet, + "devnet" => KaspaAddressPrefix::Devnet, + "simnet" => KaspaAddressPrefix::Simnet, + other => return Err(eyre!("unsupported kaspa network: {other}")), + }; + + let key = private_key.trim(); + let key = key.strip_prefix("0x").unwrap_or(key); + let bytes = hex::decode(key)?; + if bytes.len() != 32 { + return Err(eyre!("expected 32-byte Kaspa private key hex")); + } + let mut fixed = [0u8; 32]; + fixed.copy_from_slice(&bytes); + + let secret = KaspaSecretKey::from_slice(&fixed)?; + let public_key = kaspa_bip32::secp256k1::PublicKey::from_secret_key_global(&secret); + let payload = public_key.x_only_public_key().0.serialize(); + Ok(KaspaAddress::new(prefix, KaspaAddressVersion::PubKey, &payload)) +} + +fn parse_private_key_hex(private_key: &str) -> Result<[u8; 32]> { + let key = private_key.trim().strip_prefix("0x").unwrap_or(private_key.trim()); + let bytes = hex::decode(key).map_err(|err| eyre!("invalid private key hex: {err}"))?; + if bytes.len() != 32 { + return Err(eyre!("expected 32-byte private key hex")); + } + let mut fixed = [0u8; 32]; + fixed.copy_from_slice(&bytes); + Ok(fixed) +} + +fn kaspa_network_descriptor(network: &str) -> Result<(KaspaNetworkType, KaspaAddressPrefix)> { + Ok(match network { + "mainnet" => (KaspaNetworkType::Mainnet, KaspaAddressPrefix::Mainnet), + "testnet-10" => (KaspaNetworkType::Testnet, KaspaAddressPrefix::Testnet), + "devnet" => (KaspaNetworkType::Devnet, KaspaAddressPrefix::Devnet), + "simnet" => (KaspaNetworkType::Simnet, KaspaAddressPrefix::Simnet), + other => return Err(eyre!("unsupported kaspa network: {other}")), + }) +} + +fn kaspa_address_from_private_key( + private_key: &[u8; 32], + prefix: KaspaAddressPrefix, +) -> Result { + let secret = KaspaSecretKey::from_slice(private_key) + .map_err(|err| eyre!("invalid private key: {err}"))?; + let public_key = kaspa_bip32::secp256k1::PublicKey::from_secret_key_global(&secret); + let payload = public_key.x_only_public_key().0.serialize(); + Ok(KaspaAddress::new(prefix, KaspaAddressVersion::PubKey, &payload)) +} + +fn derive_kaspa_private_keys( + mnemonic: &str, + passphrase: Option<&str>, + passphrase_as_mnemonic: bool, + passphrase_empty: bool, + derivation_path: Option<&str>, + start_index: u32, + count: u32, +) -> Result> { + let phrase = if Path::new(mnemonic).is_file() { + fs::read_to_string(mnemonic)? + } else { + mnemonic.to_string() + }; + let phrase = phrase.split_whitespace().collect::>().join(" "); + + let effective_passphrase_owned; + let effective_passphrase = + if passphrase_as_mnemonic && passphrase.is_none() && !passphrase_empty { + effective_passphrase_owned = phrase.clone(); + effective_passphrase_owned.as_str() + } else if passphrase_empty { + "" + } else { + passphrase.unwrap_or_default() + }; + + let kaspa_mnemonic = KaspaMnemonic::new(phrase, KaspaLanguage::English) + .map_err(|err| eyre!("invalid Kaspa mnemonic: {err}"))?; + let seed = kaspa_mnemonic.to_seed(effective_passphrase); + let xprv = KaspaExtendedPrivateKey::::new(seed) + .map_err(|err| eyre!("failed to derive Kaspa master key: {err}"))?; + + let (path_override, base_xprv) = if let Some(path) = derivation_path { + let path = path + .parse::() + .map_err(|err| eyre!("invalid Kaspa derivation path: {err}"))?; + (Some(path), None) + } else { + let base = "m/44'/111111'/0'/0" + .parse::() + .map_err(|err| eyre!("failed to parse default Kaspa derivation path: {err}"))?; + let base_xprv = xprv + .clone() + .derive_path(&base) + .map_err(|err| eyre!("failed to derive default Kaspa base key: {err}"))?; + (None, Some(base_xprv)) + }; + + let mut keys = Vec::with_capacity(count as usize); + for idx in start_index..start_index.saturating_add(count) { + let secret = if let Some(path) = path_override.as_ref() { + *xprv + .clone() + .derive_path(path) + .map_err(|err| eyre!("failed to derive Kaspa key by path: {err}"))? + .private_key() + } else { + let base = base_xprv.as_ref().expect("base_xprv is set when no path override"); + *base + .clone() + .derive_child( + KaspaChildNumber::new(idx, false) + .map_err(|err| eyre!("invalid Kaspa mnemonic index: {err}"))?, + ) + .map_err(|err| eyre!("failed to derive Kaspa key by index: {err}"))? + .private_key() + }; + keys.push(format!("0x{}", hex::encode(secret.secret_bytes()))); + } + Ok(keys) +} + +fn parse_list_or_file(value: &str) -> Result> { + let value = value.trim(); + if value.is_empty() { + return Ok(vec![]); + } + if Path::new(value).is_file() { + let content = fs::read_to_string(value)?; + let mut out = Vec::new(); + for line in content.lines() { + let trimmed = line.trim(); + if trimmed.is_empty() || trimmed.starts_with('#') { + continue; + } + out.push(trimmed.to_string()); + } + return Ok(out); + } + Ok(value + .split(',') + .map(|s| s.trim()) + .filter(|s| !s.is_empty()) + .map(|s| s.to_string()) + .collect()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn endpoint_hash_is_deterministic() { + let a = endpoint_set_sha256( + &["https://b".to_string(), "https://a".to_string()], + &["grpc://2".to_string(), "grpc://1".to_string()], + ); + let b = endpoint_set_sha256( + &["https://a".to_string(), "https://b".to_string()], + &["grpc://1".to_string(), "grpc://2".to_string()], + ); + assert_eq!(a, b); + } + + #[test] + fn transfer_calldata_shape_is_68_bytes() { + let to = parse_address("0x0000000000000000000000000000000000000042").expect("parse"); + let data = build_transfer_calldata(to, 1); + assert_eq!(data.len(), 68); + assert_eq!(&data[0..4], &[0xa9, 0x05, 0x9c, 0xbb]); + } + + #[test] + fn evaluate_windows_works() { + let cfg = ResolvedConfig { + network: Network::Devnet, + mode: Mode::FullCycle, + target_tps: 100.0, + worker_count: 10, + wallet_start_index: 0, + stop_condition: StopCondition::Duration(60), + calibration_mode: false, + preflight_sample_mode: false, + wallets_json: PathBuf::from(DEFAULT_WALLETS_JSON), + tx_id_prefix: "01".to_string(), + gas_limit: 21_000, + max_fee_per_gas: 1, + max_priority_fee_per_gas: 1, + mining_timeout_secs: 1, + warmup_txs_per_worker: 1, + warmup_barrier_timeout_secs: 1, + pending_timeout_secs: 1, + max_replacements_per_nonce: 1, + replacement_fee_bump_pct: 10, + replacement_timeout_cap_secs: 1, + shutdown_grace_secs: 1, + degraded_pause_max_secs: 1, + worker_recovery_timeout_secs: 1, + report_secs: 1, + rpc_selection_mode: RpcSelectionMode::StickyPerInstance, + recipient_mode: RecipientMode::Ring, + recipient_random_seed: 1, + rpc_random_seed: 1, + el_rpc_urls: vec!["https://x".to_string()], + kaspa_rpc_urls: vec!["grpc://y".to_string()], + endpoint_set_sha256: "x".to_string(), + parameter_sources: HashMap::new(), + contract_base_address: parse_address(DEFAULT_CONTRACT_BASE).expect("base"), + contract_end_address: parse_address(DEFAULT_CONTRACT_END).expect("end"), + preflight_balance_check: false, + prebuild_horizon_secs: 120, + utxo_refill_lag_secs: 20, + utxo_safety_factor: 1.5, + kaspa_fanout_enabled: false, + kaspa_fanout_source_private_key: None, + kaspa_fanout_source_mnemonic: None, + kaspa_fanout_source_mnemonic_passphrase: None, + kaspa_fanout_source_mnemonic_passphrase_as_mnemonic: false, + kaspa_fanout_source_mnemonic_passphrase_empty: false, + kaspa_fanout_source_mnemonic_index: 0, + kaspa_fanout_amount_sompi: 100_000_000, + kaspa_fanout_utxos_per_wallet: 1, + kaspa_fanout_max_outputs_per_tx: 64, + kaspa_fee_mode: "estimate".to_string(), + kaspa_fee_bucket: "normal".to_string(), + igra_min_fee_floor_gwei_expected: None, + campaign_output_dir: PathBuf::from("/tmp"), + no_proxy: false, + explicit_to: None, + explicit_data: None, + }; + + let mut samples = Vec::new(); + for _ in 0..120 { + samples.push(AggregateSample { + ts_utc: utc_now(), + tps_1s: 100.0, + accepted_1s: 100, + rejected_1s: 0, + timeout_1s: 0, + dropped_1s: 0, + terminal_error_1s: 0, + el_rpc_p95_ms: Some(10), + kaspa_rpc_p95_ms: Some(20), + el_pending_count: 0, + kaspa_mempool_mass_estimate: None, + active_workers: 10, + stalled_workers: 0, + }); + } + let (_, _, _, pass) = evaluate_windows(&cfg, &samples); + assert!(pass); + } +} diff --git a/crates/script/src/broadcast.rs b/crates/script/src/broadcast.rs index 32c8a7a0662b5..7075f79803dee 100644 --- a/crates/script/src/broadcast.rs +++ b/crates/script/src/broadcast.rs @@ -18,7 +18,11 @@ use foundry_cheatcodes::Wallets; use foundry_cli::utils::{has_batch_support, has_different_gas_calc}; use foundry_common::{ TransactionMaybeSigned, - provider::{RetryProvider, get_http_provider, try_get_http_provider}, + igra_store::IgraStoreConfig, + provider::{ + ProviderBuilder as FoundryProviderBuilder, RetryProvider, + igra_transport::IgraTransportConfig, try_get_http_provider, + }, shell, }; use foundry_config::Config; @@ -31,6 +35,55 @@ use crate::{ sequence::ScriptSequenceKind, verify::BroadcastedState, }; +fn try_get_sequence_provider(rpc_url: &str, config: &Config) -> Result { + if !config.igra.enabled { + return try_get_http_provider(rpc_url); + } + + // Ensure broadcasted script transactions use the same provider stack as `cast`/`forge` + // command paths (IGRA transport interception + tx-map persistence). + config.igra.validate().wrap_err("invalid IGRA configuration")?; + + let mut builder = FoundryProviderBuilder::new(rpc_url) + .accept_invalid_certs(config.eth_rpc_accept_invalid_certs) + .no_proxy(config.eth_rpc_no_proxy) + .igra_enabled(true) + .igra_store_config(IgraStoreConfig { + kaspa_network: config.igra.kaspa_network.clone(), + expected_el_chain_id: config.igra.expected_el_chain_id, + el_rpc_url: config.igra.el_rpc_url.clone(), + kaspa_rpc_url: config.igra.kaspa_rpc_url.clone(), + sender_lock_timeout_secs: config.igra.sender_lock_timeout_secs, + completed_retention_hours: config.igra.completed_retention_hours, + failed_retention_hours: config.igra.failed_retention_hours, + max_db_size_mb: config.igra.max_db_size_mb, + ..Default::default() + }) + .igra_transport_config(IgraTransportConfig { + tx_id_prefix: config.igra.tx_id_prefix.clone(), + mining_timeout_secs: config.igra.mining_timeout_secs.or(config.igra.el_receipt_timeout_secs), + kaspa_rpc_url: config.igra.kaspa_rpc_url.clone(), + kaspa_network: config.igra.kaspa_network.clone(), + payload_compression: config.igra.payload_compression.clone(), + kaspa_utxo_mode: None, + kaspa_fee_mode: None, + kaspa_fee_bucket: None, + kaspa_wallet: config.igra.kaspa_wallet.clone(), + }); + + if let Some(timeout) = config.eth_rpc_timeout { + builder = builder.timeout(Duration::from_secs(timeout)); + } + if let Some(headers) = config.eth_rpc_headers.clone() { + builder = builder.headers(headers); + } + if let Some(jwt) = config.eth_rpc_jwt.clone() { + builder = builder.jwt(jwt); + } + + builder.build() +} + pub async fn estimate_gas>( tx: &mut WithOtherFields, provider: &P, @@ -271,22 +324,27 @@ impl BundledState { pub async fn wait_for_pending(mut self) -> Result { let progress = ScriptProgress::default(); let progress_ref = &progress; + let config = self.script_config.config.clone(); + let tx_timeout = self.script_config.config.transaction_timeout; let futs = self .sequence .sequences_mut() .iter_mut() .enumerate() - .map(|(sequence_idx, sequence)| async move { + .map(|(sequence_idx, sequence)| { + let config = config.clone(); + async move { let rpc_url = sequence.rpc_url(); - let provider = Arc::new(get_http_provider(rpc_url)); + let provider = Arc::new(try_get_sequence_provider(rpc_url, &config)?); progress_ref .wait_for_pending( sequence_idx, sequence, &provider, - self.script_config.config.transaction_timeout, + tx_timeout, ) .await + } }) .collect::>(); @@ -351,7 +409,8 @@ impl BundledState { for i in 0..self.sequence.sequences().len() { let mut sequence = self.sequence.sequences_mut().get_mut(i).unwrap(); - let provider = Arc::new(try_get_http_provider(sequence.rpc_url())?); + let provider = + Arc::new(try_get_sequence_provider(sequence.rpc_url(), &self.script_config.config)?); let already_broadcasted = sequence.receipts.len(); let seq_progress = progress.get_sequence_progress(i, sequence); diff --git a/crates/wallets/src/opts.rs b/crates/wallets/src/opts.rs index 41285485954bf..66ed001f2f14c 100644 --- a/crates/wallets/src/opts.rs +++ b/crates/wallets/src/opts.rs @@ -170,6 +170,31 @@ pub struct KaspaWalletOpts { )] pub mnemonic_passphrase_kaspa: Option, + /// Use the mnemonic phrase itself as the BIP39 passphrase for Kaspa derivation. + /// + /// This is non-standard behavior and must be explicitly enabled. Useful for reproducing + /// certain testnet wallet setups. + #[arg( + long = "mnemonic-passphrase-kaspa-as-mnemonic", + env = "KASPA_MNEMONIC_PASSPHRASE_AS_MNEMONIC", + default_value_t = false, + conflicts_with = "mnemonic_passphrase_kaspa", + conflicts_with = "mnemonic_passphrase_kaspa_empty" + )] + pub mnemonic_passphrase_kaspa_as_mnemonic: bool, + + /// Explicitly set the Kaspa mnemonic passphrase to the empty string. + /// + /// This avoids shell-quoting pitfalls when you need to override a previously-set passphrase. + #[arg( + long = "mnemonic-passphrase-kaspa-empty", + env = "KASPA_MNEMONIC_PASSPHRASE_EMPTY", + default_value_t = false, + conflicts_with = "mnemonic_passphrase_kaspa", + conflicts_with = "mnemonic_passphrase_kaspa_as_mnemonic" + )] + pub mnemonic_passphrase_kaspa_empty: bool, + /// Kaspa mnemonic derivation path override. #[arg( long = "mnemonic-derivation-path-kaspa", @@ -210,6 +235,8 @@ impl KaspaWalletOpts { self.private_key_kaspa.is_some() || self.mnemonic_kaspa.is_some() || self.mnemonic_passphrase_kaspa.is_some() || + self.mnemonic_passphrase_kaspa_as_mnemonic || + self.mnemonic_passphrase_kaspa_empty || self.mnemonic_derivation_path_kaspa.is_some() || self.mnemonic_index_kaspa.is_some() || self.keystore_kaspa.is_some() || @@ -219,10 +246,16 @@ impl KaspaWalletOpts { /// Converts CLI/env Kaspa options to config shape. pub fn as_config(&self) -> IgraKaspaWalletConfig { + let mnemonic_passphrase = if self.mnemonic_passphrase_kaspa_empty { + Some(String::new()) + } else { + self.mnemonic_passphrase_kaspa.clone() + }; IgraKaspaWalletConfig { private_key: self.private_key_kaspa.clone(), mnemonic: self.mnemonic_kaspa.clone(), - mnemonic_passphrase: self.mnemonic_passphrase_kaspa.clone(), + mnemonic_passphrase, + mnemonic_passphrase_as_mnemonic: self.mnemonic_passphrase_kaspa_as_mnemonic, mnemonic_derivation_path: self.mnemonic_derivation_path_kaspa.clone(), mnemonic_index: self.mnemonic_index_kaspa, keystore: self.keystore_kaspa.clone(), diff --git a/docs/dev/README.md b/docs/dev/README.md index ff8bc6d6cb163..53f19ee055563 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md @@ -48,8 +48,11 @@ $ make pr ## Contents - [Architecture](./architecture.md) +- [IGRA Foundry Fork: Dev Guide](./igra-foundry-fork-dev-guide.md) - [IGRA-Kaspa Integration Plan](./igra-kaspa-integration-plan.md) - [IGRA Deterministic Harness](./igra-deterministic-harness.md) +- [IGRA Loadgen (10 Accounts)](./igra-loadgen-10-accounts.md) +- [Kaspa Mnemonic Passphrase Semantics](./igra-kaspa-mnemonic-passphrase-semantics.md) - [Cheatcodes](./cheatcodes.md) - [Debugging](./debugging.md) - [Scripting](./scripting.md) diff --git a/docs/dev/igra-foundry-fork-dev-guide.md b/docs/dev/igra-foundry-fork-dev-guide.md new file mode 100644 index 0000000000000..a89fe7f031610 --- /dev/null +++ b/docs/dev/igra-foundry-fork-dev-guide.md @@ -0,0 +1,253 @@ +# IGRA Foundry Fork: Dev Guide + +This repo is a Foundry fork with **IGRA mode**: an EVM-compatible execution layer (EL) where the **write path** (`eth_sendRawTransaction`) is routed through **Kaspa L1 payload transactions**. + +This guide is aimed at engineers working on the fork or using it for testnet/devnet work. + +## What’s Different vs Upstream Foundry + +When IGRA mode is enabled: + +- **Writes go through Kaspa**: + - Foundry intercepts `eth_sendRawTransaction`. + - It wraps the raw signed EVM tx bytes into a Kaspa tx `payload` as `[header][L2Data][4-byte nonce]`. + - It **mines** a Kaspa txid prefix (network-specific) by iterating the payload nonce. + - It signs + submits the Kaspa tx via gRPC, then waits for EL receipt as configured. +- **`eth_sendTransaction*` is not supported** in IGRA mode (unlocked node / browser wallet send flows are intentionally rejected). +- The user experience is kept familiar: + - `cast send`, `forge create --broadcast`, `forge script --broadcast/--resume` still work, but the submission path is IGRA-aware. + +Reference docs: +- Design and config contract: `docs/dev/igra-kaspa-integration-plan.md`, `docs/dev/igra-kaspa-design-spec-v2.md` +- Deterministic merge gate: `docs/dev/igra-deterministic-harness.md` + +## Quick Start (Build) + +```bash +cd /Users/user/Source/igra/foundry + +# Recommended to avoid inheriting a global/unwritable CARGO_TARGET_DIR. +export CARGO_TARGET_DIR="$PWD/target" +export RUSTC_WRAPPER= + +make build +``` + +Useful binaries: +- `target/release/cast` +- `target/release/forge` +- `target/release/anvil` +- `target/release/igra-loadgen` (high-throughput load generator) +- `target/release/kaspa_utxos` (debug helper) +- `target/release/kaspa_fund` (fan-out funder) + +## IGRA Mode: How to Enable + +IGRA mode is enabled when any is set: + +1. CLI: `--igra` +2. Env: `FOUNDRY_IGRA_ENABLED=true` +3. Config: `igra.enabled = true` in `foundry.toml` + +When enabled, Foundry validates up-front (RPC reachability, chain IDs, kaspa network, prefix hex, key material, etc.) and fails fast on mismatch. + +## IGRA Configuration (`foundry.toml`) + +Minimal working example for galleon testnet: + +```toml +[profile.default] +eth_rpc_url = "https://galleon-testnet.igralabs.com:8545" + +[igra] +enabled = true +el_rpc_url = "https://galleon-testnet.igralabs.com:8545" +kaspa_rpc_url = "grpc://stage-roman.igralabs.com:16210" +expected_el_chain_id = 38836 +kaspa_network = "testnet-10" +tx_id_prefix = "97b4" +payload_compression = "none" +mining_timeout_secs = 120 +el_receipt_timeout_secs = 300 +sender_lock_timeout_secs = 60 + +[igra.kaspa_wallet] +# One of: +# - private_key = "0x..." +# - mnemonic = "word1 ... word12/24" +# - keystore = "/path/to/keystore.json" +mnemonic = "..." +mnemonic_passphrase = "..." +mnemonic_index = 0 +``` + +Network-specific prefix: +- testnet-10 (galleon): `97b4` +- mainnet: `97b1` + +## Key Material (Kaspa) + +Kaspa signer material can be provided via: +- `cast send --private-key-kaspa ...` +- `cast send --mnemonic-kaspa ... --mnemonic-passphrase-kaspa ... --mnemonic-index-kaspa ...` +- `cast send --mnemonic-kaspa ... --mnemonic-passphrase-kaspa-as-mnemonic` (non-standard; opt-in) +- `cast send --mnemonic-kaspa ... --mnemonic-passphrase-kaspa-empty` (explicit empty passphrase) +- `cast send --keystore-kaspa ... --password-kaspa ...` + +Environment variables used by the CLI: +- `KASPA_PRIVATE_KEY` +- `KASPA_MNEMONIC` +- `KASPA_MNEMONIC_PASSPHRASE` +- `KASPA_MNEMONIC_PASSPHRASE_AS_MNEMONIC` +- `KASPA_MNEMONIC_PASSPHRASE_EMPTY` +- `KASPA_MNEMONIC_DERIVATION_PATH` +- `KASPA_MNEMONIC_INDEX` +- `KASPA_KEYSTORE` +- `KASPA_KEYSTORE_ACCOUNT` +- `KASPA_PASSWORD` + +Testnet script behavior: +- Scripts default to **empty** BIP39 passphrase (standard behavior). +- If you need the non-standard setup `passphrase == mnemonic`, set `IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC=1`. + +## How to Test + +### 1. Deterministic Harness (merge gate) + +This is the first thing to run after code changes affecting IGRA transport/config/persistence: + +```bash +./scripts/igra/deterministic-harness.sh +``` + +What it covers (high level): +- IGRA config validation + precedence +- Provider wiring +- Sender-lock / nonce-gap handling +- Lifecycle persistence transitions +- Payload format (header + raw tx + 4-byte nonce) +- Prefix mining behavior / timeout classification +- Guardrails for unsupported flows + +Details: `docs/dev/igra-deterministic-harness.md` + +### 2. Testnet Smoke (single tx end-to-end) + +Runs a mint tx through IGRA mode and checks resulting state: + +```bash +KEEP_TMP=1 ./scripts/igra/testnet-smoke.sh +``` + +Inputs are configured via env vars (see the script header), notably: +- `IGRA_EL_RPC_URL` +- `IGRA_KASPA_RPC_URL` +- `IGRA_KASPA_NETWORK` +- `IGRA_TX_ID_PREFIX` +- `IGRA_MNEMONIC_KASPA` / `IGRA_PRIVATE_KEY_KASPA` etc. + +Repo default testnet wallets (used for our smoke/loadgen repro on galleon testnet): +- EVM mnemonic (IKAS): `test test test test test test test test test test test junk` +- Prefunded EVM sender (index 0): `0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266` +- Kaspa mnemonic (KAS): same phrase as above +- Kaspa passphrase: `passphrase == mnemonic` (non-standard; opt-in) +- Prefunded Kaspa address (index 0): `kaspatest:qzf364tlnl7ja0w65ydu0m5l70pur2hcm3l3ahkmhs660zcyf7cvuf6uznufr` + +To use that setup with the smoke script: +```bash +MN="test test test test test test test test test test test junk" +IGRA_MNEMONIC_KASPA="$MN" \ +IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC=1 \ +IGRA_MNEMONIC_INDEX_KASPA=0 \ +./scripts/igra/testnet-smoke.sh +``` + +Note: +- `scripts/igra/testnet-smoke.sh` sandboxes `HOME` per run, so the IGRA tx-map SQLite store does + not leak across runs and cause nonce-gap blocking. + +### 3. Testnet Load (10 accounts) + +High-throughput tool (no per-tx `cast` process spawning): + +- Repro + funding guide: `docs/dev/igra-loadgen-10-accounts.md` +- Binary: `crates/igra-loadgen` + +Tip: +- `igra-loadgen` has `--no-proxy` to disable automatic proxy detection for HTTP(S) RPC in sandboxed environments. + +## What to Expect (Perf and Bottlenecks) + +### Prefix Mining Dominates + +On testnet-10 we use a **2-byte txid prefix** (`97b4`). + +- Expected attempts per tx is ~65,536 on average. +- That loop is CPU-bound and scales: + - ~linearly with cores/CPU speed + - ~exponentially with prefix length (adding 1 byte multiplies expected work by 256) + +Empirical observation (10 funded accounts, 2-byte prefix, on a typical dev box): +- ~8–9 TPS per worker +- ~80–90 TPS aggregate for 10 workers + +If you need 500 TPS sustained: +- you likely need to shorten the required prefix or parallelize mining significantly beyond a single dev machine. + +### UTXO Management (avoid “UTXO explosion”) + +`IgraTransport` supports two modes: + +- `kaspa_utxo_mode=rpc`: + - loads UTXOs via `get_utxos_by_addresses` and selects inputs. + - does not scale if an address has a huge UTXO set. +- `kaspa_utxo_mode=chain` (recommended for load): + - seeds once from RPC, then maintains a single-UTXO “tip” locally and spends it each tx. + - this keeps per-worker UTXO count roughly constant (~1) and avoids double-spend contention. + +Operationally: +- For stress tests, fund **one Kaspa address per worker** and run `kaspa_utxo_mode=chain`. +- Do not reuse an address that already has millions of UTXOs. + +### EL Gas Funding + +Your load budget is dominated by EL gas cost per L2 tx. +Always check `eth_gasPrice` / EIP-1559 rules on the target EL before assuming “cheap enough”. + +## Debugging Tips + +- Check chain id: + - `cast chain-id --rpc-url "$EL_RPC_URL"` +- Check EL gas price: + - `cast rpc --rpc-url "$EL_RPC_URL" eth_gasPrice` +- Inspect local IGRA lifecycle cache: + - `cast igra-status` (uses local tx-map cache) +- Kaspa UTXO visibility: + - `kaspa_utxos [addr2...]` + +## Common Failures (What They Mean) + +- **“insufficient Kaspa UTXOs for fee payment”** + - the configured Kaspa address has no spendable UTXOs, or you derived the wrong address (passphrase/index mismatch). +- **Prefix mining timeouts** + - CPU too slow for the configured prefix length and `mining_timeout_secs`. +- **Kaspa “not standard” errors after funding** + - you attempted to create too-small outputs; fund with >= 1 KAS per worker (rule-of-thumb) to avoid storage-mass issues. +- **High-rate multi-worker failures with a shared Kaspa key** + - UTXO contention / double-spend; use one Kaspa key per worker. + +## Source Pointers (Code) + +- IGRA transport wrapper + submission path: + - `crates/common/src/provider/igra_transport.rs` +- Provider wiring / builder: + - `crates/common/src/provider/mod.rs` +- Testnet smoke runner: + - `scripts/igra/testnet-smoke.sh` +- (Low TPS) stress runner using `cast send` per tx: + - `scripts/igra/testnet-stress.sh` +- High-throughput loadgen: + - `crates/igra-loadgen/src/main.rs` +- Kaspa helpers: + - `crates/common/src/bin/kaspa_utxos.rs` + - `crates/common/src/bin/kaspa_fund.rs` diff --git a/docs/dev/igra-kaspa-mnemonic-passphrase-semantics.md b/docs/dev/igra-kaspa-mnemonic-passphrase-semantics.md new file mode 100644 index 0000000000000..dac0564f02aab --- /dev/null +++ b/docs/dev/igra-kaspa-mnemonic-passphrase-semantics.md @@ -0,0 +1,160 @@ +# Kaspa Mnemonic Passphrase Semantics (Tri-State) for IGRA Foundry Fork + +## Summary + +We must distinguish three different user intents for Kaspa BIP39 passphrases: + +1. **UNSET**: user did not provide a passphrase value at all. +2. **EMPTY**: user explicitly provided an empty passphrase (meaning “no passphrase”). +3. **NON-EMPTY**: user provided a non-empty passphrase. + +Historically, some of our helper tooling effectively treated **EMPTY** the same as **UNSET** and applied a “testnet convenience” default: `passphrase = mnemonic`. This makes it impossible to express “explicitly no passphrase” while still keeping the convenience behavior for a specific funded wallet setup. + +This document defines precise semantics and concrete knobs across: + +- Core CLI (`cast`, `forge`) Kaspa wallet options +- Helper binaries (`igra-loadgen`, `kaspa_fund`) +- Repo scripts (`scripts/igra/testnet-smoke.sh`, `scripts/igra/testnet-stress.sh`) +- Documentation and tests +- Forge script broadcasting (`forge script --broadcast`) must also use IGRA transport interception + and persist tx-map entries (so `cast igra-status` works on script-broadcast tx hashes). + +## Goals + +- Make passphrase behavior **unambiguous** and **reproducible** for beta users (Discord release). +- Preserve the ability to use the “passphrase equals mnemonic” setup without surprising default behavior. +- Ensure existing test flows still work (deterministic harness, smoke test, 10-account loadgen). + +## Non-Goals + +- We do not change Kaspa derivation logic (still matches `kaspa-cli` / rusty-kaspa scheme). +- We do not attempt to auto-detect which passphrase is correct. + +## Principle: Standard BIP39 Defaults in Core CLI + +In the core Foundry CLI surface (`cast`, `forge`): + +- **Default passphrase is empty** when the user does not provide one (standard BIP39 behavior). +- “Passphrase equals mnemonic” must be **explicitly requested** (opt-in). + +Rationale: +- Most users expect BIP39 passphrase to default to empty. +- Silent defaults that change derivation are the #1 cause of “funds not found” and “address mismatch” confusion. + +## Required Semantics (All Surfaces) + +When mnemonic-based Kaspa key derivation is used: + +### Resolution order (highest precedence wins) + +1. Explicit `passphrase-as-mnemonic` switch +2. Explicit passphrase value (including empty) +3. Default (empty passphrase) + +### Tri-state mapping + +- If `--...-passphrase-as-mnemonic` is set: + - Effective passphrase = normalized mnemonic phrase content (file contents if mnemonic is a file path). +- Else if passphrase is provided explicitly (including empty): + - Effective passphrase = provided value (may be `""`). +- Else (passphrase unset): + - Effective passphrase = `""` (empty). + +## CLI Contract (Core): `cast` / `forge` + +Kaspa options are defined in `crates/wallets/src/opts.rs` and mapped into `IgraKaspaWalletConfig`. + +### Add two explicit flags + +- `--mnemonic-passphrase-kaspa-as-mnemonic` + - Opt-in to `passphrase = mnemonic` behavior. + - Works whether `--mnemonic-kaspa` is provided inline or as a file path. + - Conflicts with `--mnemonic-passphrase-kaspa` and `--mnemonic-passphrase-kaspa-empty`. + +- `--mnemonic-passphrase-kaspa-empty` + - Explicitly sets passphrase to the empty string, without requiring tricky shell quoting. + - Conflicts with `--mnemonic-passphrase-kaspa` and `--mnemonic-passphrase-kaspa-as-mnemonic`. + +Environment variable equivalents: + +- `KASPA_MNEMONIC_PASSPHRASE_AS_MNEMONIC=1` +- `KASPA_MNEMONIC_PASSPHRASE_EMPTY=1` + +### Behavior changes + +- No implicit default to `passphrase = mnemonic` in core CLI. +- Users with the “passphrase == mnemonic” wallet setup can use: + - `--mnemonic-passphrase-kaspa-as-mnemonic` + - or set `KASPA_MNEMONIC_PASSPHRASE_AS_MNEMONIC=1` + +## Helper Binaries + +### `igra-loadgen` + +Current issue: +- Passphrase is a `String` with default `""`, so “unset” and “explicit empty” are indistinguishable. + +Required changes: +- Change passphrase arg to `Option` with no default. +- Add the same two explicit switches: + - `--kaspa-mnemonic-passphrase-as-mnemonic` + - `--kaspa-mnemonic-passphrase-empty` + +Resolution: +- If `...-as-mnemonic` set: passphrase = mnemonic content +- Else if passphrase provided: use it (including empty) +- Else if `...-empty` set: passphrase = empty +- Else: passphrase = empty + +### `kaspa_fund` + +Current issue: +- Passphrase is a `String` with default `""` (cannot distinguish unset vs explicit empty via env). + +Required changes: +- Change passphrase arg to `Option` with no default. +- Add: + - `--mnemonic-passphrase-as-mnemonic` + - `--mnemonic-passphrase-empty` + +## Shell Scripts (Repo Helpers) + +Scripts currently used for testnet work: +- `scripts/igra/testnet-smoke.sh` +- `scripts/igra/testnet-stress.sh` + +Required changes: +- Stop collapsing “unset” into an explicit empty string early in the script. +- Add an explicit opt-in switch for passphrase=mnemonic: + - `IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC=1` +- Keep support for explicit empty passphrase: + - `IGRA_MNEMONIC_PASSPHRASE_KASPA=""` means “no passphrase”, not “use mnemonic”. + +Default: +- Scripts should be consistent with core CLI: if the user does nothing, passphrase is empty. + +## Backward Compatibility / Migration + +- Any existing workflow depending on “passphrase defaults to mnemonic” must be updated to set the explicit switch. +- We will update repo docs to show the explicit switch, and update scripts to support it. + +## Test Plan (No Regression) + +1. Deterministic harness must still pass: + - `./scripts/igra/deterministic-harness.sh` +2. Testnet smoke still works: + - Run `scripts/igra/testnet-smoke.sh` with: + - `IGRA_MNEMONIC_KASPA=` + - `IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC=1` (for the funded testnet setup) +3. 10-account flow still works: + - `docs/dev/igra-loadgen-10-accounts.md` updated + - `igra-loadgen` run with either: + - explicit `--kaspa-mnemonic-passphrase ...` + - or `--kaspa-mnemonic-passphrase-as-mnemonic` + +## Documentation Updates + +Update these docs to reflect the new explicit switches: + +- `docs/dev/igra-foundry-fork-dev-guide.md` +- `docs/dev/igra-loadgen-10-accounts.md` diff --git a/docs/dev/igra-loadgen-10-accounts.md b/docs/dev/igra-loadgen-10-accounts.md new file mode 100644 index 0000000000000..eef668a70fd2a --- /dev/null +++ b/docs/dev/igra-loadgen-10-accounts.md @@ -0,0 +1,284 @@ +# IGRA-Kaspa Testnet Loadgen With 10 Accounts (Repro Guide) + +This document explains how to reproduce the 10-account funding + load test setup used in this repo for the IGRA-Kaspa testnet integration. + +## Prereqs + +- Rust toolchain installed. +- Access to: + - EL JSON-RPC endpoint (HTTPS): `https://galleon-testnet.igralabs.com:8545` + - Kaspa gRPC endpoint: `grpc://stage-roman.igralabs.com:16210` +- Initial funds available on: + - 1 EVM account (IKAS/native EL gas token) to fan out to 10 accounts + - 1 Kaspa account (KAS) to fan out to 10 accounts + +Notes: +- If you are using the same accounts as `scripts/igra/testnet-smoke.sh`, your funded Kaspa wallet likely uses the convention `passphrase == mnemonic`. Keep that consistent. +- For reliable RPC connectivity in sandboxed environments, `igra-loadgen` supports `--no-proxy` (disables automatic proxy detection for HTTP(S) RPC). + +## Repo Default Testnet Wallets + +For galleon testnet smoke/load testing in this repo we commonly use: + +- EVM mnemonic (IKAS): `test test test test test test test test test test test junk` +- Prefunded EVM sender (index 0): `0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266` +- Kaspa mnemonic (KAS): same phrase as above +- Kaspa passphrase: `passphrase == mnemonic` (non-standard; opt-in) +- Prefunded Kaspa address (index 0): `kaspatest:qzf364tlnl7ja0w65ydu0m5l70pur2hcm3l3ahkmhs660zcyf7cvuf6uznufr` + +If you use that convention, prefer the explicit flag `--kaspa-mnemonic-passphrase-as-mnemonic` (used below). + +## Build Binaries + +From repo root: + +```bash +cd /Users/user/Source/igra/foundry + +# Optional: keep all build artifacts local to the repo (recommended). +export CARGO_TARGET_DIR="$PWD/target" +export RUSTC_WRAPPER= + +cargo build -p cast --release +cargo build -p igra-loadgen --release +cargo build -p foundry-common --bin kaspa_utxos --release +cargo build -p foundry-common --bin kaspa_fund --release +``` + +Binaries will be under `$CARGO_TARGET_DIR/release/`: +- `cast` +- `igra-loadgen` +- `kaspa_utxos` +- `kaspa_fund` + +## Configuration (Endpoints) + +Set these shell vars (or inline them in commands): + +```bash +export EL_RPC_URL="https://galleon-testnet.igralabs.com:8545" +export KASPA_GRPC_URL="grpc://stage-roman.igralabs.com:16210" +export KASPA_NETWORK="testnet-10" + +# Viaduct / adapter txid prefix for galleon testnet (testnet-10): +export IGRA_TX_ID_PREFIX="97b4" +``` + +## Generate 10 EVM + 10 Kaspa Accounts (Deterministic) + +Create a temp working directory: + +```bash +WORKDIR="$(mktemp -d /tmp/igra-loadgen-10.XXXXXX)" +echo "$WORKDIR" +``` + +### EVM keys (10) + +Set the EVM mnemonic that holds your initial IKAS funds (example below uses the default Foundry/anvil mnemonic, DO NOT use this on mainnet): + +```bash +export EVM_MNEMONIC="test test test test test test test test test test test junk" +``` + +Derive keys 0..9: + +```bash +for i in $(seq 0 9); do + "$CARGO_TARGET_DIR/release/cast" wallet private-key --mnemonic "$EVM_MNEMONIC" --mnemonic-index "$i" +done > "$WORKDIR/evm_keys.txt" + +while read -r pk; do + "$CARGO_TARGET_DIR/release/cast" wallet address --private-key "$pk" +done < "$WORKDIR/evm_keys.txt" > "$WORKDIR/evm_addrs.txt" +``` + +### Kaspa keys (10) via mnemonic derivation + +Set the Kaspa mnemonic that holds your initial KAS funds: + +```bash +export KASPA_MNEMONIC="(your kaspa mnemonic here)" + +# If your funded wallet used a BIP39 passphrase, set it explicitly. +# If your funded wallet uses the non-standard setup `passphrase == mnemonic`, you can either: +# - set `KASPA_MNEMONIC_PASSPHRASE="$KASPA_MNEMONIC"`, or +# - use `--kaspa-mnemonic-passphrase-as-mnemonic` (recommended for clarity). +export KASPA_MNEMONIC_PASSPHRASE="${KASPA_MNEMONIC_PASSPHRASE:-}" +``` + +Print the derived (worker -> evm_sender + kaspa_address) mapping and store addresses: + +```bash +"$CARGO_TARGET_DIR/release/igra-loadgen" \ + --el-rpc-url "$EL_RPC_URL" \ + --kaspa-rpc-url "$KASPA_GRPC_URL" \ + --kaspa-network "$KASPA_NETWORK" \ + --tx-id-prefix "$IGRA_TX_ID_PREFIX" \ + --evm-keys "$WORKDIR/evm_keys.txt" \ + --kaspa-mnemonic "$KASPA_MNEMONIC" \ + --kaspa-mnemonic-passphrase-as-mnemonic \ + --kaspa-mnemonic-index-start 0 \ + --kaspa-mnemonic-count 10 \ + --print-addresses > "$WORKDIR/addrs.json" + +jq -r '.[].kaspa_address' "$WORKDIR/addrs.json" > "$WORKDIR/kaspa_addrs.txt" +``` + +If your wallet uses a normal (non-empty) BIP39 passphrase instead, replace the `--kaspa-mnemonic-passphrase-as-mnemonic` +flag with: + +```bash + --kaspa-mnemonic-passphrase "$KASPA_MNEMONIC_PASSPHRASE" +``` + +## Fund 10 Kaspa Accounts (KAS) + +Before funding, verify current UTXOs: + +```bash +"$CARGO_TARGET_DIR/release/kaspa_utxos" "$KASPA_GRPC_URL" $(tr '\n' ' ' < "$WORKDIR/kaspa_addrs.txt") +``` + +Fan-out KAS from your funded Kaspa source key. + +Important: +- Very small outputs can be rejected as non-standard due to storage-mass rules (KIP-0009). +- Use at least `1 KAS = 100000000 sompi` per worker; for stress tests, `10 KAS = 1000000000 sompi` per worker is fine. + +Example: send **10 KAS** to workers 2..10 (leave worker 1 as the source): + +```bash +TO_ARGS=() +idx=0 +while read -r addr; do + idx=$((idx+1)) + if [ "$idx" -ge 2 ]; then + TO_ARGS+=(--to "${addr}:1000000000") + fi +done < "$WORKDIR/kaspa_addrs.txt" + +"$CARGO_TARGET_DIR/release/kaspa_fund" \ + --kaspa-rpc-url "$KASPA_GRPC_URL" \ + --kaspa-network "$KASPA_NETWORK" \ + --mnemonic "$KASPA_MNEMONIC" \ + --mnemonic-passphrase-as-mnemonic \ + --mnemonic-index 0 \ + "${TO_ARGS[@]}" +``` + +Re-check UTXOs: + +```bash +"$CARGO_TARGET_DIR/release/kaspa_utxos" "$KASPA_GRPC_URL" $(tr '\n' ' ' < "$WORKDIR/kaspa_addrs.txt") +``` + +## Fund 10 EVM Accounts (IKAS) + +We fund EVM workers 2..10 from worker 1 by building raw txs with `cast mktx` and submitting via `curl`. +This avoids occasional issues with automatic proxy/DNS integration in some environments. + +```bash +FUND_PK="$(head -n 1 "$WORKDIR/evm_keys.txt")" +FUND_ADDR="$("$CARGO_TARGET_DIR/release/cast" wallet address --private-key "$FUND_PK")" + +CHAIN_ID_HEX="$(curl -sS -H 'content-type: application/json' \ + --data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}' \ + "$EL_RPC_URL" | jq -r .result)" +CHAIN_ID=$((16#${CHAIN_ID_HEX#0x})) + +GAS_PRICE_HEX="$(curl -sS -H 'content-type: application/json' \ + --data '{"jsonrpc":"2.0","id":1,"method":"eth_gasPrice","params":[]}' \ + "$EL_RPC_URL" | jq -r .result)" +GAS_PRICE=$((16#${GAS_PRICE_HEX#0x})) + +NONCE_HEX="$(curl -sS -H 'content-type: application/json' \ + --data '{"jsonrpc":"2.0","id":1,"method":"eth_getTransactionCount","params":["'"$FUND_ADDR"'","pending"]}' \ + "$EL_RPC_URL" | jq -r .result)" +NONCE=$((16#${NONCE_HEX#0x})) + +# Send 10 IKAS to each of workers 2..10. +for TO in $(tail -n +2 "$WORKDIR/evm_addrs.txt"); do + RAW="$("$CARGO_TARGET_DIR/release/cast" mktx \ + --chain "$CHAIN_ID" \ + --private-key "$FUND_PK" \ + --legacy \ + --nonce "$NONCE" \ + --gas-limit 21000 \ + --gas-price "$GAS_PRICE" \ + --value 10000000000000000000 \ + "$TO")" + + curl -sS -H 'content-type: application/json' \ + --data '{"jsonrpc":"2.0","id":1,"method":"eth_sendRawTransaction","params":["'"$RAW"'"]}' \ + "$EL_RPC_URL" | jq -r '.error?.message // .result' + + NONCE=$((NONCE+1)) +done +``` + +Verify balances: + +```bash +while read -r a; do + b="$(curl -sS -H 'content-type: application/json' \ + --data '{"jsonrpc":"2.0","id":1,"method":"eth_getBalance","params":["'"$a"'","latest"]}' \ + "$EL_RPC_URL" | jq -r .result)" + echo "$a $b" +done < "$WORKDIR/evm_addrs.txt" +``` + +## Run The 10-Worker Load Test + +Sanity run (target 5 TPS aggregate for 20s): + +```bash +RUST_LOG=warn "$CARGO_TARGET_DIR/release/igra-loadgen" \ + --el-rpc-url "$EL_RPC_URL" \ + --kaspa-rpc-url "$KASPA_GRPC_URL" \ + --kaspa-network "$KASPA_NETWORK" \ + --tx-id-prefix "$IGRA_TX_ID_PREFIX" \ + --mining-timeout-secs 120 \ + --evm-keys "$WORKDIR/evm_keys.txt" \ + --kaspa-mnemonic "$KASPA_MNEMONIC" \ + --kaspa-mnemonic-passphrase-as-mnemonic \ + --kaspa-mnemonic-index-start 0 \ + --kaspa-mnemonic-count 10 \ + --tps 5 \ + --duration-secs 20 \ + --report-secs 5 \ + --no-proxy \ + --gas-limit 21000 \ + --max-fee-per-gas 2000000000000 \ + --max-priority-fee-per-gas 1000000000000 +``` + +Max-throughput (send as fast as possible for 15s): + +```bash +RUST_LOG=warn "$CARGO_TARGET_DIR/release/igra-loadgen" \ + --el-rpc-url "$EL_RPC_URL" \ + --kaspa-rpc-url "$KASPA_GRPC_URL" \ + --kaspa-network "$KASPA_NETWORK" \ + --tx-id-prefix "$IGRA_TX_ID_PREFIX" \ + --mining-timeout-secs 120 \ + --evm-keys "$WORKDIR/evm_keys.txt" \ + --kaspa-mnemonic "$KASPA_MNEMONIC" \ + --kaspa-mnemonic-passphrase-as-mnemonic \ + --kaspa-mnemonic-index-start 0 \ + --kaspa-mnemonic-count 10 \ + --tps 0 \ + --duration-secs 15 \ + --report-secs 5 \ + --no-proxy \ + --gas-limit 21000 \ + --max-fee-per-gas 2000000000000 \ + --max-priority-fee-per-gas 1000000000000 +``` + +## Notes / Gotchas + +- With `tx_id_prefix=97b4` (2 bytes), txid prefix mining dominates CPU and limits achievable TPS per worker. To reach very high TPS (e.g. 500 TPS) you will likely need: + - a shorter prefix (1 byte) or a mode that relaxes/turns off prefix mining for stress windows, and + - sufficient EL gas funding (current observed `eth_gasPrice` makes 500 TPS for hours extremely expensive). +- `kaspa_utxo_mode=chain` is used by `igra-loadgen` (default in this guide) to avoid UTXO contention and reduce RPC load at higher send rates. diff --git a/docs/stress-test-prep/igra-kaspa-stress-implementation-plan.md b/docs/stress-test-prep/igra-kaspa-stress-implementation-plan.md new file mode 100644 index 0000000000000..78d88641f65fb --- /dev/null +++ b/docs/stress-test-prep/igra-kaspa-stress-implementation-plan.md @@ -0,0 +1,449 @@ +# IGRA-Kaspa Stress Runner Implementation Plan (Revised for Team Review) + +Status: draft for review before coding +Primary spec: `docs/stress-test-prep/igra-kaspa-stress-test-spec.md` + +## 1. Scope + +This plan defines exact implementation steps for the stress runner. + +Goals: + +- Deliver a production-grade stress runner for deterministic IGRA write-path campaigns + (devnet-first). +- Implement all required spec behaviors: manifest, metrics, pass/fail logic, warm-up barrier, + preflight and calibration flows, endpoint failover, and graceful shutdown semantics. + +Non-goals for this wave: + +- Multi-coordinator distributed orchestration. +- Dynamic worker autoscaling mid-campaign. +- Continue-with-N-1 policy after worker loss (initial policy remains fail-fast). + +## 2. Baseline, Gaps, and Ownership Boundaries + +Current beta baseline: + +- `crates/igra-loadgen/src/main.rs` sends raw EIP-1559 txs via IGRA transport. +- `scripts/igra/testnet-stress.sh` provides shell-driven stress flow. +- Campaign manifests, metrics streams, warm-up coordination, deterministic worker mapping, + pass/fail window evaluation, calibration/preflight modes, endpoint lists, retry/failover, and + explicit recipient modes are implemented in the beta runner. + +Recently closed items in this branch: + +- `prebuild-send` now uses a bounded producer/consumer queue with nonce-tagged prebuilt raws and + dispatch-time stale-nonce dropping. +- Optional Kaspa fan-out execution path is implemented with CLI/ENV controls and adaptive batch + splitting on mass-related errors. +- Fan-out now includes mandatory fail-fast standardness validation: + - config-time minimum `amount_sompi` check from KIP-0009 constraints, + - pre-submit storage-mass guard with single-output hard-fail. + +Remaining gaps / verification items: + +- Network-derived defaults and Kaspa address-prefix validation still need a live-network smoke pass. +- Preflight checks cover balance, UTXO depth, fee floor, and contract code presence, but need + devnet/testnet evidence before this can be marked production-stable. +- Graceful shutdown/finalization semantics still need interrupt-path validation under load. +- The 10-worker campaign and smoke/regression suites remain the acceptance gate for closing the + implementation wave. + +Operational caveat: + +- Fan-out execution success still depends on node policy and endpoint standardness limits; the + runner now enforces conservative limits and degrades batch size automatically before failing hard. + +Kaspa operation ownership (explicit): + +- Kaspa tx construction, txid-prefix mining, signing, and broadcast are already implemented in + `crates/common/src/provider/igra_transport.rs` (`InProcessKaspaPayloadSubmitter`). +- `igra-loadgen` will not duplicate cryptographic Kaspa tx construction logic in this wave. +- `igra-loadgen` will add a dedicated `src/kaspa.rs` integration layer for: + - Kaspa config/profile resolution, + - UTXO depth preflight checks, + - refill-lag measurements and metrics hooks, + - RPC-side validation and campaign-time Kaspa observability. + +## 3. Implementation Targets and Files + +Primary target: + +- `crates/igra-loadgen` + +Secondary touchpoints: + +- `scripts/igra/testnet-stress.sh` (compatibility adapter). +- `scripts/igra/deterministic-harness.sh` (optional inclusion of loadgen tests). +- `docs/stress-test-prep/igra-kaspa-stress-test-spec.md` (only if schema naming changes). + +## 4. Module Layout (Revised) + +Refactor `crates/igra-loadgen/src/main.rs` into: + +- `crates/igra-loadgen/src/main.rs` + - thin entrypoint; exit-code mapping and top-level error handling. +- `crates/igra-loadgen/src/cli.rs` + - clap CLI/env definition, validation, help text. +- `crates/igra-loadgen/src/config.rs` + - resolved config, source attribution, network profile defaults. +- `crates/igra-loadgen/src/wallets.rs` + - wallet JSON loading and index/range validation. +- `crates/igra-loadgen/src/contracts.rs` + - contract index/address mapping and recipient-selection policies. +- `crates/igra-loadgen/src/endpoints.rs` + - endpoint parsing, health, retry/failover, endpoint fingerprint hash. +- `crates/igra-loadgen/src/kaspa.rs` + - Kaspa integration layer: + - profile wiring into IGRA transport config, + - UTXO depth checks and refill-lag sampling, + - Kaspa-side telemetry hooks. +- `crates/igra-loadgen/src/worker.rs` + - worker lifecycle, pacing, stop conditions, report plumbing. +- `crates/igra-loadgen/src/nonce.rs` + - nonce stream ownership, reconciliation, gap handling. +- `crates/igra-loadgen/src/replacement.rs` + - replacement policy/backoff/fee-bump rules and invariants. +- `crates/igra-loadgen/src/modes.rs` + - `full-cycle`, `prebuild-send`, `calibration`, `preflight-sample`. +- `crates/igra-loadgen/src/preflight.rs` + - balance checks, contract-code checks, fee-floor observation, UTXO checks. +- `crates/igra-loadgen/src/metrics.rs` + - 1s sampling, rolling 60s windows, JSONL buffering and flush. +- `crates/igra-loadgen/src/evaluator.rs` + - pass/fail rules (95%/95%, failure ratio, stall limits). +- `crates/igra-loadgen/src/manifest.rs` + - pre-run and post-run `campaign-manifest.json`. +- `crates/igra-loadgen/src/coordinator.rs` + - lifecycle state machine, warm-up barrier, drain, signal orchestration. +- `crates/igra-loadgen/src/errors.rs` + - typed error codes mapped to failure taxonomy classes. + +## 5. Precise Phase Plan + +## Phase 0: Skeleton and Responsibility Contract (1.0 day) + +Files: + +- all new module stubs from section 4. + +Implement: + +- move current logic behind module interfaces without behavior changes. +- add explicit internal boundary docs: + - `igra-loadgen` integration vs `foundry-common` Kaspa submission ownership. + +Acceptance: + +- `cargo check -p igra-loadgen` passes. +- CLI behavior unchanged from baseline. + +## Phase 1: Config, Mapping, and Network Defaults (1.8 days) + +Files: + +- `src/cli.rs`, `src/config.rs`, `src/wallets.rs`, `src/contracts.rs`. + +Implement: + +- full CLI/ENV contract from spec. +- worker-count resolution and bounds validation. +- deterministic wallet/contract mapping. +- network profile enum with derived defaults: + - `network -> tx_id_prefix`, + - `network -> expected Kaspa address prefix`. +- recipient mode implementation: + - `ring`, + - `random-seeded` with deterministic seed behavior. + +Acceptance: + +- invalid ranges/underprovision fail fast with explicit diagnostics. +- same seed yields stable recipient sequence across runs. +- address prefix mismatches fail preflight. + +## Phase 2: Coordinator, Metrics, Manifest, and Pass/Fail Engine (4.0 days) + +Files: + +- `src/coordinator.rs`, `src/metrics.rs`, `src/evaluator.rs`, `src/manifest.rs`, `src/errors.rs`. + +Implement: + +- lifecycle state machine: + - `init -> warmup -> running -> degraded_pause -> drain -> finalized`. +- warm-up barrier with timeout and synchronized timed start. +- pre-run + post-run manifest emission. +- metrics stream: + - 1s sampling, + - JSONL (`metrics.ndjson`), + - buffered flush every 10s, up to 100 samples per flush. +- pass/fail evaluator: + - 60s windows from 1s samples, + - 95%/95% throughput rule, + - failure-ratio threshold, + - worker-stall threshold. + +Acceptance: + +- manifest schema fields match spec including `schema_version` and `endpoint_set_sha256`. +- windowing logic passes deterministic tests. +- warm-up timeout fails before timed phase. + +## Phase 3a: Kaspa Integration Layer (2.5 days) + +Files: + +- `src/kaspa.rs`, `src/modes.rs`, `src/preflight.rs`. + +Implement: + +- integrate network/Kaspa settings into `IgraTransportConfig`. +- explicit configuration controls for: + - `kaspa_utxo_mode`, `kaspa_fee_mode`, `kaspa_fee_bucket`, + - mining timeout, tx-id prefix behavior. +- prebuild-oriented UTXO observability: + - spendable UTXO counting, + - per-wallet depth checks against formula, + - refill-lag measurement helpers (`confirm + query + retry` latency budget). +- Kaspa-side campaign telemetry fields for manifest/metrics. + +Acceptance: + +- UTXO depth check is deterministic and produces per-wallet deficits. +- Kaspa integration tests pass with IGRA transport submitter in place. +- no duplicated Kaspa cryptographic tx build logic added to loadgen. + +## Phase 3b: Worker, Nonce, Replacement, and Shutdown (4.0 days) + +Files: + +- `src/worker.rs`, `src/nonce.rs`, `src/replacement.rs`, `src/coordinator.rs`. + +Implement: + +- worker execution paths for `full-cycle` and `prebuild-send`. +- nonce reconciliation algorithm per spec. +- replacement behavior: + - timeout/backoff sequence, + - fee bump percentage, + - EIP-1559 invariant enforcement. +- worker fail-fast policy. +- graceful shutdown: + - SIGINT -> exit 130 after artifact finalization, + - SIGTERM -> exit 143 after artifact finalization, + - `shutdown_grace_secs` drain behavior. + +Acceptance: + +- nonce gap recovery tests pass. +- replacement invariants are enforced. +- signal handling finalizes manifest/metrics then exits with correct code. + +## Phase 4: Endpoint Pooling and Outage Handling (2.0 days) + +Files: + +- `src/endpoints.rs`, `src/coordinator.rs`, `src/worker.rs`. + +Implement: + +- endpoint-list JSON loading and precedence over direct URLs. +- persistent clients per endpoint. +- selection modes: `random-per-step`, `sticky-per-instance`. +- retries, rotation, and degraded-pause policy. +- endpoint fingerprint algorithm: + - sort all URLs lexicographically, + - join with `\n`, + - SHA256 lowercase hex. + +Acceptance: + +- deterministic `endpoint_set_sha256`. +- outage durations are captured in manifest post-run results. + +## Phase 5: Preflight and Calibration Expansion (3.5 days) + +Files: + +- `src/preflight.rs`, `src/modes.rs`, `src/manifest.rs`, `src/kaspa.rs`. + +Implement: + +- calibration mode: + - fixed-volume run, + - required p50/p95 outputs, + - fail calibration if failure ratio > 5%. +- preflight-sample mode: + - fee and retry overhead sampling for budgeting. +- UTXO depth validation: + - `utxos_per_wallet_min = ceil(worker_tps * (prebuild_horizon_secs + utxo_refill_lag_secs) * utxo_safety_factor)`. +- fee-floor observation method: + - `eth_gasPrice`, + - optional low-fee probe, + - `igra_min_fee_floor_gwei_observed` persisted in manifest. +- contract-code verification: + - sample 10 deterministic addresses in selected range, + - `eth_getCode` check, + - fail-fast if empty code on any sample. + +Acceptance: + +- preflight failure reasons are explicit and actionable. +- calibration/preflight modes exit without starting timed campaign. +- observed fee floor is present in manifest even when expected floor is unset. + +## Phase 6: Script Compatibility and Docs (1.5 days) + +Files: + +- `scripts/igra/testnet-stress.sh` +- `docs/stress-test-prep/igra-kaspa-stress-test-spec.md` (if key names changed) +- this implementation plan doc + +Implement: + +- make script call `igra-loadgen` as canonical engine. +- preserve key legacy env aliases for team continuity. +- document artifact paths and minimal commands for: + - 10-account runs, + - 500 TPS planning runs. + +Acceptance: + +- existing script entrypoint remains usable. +- generated artifacts are stable and discoverable. + +## 6. Revised Effort Estimate + +Single engineer: + +- Phase 0: 1.0 +- Phase 1: 1.8 +- Phase 2: 4.0 +- Phase 3a: 2.5 +- Phase 3b: 4.0 +- Phase 4: 2.0 +- Phase 5: 3.5 +- Phase 6: 1.5 +- Total: 20.3 engineer-days (about 4 calendar weeks with review overhead) + +Two engineers (parallel where possible): + +- about 12-14 calendar days. + +Suggested split: + +- Engineer A: phases 3a, 3b, 4. +- Engineer B: phases 1, 2, 5, 6. + +## 7. Test Strategy (Expanded) + +## 7.1 Unit Tests + +Add tests in module files and/or `crates/igra-loadgen/tests/`: + +- network-derived defaults mapping and prefix validation. +- recipient determinism (`ring`, `random-seeded`). +- worker-count/bounds and mapping correctness. +- endpoint hash determinism. +- 60s windowing + 95%/95% evaluator correctness. +- failure taxonomy denominator correctness. +- fee-floor observation decision logic. +- UTXO-depth formula and deficit reporting. +- manifest and metrics serialization contracts. + +Existing Kaspa correctness tests to keep green: + +```bash +cargo test -p foundry-common igra_transport -- --nocapture +``` + +## 7.2 Integration Tests + +- warm-up barrier success + timeout. +- worker crash -> fail-fast campaign termination. +- nonce divergence reconciliation. +- replacement backoff + cap behavior. +- UTXO depletion/insufficient depth detection. +- fee-floor mismatch detection. +- contract-code missing preflight failure. +- random-seeded reproducibility across repeated runs. +- signal handling exit code checks (130/143). + +## 7.3 Regression Coverage + +```bash +./scripts/igra/deterministic-harness.sh +KEEP_TMP=1 ./scripts/igra/testnet-smoke.sh +cargo test -p igra-loadgen -- --nocapture +``` + +## 7.4 Devnet E2E Campaign Gates + +Required before merge: + +1. 10-worker `full-cycle` timed run. +2. 10-worker `prebuild-send` timed run. +3. calibration-only run. +4. preflight-sample run. + +Required artifacts: + +- `campaign-manifest.json` (pre + post for timed campaigns). +- `metrics.ndjson`. +- calibration report JSON. +- preflight sample report JSON. + +## 8. Review Gates + +Mandatory gates: + +1. After Phase 1: config/mapping/network defaults review. +2. After Phase 2: coordinator + manifest + metrics + evaluator review. +3. After Phase 3a: Kaspa integration review (UTXO/refill/telemetry). +4. After Phase 3b: worker + nonce + replacement + shutdown review. +5. After Phase 5: preflight/calibration/funding review. +6. After Phase 6: script/docs/operability review. + +No advancement to next gate unless previous gate acceptance criteria pass. + +## 9. Risk Register and Mitigations + +Risk: throughput collapse from synchronous send behavior. +Mitigation: prioritize prebuild-send queueing and async dispatch in Phase 3b. + +Risk: RPC bottleneck misread as protocol bottleneck. +Mitigation: endpoint pool, per-layer latency metrics, degraded-pause accounting. + +Risk: non-deterministic inputs reduce comparability. +Mitigation: strict manifest schema, deterministic endpoint hash, version pinning. + +Risk: fee drift invalidates budget assumptions. +Mitigation: required preflight sampling and fee-floor observation. + +Risk: txid-prefix mining CPU bottleneck at high TPS. +Mitigation: benchmark mining performance on target hardware and adjust safe TPS via calibration. + +Risk: UTXO refill lag exceeds prebuild horizon and stalls workers. +Mitigation: conservative depth formula with safety factor and refill-lag monitoring. + +Risk: contract-code preflight adds startup overhead. +Mitigation: sample fixed-size deterministic subset (10 addresses), run checks in parallel. + +Risk: metrics buffer flush lag at high load. +Mitigation: capped buffer size, periodic forced flush, and flush-lag metric with alert threshold. + +## 10. Definition of Done + +Implementation is complete when: + +- all Phase 0-6 acceptance checks pass. +- all pre-implementation review gaps are explicitly closed. +- pass/fail evaluator correctly enforces 95%/95% window rule. +- UTXO depth validation fails fast on insufficient wallets. +- fee-floor observation is computed and persisted. +- contract-code preflight detects missing deployments. +- network-derived defaults and address-prefix validation are verified. +- signal handling finalizes artifacts and exits with 130/143 semantics. +- 10-worker campaigns and smoke/regression suites pass without IGRA regressions. diff --git a/docs/stress-test-prep/igra-kaspa-stress-test-spec.md b/docs/stress-test-prep/igra-kaspa-stress-test-spec.md new file mode 100644 index 0000000000000..7437671d83058 --- /dev/null +++ b/docs/stress-test-prep/igra-kaspa-stress-test-spec.md @@ -0,0 +1,1049 @@ +# IGRA-Kaspa Stress Test Spec (1000 Wallets, 1000 Contracts) + +## 1. Goal and Pass/Fail Criteria + +Define a reproducible stress test where: + +- `target_tps` is an input parameter. +- Load is distributed across Foundry workers. +- Each worker uses exactly one EVM wallet, one Kaspa wallet, and one contract address. +- Mapping is index-based and uses `wallet_start_index`. + +Primary target example: `500 TPS` for long-duration runs (for example 12h). + +Scope note: + +- This spec is devnet-first. `testnet-10` is supported as a selectable network mode, but + operational testnet runbooks are out of scope for this revision. + +### 1.1 Campaign pass criteria + +A campaign is considered **PASS** only if all are true: + +- Sustained throughput: aggregate TPS is at least `95%` of `target_tps` for at least `95%` of 1-minute windows. +- Reliability: end-to-end failed tx ratio is at most `1.0%` using the normalized denominator below. +- Stability: no more than `2%` of workers are stalled for longer than `60s` at any point. +- Mapping correctness: zero wallet/contract index collisions and zero out-of-range indices. + +Otherwise campaign is **FAIL** and must be treated as capacity or implementation regression. + +### 1.2 Failure taxonomy (required) + +For consistency across teams, reliability must use: + +- `accepted`: final success acknowledged by IGRA/Kaspa completion flow. +- `rejected`: validation/protocol rejection with terminal error. +- `timeout`: no terminal result within configured terminal timeout. +- `dropped`: never accepted and never terminally rejected but aged out. +- `terminal_error`: internal runner error where tx cannot progress. + +Examples: + +- `rejected`: EVM revert, invalid nonce, fee below enforced minimum. +- `timeout`: no terminal result within configured timeout window. +- `dropped`: mempool-evicted or never finalized before shutdown grace expires. +- `terminal_error`: RPC unavailable, signing failure, unrecoverable worker runtime error. + +Normalized failure ratio: + +- `failure_ratio = (rejected + timeout + dropped + terminal_error) / (accepted + rejected + timeout + dropped + terminal_error)` + +Replacement handling: + +- A superseded tx attempt for nonce `n` is **not** counted as failure if another replacement for same + nonce `n` is later accepted. + +## 2. Fixed Inputs and Artifacts + +### 2.1 Wallet source + +`docs/stress-test-prep/wallets_1000.json` + +Each entry includes: + +- `mnemonic` +- `kaspa_private_key` +- `kaspa_address` +- `ethereum_private_key` +- `ethereum_address` + +Index range is `0..999`. + +### 2.2 DevOps-provided runtime infrastructure (required) + +Runner assumes DevOps already provides: + +- Reth node up/running, with required wallet and contract pre-funding applied. +- Kaspad for the selected stress network up/running, with required wallet pre-funding applied. +- Kaspa miner(s) running so Kaspa network is operational. + +Runner scope starts only after this infra is healthy. + +### 2.3 RPC endpoint list JSON (required) + +Runner accepts DevOps-provided JSON with endpoint lists for both layers: + +```json +{ + "igra_rpc_urls": ["https://igra-rpc-1:8545"], + "kaspa_rpc_urls": ["grpc://kaspa-rpc-1:16210"] +} +``` + +Rules: + +- Single endpoint per list is valid. +- Multiple endpoints per list is valid. +- Empty list is invalid. + +### 2.4 EVM alloc fragment (reference) + +`docs/stress-test-prep/reth_alloc_1000eth.json` + +- Reth genesis `alloc` fragment. +- Pre-funds EVM addresses from `wallets_1000.json` with `1000 iKAS` each. + +Reference artifact only; runtime provisioning is DevOps-owned. + +### 2.5 Contract address range + +1000 independent predeployed contracts are contiguous: + +- Start: `0x0000000000000000000000000000000000005000` +- End: `0x00000000000000000000000000000000000053e7` +- Count: `0x53e7 - 0x5000 + 1 = 0x3e8 = 1000` + +Contract for wallet index `i`: + +- `contract_addr(i) = 0x0000000000000000000000000000000000005000 + i` +- Addresses are represented in canonical lowercase hex for deterministic generation; checksum + formatting is optional at display time. + +### 2.6 Contract runtime fragment (reference) + +Genesis must include contract runtime code for all addresses `0x5000..0x53e7`. + +Required shape per address: + +```json +{ + "0x0000000000000000000000000000000000005000": { + "balance": "0x0", + "code": "0x" + } +} +``` + +Reference artifact only; runtime provisioning is DevOps-owned. + +### 2.7 Pinned contract workload (exact behavior) + +The stress call target is the EVM-team-provided transfer/balance simulator runtime: + +- Runtime bytecode: + `0x5f3560e01c63a9059cbb81146031576370a0823114601b575f80fd5b60243603602d57600435545f5260205ff35b5f80fd5b60443603604c57600435602435908133555560015f5260205ff35b5f80fd` +- Supported selector `transfer(address,uint256)`: `0xa9059cbb` +- Supported selector `balanceOf(address)`: `0x70a08231` +- Any other selector or invalid calldata length reverts. + +Stress workload uses **state-changing** `transfer(address,uint256)` transactions. + +Canonical transfer calldata (exact): + +- bytes length must be `68` (`4 + 32 + 32`) +- selector: `0xa9059cbb` +- `to` argument: `wallets_1000[(wallet_index + 1) % 1000].ethereum_address` +- `amount` argument: constant `1` + +Recipient selection rationale: + +- Default recipient mode is deterministic ring mapping (`i -> (i+1)%N`) to keep workload reproducible. +- This can introduce shared-state interaction patterns by design; it is acceptable for devnet-first + stress because determinism is prioritized over perfect isolation. +- Optional alternative mode is random recipient selection with fixed seed for reproducibility. + +State precondition for stable long-run measurements: + +- Each worker sends `warmup_txs_per_worker` warm-up transfers (default `1`) before timed run starts. +- Warm-up tx is excluded from TPS/error metrics. +- Use measured steady-state gas from calibration for budgeting and capacity planning. +- Timed phase starts only after warm-up barrier: all workers must report warm-up completion. + +Warm-up coordination protocol: + +1. All workers enter warm-up phase in parallel. +2. Each worker sends warm-up tx(s) and waits for acceptance. +3. Each worker reports `warmup_complete`. +4. Coordinator waits for all workers or `warmup_barrier_timeout_secs`. +5. If timeout occurs, campaign fails before timed phase. +6. Coordinator emits shared `timed_start_utc`, then all workers start timed phase. + +Contract storage initialization and verification: + +- Contracts are expected to start from zero storage unless DevOps explicitly defines otherwise. +- Runner preflight must verify contract code exists at sampled addresses in the selected index range. +- If code is missing on any sampled address, campaign must fail fast before worker start. +- First writes are expected to be more expensive than steady-state updates; long-run budgeting must use + measured steady-state gas from calibration. + +Observed gas from EVM team: + +- `transfer(address,uint256)` first writes from zero slots: `~65,671 gas` +- `balanceOf(address)` as transaction: `~23,625 gas` + +Planning defaults: + +- Set tx gas limit to `80,000` for transfer workload. +- First-write transfer cost can be around `~65k`, but long runs should use measured steady-state gas + from preflight as the source of truth. +- Typical steady-state transfer gas after warm-up is around `~45,000` (empirical baseline, varies + with storage access patterns and recipient behavior). + +## 3. Worker Model and Mapping + +### 3.1 Canonical worker unit + +One worker is one OS process with: + +- one EVM signer, +- one Kaspa signer, +- one contract target. + +### 3.2 Mapping rules + +For worker ordinal `k` (0-based): + +- `wallet_index = wallet_start_index + k` +- `evm_wallet = wallets_1000[wallet_index].ethereum_private_key` +- `kaspa_wallet = wallets_1000[wallet_index].kaspa_private_key` +- `contract_addr = contract_addr(wallet_index)` + +Constraints: + +- `wallet_index` must stay in `0..999`. +- `wallet_start_index + worker_count <= 1000`. + +### 3.3 Multi-host sharding + +If workers are split across hosts: + +- Each host must be assigned disjoint `wallet_start_index` ranges. +- No shared wallet index across hosts. +- Global mapping remains one-to-one by index. + +### 3.4 Wallet ceiling and extension path + +- Current dataset ceiling is `1000` wallet pairs, so with baseline `5 TPS/worker` the practical + ceiling is ~`5000 TPS`. +- To target above this ceiling, provide larger wallet dataset and matching contract range, then run + the same mapping rules with updated bounds. + +## 4. Throughput Model + +Conservative default: + +- `instance_safe_tps = 5` + +Computed workers: + +- `worker_count_required = ceil(target_tps / instance_safe_tps)` + +Calibration override (recommended): + +- If preflight measured worker throughput is available, derive: + `instance_safe_tps_calibrated = floor(measured_worker_tps_p10 * 0.8)`. +- Use `max(1, min(instance_safe_tps, instance_safe_tps_calibrated))` as effective planning + per-worker TPS for this campaign. + +Examples: + +- `target_tps=50` -> `10` workers +- `target_tps=100` -> `20` workers +- `target_tps=500` -> `100` workers + +Example with index offset: + +- `target_tps=500`, `wallet_start_index=100` +- workers use wallet indices `100..199` +- workers call contracts `0x...5064 .. 0x...50c7` + +## 5. Kaspa Prefunding and Optional Fan-Out + +Kaspa devnet prealloc (single-address) is supported in rusty-kaspa: + +```bash +cargo run --bin kaspad --features devnet-prealloc -- \ + --devnet \ + --num-prealloc-utxos=1000 \ + --prealloc-address=kaspadev:YOUR_ADDRESS \ + --prealloc-amount=10000000000 +``` + +Notes: + +- Works on `--devnet` / `--simnet`. +- `--num-prealloc-utxos` and `--prealloc-address` must be set together. +- `--prealloc-amount` is in sompi (`10_000_000_000` = `100 KAS`). +- Prealloc funds a single address; multi-wallet funding requires fan-out. +- For `--network=testnet-10`, this prealloc flow is not available; wallet funding must come from + normal external funding flow. + +### 5.1 Optional fan-out step + +Fan-out is optional and controlled by CLI/ENV. + +- Use fan-out for first bootstrap or after depletion. +- Skip fan-out for repeated runs if balances/UTXO pools already prepared. +- Fan-out must pass Kaspa mempool standardness checks (especially KIP-0009 storage mass) before + submission. + +Mandatory fan-out standardness requirement (fail-fast): + +- `MAXIMUM_STANDARD_TRANSACTION_MASS = 100000` (Kaspa mempool standardness ceiling). +- Use conservative target `fanout_target_storage_mass = 50000` to keep safety headroom. +- Let: + - `C = STORAGE_MASS_PARAMETER = 1_000_000_000_000`, + - `n = kaspa_fanout_max_outputs_per_tx`. +- Minimum per-output amount must satisfy: + - `kaspa_fanout_amount_sompi >= ceil(n * C / fanout_target_storage_mass)`. +- With these constants: + - `kaspa_fanout_amount_sompi >= n * 20_000_000` (0.2 KAS per output per tx). + +Runtime policy: + +- If computed storage mass for a fan-out batch exceeds `100000` and batch size `> 1`, split batch + and retry with smaller batches. +- If computed storage mass exceeds `100000` for single-output batch, fail fast with required + minimum amount hint (do not rely on repeated rejected submissions). + +### 5.2 Quantified UTXO depth requirement (`prebuild-send`) + +For each worker wallet: + +- `worker_tps = per-worker send rate` (default `5`) +- `prebuild_horizon_secs = seconds of prebuilt queue to keep ready` +- `utxo_refill_lag_secs = kaspa_confirm_secs_p95 + rpc_retry_budget_secs` +- `utxo_safety_factor = default 1.5` +- Runner input for this value is `--utxo-refill-lag-secs` (set from recent calibration). + +Suggested estimation of `utxo_refill_lag_secs`: + +- `utxo_refill_lag_secs ~= p95(kaspa_confirm_latency_secs) + p95(kaspa_utxo_query_latency_secs) + retry_budget_secs` +- Default `20` can be used when calibration data is not yet available. + +Minimum UTXO count per wallet: + +- `utxos_per_wallet_min = ceil(worker_tps * (prebuild_horizon_secs + utxo_refill_lag_secs) * utxo_safety_factor)` + +Example: + +- `worker_tps=5`, `prebuild_horizon_secs=120`, `utxo_refill_lag_secs=20`, `utxo_safety_factor=1.5` +- `utxos_per_wallet_min = ceil(5 * (120 + 20) * 1.5) = 1050` + +If configured UTXO count is below this minimum, runner must fail fast before launch. + +## 6. Stress Modes + +### 6.1 Mode A: `full-cycle` + +Per tx, worker does full path: + +1. Build/sign EVM raw tx. +2. Submit via IGRA write path. +3. Mine Kaspa txid prefix and construct Kaspa payload tx. +4. Broadcast and await completion flow. + +Use for lower TPS realism and correctness checks. + +### 6.2 Mode B: `prebuild-send` + +High-throughput mode separates preparation from dispatch: + +1. Prebuilder prepares signed tx batches. +2. Sender loop dispatches prebuilt txs. +3. Confirmer tracks receipts/acceptance and updates state. + +### 6.3 Nonce and resend rules (required) + +`prebuild-send` must use deterministic nonce control: + +- Per worker nonce stream is strictly monotonic. +- Prebuilder allocates nonces from `next_pending_nonce` snapshot. +- Sender never emits duplicate nonce unless replacement policy triggers. + +Replacement policy: + +- `pending_timeout_secs` default `10`. +- If tx with nonce `n` is pending longer than timeout, issue replacement for nonce `n`. +- Increase both `max_fee_per_gas` and `max_priority_fee_per_gas` by at least `10%` per replacement. +- Keep EIP-1559 invariant: `max_priority_fee_per_gas <= max_fee_per_gas`. +- Max replacements per nonce default `5`. +- Timeout backoff per replacement attempt: `10s -> 20s -> 40s` (cap at `60s`). + +Gap recovery: + +- If worker state and chain nonce diverge, reconcile from RPC nonce. +- Drop stale queued txs above divergence point. +- Rebuild queue from reconciled nonce. + +Nonce reconciliation algorithm (required): + +```text +expected_nonce = local_next_nonce +rpc_nonce = eth_getTransactionCount(sender, "pending") +if rpc_nonce == expected_nonce: continue +if rpc_nonce > expected_nonce: + drop queued txs where nonce < rpc_nonce as stale + reset local_next_nonce = rpc_nonce + rebuild prebuild queue from rpc_nonce forward +if rpc_nonce < expected_nonce: + pause sends for sender + re-query pending nonce with backoff until convergence or timeout + if timeout: mark worker stalled and trigger recovery policy +``` + +### 6.4 Worker failure and recovery policy + +- First implementation policy is fail-fast for worker loss. +- If any worker exits non-zero or becomes unresponsive beyond `worker_recovery_timeout_secs` + (default `120`), coordinator stops all workers and marks campaign `FAIL`. +- Runner still emits post-run manifest and partial metrics for analysis. +- Future relaxed policy (continue with N-1 workers) is out of scope for this revision. + +## 7. RPC Endpoint Strategy + +Support single or multiple RPC endpoints for both EL and Kaspa. + +Required behavior: + +- Keep persistent client pools per endpoint (no per-request socket creation). +- Selection chooses endpoint from healthy pool. +- Default selection: `random-per-step` over pooled clients. +- Optional selection: `sticky-per-instance`. +- If endpoint fails health checks, apply temporary backoff and retry with another endpoint. + +Endpoint resolution order: + +1. `--el-rpc-urls` / `--kaspa-rpc-urls` if provided. +2. Else `--rpc-endpoints-json`. +3. Else fail fast before starting workers. + +Mid-campaign RPC outage policy: + +- If at least one healthy endpoint remains for each layer, campaign continues. +- If all EL endpoints or all Kaspa endpoints are unhealthy, runner enters `degraded_pause` state. +- `degraded_pause_max_secs` default `120`; if exceeded, campaign is marked failed. +- All outage durations and affected workers must be recorded in campaign manifest results. + +### 7.1 RPC retry and failover behavior + +- Retry/backoff sequence per failed endpoint attempt: `1s, 2s, 4s, 8s` (cap `30s`). +- On failure, rotate request to next healthy endpoint in same layer pool. +- If no healthy endpoint exists for a layer, remain in `degraded_pause` until recovery or timeout. + +## 8. CLI and ENV Contract + +### 8.1 Core load parameters + +- `--network` (`IGRA_STRESS_NETWORK`), default `devnet`, allowed values: + `devnet|simnet|testnet-10`. +- `--target-tps` (`IGRA_STRESS_TARGET_TPS`), required. +- `--instance-safe-tps` (`IGRA_STRESS_INSTANCE_SAFE_TPS`), default `5`. +- `--worker-count` (`IGRA_STRESS_WORKER_COUNT`), optional explicit override. +- `--wallet-start-index` (`IGRA_STRESS_WALLET_START_INDEX`), default `0`. +- `--worker-recovery-timeout-secs` (`IGRA_STRESS_WORKER_RECOVERY_TIMEOUT_SECS`), default `120`. +- `--degraded-pause-max-secs` (`IGRA_STRESS_DEGRADED_PAUSE_MAX_SECS`), default `120`. + +Worker-count resolution: + +- If `--worker-count` unset: compute `ceil(target_tps / instance_safe_tps)`. +- If `--worker-count` set and is less than computed required workers: fail fast. +- Optional escape hatch may be added later (`--allow-underprovision`), default behavior is fail. + +Network-derived behavior: + +- `IGRA_TX_ID_PREFIX` default is derived from selected network profile and may be overridden + explicitly by `--tx-id-prefix`. +- Kaspa address prefix validation must match selected network (`kaspadev:` / `kaspasim:` / + `kaspatest:`). + +### 8.2 Wallet/contract datasets + +- `--wallets-json` (`IGRA_STRESS_WALLETS_JSON`), default `docs/stress-test-prep/wallets_1000.json`. +- `--contract-base-address` (`IGRA_STRESS_CONTRACT_BASE`), default `0x0000000000000000000000000000000000005000`. +- `--contract-end-address` (`IGRA_STRESS_CONTRACT_END`), default `0x00000000000000000000000000000000000053e7`. + +### 8.3 Mode and stop condition + +- `--mode` (`IGRA_STRESS_MODE`): `full-cycle` or `prebuild-send`. +- `--duration-secs` (`IGRA_STRESS_DURATION_SECS`) or `--total-txs` (`IGRA_STRESS_TOTAL_TXS`). +- `--calibration-mode` (`IGRA_STRESS_CALIBRATION_MODE`): `0|1`, default `0`. +- `--preflight-sample-mode` (`IGRA_STRESS_PREFLIGHT_SAMPLE_MODE`): `0|1`, default `0`. + +Stop-condition rules: + +- Exactly one of `duration-secs` or `total-txs` must be set. +- If both are set, fail fast. +- If none are set, fail fast. +- If `calibration-mode=1`, runner executes fixed calibration run (`2000` tx default unless + overridden) and exits with calibration report. +- If `preflight-sample-mode=1`, runner executes fixed fee-sampling run (`1000` tx default unless + overridden) and exits with budget estimate report. + +### 8.4 Kaspa fan-out controls (optional) + +- `--kaspa-fanout` (`IGRA_STRESS_KASPA_FANOUT`): `0|1`, default `0`. +- `--kaspa-funder-private-key` (`IGRA_STRESS_KASPA_FUNDER_PRIVATE_KEY`) or mnemonic source. +- `--kaspa-fanout-amount-sompi` (`IGRA_STRESS_KASPA_FANOUT_AMOUNT_SOMPI`). +- `--kaspa-fanout-utxos-per-wallet` (`IGRA_STRESS_KASPA_FANOUT_UTXOS_PER_WALLET`). +- `--kaspa-fanout-max-outputs-per-tx` (`IGRA_STRESS_KASPA_FANOUT_MAX_OUTPUTS_PER_TX`), default + `64`. +- `--prebuild-horizon-secs` (`IGRA_STRESS_PREBUILD_HORIZON_SECS`), default `120`. +- `--utxo-refill-lag-secs` (`IGRA_STRESS_UTXO_REFILL_LAG_SECS`), default `20`. +- `--utxo-safety-factor` (`IGRA_STRESS_UTXO_SAFETY_FACTOR`), default `1.5`. +- `--preflight-balance-check` (`IGRA_STRESS_PREFLIGHT_BALANCE_CHECK`): `0|1`, default `1`. + +Required validation when `kaspa-fanout=1`: + +- Runner must reject configuration where `kaspa-fanout-amount-sompi` is below + `ceil(kaspa-fanout-max-outputs-per-tx * 1_000_000_000_000 / 50_000)`. +- This is equivalent to `20_000_000 * kaspa-fanout-max-outputs-per-tx` sompi minimum. + +### 8.5 RPC inputs and selection + +- `--rpc-endpoints-json` (`IGRA_STRESS_RPC_ENDPOINTS_JSON`), path to DevOps endpoint-list JSON. +- `--el-rpc-urls` (`IGRA_STRESS_EL_RPC_URLS`), comma-separated list. +- `--kaspa-rpc-urls` (`IGRA_STRESS_KASPA_RPC_URLS`), comma-separated list. +- `--rpc-selection-mode` (`IGRA_STRESS_RPC_SELECTION_MODE`): `random-per-step|sticky-per-instance`. +- `--rpc-random-seed` (`IGRA_STRESS_RPC_RANDOM_SEED`), optional. + +### 8.6 Per-tx execution knobs + +- `--tx-id-prefix` (`IGRA_TX_ID_PREFIX`), network-specific default (derived from + `IGRA_STRESS_NETWORK` unless explicitly overridden). +- `--recipient-mode` (`IGRA_STRESS_RECIPIENT_MODE`): `ring|random-seeded`, default `ring`. +- `--recipient-random-seed` (`IGRA_STRESS_RECIPIENT_RANDOM_SEED`), required when + `recipient-mode=random-seeded`. +- `--warmup-txs-per-worker` (`IGRA_STRESS_WARMUP_TXS_PER_WORKER`), default `1`. +- `--warmup-barrier-timeout-secs` (`IGRA_STRESS_WARMUP_BARRIER_TIMEOUT_SECS`), default `60`. +- `--mining-timeout-secs` (`IGRA_MINING_TIMEOUT_SECS`). +- `--gas-limit` (default `80000` for transfer workload). +- `--max-fee-per-gas`, `--max-priority-fee-per-gas`. +- `--pending-timeout-secs` (`IGRA_STRESS_PENDING_TIMEOUT_SECS`), default `10`. +- `--max-replacements-per-nonce` (`IGRA_STRESS_MAX_REPLACEMENTS_PER_NONCE`), default `5`. +- `--replacement-fee-bump-pct` (`IGRA_STRESS_REPLACEMENT_FEE_BUMP_PCT`), default `10`. +- `--replacement-timeout-cap-secs` (`IGRA_STRESS_REPLACEMENT_TIMEOUT_CAP_SECS`), default `60`. +- `--kaspa-fee-mode` (`IGRA_STRESS_KASPA_FEE_MODE`): `estimate|fixed`, default `estimate`. +- `--kaspa-fee-bucket` (`IGRA_STRESS_KASPA_FEE_BUCKET`): `priority|normal|low`, default `normal`. +- `--shutdown-grace-secs` (`IGRA_STRESS_SHUTDOWN_GRACE_SECS`), default `120`. + +### 8.7 Current defaults in `scripts/igra/testnet-stress.sh` (fees) + +Quick summary: + +| Layer | Default Mode | Who sets effective value | +|---|---|---| +| EVM | EIP-1559 (unless `CAST_LEGACY=1`) | `cast send` + EL RPC responses | +| Kaspa | Dynamic estimate (`normal` bucket) | Kaspa `get_fee_estimate` in IGRA transport | + +Current script behavior does **not** set explicit numeric fee flags in `cast send`: + +- `send` call uses: + - `send ... --rpc-url "${IGRA_EL_RPC_URL}" --private-key "${evm_key}" --async` +- No `--gas-price` is passed. +- No `--priority-gas-price` is passed. +- No `--gas-limit` is passed. +- `--legacy` is passed only if `CAST_LEGACY=1` (default `CAST_LEGACY=0`). + +Effective fee defaults from this script: + +- EVM fee mode default is EIP-1559 transaction path (unless `CAST_LEGACY=1`). +- EVM fee values are auto-estimated by `cast send` via RPC when not explicitly provided. +- Kaspa fee is not set by script knobs and is determined by the IGRA/Kaspa send path defaults. + +IGRA minimum fee floor is endpoint-config dependent (not hardcoded in this script): + +- `rusty-kaspa-private/kaspad` IGRA adapter requires `--igra-min-fee-per-gas-gwei` when IGRA is enabled. +- `rusty-kaspa-private/igra/adapter` integration test configs commonly use `2000` gwei. +- `igra-rpc-provider` has default `min_protocol_fee_per_gas_gwei = 100` in `config.toml`. + +Foundry-side compatibility behavior: + +- In IGRA transport mode, `eth_maxPriorityFeePerGas` is clamped to `eth_gasPrice` so EIP-1559 + tip estimation tracks the endpoint's gas-price floor. + +Kaspa fee behavior in Foundry IGRA transport: + +- Default mode is dynamic estimation (`kaspa_fee_mode=estimate`, `kaspa_fee_bucket=normal`) via + Kaspa `get_fee_estimate`. +- A protocol minimum of `1.0 sompi/gram` is enforced on the selected feerate. +- If fee-estimate RPC fails, transport falls back to a fixed heuristic fee formula. + +Operational implication: + +- For reproducible fee budgeting, production stress runs should set explicit fee parameters in the + runner (or collect fresh fee samples right before the campaign). + +### 8.8 Fee-floor pinning and verification + +To avoid ambiguity across endpoint stacks, runner must support: + +- `--igra-min-fee-floor-gwei-expected` (`IGRA_STRESS_IGRA_MIN_FEE_FLOOR_GWEI_EXPECTED`), optional. + +Behavior: + +- If this value is set, runner performs preflight checks against the active EL endpoint set and + fails fast if observed floor behavior is below expected. +- Observed effective floor must be written to campaign manifest (section 12.1) even when expected + value is not set. + +Observed floor measurement method (required): + +1. Query `eth_gasPrice` from active EL endpoint set and record value. +2. Optionally probe with low-fee signed test tx in calibration context. +3. If probe is rejected for low fee, raise candidate floor estimate. +4. Record `igra_min_fee_floor_gwei_observed` as the maximum enforced value seen across checks. + +## 9. Kaspa Blockspace and Capacity Planning + +Constants from local `../rusty-kaspa-private`: + +- `max_block_mass = 500_000` +- `TRANSIENT_BYTE_TO_MASS_FACTOR = 4` +- Ten BPS block interval `= 100 ms` + +### 9.1 Byte upper bound from mass + +Upper bound per block: + +- `max_block_bytes ~= 500_000 / 4 = 125_000 bytes` + +At 10 BPS: + +- `125_000 * 10 = 1_250_000 bytes/sec` (~1.25 MB/s upper bound) + +### 9.2 Per-transaction byte estimate (IGRA path) + +Typical ranges for simple transfer workload: + +- EVM raw tx bytes `~200..260` +- IGRA payload overhead `+5` +- Kaspa envelope/signature/input/output `~150..280` + +Planning estimate: + +- `kaspa_tx_serialized_bytes ~= 380..545` +- Use `512 bytes/tx` conservative default + +Note: do not double-count L2 raw tx bytes and Kaspa tx bytes. L2 raw tx is embedded in Kaspa payload tx. + +### 9.3 Mandatory calibration loop before high TPS runs + +Before `>=100 TPS` campaigns: + +1. Run calibration sample (`>=2000` tx) with same mode and gas config. +2. Record measured `avg` and `p95` serialized Kaspa tx bytes. +3. Record observed accepted TPS, RPC p95 latency, and failure ratio. +4. Set production target to at most `80%` of measured stable ceiling. + +Do not run 500 TPS long campaign without fresh calibration on current infra. + +### 9.4 Calibration mode execution + +Runner calibration mode (`--calibration-mode=1`) must: + +1. Run fixed-volume calibration workload (default `2000` tx total). +2. Use same core config that will be used by planned campaign (mode/network/fee/rpc policy). +3. Output calibration report with: + - `kaspa_tx_bytes_avg`, `kaspa_tx_bytes_p50`, `kaspa_tx_bytes_p95` + - `worker_tps_avg`, `worker_tps_p50`, `worker_tps_p95` + - `el_rpc_latency_p95_ms`, `kaspa_rpc_latency_p95_ms` + - `failure_ratio` +4. Compute recommended ceiling for next campaign planning. +5. Fail calibration if `failure_ratio > 0.05`; do not proceed to full campaign until infra or + config issues are resolved. + +Calibration mode is a preflight job, not a full campaign. + +## 10. Funds Budgeting Model (KAS + iKAS) + +### 10.1 Core formulas + +- `total_primary_txs = target_tps * duration_secs` +- `warmup_txs = worker_count * warmup_txs_per_worker` (default `warmup_txs_per_worker=1`) +- `retry_overhead_ratio` default `0.10` (derived from recent calibration if available) +- `total_paid_txs = ceil((total_primary_txs + warmup_txs) * (1 + retry_overhead_ratio))` +- `kas_fanout_reserve = (worker_count * kaspa_fanout_amount_sompi / 100_000_000) + fanout_fee_buffer_kas` + when fan-out is enabled, otherwise `0` +- `required_kas = ((total_paid_txs * avg_kaspa_fee_sompi_per_tx) / 100_000_000) * kas_safety_factor + kas_fanout_reserve` +- `required_ikas = ((total_paid_txs * avg_evm_gas_used * avg_evm_gas_price_wei_per_gas) / 1e18) * ikas_safety_factor` + +Recommended safety factors: + +- `kas_safety_factor = 1.3` +- `ikas_safety_factor = 1.3` +- `fanout_fee_buffer_kas = 2` (default planning reserve when fan-out is enabled) + +### 10.2 12h at 500 TPS workload size + +- `duration_secs = 12 * 3600 = 43,200` +- `total_primary_txs = 500 * 43,200 = 21,600,000` + +Budget must be computed from measured fee samples on target infra (do not assume static fees). + +### 10.3 Required preflight fee sampling + +Before final funding decision: + +1. Send sample run (`>=1000` tx) with final gas config. +2. Measure: + - average Kaspa fee in sompi per accepted tx, + - average EVM gas used and effective gas price in wei/gas, + - retry/replace overhead ratio. +3. Apply formulas above with `1.3x` safety factor. + +## 11. Suggested Hardware by Target TPS + +Using baseline `5 TPS/worker` safe planning (devnet-first, before campaign-specific calibration override). + +| Target TPS | Workers | CPU (min) | RAM (min) | Notes | +|---|---:|---:|---:|---| +| 50 | 10 | 12 vCPU | 16 GB | single host usually enough | +| 100 | 20 | 24 vCPU | 32 GB | consider separating RPC from workers | +| 250 | 50 | 56 vCPU | 64 GB | multi-host recommended | +| 500 | 100 | 112 vCPU | 128 GB | multi-host required, RPC scaling likely needed | + +Assumptions: + +- ~1 vCPU per worker plus 10-15% control-plane overhead. +- ~0.8-1.2 GB RAM per worker depending queue depth/mode. +- `prebuild-send` needs more RAM due to prebuilt queues. + +## 12. Version Pinning and Reproducibility + +Every stress campaign report must include exact versions: + +- Foundry fork commit hash. +- IGRA components commit hash. +- Reth commit/tag. +- `rusty-kaspa-private` commit/tag. +- Kaspaminer version/commit. + +If any component version changes, previous capacity results are not comparable without rerun. + +### 12.1 Mandatory campaign manifest JSON + +Each campaign must emit a machine-readable manifest file: + +- Path: `/campaign-manifest.json` +- Emitted twice: + - pre-run snapshot (resolved configuration), + - post-run finalized snapshot (resolved configuration + observed results). + +Required fields: + +- `schema_version` (for example `1.0.0`) +- `campaign_id` +- `started_at_utc`, `ended_at_utc` +- `mode`, `network` +- `target_tps`, `worker_count`, `wallet_start_index` +- `resolved_parameters` (full flattened key/value set used by runner after CLI+ENV+defaults resolution) +- `parameter_sources` (for each key: `cli|env|default|file`) +- `resolved_wallet_index_range` +- `resolved_contract_index_range` +- `resolved_endpoints`: + - `igra_rpc_urls` + - `kaspa_rpc_urls` + - `endpoint_set_sha256` (stable hash fingerprint of endpoint set) +- `fee_policy`: + - `igra_min_fee_floor_gwei_expected` (nullable) + - `igra_min_fee_floor_gwei_observed` + - `kaspa_fee_mode` + - `kaspa_fee_bucket` +- `nonce_policy`: + - `pending_timeout_secs` + - `max_replacements_per_nonce` + - `replacement_fee_bump_pct` +- `utxo_policy`: + - `prebuild_horizon_secs` + - `utxo_refill_lag_secs` + - `utxo_safety_factor` + - `utxos_per_wallet_min` +- `build_versions`: + - foundry/IGRA/reth/rusty-kaspa-private/miner commit or tag +- `runtime`: + - `host_count` + - `runner_version` + - `warmup_completed_at_utc` +- `results` (post-run required): + - `accepted` + - `rejected` + - `timeout` + - `dropped` + - `terminal_error` + - `failure_ratio` + - `achieved_tps_avg` + - `achieved_tps_p95_1m` (p95 of per-minute TPS window values) + +`endpoint_set_sha256` computation (required): + +1. Collect `igra_rpc_urls` and `kaspa_rpc_urls` from resolved configuration. +2. Sort all URLs lexicographically. +3. Concatenate sorted URLs using newline (`\n`) separators. +4. Compute SHA256 over the concatenated byte string. +5. Encode hash as lowercase hexadecimal. + +Campaigns without this manifest are non-reproducible and must be considered invalid for capacity +comparison. + +### 12.2 Example `campaign-manifest.json` + +```json +{ + "schema_version": "1.0.0", + "campaign_id": "devnet-2026-02-17T12-00-00Z-500tps", + "started_at_utc": "2026-02-17T12:00:00Z", + "ended_at_utc": "2026-02-17T13:00:00Z", + "mode": "prebuild-send", + "network": "devnet", + "target_tps": 500, + "worker_count": 100, + "wallet_start_index": 100, + "resolved_parameters": { + "IGRA_STRESS_TARGET_TPS": "500", + "IGRA_STRESS_MODE": "prebuild-send", + "IGRA_STRESS_NETWORK": "devnet" + }, + "parameter_sources": { + "IGRA_STRESS_TARGET_TPS": "cli", + "IGRA_STRESS_MODE": "cli", + "IGRA_STRESS_NETWORK": "default" + }, + "resolved_wallet_index_range": "100..199", + "resolved_contract_index_range": "100..199", + "resolved_endpoints": { + "igra_rpc_urls": ["http://127.0.0.1:8545"], + "kaspa_rpc_urls": ["grpc://127.0.0.1:16210"], + "endpoint_set_sha256": "f6f6d75fdb0dbf8f11bb44735c3f3f0f6f7cc66dd0ca8f1d4a1fb77a39db0c67" + }, + "fee_policy": { + "igra_min_fee_floor_gwei_expected": 2000, + "igra_min_fee_floor_gwei_observed": 2000, + "kaspa_fee_mode": "estimate", + "kaspa_fee_bucket": "normal" + }, + "nonce_policy": { + "pending_timeout_secs": 10, + "max_replacements_per_nonce": 5, + "replacement_fee_bump_pct": 10 + }, + "utxo_policy": { + "prebuild_horizon_secs": 120, + "utxo_refill_lag_secs": 20, + "utxo_safety_factor": 1.5, + "utxos_per_wallet_min": 1050 + }, + "build_versions": { + "foundry": "abc1234", + "igra": "def5678", + "reth": "v1.0.0", + "rusty_kaspa_private": "9876fed", + "kaspaminer": "mnr-0.3.1" + }, + "runtime": { + "host_count": 2, + "runner_version": "0.1.0", + "warmup_completed_at_utc": "2026-02-17T12:00:25Z" + }, + "results": { + "accepted": 1730000, + "rejected": 2100, + "timeout": 1300, + "dropped": 400, + "terminal_error": 15, + "failure_ratio": 0.0022, + "achieved_tps_avg": 481.4, + "achieved_tps_p95_1m": 497.1 + } +} +``` + +## 13. Execution Sequence + +### 13.1 One-time setup + +1. Prepare `wallets_1000.json`. +2. Receive DevOps endpoint-list JSON for EL and Kaspa RPC. +3. Validate endpoint JSON schema and non-empty lists. +4. Validate runner can query sample EL and Kaspa endpoints before campaign day. + +### 13.2 Per campaign + +1. Choose `target_tps`, `wallet_start_index`, `mode`, stop condition. +2. Compute required workers and validate index bounds. +3. If `mode=prebuild-send`, validate UTXO depth formula. +4. If `kaspa-fanout=1`, run fan-out standardness prechecks (amount/output constraints and + computed-storage-mass guard), then execute fan-out. +5. Run preflight balance checks for selected wallet index range when `preflight-balance-check=1`. +6. Run preflight calibration and fee sampling. +7. Resolve and record observed IGRA fee floor behavior for active endpoints. +8. Emit pre-run `campaign-manifest.json`. +9. Launch workers. +10. Monitor: + - achieved TPS, + - accepted/rejected/timeout/dropped/terminal_error counts, + - EL pending depth, + - Kaspa mempool/block fullness, + - RPC latency/error rates, + - worker stalls and nonce recovery events. +11. Evaluate pass/fail criteria from section 1.1. +12. Emit post-run finalized `campaign-manifest.json`. + +Preflight balance check requirements: + +- Check all selected EVM wallets for minimum native balance sufficient for: + warm-up + target run + retry safety margin. +- Check all selected Kaspa wallets for: + - minimum spendable UTXO count per section 5.2, + - minimum total sompi for run budget share. +- If any wallet is below threshold, fail fast with wallet index list and deficit summary. + +### 13.3 Metrics collection specification (required) + +Collection format: + +- Primary stream: JSON Lines (`metrics.ndjson`), one object per sample interval. +- Optional export: Prometheus endpoint for real-time dashboards. +- Write mode: buffered append with periodic flush every `10s` to reduce I/O overhead. +- Buffer size: up to `100` samples per flush. + +Sampling frequency: + +- Aggregate sampling interval: `1s`. +- Pass/fail windowing: roll-up into fixed `60s` windows from aggregate samples. + +Required aggregate fields per sample: + +- `ts_utc` +- `tps_1s` +- `accepted_1s`, `rejected_1s`, `timeout_1s`, `dropped_1s`, `terminal_error_1s` +- `el_rpc_p95_ms`, `kaspa_rpc_p95_ms` +- `el_pending_count` +- `kaspa_mempool_mass_estimate` (nullable; set `null` when source RPC/method is unavailable) +- `active_workers`, `stalled_workers` + +Required per-worker fields per sample: + +- `worker_id` +- `wallet_index` +- `tps_1s` +- `accepted_total`, `failed_total` +- `local_next_nonce`, `rpc_pending_nonce` +- `replacement_count_total` +- `last_error_code` (nullable) + +Expected-value guidance (initial devnet baselines): + +- `stalled_workers / active_workers` should stay below `0.02`. +- `el_rpc_p95_ms` should stay below `2000ms`; above this suggests RPC bottleneck. +- `kaspa_rpc_p95_ms` should stay below `2000ms`; above this suggests RPC bottleneck. +- `timeout_1s` sustained above `0.5%` of attempted tx/s is anomalous and should trigger alert. + +Example `metrics.ndjson` line: + +```json +{"ts_utc":"2026-02-17T12:10:01Z","tps_1s":492.3,"accepted_1s":492,"rejected_1s":1,"timeout_1s":0,"dropped_1s":0,"terminal_error_1s":0,"el_rpc_p95_ms":148,"kaspa_rpc_p95_ms":212,"el_pending_count":1830,"kaspa_mempool_mass_estimate":74211,"active_workers":100,"stalled_workers":1} +``` + +If mempool mass is unavailable on the active Kaspa RPC stack, emit the same field as `null`: + +```json +{"ts_utc":"2026-02-17T12:10:02Z","tps_1s":489.0,"accepted_1s":489,"rejected_1s":0,"timeout_1s":0,"dropped_1s":1,"terminal_error_1s":0,"el_rpc_p95_ms":162,"kaspa_rpc_p95_ms":251,"el_pending_count":1792,"kaspa_mempool_mass_estimate":null,"active_workers":100,"stalled_workers":1} +``` + +Example per-worker `metrics.ndjson` line: + +```json +{"ts_utc":"2026-02-17T12:10:01Z","worker_id":"worker-042","wallet_index":142,"tps_1s":4.9,"accepted_total":2941,"failed_total":7,"local_next_nonce":8083,"rpc_pending_nonce":8081,"replacement_count_total":3,"last_error_code":null} +``` + +### 13.4 Graceful shutdown policy + +- On manual stop or stop-condition hit, runner enters `drain` mode. +- No new txs are enqueued after drain starts. +- In-flight txs are awaited up to `shutdown_grace_secs`. +- After grace timeout, unresolved txs are marked `dropped` and included in failure ratio. +- Partial campaigns are valid if manifest and metrics are complete and pass/fail is still computed. +- For signal termination, runner should use conventional exit codes (`130` for SIGINT, `143` for + SIGTERM) after writing finalized artifacts. + +### 13.5 Minimal command examples + +Standard timed run: + +```bash +./stress-runner \ + --network devnet \ + --target-tps 50 \ + --duration-secs 3600 \ + --mode prebuild-send \ + --wallet-start-index 0 \ + --rpc-endpoints-json endpoints.json +``` + +Calibration-only run: + +```bash +./stress-runner \ + --network devnet \ + --mode prebuild-send \ + --calibration-mode 1 \ + --rpc-endpoints-json endpoints.json +``` + +Preflight-sample budget run: + +```bash +./stress-runner \ + --network devnet \ + --mode prebuild-send \ + --preflight-sample-mode 1 \ + --rpc-endpoints-json endpoints.json +``` + +## 14. Validation Checklist + +- One-to-one mapping for wallet and contract index. +- No overflow (`wallet_start_index + worker_count <= 1000`). +- Mode prerequisites met (`prebuild-send` UTXO depth, nonce manager, resend policy). +- RPC parsing works for one/many endpoints. +- Endpoint selection uses persistent pools and health/backoff. +- Stop-condition conflict handling is enforced. +- Failure taxonomy and denominator use section 1.2 definitions. +- IGRA fee-floor observation is captured and matches expected value when configured. +- Kaspa fee mode/bucket settings are captured. +- Warm-up barrier completed before timed phase. +- Steady-state gas measurement is recorded from calibration. +- No worker crash policy violations occurred during timed phase. +- Campaign manifest is emitted (pre-run and post-run) with required fields. +- Aggregate and per-worker metrics are emitted and persisted. + +## 15. Reference Implementation Checklist + +1. Parse and validate all CLI/ENV parameters. +2. Validate wallet index bounds and worker-count constraints. +3. Load wallet JSON and validate schema. +4. Validate RPC endpoint list and connectivity. +5. Resolve effective configuration and emit pre-run manifest skeleton. +6. Run preflight balance checks for selected wallet range. +7. If requested, execute fan-out and verify UTXO distribution. +8. Initialize persistent RPC client pools. +9. Initialize per-worker nonce managers. +10. Execute warm-up phase (`warmup_txs_per_worker`) and wait on warm-up barrier. +11. Start metrics collection stream (`metrics.ndjson`). +12. Launch timed stress phase. +13. Apply resend/replacement and recovery policies during run. +14. Enforce stop condition and enter drain mode. +15. Await in-flight tx completion up to `shutdown_grace_secs`. +16. Compute pass/fail using section 1.1 and section 1.2. +17. Emit finalized campaign manifest and summary report. diff --git a/docs/stress-test-prep/reth_alloc_1000eth.json b/docs/stress-test-prep/reth_alloc_1000eth.json new file mode 100644 index 0000000000000..2d4d141169309 --- /dev/null +++ b/docs/stress-test-prep/reth_alloc_1000eth.json @@ -0,0 +1,3004 @@ +{ + "alloc": { + "0x39651327a988815Cd9599f0e48112E2c553e174d": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcaEe5eE4EBD76C1B4441e3B6cB4C18f792cBc9Cd": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6D6E90bf5936c50f0aC89ACfc364D31900599729": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDe35fD852aFf84843A68D188694ADa792334E1b7": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD749D1b0E87E40e32d19b1638b90D0802846BA46": { + "balance": "0x3635c9adc5dea00000" + }, + "0x507118B045af89e6f6786287e52eFb98827Ca6A5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x42314EfB675A7139b0cf505394194DdE986FF492": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdC6F9d9e5D123E55823d3b9765e60CDE6ABb62d9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x26B7084B255ffECfF609F3250e280a0288a9DB6c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0394C8163Ce6FBDfCdb220D03C46fff920d5378E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2a3958ab223c79a6523A89DE3cc4B76e2D45a578": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9A493C34d242d814AC35f2aaCf885d88840fDa17": { + "balance": "0x3635c9adc5dea00000" + }, + "0x54FBE6dd1293583400c042D0F959C719c6C56DBd": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC6c036AA113EBaec4AD945b44d775f5236f2aA78": { + "balance": "0x3635c9adc5dea00000" + }, + "0x73E30639b46835201A818Fec45371EA3941DE46b": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf45c97902c85C28dB4253065b2C01c277Db5c0c8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2dBeAC0Fb80809B73F1055EC4cc13a42B9df46Aa": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0B23c4fE8b47f9757e303cb3dCA8231481f02EF8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x58d7132408A045200089961719A44CB3088608DF": { + "balance": "0x3635c9adc5dea00000" + }, + "0x604cD031F3C4377e11b3090c557d6da550878159": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4F71023A4B86283D654B293Ca9CB741ca9C789ea": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1A1D0E5f201bF2adB3D68BE60997F115f85833E3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x333Ec54d7cF13f1e5d525894EfF0F8a9C9b10E5E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xabeC5914f06f4fb79798dD7e4e3D5e00ac5A447E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf67F9A9E7b829e3911C755b76479eE3173305594": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd4CaaDE5877d2A5C2493b9AF43920d571FbE209D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6dd097972fb7ce2C6947A458134c53db5C3e7a09": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6F2e5a2aFca3a7d55742B8c14e44697B3e69Ebd1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6f977919CcF9E78f9aB0f09aAb6b58c428aB4Ec7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2bEED412e62Cf3D497Dd8F0d8D7687b5A6E7FBF1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x713e9a96c1794CccA59baF002bBa48722005ab06": { + "balance": "0x3635c9adc5dea00000" + }, + "0x919469d580268a5F083D3542E30493B2eA0DB209": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3c77C80888Db68878D1A406B8Ee36faa6dE7134D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x85c9976cF6583dabB58E69a56B7d10A3E6942711": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1940094249210E88fa8EA0c93d2E765403A05797": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF37EB432B508670c3bfF9F525014251A0655b7D6": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfb63109E9b599B4c535Df3bE9C89e6b73b913905": { + "balance": "0x3635c9adc5dea00000" + }, + "0x872227B33A86341720eA16341824b2F429D160F2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x308593AC2E4b96ff94599682D175A53Cf06Ef7F0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2Bd14483b1d0E2F8159637eD7a1003b632FF9a50": { + "balance": "0x3635c9adc5dea00000" + }, + "0x03b073045D06f4b2530390837Ea24977F3837147": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB53Ac9FB196E905559B92c0cA40cfd94D3fAdd4E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD46FB87539516C36E3EA9b0d7a9a0bEa99586f3e": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcCe4667Ad1D28a4d93FFd9236f25704142f32183": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9Bf5d48fd7F7E69427b8aDC00C159F2aaa108028": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0227E3EDbF22c98e0e324BFf829b5eC6b85b3352": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE7ceC4b9485a6608cF3b94Ab52601e9bC2A8E116": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd92f63DF617db97585Bd3d2f887A48A1fd29Cc34": { + "balance": "0x3635c9adc5dea00000" + }, + "0x947eEA9F87b0325d01C7Ddb5e9e83dF4f0Ce03Ff": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4460aa59AB41BEd43df0E61171de2a6D3DbfAe3F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6ac397482c96C259Cc6527bB87967C2073f65A5E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD14242fCDE055b4A306F1b72305dbd3025fb13cd": { + "balance": "0x3635c9adc5dea00000" + }, + "0x32e22a18250D2F3DF11758f8Fd386466400dF474": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6DE07A857dc9822F18281f0E1A51deb0a4D45Ca6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1fa0E45Ab3fE07c534cfFDA7683ca368b5e6A702": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9de5c24bf5F54235CA1939637B69839D88120204": { + "balance": "0x3635c9adc5dea00000" + }, + "0x530529C5d33484f3E4C67C0BcF68F8BBA7Ef737B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe50E63762d14631cf02c0b825a984703cB48d8c3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x32feF6d96D300170c81E0FB5BAa6De2DB45382Eb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7Ba76bee45A566815a6CdDba645ba1A5BBdC5BBD": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCe8ed9058a50A5c256D7Bdd9F7D85Dd1f68f4E28": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfA434871f586F7772FDe60F27964281807ED693F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc350949C335EAcC45f81FFde175E6C6f6fE16262": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6Ce261D998f314C966A22697a91e232EC1b27A2D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x200aF74211B316d849d3C9fd19e870b286cDad03": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3E4817beD597Da645dC7a6343E366122EF8109Cf": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe28907e5b7A6613f19D508b639f44053BC342297": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd75Afc6a4002C51E27F819357083b4A5C809F29e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0c6EC4157F4356bE64734e70f862208A4b53cbBE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0977A91309E6C21AA71307A885cc9EcbaEb25BbA": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4A625A18cbc78aFf81c51FF55EeF1B766f87c126": { + "balance": "0x3635c9adc5dea00000" + }, + "0x700C2a665Db768e6872BB4a5E2DB3953bf5a9C17": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6236b162bE785D8Dc590801d9Ce0aEb8c5F61dbC": { + "balance": "0x3635c9adc5dea00000" + }, + "0x64112cB911dD137B12618c712FC167a0a8e86a88": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf6A70dDAa26CB37C287fa281289128a49f11F54e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x03797c27F3F2dD081911C7fCefeBEc9c0198d2E1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x86680D2e0b21322c51d63DE8B971999FEdF68498": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7dE30230Cb47A87da0e019C9196436A90a9c4f8e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x98B908E27770a76b3DE48CC34f0A83729D9Fc23E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA5A6EBa2C624C6938B559111eAE3cBf952433A05": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCEc0119EA27Dc69FA526572d63a12ff03b6ED46E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcaDe8668908e60A241CFbAc9bf3c52Ce9c3b944C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x60a5Db9206cf011c3AF808e42d75E06dE23d04b2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB31D65883C829f18ab4F29dcC4f1b71DB92f9e93": { + "balance": "0x3635c9adc5dea00000" + }, + "0x911B5C9C77eCa4c2060FA2e4a29F2D764c804497": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA36b154183247fF9feeB79C0a66430cAD92e8f22": { + "balance": "0x3635c9adc5dea00000" + }, + "0x40477bFd6b7eE2eF19e87f7589d22b09F1C8Ae95": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4980b91cb3a663f69E47ec65EA65f15734924C5b": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF2FfcC18bdf3ca9d6ffdbA94f2c4081aF0505D96": { + "balance": "0x3635c9adc5dea00000" + }, + "0x74fC5Af28468Aa0dbe14Fc412C85d592217b07ce": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1A4600Bf3eF7D251930276ede30Ad54a86BCB037": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5207bF701A7450b6de066f9CD89121C3d299feB1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x913B723738e19b91B40bfedc6f6349C789284BDa": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6C9C8327d8Ae8f525De0CB781F42653b565891E3": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa76408F61a6BaEbD8b7e69ec96672303aB6E4420": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf28983eA31825436db954DE573d65d8b0Cda24b8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x979686Bb51d8277A7D6ad5c6980714d02906aD1e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7bea57A23F046377993E4ae5667969013F0A2bad": { + "balance": "0x3635c9adc5dea00000" + }, + "0x58eFb4666C9080AD8dD16f0fDf1f6D35898b86A9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xeEDFe0dAa718AE557E49a1cE6e8C55f36469853d": { + "balance": "0x3635c9adc5dea00000" + }, + "0x280080cf45Db80508Ec3d1Db02d326f7d03D5a4D": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdBF93FAdF62147DB72105b06d202031363d5c9A9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEa10f87e3DD44150573D2A37Aa7A4b769DA79F05": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCD25A5A42Eb66E2A8aa30203Dc396242dC68c8bE": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc7fF7f088cdC23e6107087Ba115D624D541D09b7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0A69cEE231d3A58AFD6937c2958879CdF90cC0A6": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa73B597eF02DBD7E0909D7B07D12FfE67a7C20Bb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x48e1caE47a84ADbeb6105b94Ed839F442049275a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdf9b18149a0c3b1C2A89e827212ae73FDb43D72E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfAA5826C0f759C21E951Ea34805681a51A99C486": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7Ac890e76FF8af76972fe94146db3aE150996c9c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x186Cef1D939fB2b54824E82677Dbc45b2bde2CE2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7b2806d0CF61DaA1BcA78c43aFF2e2C7479e9c5E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xecE0E605E1554d68ae802e9471Fa0dfa48902822": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7212003fFb57764D3C2180Cf4d7A508e69062e49": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3d446C2d48FeBFbE7c6D8E037bD934c3f11e467b": { + "balance": "0x3635c9adc5dea00000" + }, + "0xeEa8616Dc576EA6e151eBc491FEBE38FBFea000b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8b1CcDa5592F46143b8Ea5A046582C151C8afd2b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3295E22f2f3d053668506d33E2866Cb6F555A5A1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9e3FD496422363BB37eAe42eE6a99f38B73a39d7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7f3a5c3AD3Fcc0187358BcD22E2505f8e9C9a967": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdd5862811fe1cb0CEF2A831cf1bF3E61E5BccF05": { + "balance": "0x3635c9adc5dea00000" + }, + "0x12AECBD89fDb47F9D27719b6606346c5a4DAF7e1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x56f7A65Ef856d2362163136b45E3a6Dc481504A8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8C1A3a097C1688ea52889f90C8510cee0275ceeD": { + "balance": "0x3635c9adc5dea00000" + }, + "0x41D7D52A08614806CAb963f390e006Aa7fD46F98": { + "balance": "0x3635c9adc5dea00000" + }, + "0x974932C1a58a4374e67503b16B85B724F185f619": { + "balance": "0x3635c9adc5dea00000" + }, + "0x61fA87B8BDCF2E723D9Abe26668f92A80e7C197c": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFA21275E4F80115D0AFdC4f49C18fc745e6878B3": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB20645D45E17940F83B975A329d8f7875Df8975d": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfE23F0C1661f7825A4E9F163AD31BDAb36a666D0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8Cd596ebb06FA70DE1E3fB6fDbE1CB19cD2f761d": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcf9EbB2A659072f4EBde96f0410557cfE4c1A35f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x58498A372834318298E0098ab42D07c371Ef5fa2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf3b3Ae52b4CEe7578C1D79fBAAE305922D97a8d0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x031C1E13D7eab8938d4a26cedA8eCeF69f28557C": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE68a39199322B332d5F3F95cB00fDED98d5fceb1": { + "balance": "0x3635c9adc5dea00000" + }, + "0xbB25D88CA6101A72612bC1A737853fcffE32B04c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4ceBb26b775a2d08418549EA47e607511b6476ae": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD6a6c969ba0A66FDfb5EF19A6e0D1bD8732402b6": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE94Ff8A7AF5213b904153Bf1C3e8b290Ac4b6c7e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3b1EeCF27797e13F83d66373b14Bc16453d583D9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe0d8b1462015785a4597f8DbdA3972005bc7DAbb": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF4456AB1d9AE2e231bb3E4857dA4c7a968AD7E08": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7086e48A28edf21a25754DD6F351d66AA6dCCD6B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x97Df15214cBE01332A6e8FD326256940AD6080e2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x47cA1b2340ADdD99d7759122B4F7Abe246Ca2394": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF24C4EF73ccEd1D25DDEa8E6Ff14a9Eea04dB39E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x75b8Ea756a694280c51522D4426C9D003fACD878": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe6b7787DD540B9133d107d64A1301443257df361": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCd9aC8b1E246b8A40C987050Ae431dDE699a1CDB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x632b2bb34575BBB1CFDf5F850b2d762adb76bbCe": { + "balance": "0x3635c9adc5dea00000" + }, + "0x80c503C058507Bf190aF439F9b78D58a5cfaF2b4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2129e2DdFf98F3bD8108D87cAD2C3f1DF1356C28": { + "balance": "0x3635c9adc5dea00000" + }, + "0x644dcA88749B5C7AA2D964C7758753D7ca7e771a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA818F1daf4053BA49375E2bE011B00f44af17aE8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF8633bf7c84C55CC658cB6A74d72d12d726d9Fad": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDAA1877c81D44EdCC09e431179417143D98Cf53a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x105A05EA4b2754034f03396000d62285121083Ad": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf71651586E7D8e4f647c621B32D391e105dc806a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5c22225a14FEaF3efb9202984e34C2004a2fc866": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd3453Ad21284B166cb55273913641BF5d78EBBb3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x531F76aF68695258c8B55c53698DB2DdafEEcf17": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0517E71CFe815A5A246C584cc33C6eFa138Be071": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb6e29ADE1C84d3aC94C870da4fcd7FDfe1F5640f": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC4a051DaBf0b8e25cfF56e199CAe8F10C83db8Ba": { + "balance": "0x3635c9adc5dea00000" + }, + "0x62933d905F7D0fEdc8EA908C4CB7265Bcbf4cab5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x99E02067fF994fB3C096DD521c88E385D7F782Ca": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8aa3b2A14831FED88Bc0F275C1918c98Cec912Ed": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF24467BF04737919c87200753B3429619B9EC070": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7ccDE1a65EBC0DACA5fB67F62E78B081588b453a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc51304602f819a1437E81F5059bEa912185751fb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1BC8F9f655443A52F81E399fa0f7F5253eb16B22": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7b231c3AbD8003B81506A14e7C8365bd73005613": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4e00D029c79f895887A32A904363653523F741e6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7d4A3D1599184ff9C792E70ef173b2c3115410eB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3Ab0FCeC1bC83a5f31b8dB676bf6dB15c1B49138": { + "balance": "0x3635c9adc5dea00000" + }, + "0x581e93AD5b8342E43B060AB368BfE6a9eBE3f36D": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb93538Aeca0E566b61747c1162ef89548F593cD4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x68461d306C75ba5263b4a94edc804B1F76fA829D": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF2f77b94a41dc8E9C05a7f256E8fe64e70EeB7Cb": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa942D021cE1974906c7835DeFCcC9aCC4b24B24F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDDa5395607d8e35D785b07bffD959C28036C1d0d": { + "balance": "0x3635c9adc5dea00000" + }, + "0x23734d3500946AB7390288738Fb6639b5a77dc8C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x64867c989d961a6D27B536d7D941F8074418D8F1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x669bef3F6a18E18A9d26916dA35378cBEB6673fC": { + "balance": "0x3635c9adc5dea00000" + }, + "0x67D7c8f7ac26cd7B5C22C36E1f8bFfAbe969b65F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF999c291013552Dd4A5A3C3eB6156A72A524AC2B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2E5955501C776d1aF6DBE2756f3D24a0F84c894F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa91981712E34c7d4234D44f2B0e822cd6a74799D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9142dEED67E8D944bFC1aE32F1734152b7541Ee5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x449c295B7EBBAa527762F3f663e6ec8198752776": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd0d462C1721df22d5Bdc132D6e2120df33a323bE": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA59E292037157449D731Fc1D95D1c0Ae0BBb2bc8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3C999cC4F5047CeDF837468e0638df842B38b51f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7781742A95ad9500EbAFB9FE5a6D5D1e8D81B787": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD94C1E825f9A065F21749D8048B1dfba2a65e8C9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc80daD2aF064798dC52D3099C31157150192fDEd": { + "balance": "0x3635c9adc5dea00000" + }, + "0x977ACc7912e6e9282d8901CCEBB47995b2daF4ed": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5939F48a06A85473F5C9894Adc6Dc8dF79FcE39A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1cef4e71AF4230Cf44F38a7EffB7786df582611D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x40eFA1C825ea344700124e56cA128A56B7Ff65b5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x63dff48D889dD713Ce2c7A3c622020907407AFF2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7206Ec6BBF0eecD57f314E0D2258000069E6Ebef": { + "balance": "0x3635c9adc5dea00000" + }, + "0x02Fc771F8ECBf6D75be91faeCF725C9f9e313A0D": { + "balance": "0x3635c9adc5dea00000" + }, + "0xec74dB6f052bDCB0dC84bE38b5D87Dd3159F0621": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5242ca1fE957EF93bb56719370cdb56541D12A2F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x21201e54d850011eFf0430fd31AAc6b87a105375": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8776242FA35Dd198319bAE4f2E0dEb46cFcA8509": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0cC9260631A024E7c8C9d029da40a00c5118C169": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa04C7Dd41f638995a67C3a6E502C5EA574A4e73a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x802A48c0511FCb6b4a485CAEb898F3225c9aAc74": { + "balance": "0x3635c9adc5dea00000" + }, + "0x41253fcB9fA97b58C1d39A8Cf1254c3e4cec7987": { + "balance": "0x3635c9adc5dea00000" + }, + "0x86F14b02f3dDeB5c13854e02d8835D523774E107": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8F0DbBDb3Bd92df79256c6eA345455a6711Da02b": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc2de69BFE8be8813bF4a8cBF7073FB5AdfE0575b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x22Afb8cB3B0b042C595877CE7443F83B49cA5470": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd3b5a542653cf587194e40aba754343E05015BD6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8EAfF0e19e8b0F93e565Fe84f87818321e5Ae1Af": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc6B8fF6729FC1141FD1F3f882940110eb6A131E5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x57EB16243F41f35aF749a8F6aA748E822c1a331A": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdBb7165244fde9692e68dDc0CF92aeC87308E1Ac": { + "balance": "0x3635c9adc5dea00000" + }, + "0x55F75A6260EEBE9eB565fa6f9F726D205e664638": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCAbc67374Ea581e447DE9c1F729ab1239444967b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x70ce9a450738124D02d733F4DeeE3f364dc65A93": { + "balance": "0x3635c9adc5dea00000" + }, + "0xce766278FDd717076eDd380C63d182Dbf5970A8E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x637B2865e431CBb7Ff6637d1b02662829b30d63D": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDA47D64C10A081eDdafeB9a827DdCc4854aBBB78": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFD46b6D04C0D219B09B546b7FdE94C0Fa421ECe0": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD43C103608752AbBf22D4A823efE379484f421CB": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEa3851a6dbA3A1a334214b1ecDBB06912B44c14a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x08359D103c9B31ca6afebbfd7307C6Ce04Ac9dbD": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4Ebfb59547aD1263dca7E68B0e269e5914b2B6Cb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3285075cd84fdF96bef83b3E17188A048bD3Fd99": { + "balance": "0x3635c9adc5dea00000" + }, + "0x708Ac1Aa7b783e5A1e592F64246Dd62Eaa4870d9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB1E90Fe77FB3b5b17ebb373Be5728ED6464cCc07": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD1Ca72ec6efD1FF5aB433523019Fdba3645D4a3e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4B26990d120C99058cAa815F199B2C327e7Ba5c4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x61B887A79769566042F406C342F32Cf56830cD3d": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2Eb7a6Bf430AFe115311e2101f75fee0871Ab88B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x053269CADeA06EDf1847899cB691DF4cb195754F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x766Db850B5e1D7BD172660bFB35CCf7E901de8d8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd3d4038652063C86F19F84303C719Cd4C30669f4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2c001587c61e5AE9F39e04A7Ad6112925dDd7e2D": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb011E70f19F1001A04A15Df39dFE035dA9bf4A93": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDc8044Ff68fdE11eC59F795FCf39e587547fCBAf": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE4DFbAdab2eDe6976AdEDaA73BA39EE3a0e78480": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1FA00C3198Bb05757695D42d85b54a2c0E0f3078": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2c56FE9F74aaf86176F41cBc9737957865098244": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1ebb77F130191c93A8734604D39f35579970cF5F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x76e8CaBB03d998b8BD9EC01220b6f082f0CB7314": { + "balance": "0x3635c9adc5dea00000" + }, + "0x38331042EA58b9fF652FB871FBe103D9CD7d7663": { + "balance": "0x3635c9adc5dea00000" + }, + "0x28390cBdEAA2dBC1283Ea1C5c77688447B08dEEF": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF0871B7f21D623297672898Ec696B9f62b05751A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x77a44AA2C9018dCE307D9cB7F0719aEF9086ac5b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5b4c0cdcad4d7B4a953aDfedb6ec557BAd1f6A07": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB37390Bd7cA12D4EA020FcBa18522BD937AbF148": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1bFa4F87E87f0Ed6740EE7611766344a515FBA0B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x15e6EDC12AB30Bef83142257AeEb20b01c4e4C95": { + "balance": "0x3635c9adc5dea00000" + }, + "0x73B51EfEeCBa3EA3B7b5598e693Ef596E924CA12": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7a24aD28628DF192C1B1168575f2CD0194b7B397": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDFbDE30c14Ed0B57B11D075AA732fe2484A3446d": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe8BFef36578466BE129A95E14Dc37892dF23F6Be": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5BFfb25aB47376906FBcB3892ACc6D42790f6703": { + "balance": "0x3635c9adc5dea00000" + }, + "0x09fBA2c8Be66F52b961805896190e37E3deaa4ec": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe50bC9aDB2807518930155304dF3F06B6eEE0E36": { + "balance": "0x3635c9adc5dea00000" + }, + "0x61C7C379770963bB6b97bfDc0dB897560656b20c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x614BfF167b35EB8fE509D22822CB60e8b50cD30B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xeED049872d40EcFc1588F1a973661De199f06945": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaFb975932690C26F23Ac5dDf042A1a43814A1D9F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8d1632edc26260d506C53F33237C3a4eB16AfF3B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe5aa390b3Ca852B4231E1Da6DeFF195d6A426491": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcc4C46A6d641f868ab4d97BB53a7Be696a95C0AA": { + "balance": "0x3635c9adc5dea00000" + }, + "0x03a0b26bf220FFbbb7fBAB46c22Dd23C5dB86Fc6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x184d5FE724BD57679B1687fd633D03b6F5d1c46e": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe183071BfBA3280303B86FAa98BDa18f03823B39": { + "balance": "0x3635c9adc5dea00000" + }, + "0x483C9646DD941E72726Eb36AA3Fd33152C203506": { + "balance": "0x3635c9adc5dea00000" + }, + "0x341498633906E157ec61c5B62325404d2723F7c9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4Fa601E79e07Efe7DC90D45A029422EA87974a18": { + "balance": "0x3635c9adc5dea00000" + }, + "0x146144De3372C72a10c0378f77f35B14817BeaC2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCec2a13B5255c8d78a7A0fd7EF0F1f4c0A2352D7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3cc094E51fbF256fF3BB95FBd2656D0A3E3A7E61": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCe970B08c163c14AF00468E3C3829bA17991bB11": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE463DE5eeDe4B9d2f115Fa2a1f7A99E95d76D39E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb8d5F0ccD87C265862550833E6247Be0B4161D00": { + "balance": "0x3635c9adc5dea00000" + }, + "0x03aDa20C9332873DEF2508595b5757cF849a418a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf0a4Da51Ffbc1D72c43a40a9C295EF4f0454F0aD": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6949b9F94801993de8d6d25E78eDFE2a63D26CfE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x534C615Af5c8A22f705D2c165cdf79Eb0caf10df": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa1d520255df352611881014FF01A9eff128810bC": { + "balance": "0x3635c9adc5dea00000" + }, + "0x465c8e4087CcbE94AA3AC4A946a200982547C05b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9F11b7c959968bF7E0aA66C493579a7Be66957A5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x67E68b1908A8884A4540e1EcE70457c1B3183D13": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfD9dF0A907558D4736ACA8F78F2e4C62474eD427": { + "balance": "0x3635c9adc5dea00000" + }, + "0x29B3b4b819BA37AE36F8d4A24FFD06C2935bDAb5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x703fF3db12635234E67a4016B0ab76006d955C65": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb5eAd984e13F8a83800F050a4Bf07De121b531E4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6A9d758818E2a72FCEd1DB574990b2Be876361dA": { + "balance": "0x3635c9adc5dea00000" + }, + "0x71BC3B0Ea8475F81B489AB52f03Ad4e04D9eBE93": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC2FE57EE5e628aB9ddfd94961204c0Eb58fB11Cb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x24ADFD31cF1C354E2eDa348aDF93eC244f31AC75": { + "balance": "0x3635c9adc5dea00000" + }, + "0x28694D3FE65A81Cb845f2197605CCc761E847E9f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2DdE600Ddc5e1cDff8CaD94bdFf20c038b4b59b5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x325Ab4Df3728187143Be38526d53d0Fcd4E93EDC": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3fCe85541427BE081f3f2cC9393E122265E74ed9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4496DD2083012B0DD2E448F9b27F29E1a132186D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8d2335C4eBD2bA9e689c3e10CB634c435aBAF036": { + "balance": "0x3635c9adc5dea00000" + }, + "0x37723480B6cde6fd18432Ef639CF6CA0f8365672": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7347Ef0025105CED5179c42d899f77eAD1F98b6E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaaA0e48a689A303a47d29474D3c29d2E9270E29C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3e81Dae08dd9D3390e06841b708D21B3F495Bfd6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x729579c77D9dDE92F37bD99eC2C35D268F76092D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4462B3ad432922E836C47B24999D88176b723542": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6e9C63530d620c845bc8E6F2D31E65e59750330A": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf21b782de9C4a4641f37864fafEF0bcC167e543B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCa28e89040EA7b83354E43cC43F78aB8F3fA5362": { + "balance": "0x3635c9adc5dea00000" + }, + "0x472cD52581B59ce0b00cfadeeC90C44668243661": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6A0789E55Ec26f8Cd52d92e34f817dE202858759": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe96FD6F4C869dc77cf10edd5826Ac9D6fd34417D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x54d01ac9D19ef1019CB7fD7a2215cb9d867C13ea": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3E41568D152f0E1D0CeEc00BED18A82C8455fea9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x917Cc3eF145362903CB43575D4BA962d155E37dB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x44DCDb3cDfEe898C134377be40Bd2aEA2e43B03e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x667d55a2919beFD9e74eCD4Ce272b637C5cA061D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x93A5eeC71C3AFAC6F2cFe19959d28F019f738D30": { + "balance": "0x3635c9adc5dea00000" + }, + "0x283b4828f7A3E71602C80A3549f118b8b6961B85": { + "balance": "0x3635c9adc5dea00000" + }, + "0x454C9DD756ac431eDb91c090a7eb75c87307091E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x11C008891889D0F66Eef35CE13433D7186d50dFD": { + "balance": "0x3635c9adc5dea00000" + }, + "0x573930292a7Bf8B4205268EC3a1c37ED5De5Eb7E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD686FCb4f6A9EBf5E3Ef6c45E2E50cc251120CfD": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc9c9E887d8a32Dd12e42d035E97C3B860FFeb325": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0091FacA627Fb6470179Ecd229C059e586fa8900": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF57954A8aEcCe10198a3e3974596FC0CBF56a0ED": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6747c39Ef64D7AdC50E42f3A1fb3D9C27c0452c8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc81dD860eB91D441ff97b7C57a1D160CA1EC3134": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0D930a80Af5D1bdC9cAe8a1a7593e924D0847d60": { + "balance": "0x3635c9adc5dea00000" + }, + "0x35fAf932F42501ecc5c5E51191D6358c2bf50aD9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3AdF0Da8797Cf3936e762473894Ab201Fd288176": { + "balance": "0x3635c9adc5dea00000" + }, + "0x343BCF5aA1faF1dd409eB6cC79174228F159ddDA": { + "balance": "0x3635c9adc5dea00000" + }, + "0x85a514a5E4A91fFCEFF9B533cd9c7434F7dEb280": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6Af992ccC8696DF1Ec523EA8204b8B6A748665Be": { + "balance": "0x3635c9adc5dea00000" + }, + "0x494AD22F92E2edB66291Bb149589Be1c1aa41b33": { + "balance": "0x3635c9adc5dea00000" + }, + "0xAc55bb71fa42657c63F782Ab781658A660Db48E4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3AD00d1b888502A5076114Ba8cd7469E02E8d39F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x64Ab9aaA552b40962f6E7044f14057d0a1328AAD": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD8D2af8CaDe68148EFB29118514563b04640006F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x322da497423b074c4F16808230CF6792C24CC955": { + "balance": "0x3635c9adc5dea00000" + }, + "0x49f72dD278C9736747062F7a0cCCDb2c60De2b1C": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd1Ec9b23d5EAD60aFaBcBE6E23e0e25dcBFbD60e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x961D36622eCB68ac327f1BCab17da63c4FA9294d": { + "balance": "0x3635c9adc5dea00000" + }, + "0x476FcAb4Cc1E03DE66a3157Dd81D90bCa7cBEF05": { + "balance": "0x3635c9adc5dea00000" + }, + "0x304Afff0Bc29bd129F19D7F7104f9eF9111C8E67": { + "balance": "0x3635c9adc5dea00000" + }, + "0x75793F794645478A2DA531e0134BF6849ea79423": { + "balance": "0x3635c9adc5dea00000" + }, + "0x20067c4eB32c0cb76B6F99ea10AbA359C9e29D3a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x39116c471b55bf3Ea9BD294EB2AAF07e88707d2A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x607F88B2F78E89C8d7aA5Bf2F13F73EE94EB2FAe": { + "balance": "0x3635c9adc5dea00000" + }, + "0x387eC9C659022bFC3c04f2d96BC2B1711614e4F7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9ca6c63404a2352Db6A41205eB5927CBBFCD12bB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x98e81c113AD42DB7E89235F250Aa79100f6BFd68": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2062366b72C037C86d9Df54475a2068c297a0216": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC72374d348CDe2f35bBAb16A013335c80A05bcd8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x844B87df61b4AF4Dc7DCF597ffEc391832c8a683": { + "balance": "0x3635c9adc5dea00000" + }, + "0x80eAD62785A9ACb75E92A3eDc6Bc476C406bf401": { + "balance": "0x3635c9adc5dea00000" + }, + "0x578CfBBF9ED823F7537a226e7E6c7663cFa72b58": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFB90A424Df7DbA0e1187D4b383E3B95b44c121c8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfa246FBc23895C5114C93EBD009724eD8daB2dD0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x28a3eD539CBb5FaDaeF402B84c3DEA9E7cF714BD": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc46aD9D6FB06c573FAD560017929d430C437000f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5B33C5741E156dBA77620858311ED981aF4414d8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA8b9616F9f754a760450d0a80d24Fed120b748f1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x27f1a23C729866fA826aa28f67EEc9183E7aEadb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x02968D2115cfE34988ffb1A65CB8d5CBF08AdF7b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x40bEEb9Ce5aeCBd41B5FF5a8e65F79DB938c7554": { + "balance": "0x3635c9adc5dea00000" + }, + "0x94B8041177e1baDDbcB3826172E992F1e38d1294": { + "balance": "0x3635c9adc5dea00000" + }, + "0x25CC75E6066685C7EBC338DFA69FBF657DDDa69b": { + "balance": "0x3635c9adc5dea00000" + }, + "0xeCDa1747DC6fe30Ec04963ed0964e64784AC212f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x941eAD9B4336F76DEE25b09B65C24fE3B19DB589": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4CA7fBe2A1ae21fbd4f7A70bB05f786990B58570": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe8b9332244154BD7947BFBc36BDF7d6cE90F6aD3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x16D28f2B2aee0FfAA383694e851deCaF9Ff7B12c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x71352589A6eb22c3fB9af60226A704a21Cac3d33": { + "balance": "0x3635c9adc5dea00000" + }, + "0x43b51Edff6c822E750d9cc43D04b0Bb2a0A89553": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe78bCa88f556B7CEc78d1BC8B42342a21C0e9054": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5Be7ecCcD2a27880A9517af6BB5B09E74805fC42": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF32F73F9f862eeD70889e6512061fe9Cd289C664": { + "balance": "0x3635c9adc5dea00000" + }, + "0x86B41303027314027E49c8B3C31Ae1248a4a0F17": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa72603aD5aA192bf805435f446ba720365222C8c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8a26D07b06a65478595724BBcbfb8F2132AA11E9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA923f90d580aa10d2C616D88e5be25ae7E5be718": { + "balance": "0x3635c9adc5dea00000" + }, + "0x13877411e01481A3FC5DF689c122Dbc29321D6c6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x68EefbB8C9E2fcfc4F9E74C00e8EdD68d1A2cB3f": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfCD5a8daB02D948238FE319cC5A0597287616564": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4031B93CE14eB1F84b1d6337590Cf35F241f7D85": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE326BB2BBfd7a86518752f8c4a573Cb29463C23c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x66AEc227a7fb108ec0A4d9fB791e3eE03Ae4680e": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfb0dE586b21384C88C85ebF395dC95f3b0786ba2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6f0056b853cF40ab7d63C34eb77a22ecA550607D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2f901f06aa6709c6ec0D5b49719fa2bA43F776E1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2bCc0f4E5Ade077FC3FD4697f6568B8CD2dc3C1a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5A912217d8f24a584dc35A8aA92d5c17814fc6F2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb15F961790597A9898ef16Ec9921d8171e8Fa8c3": { + "balance": "0x3635c9adc5dea00000" + }, + "0xbD3576A0228AF15cbFd2D6FAAFaF73af11d8e174": { + "balance": "0x3635c9adc5dea00000" + }, + "0x16574DAB19DECEb41E8be4912d39E1A7D908b59E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x06bB326bbD3352B7966CDAdBcA95e58b07543032": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEEba8A220d2D38c1021845659F480770F8c5D754": { + "balance": "0x3635c9adc5dea00000" + }, + "0x141f19C7EB9288385e5722290F1b871a8ef474Db": { + "balance": "0x3635c9adc5dea00000" + }, + "0x34a1DF6D04E1B988627a4ebBab3089C36F57A9dB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3D3858C409778a7af0587857051140734089740B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x563C0Bb19a999A182fBaF63988Cf61ee5570e2C3": { + "balance": "0x3635c9adc5dea00000" + }, + "0xAD823Bb663fae604bC737dc443F7Dca506546A58": { + "balance": "0x3635c9adc5dea00000" + }, + "0x60b3F986AF1e6502E481bBD02bB0E6Ed93D25Bcc": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5d7f9a86f5555CBAc2A37824343b2ec495380306": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5F58250a5b315AA0Ea5dbdeF432925bB666c46F6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x26dF1b176edaC4D5a4afcDa3ED70eea97E5F6e50": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7EC78429FBBaef5e54E039E4DbFfC4941909004C": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc65f9051eD91a2Cd3Ecb5Cd2BEEAe887Ad63456F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1CC67A0c9246eae75c6369282a43A231Aa4A14A4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2c7aD3Ea70047058908acC891ae5F09eb65A6B4f": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb5639806cfa794Cf50bcDbDbF79d4D651D162228": { + "balance": "0x3635c9adc5dea00000" + }, + "0x04f96d031ABD280e05507Ae3FD33BAf92eAE9082": { + "balance": "0x3635c9adc5dea00000" + }, + "0x74d9073B75d181FE4f8c0bCd2000Dd34fd7683fd": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcD7250989Bf301AD1CF2B0481818E7488c4614BF": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfFd6B83A609Ab7e964Ea148A3d51d31Bb619AB55": { + "balance": "0x3635c9adc5dea00000" + }, + "0x767Bd74703eD3256716eD72BFCB4B911398E8717": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCcf88580bc386e179071825638DB050A709b89F6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x43d81dB4C78BF84bCba58FF4Be1876993aaFFf03": { + "balance": "0x3635c9adc5dea00000" + }, + "0x88205AF4F6d7F2Ffae30039b501892bCac4A3Ca7": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfCE825eB414A43195f42a9D2C3b9931aFf191280": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3fa49c17abd791F392aB64A39659C28714161cC8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb71Ae31e07fB8AFd51595C7AAEc3448b948e1434": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDfC9E1e9951BF17bEB4E58cc8dA419F5e89d1249": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1978D8093403c156b744d51a5a91e4A223716B14": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe2d1E4b75571C2231dd4A07edFdCd34b4C710aC5": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDE6b6bbb0c1F637B9ac5Aa1A69375E92C8F3f681": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC75c814bbBc2d7e58bdA4841565D5619D035416F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCAa90b089b2796124bE31555382A93Ba4f47922A": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb7891Dc34Ff4236338dF8B8aB8CeB6EB420B73e8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x41F9a668430AB1318177305d645926854DaF5783": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1206389482F35a0fB98E554A4Beceb3f6928d928": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8B2d7c2230699dD3a51433B8172ED9e7bfE0b3DC": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0349aB3D2637784214c33A064EA736cc0188fF3C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8A975e1682612b08B8e6752D21d651B81Bf690A8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0acCCEf0f7e6b39F1D80480184078c9c47383543": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6Fe258d6DE902e76EDbB750627cDd15AE7102363": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3D0B5dAF10BD26e80701D6790Da5A5dA2947CC87": { + "balance": "0x3635c9adc5dea00000" + }, + "0x29faacf333Db0A8F641B7E6d24EE2FE62ebbe986": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfabd50d30e16a8B42DFb1F83C971fF87E59d22a9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5A11553b7D53A32296Fe0a638D2978076b1D2E3A": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf9D20F7aFA172b1730AfFBf3a01d18F58B979b7E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x93Ad2A002f6DBc1B9C7D7Fd287f7462407F6B207": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdC70e95E059AEb927e2500670eAEE4fCf8E73EBB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3dbF1e35dd6F2fFFc70E19a5DB7CB02B85B86165": { + "balance": "0x3635c9adc5dea00000" + }, + "0x53B6BF89225aE01158560146C96FD7d19BaA6eb5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x44Be8Bb18AcB5Cd66576A7C4D0791737800eFff7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7408673Cd8c50C3f3B49e66679EDf79881CD2997": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe1bC8b877D2233979b4b9F5f82b186E6D57FbEC6": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd505b51626543f2Ad9fC45a6FD46b172960fEd86": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd1d5F44E682D7862BB718eB4E58d5FBF195b7B30": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8E47c1d9c7551B026ae2Bbf474cF62834163aD03": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa4C6F2d002D9B0c91Ba21B4964d3Fc4B00836D53": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc301c300b90D79aC31269B1A2D5172332f97AE04": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaAFf64E323237976184Bf5588dBaC1eE4d60A794": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDC1daF72c0214d8489c50A4E4653e7CEd0324524": { + "balance": "0x3635c9adc5dea00000" + }, + "0x72fc34BfC174bFE0cbb05521A544B8580C329FEc": { + "balance": "0x3635c9adc5dea00000" + }, + "0x49A3cB3B6eCecF767f66B82FC2B58DFe2902745a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1F2bD08F3B0476A3dE5311821FAcbEE2b3fdfA75": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaaDE78B0aF768320273eA1d5AA4F8805f3121B3d": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE8883fB14715a046D550bD71B4a81A20540d5eE8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xAde49A4e2F55A6Ac17586865A34881FBe0fDa30E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCeBA4C2f512Fc214B91f93d7df95AE49d2E11911": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5fDE1aE8D78c020EdDB41D70cfc3E91598268c74": { + "balance": "0x3635c9adc5dea00000" + }, + "0x691ea17f6Da2D147C36017c7d6D3AC0A92ED4B25": { + "balance": "0x3635c9adc5dea00000" + }, + "0x76a5E36De1848EAADcdd51F4345d669547f98A0F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdF3b1B4745cDF22a934A49808ACEdff4d30b7eA7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x25B1C974d0Fec87D875a5dEE28d94ABC123FD6c6": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf62BC2f2e2F8c57C47318934D2BDAFD514841868": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB287928ad13A9c8153C34F688C7692d90A10d468": { + "balance": "0x3635c9adc5dea00000" + }, + "0x766E143A96C8CeF1B770501AB50F98BCE9ee7BF3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1aa00fbEbBCf0843fb1e1953E84176F85C874C4a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xAb22e8A589BC683ef2324e888e996f1dd45387B0": { + "balance": "0x3635c9adc5dea00000" + }, + "0xeA1E0FEe9E02045377f6B80ec43962C575a6B5F6": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcFFB1F7f279929aF8F1A112B267837BD95A96075": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2FF3eBC4A30fd9e45725b6B5f2C59de5C64bFc13": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6158B72682B652E2CAF504763ed79855c40E33dE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x16F1764c03c2105067F31e70cf06C39302EC5A4a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe9996B5600131D5F6D3c0B5e45Ee7BD543137Da5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x22cb787cf6E9c64F4611cD09EEBC3a368e36B1dc": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEf472908e91eFB58EDc3Fe4a8244E6FC47C1eF1E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA09bdF8f93c489e374071c0B0049Fd83A738a6bf": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDdBBF38C9812295294EF0BC651450a5F75916a3b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x15aC761bf009af361Cb41A591C1619d64f9bBac8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf03dc49141d765490098AD22676a492871aB6666": { + "balance": "0x3635c9adc5dea00000" + }, + "0x58F7bc15a9802f64B48Cc0baBB19A324Eb8c49cA": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa2529B68483eFA17695671F3472D004Eb93448aC": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa262b1dA34c0b3698Ad4F7333E75F1270Be4e4f0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0B9421CA5C8024bdC66d40cd0a16275c36Ce1965": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb069378f78D1D9F09aaB47e56Ac18fE8b0e85D8E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf8aca4E69a6a8aFbcfc3f22E6391c725461253f7": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA3885AB83a70613C1Fc2EaFFa9a2A239b977F1b7": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf66B40b0de50754Ad3c903109CB7ef203745869c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x489e4c45fE495a712149962B9AA73aCE984A5c3A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7Ce150c9665b64b368d952585ae9009c9c59DFc6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x537F7a11d563a5Cce03E857f563F7e31f3984665": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE88b2D966D0BC77226f59BA2eE446531a505bCa6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x184CAE8ef91a63Ae2eA3AaDbd8dB9437f890d813": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDA42D2121ad5Ca7B0e7669537815a97833FC9fC1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9f77032482cBeF91db4a0900CF32582Be4BD60dC": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE134aE34e5030b2D5264A3A0E7f0E98A06641401": { + "balance": "0x3635c9adc5dea00000" + }, + "0x65f53eCEB983723525fFeb59F76306ed75AEC7ae": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF2F717f7B96A1bdEF0519ABC85B2d541768EcFFb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9259555209A0D0790d51003d5BA96c80464a41F3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x29928c65F5eDaE854766E22B02187d6B0361a048": { + "balance": "0x3635c9adc5dea00000" + }, + "0x695676F4b5ea2AFb32Af2182873Bb8032B7E3c25": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfF2e707B12D2f9B1315E2963474Ed6f9D5b81707": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5B402a7d458b641aa8ddaAF4aA547f3D125C7903": { + "balance": "0x3635c9adc5dea00000" + }, + "0x352f39e82DA6f17E2c51Dd9c1dBa9FFCbf4390e6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x35b1588a787998D77AB73E3c9365C6C2056E17BE": { + "balance": "0x3635c9adc5dea00000" + }, + "0xef553607b3375004604CF699243cFb53F3150517": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE305b66B6Ac931C0dEE2259a233782399c5d9c5D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0d854bC5e200c3a2Ff2D92A91BB54beaF12402Cf": { + "balance": "0x3635c9adc5dea00000" + }, + "0x15A105358AcD9389EfAE33196ac079F5cf4F520F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7380A4E76B595718034910BD95390fC439F406c8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x53b1a5B27757c87aD8b13608B1A6F26Abae188a6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x37bD07e381F037689bD80e39e3F115a401D892B3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x493e69B80BBeB5641BAfc8178c57a6f4b899bD4b": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcCB05683bf921660C79E4E665CaC90c24A8cd10c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x53640Ec04408F04Dad5df570aC93c695D0FabeaF": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA0C8fb6626DCbf36bFEaAFA070393383f1EFcC48": { + "balance": "0x3635c9adc5dea00000" + }, + "0x279Dd5ea05242acF03E0b48A0fe9a3061d9B1Af4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2342525952cF3DC0a8d3fBaBe51b59689000E514": { + "balance": "0x3635c9adc5dea00000" + }, + "0x873B83879a33289953fBBc266B1a2800a5ff1dA7": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc4eA742175Cd101907A06873a2ccFfb4DBCB3F38": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe8b71A985fD596B257085AAA31613388E3b75DDf": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3e3D6679aA2BE15F5cF1c9B4053Fb8bD7c87B6D4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8376119346f8BF29D2933bC5ecF68fbd1d450e11": { + "balance": "0x3635c9adc5dea00000" + }, + "0x99244313EaA8De1B78596F3DC61E69Fa3c22dCfD": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE2757B325F15D165cb28400bCdbA29e7D0Ce843b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x59EbAEB8c20560bf7FE9Bf177E7D81dC12641e4a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCcEAdF14769939d9479Ba4bB526C08e92D6FAad4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x32e9aE4D1A1BaFeAC7e9f9107Fe7cB536D21F44f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5fa24eEdE06485aC1b1F99cf65ebA9B1419B0876": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb5108B7B0D793D4766AF6aA88E2061dFe2600593": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4D642728559D71930C7Be5c032F6f6a8EAa9A356": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD4DB7B2c0FCF5463273C9EeCB1Bc2Ca672521F6E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x48296587Ef9Af4514245b7fD161989f1AFce13f4": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf0ed4075fCFDA1a1EB1eF240160D9401DF9EBaAE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x097E934E6d5156C1d9a403a94CfBeE872FBe5542": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa6efA1E972312881346D8F4162772D4df9c604d1": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF324Af3fa738A2360c170AAA0F4189f15585b308": { + "balance": "0x3635c9adc5dea00000" + }, + "0x286B520B85B39c89a623602D44C07c237c9111b2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdE0dD78Ed1904C1838833e1e2Eac198974dEC662": { + "balance": "0x3635c9adc5dea00000" + }, + "0x25fC3d1E55247637B1833c197e0332e9EAC0AEAb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x526402C127A5172b4A6CB2bC7638468f9A9c5444": { + "balance": "0x3635c9adc5dea00000" + }, + "0x909aA3F6f37a43306B2059Dc97e56FA4e27912D0": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfa60Edeb4FBbd18DA822F5E23370f433c017B326": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3202AcDe1703d2c81Cc9F2877c9C65197f5E6B96": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE6B7cfb9862aF48D19bBeeBB55c59A72Eddf2396": { + "balance": "0x3635c9adc5dea00000" + }, + "0xAd88A8AbaD62827443e8e268654f5bCD658F8298": { + "balance": "0x3635c9adc5dea00000" + }, + "0x194aa351D9bbAF7668DB73478CB913Ae3389288d": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1E9Fb5588567726aC67684deCB540637CabF68B2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcB203A9cA0E66dd6D427a2c8E3bcc3a729ddc41C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x576A3Bc621e17fF789643d0F55cA29D7F1fe54A3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x89A6B1Dd76a0b2B5F1504346C4cE4F4074673C9b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x564a1C1040fbaed9277AfCD5779667EeeaeE72d2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0eAAAA726C2ceF5711ebEc4b88b7c287670467C2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa2b2cC985901D49d38E57fA208608e604d8Ca0CA": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9141bFBB23ed32838A5015aaAAB5d8b56ABe9751": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4C0950b8C1d11380C190EdE819Afe20Cf0ac0D23": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD81f96655aB90DB6cD33875BC3613064EC7b2817": { + "balance": "0x3635c9adc5dea00000" + }, + "0x871DB957CBDD4F4cb51fc202aC33e6702FBCE4C7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8122c2595af059eBF48870F4e37eA810eCB3515f": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB691Fe7e9E8938c9c81f7D9f9aaaAC51BC17bd94": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7E99fdeF705F2CF0b2C622871FEaFF663A255771": { + "balance": "0x3635c9adc5dea00000" + }, + "0x592A2110cFc8CcC77eF1a5F03bA0E916307f9401": { + "balance": "0x3635c9adc5dea00000" + }, + "0x22d554850F2229868183f7C97E06E3a6aBC12Ff8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7D3f7D4d1B51451B4e8751Df239396a3dd55DB01": { + "balance": "0x3635c9adc5dea00000" + }, + "0x791425C65Fa1Fa8a5bA83eDFe956675d115B6e3b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x350863E9b23CB2041b2B4Bc32EFaf8a8e1e0D58B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3823307c33a34c3135Cac46df0E3F1a65689209C": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaF7240522f5046FBae7CF3cdBb8b70E2f0321288": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9B9A2c90660473067310c06920434Da30f06aCca": { + "balance": "0x3635c9adc5dea00000" + }, + "0xAAE9e43EdfaDd3a4C8da64cFBDFC4ECDA6131537": { + "balance": "0x3635c9adc5dea00000" + }, + "0x27b79603271B818425aaf0940D8Cb73eB5201b01": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1a70d83ed3F5eD88A1a40dEc87F6c854D153E423": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5BDFB90B8A9Bb13F2C8A42393a7c6FE742E89A4B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x07c33725C7407998D37E11a279074739AC652541": { + "balance": "0x3635c9adc5dea00000" + }, + "0x246259F917070900f17B4bC65C6eA0427D3DD145": { + "balance": "0x3635c9adc5dea00000" + }, + "0x44af16510664152cC0EeC1320f7f9EB66789289f": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD4F5d386bCAc9C7739e2a0AC99c01fcb62a0Ec57": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFFd68D3E815201d3D0F2Ebf021921E6d2C4A0739": { + "balance": "0x3635c9adc5dea00000" + }, + "0x799e38176A1f822D7660Fdb147B466B36EB1a456": { + "balance": "0x3635c9adc5dea00000" + }, + "0x451c2779Dd05df73c294B12eeD3ad09760a44f65": { + "balance": "0x3635c9adc5dea00000" + }, + "0x395204C2f61a04f0cA515dE24EA8f30ce06E9B88": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe9FB257dE4851e53837051A2d4089E1e07DdBd8d": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE843186faaf445311aD50E84D063eD6E8ac3061F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa31D7E7147397f6E3a60eF1cb8706aeD699AEBB5": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfbA49CE71841886D67f03264Be7b779E1e0a9047": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa8fEDe7B23A8B58B8035E15BE06C92b3c9430643": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9F00C203F334ed8c2E83AcCC62217af5C7634fEE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7DaF01449c9Bd0790d0172914802bBb0D1f86889": { + "balance": "0x3635c9adc5dea00000" + }, + "0xBE4E52227BbDA6dbbfC420fD15c1FCf7B49c002f": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCdBb6a9f44469b44366Ec3FeD840fC4c0E6Cce7e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x14c1e61C1C88Db001465a6da8cA15FF444d53867": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7bC352b4A0A770B4b581A890798d96102928c27B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1c4a351BcdEA292e72807a5d7CD953b29Dca4b9C": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEd138A117783a406AC2Cf1aCfCB84d4dfe3940E8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD73EF2C709A9481eB4c6cE70EEe99FD52D76736a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8C4c2638C6d6dDE1Bf9051fAF76b9367A85997C7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x64C2b1cd6644a4a2539b4A7Df0f8bE551467B08A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x739cE0dAAC761972CefdD71Ce21f8d09B98BE2Ed": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9f95e16cb4dE81cED5D513E1C1A29F6eBc71eE75": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2c8BAeBeeb87489a1c7dC81d9529158f90764144": { + "balance": "0x3635c9adc5dea00000" + }, + "0x155dC40e78b67d4BB50ad1ea365bb1372d374AbD": { + "balance": "0x3635c9adc5dea00000" + }, + "0x05742A404f980a956B747EE5e3e2220160FE27eD": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDfB48825262004Eeed8267638e6a142AC59F97C1": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB0eBe36A618255Bd2C95EDFD02C12754C57B3EcD": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8DEEA2b44A0B4051c594c53077A86D5d4AbfF7a0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x58E543141124989b0344cE71ed48216BbFC0429E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3F421F1ba60621Da82CCbDCe6d3CDb496edDAe68": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2281821f9A2c9CE2A15A07B0a49897FdbaD038B8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8A18Eb9AfF3E6FA1b82b8fBfE16fDe5DE29E4d55": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD32E072bf92c384b415f7934401e587FeF5e0821": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC19B16dCFb87c6D7c914d35A8F8391ad72572062": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0a8AeddBc8b74536b60bB4B72C3442acd3D57Fa3": { + "balance": "0x3635c9adc5dea00000" + }, + "0xAF7E2154CD6F95A67da67D507B7177bC805Bffb5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x96edd2D6218B162391177Cf7512826f69af010DE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0772fC1d0B96CA9000F31ee7E4777927A851E403": { + "balance": "0x3635c9adc5dea00000" + }, + "0x901b62c41eB5a9EABC2339F0810B3D9A5f065Dd5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x73C8670780E6Fe1Ea0C1617F89507A11D8E0A812": { + "balance": "0x3635c9adc5dea00000" + }, + "0x15c8Ed36bD8265E705874361d0Cbf79BadF463C0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1e66a4831af6ec26B702F344b9934EA3dbDDA95F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfBef97270065ad631d84567683563c21903E2caa": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE20143437e023db5a73f4Ca26d6846Bf7E506453": { + "balance": "0x3635c9adc5dea00000" + }, + "0x01Cab7873dA1e920CdC5E50B13189fB540e716f2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa5C9dD901703B84DEED6947d24c1d1fEf029E42C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x65536d8B10B65c534c64Ca96fB1e1A2bf7b58486": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2B0B6886f990774ba8c3DE5038bb3214Cd350e26": { + "balance": "0x3635c9adc5dea00000" + }, + "0x44b072a861d0f1FA6d68604E9AA14Cc3E4575eF0": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaC15B3AD2298122aB2f06Ead09a315a52acEBa05": { + "balance": "0x3635c9adc5dea00000" + }, + "0x18232135CBfA62aa1F8DedBbafa82801692b5602": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5188E27FBF40245300Adb2DFD25E72C314d1b8C1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3A913107FFf20Aa9A74b870C98c9F1a45CE2410e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x458091B355E0BC8EfC3a51558e31F1CC0AB3fFF2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x327EaD2c4E232c095cA238306F735594F34d254c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x35BB0e0578239C847c892dFb6e7cd486caA8CDBf": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4496D263f233C93C2f095deb4B20edF952A12Ee9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x02F4A52875170d052A8CA657f636509451E42FEE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x496Cf52Ed6a00Ac0a22C2B83DA37A20c3078885a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdd1C91C66703b26B8914Da05793CBDF8fcD8c72E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8f6BB9460c4F0B3d137472082a0B835015b3C4B4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x492d7A8863210b6Da6B95A3ef14E0dc188bdb937": { + "balance": "0x3635c9adc5dea00000" + }, + "0x24f8fbfA87300e3D5138864Ee30198D6f3feDC50": { + "balance": "0x3635c9adc5dea00000" + }, + "0x72932E7230D950f66F104b79D37B8FB3b0545872": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2a45ee761377d0f69bD849Ce804ee11bE4F51359": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7783416D47E28FE1906d517c22475F08b2A0d1Cb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5a5630198b03Ec4dc04F24FB25D68eA7E50205d9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDcc697d383D4F2242c180163733AC3873B05CfFb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x386cB7913C84d88bd668A9C8524d84F7D55cB687": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2B3670275f8B2898daAC959739F382314524a254": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5CeDda10721b293b9653B57eFb3966402ea36506": { + "balance": "0x3635c9adc5dea00000" + }, + "0x79691E192Bf9365CF85d1e47f16e46ba1D761fAB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0ebc3aC1F62340c1cFF0C7bDBbD34210b36c11fb": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCd57595D8686C77Eaa23b5A1A4d00D0DE5806BE9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x54C25791573Aae4e0999a5548E3F69B68B52c68A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x14fD65bE8b64711ccF754F57ee4A07547Ef0776e": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEE277D518757748A74120A5b4f73DAf2728b2834": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF68078a1FbAb3104FF853a9E6e82c9A37c20095A": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf5857E9a0076D45601150287Eb9Cb86568Dc6970": { + "balance": "0x3635c9adc5dea00000" + }, + "0x39Ca674db645438034f8f37f84b4e2ecd1810dF4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4622410d1C8910E2F3da6fDaFbCbeEf20725a5d6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x33AAEefc78cc8eB771a7f87c7fF4184867ad71b4": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB8D107eDA31051F758422e5091b66ADBefAF09D2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDBf4abECa1d96065b5cE1CD41B731f7Ae111B7c6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6B8869BBaE8DE517e133d8e70484B9396dDCadB6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6319110Fb5be3BD950770C4b6cDbdDF24f17A31C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9B1f04eAbC55bfC4245B7fe0de2a1598106846Bf": { + "balance": "0x3635c9adc5dea00000" + }, + "0xec4c400af8017cdA6dF53C7B27F6DeA010d684D3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4925ACe13De82E57B7578a894384a1e6D4DE3D18": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE59839f8102b061830E2B9D813538151aA868A93": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2B8631f6BCf538349F56d55771D33fb296646ae0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x00756cD9C01c1E5DC581221DF003fbA4a5BC0B65": { + "balance": "0x3635c9adc5dea00000" + }, + "0x49FB26E3020409Bc4d6A581091C6551914548524": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD6254508DaDaEa4b4Eb41D54b931f55b4125B2EB": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFD0EB06Cd27B74daf8bf86DDfE2ed4e3dC1C2Ef9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2C6faf4bD2ae25C1772d2cBfA15ADf062B792D0f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7167FbD3d17420c8d2440d18c16df6Fff3E853fd": { + "balance": "0x3635c9adc5dea00000" + }, + "0x76372b7Ce31D5D865cf17C6dC3b290F6AaAb252f": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA63Bb01B364A18aEeB4A3E8F1339eECd58165353": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9054AA970A27e0C79a4a0addFec320967b1FFbFc": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe1DF75C3A2E7a0Baf134703db14c89D71eB52cFa": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5f2662a0Eed532446bEd886bF31E1e09a50f5c1B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc3a36Ea554501DddD91Bd4ac8ECdb0372192ADcA": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7A5Af52146c63788cF9DbF5134aecD9A336543A4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5AB3F56Ef1DAD52997a92Ec0E0209E051922B22A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5f9384084a5A7864977A88ccEFCc53CfE4296221": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd1F26297b4846E16Bcb4D67614e683227Ee40583": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9F7C40791ff9FB6B545338dF9BbA86F823DC67d3": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE59A3C6Dc9434b7d34fD25b05fdEd25d727Cff73": { + "balance": "0x3635c9adc5dea00000" + }, + "0x404df3B33f4b0b106Dc828702c6975AFDDF04401": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC7cD4cb40227206F1Db0A8e282Ac05Ee836138DC": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4A1A0015d475bA6Af3B74Ce5442Ee207dA38BbB7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5a203549EeEeDA4E1F810D09831e9676B0683DA6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x83291D5d2d2EBBA763da85af25fdD405a54a2909": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7df1D926e460a9A77a53E7aC4C8aB76ef0D0CF2E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9Bd4060C916D9FF9B0b7133cAbCbEe8F5aA5b8f2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9159BBf36edc422Cb0c4181Dc72765E55e12ED95": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF84A170335CC26A24475E705d54589eD76eA882a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3dEbBBD53BE5f339e39B23051f0c0016FF89090B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x894595bbe90C74BE53963a71865536207A99E4bd": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2AF655a16EAD73Df7B347306a8120f3F96184E3A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x49178b86c5F034e015a3534144414da3170009Cf": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4DadD9d897AC8f4746d80285Ef3B20AD223DFD3A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1ebE72d5406dc1bd771e0f4D262d0c85f665d8C3": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEeE2ed635ff8cbaDf12718c2D4E51712B8048B11": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd54C1D5Ecf41f822C0E432A8495b9fa0deE65b78": { + "balance": "0x3635c9adc5dea00000" + }, + "0x266749d96e6F9330187B8715E0b6Cc116DEDeAFe": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd632b57D0210F2279fdf68B03EfdC8546945aF0B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF0aC2a95aCC4cDeD32380E3b933335DfEcF8F3F1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x90B9a3cd492519C13dD713E728F8DA55CF1502c2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCa9BDbAdd06bdcd3fC5FAd3754F9f2e40072FcA8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEfFa0DB1F89A40cd31CD18ae25557Ad4499E8068": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2Be768804C3018A18E35330401316F5f2885e1fD": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6bB5D270244519AaC04F93D739726ca930343E38": { + "balance": "0x3635c9adc5dea00000" + }, + "0x024153f35ce4AfD75a49c25F6Fd34AE9B5BEAe2a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaca60723439F0EFF543dF9398B3BDC7eB21616Cc": { + "balance": "0x3635c9adc5dea00000" + }, + "0x39F867cC1185D89B33Ec1fc63c2472DC27f17564": { + "balance": "0x3635c9adc5dea00000" + }, + "0x902FAC7377EAaB2f0A52C8C7524282561310246b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3FD9AA56caE4BF489D072dA526e5dCEF16a75AE2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf226BDbAe8a259f256E5258330E1Fb95b86BD915": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd9fE75c9779dA2F69834b51C04B0EfEA5D4c8B18": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8Dd15960c9549A3B953bf5E8cf7a38Cd694004C5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x83fF7DFE46A9C0fd3288616b9e82277DdCDe6cC2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xdC5D1B6cCD19E59Cb1C3D8eCe7D417a76Ac58329": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4914A98CB085F7f8cB1f67c7d4b7D0DEE2F603b6": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb3C5e1e1f60dbCDe9f1D17Ad224e050F76503E58": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF2a980f0Ef5B2d7572899ad5cB7114BBEE0676F1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0f123F977e8f72886852A621a9492A48AC733639": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3972AA96d97a0E7f4AABbDd87d5A01d43A190664": { + "balance": "0x3635c9adc5dea00000" + }, + "0xbc6004696c54025D8A0eACb127fCDAfFB6121616": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe45b821bBeb3F2FF7F4D7B8962063c261084db8e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5d0A979cFDc6C9498Be9f4C563Ac726E28ADCc73": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7b4A703804F762AB6A9d441d287fB3A4DbEF1FD3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3D0E0cBdfa890Bc1e590291B649EA0BB249fB3Ef": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc71d617c57053d21450a9cF1Fda90D4E8a188186": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa8Ba77b6d421d9412062d1ba7684f6Ce65E854A8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaD99a5D1e3b1B49f02A5a917F8B88459Fa562AB2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0f02388812A99210D716bEF32Cc907c8FaFc7f87": { + "balance": "0x3635c9adc5dea00000" + }, + "0x21015eb086b319B754A0250d226195A3892BBB32": { + "balance": "0x3635c9adc5dea00000" + }, + "0x221C7f72640e89C0Dc431EA8cB63a5B397B41257": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC4E811270CFe4286e9B293F35E9F67ca1939B03F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x687e73dAf0B4CdE071eC87A752C5C69d7d06C65d": { + "balance": "0x3635c9adc5dea00000" + }, + "0x376417bdaFA8aa769EB34359ec3deFF5fD4854EF": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5F8A90ff2E44c3f4Eb2087A6A11E497e73d7D114": { + "balance": "0x3635c9adc5dea00000" + }, + "0xBEcaCfb8D7554d8126C51DE270123b06BcDC6Afc": { + "balance": "0x3635c9adc5dea00000" + }, + "0x22Dd119cd252d7878eE5493C80C881468e18c328": { + "balance": "0x3635c9adc5dea00000" + }, + "0x529e1FeB5FF39531A298C1B6ba87Ce6DF4EFDfE9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x45e0377Bc26d63Cd400F5Ad510161C5de75F98dB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1eEc185b72072d552c98cC9886Ef98531a3B439b": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe46c1d9eC51f483646142Bc9A7F9Ae9e5e877Ca7": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFc564C73a8B594f7c1B926aE0575AD95e482F6E7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9C144055D373848F5478528de126b71751A28Dd4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x832cb569e044b35534ADCC846AAf2f89A356A9dA": { + "balance": "0x3635c9adc5dea00000" + }, + "0x794add653D68F9869b1C6c3A0B4875A5a48A86a0": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE8f6f0Fd083bF3a2648df88ad0f0690Afb1E584C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5d52Bf1f92F96BE28b51E166901acFcc7B0513CB": { + "balance": "0x3635c9adc5dea00000" + }, + "0xf77DbFBA7f4B996FA0eB4c3f6B3F5424DCE8ED20": { + "balance": "0x3635c9adc5dea00000" + }, + "0x13eBF7C037ee6B4c72C53c3AC2C2cBD2250A8e89": { + "balance": "0x3635c9adc5dea00000" + }, + "0x24945556BC97fe586AD866e1Ee515329882465c7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x41b6C82f8A5A801a5CD30EEC68dc18d1118b08A9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEbBff56200C0e45dd4E4c8Bb7485Fa32868f6d05": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA9CC19448Bfb0b93D65CD1Ea248070Af388246b3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4f43fe4Ab18e4808B21e233bE165E859fAb7bE04": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF6Bea045cE958ad0526093b9323Fba4656Ef581C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x21AA7AD88d371447afD7203FB7EBA362EF399A9F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2250249c75B61396b675bFF9711B305E92d0C9F4": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA2a791327065F426cA8902CE94Fef4c12928F989": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFc8A756C495172d0C5eaDb0de900B14De21e9609": { + "balance": "0x3635c9adc5dea00000" + }, + "0x72F82DDaB824BdaC7d5117BC676Ea28faeAa192a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4B8C63B0A79E881EAD711bf44CaAA8dd623AD024": { + "balance": "0x3635c9adc5dea00000" + }, + "0x42E988E32787D9B02c848B7459b32784b1E6a6Cf": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4b69fbdcaB6b6A377a1d748499979a3b5BE5a389": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB443cf6c01A25e437341198E593305e8EdfFf1E0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x43E90d15f4938B36D2Eb0e01b0f9A30c9b18Cebf": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE8a33C1c58759e51312CF673d86c13F7d99ae906": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9Ecf573f3e5B93E40b066825c5EF0c998b4e18db": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5573693EDC1De48304d8000fb4341fF415cD8b98": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9B9cE2F43a8BD66A6dcFd87bB018b5639C12F37C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x51A56420E8D9bCCBFF3fC503c5896F717153C4d9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD42C56c0Fad5BA4026f37Ba22BF0c95b67daE5bf": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5eF9A8867202A25ecDe500b9aeABdBa2aeC58ca2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7ef5E8110Aa3B89EE6341DcAfb6447d894a0058F": { + "balance": "0x3635c9adc5dea00000" + }, + "0xeE49F70c0725e1e6a6F0C4943d05690211259AC9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3Ba585571F95DDf91319a91C78305Fc061D4f908": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcc94185c02e4842Ca43Fea0E6ed2AbCeAA86cEcE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9B3E57832C80088b627A1690cfDbf9437cF5631e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7177C282FbF758815C59CAE12bC3644764452c74": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7046721C10D827f7C468d3Dc7456acF819F0668F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x19767c5F3bEefE4C0c7de6027Cb60C6896fdaF90": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB978a8aa50275c8bf4C4c3A8dC5123171D0db789": { + "balance": "0x3635c9adc5dea00000" + }, + "0x865E413DD6CcA055d14E64fA09942403fCdf2Af0": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC12AA26F0DDB8a5CaD18aF1B9b8f00d9c84a3097": { + "balance": "0x3635c9adc5dea00000" + }, + "0x04B06d5932f5b74a029E0C9C6548a56A6Da1C2A6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4461D5cA2e9dcF3e4cfB3b6E4DEf893dbcA149b5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x015fD0bD41f098c8a2e9B7A5c1B1494A2C79Df44": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCA58303CD5fD40f6460005837CCdf119411dA170": { + "balance": "0x3635c9adc5dea00000" + }, + "0x82AA0dfEd7D48D66172675DB6e183bd871216863": { + "balance": "0x3635c9adc5dea00000" + }, + "0x10Ce586D5775c2E618A6Dc38df0fd120eCEC4df8": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE888440325EEA6c6ad8D3f8b77ea1418a2C91cB0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1bB25D5afbC69F7b76Ef1A9FE8498c63e52473Be": { + "balance": "0x3635c9adc5dea00000" + }, + "0x99c88b62737cD9bfbAA84a79115003c40eC73c4e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5470e0f45019909b4ab59900589CF4404b74c55B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6FDF1ED5d448d49c2bb8D24E44B5A3E43F42739a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcB77Db885290F968631A7a2e48a0F3B7f3f62cEE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x83444E3247cfEAf95b4eF8d28b9B8C3b8373C5a3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x916F2D32b5f50798cdAdbff015444CC3Fac59424": { + "balance": "0x3635c9adc5dea00000" + }, + "0x551DC09957a94C735fE118DCEE22823f9c223607": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd00f5F46113950e5f15B042e0FEACCbd98ed9451": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1Dbdf17A351C3b1118aBeBAD78ef1b92D9C2D10B": { + "balance": "0x3635c9adc5dea00000" + }, + "0x71D5DE853bF74D7A87032b3Ca4Bee43719F3F662": { + "balance": "0x3635c9adc5dea00000" + }, + "0xABFcD5FFFc54bc380e826a5D6d4429BD062C8326": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4E0aceb50EB60D6C74380c13dea09d16942dbCb2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0948a8347763d5980962fcA0386DbD7bC13fdd9e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x88D1B6caC49544B115eC50D0eaf39BEE1f0c49Dd": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE618910D512Dd37C7b39b16A5021ac3619b51882": { + "balance": "0x3635c9adc5dea00000" + }, + "0x18c11810177CF1cE614CD47821abE697DC02bd76": { + "balance": "0x3635c9adc5dea00000" + }, + "0x310842a7a9fC70eFCFF04542eb1c8d28B1C0c2Cb": { + "balance": "0x3635c9adc5dea00000" + }, + "0x56D49611bD2D69D664de9d6EA0962097843bb075": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3091a649da27f458a4C3D0f1E73B60477512E9f8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5121A79ee3c0C1033FEBf8fD599478d5a60184Ba": { + "balance": "0x3635c9adc5dea00000" + }, + "0x03B31c2732cC788FE06b1Aa5B7481825A74Cad5A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x271712c9dad2B654b247Bf3C62E47169e14D123F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x33dd384B9510AD2458283D8d56698441A5D4AFe4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7FF2D78DD289b2b1C55A56B8a7ddf9113D72952D": { + "balance": "0x3635c9adc5dea00000" + }, + "0xeF6Ea0AfD40275693eA9546eE868FEBbE93E39A4": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFd55D053799A67527b9797A81197450C6Cbe1a56": { + "balance": "0x3635c9adc5dea00000" + }, + "0x11558aea2f13df30Ec91E1B4209647564c827907": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE7d275A85316050Bb9901D20c6101382218aCCEF": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcA7F8E1ab30bE9d4873ca62022A7C48dE1B0a840": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4633fdA2bC5f6366F8d4c6673Ab78c5E122F6cC4": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb8C51Ec3D1edcb89E532135A7Fb602Ad39b7Dd07": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC72B94EC52d50d56398f91De90437847c236Dd34": { + "balance": "0x3635c9adc5dea00000" + }, + "0xfF12CD3D963B044a08b02A875E15E4731D135aFa": { + "balance": "0x3635c9adc5dea00000" + }, + "0x345D8bDf25Fd772822777B03a8DBf3082B8f0aF2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x643D910192FD1AD06FABb31bB0c8afbf9a11f5f7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9f842ADad32F0AbcaD01b26bA9fF49fe753DAe3c": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE71D0499Ef393Ce10853B10ce3149D389505804c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x419250731C2672bC75410D4761A8C319ACEf0C1b": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC9B3F7AbBfff65db03D4209E6A377BA50CDe3392": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE268E106fA830aE6f6036DcE62F2bd32640aA90e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2D5987d6aDBfB5075272721f4Df13daB7facdD14": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA29c76A5F1110361Aa599aE63B224e62426eD423": { + "balance": "0x3635c9adc5dea00000" + }, + "0x420136302262654b11B82E935988Bfb82F46868C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3418336996b42C6D9Be1F6A1e57CeB03392f3498": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF8c5b52B090d466453F01A5Ef441129e287961a2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xcbF7b5611bFd7b7fb7AaD9a028Cb48208DD2afE3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x60aA1EBA9c1FC7Adbda6b01547A725bCc8c7c219": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2c36F7488a86e6c609528BaFadd39EEA704F8038": { + "balance": "0x3635c9adc5dea00000" + }, + "0x31886BA647883c92F9Ecf643621d6ca37C140f01": { + "balance": "0x3635c9adc5dea00000" + }, + "0x381b25F88Ce9f92A4bdA2A4c2d5E9BAF28e829E2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb3c94DBDB9776F324c9892F4086e3092b4F69136": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCF680190662ef870Ab8A064E7F10d04C2aA9d903": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9e57020473656375f2633C1Ae11cDCBdA83B7D16": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF7df2dbAaBD4b08E5b2097Cb64A74Aa868684394": { + "balance": "0x3635c9adc5dea00000" + }, + "0x426694a5A2f9a3a0972299a314fB68354b1C5113": { + "balance": "0x3635c9adc5dea00000" + }, + "0x78c3468508A980fCC9f5BfB16a6337826D9906f3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x33079682325CEb5163f233d057cA022568ab7DE9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD3a5A61f4e55b64f07C4cEfD563FF88FFB49B1Fa": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7D19Be211E5635aB24A69Bd31b7410E934625EE4": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa89F1F0864ba148E38fE62683d5337d5B3f12a02": { + "balance": "0x3635c9adc5dea00000" + }, + "0xbA75AA1E6CAB41384298b6c0615D88f8363d4A5C": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6F73B3a466391d8faB42977cdf97d2312b0768a3": { + "balance": "0x3635c9adc5dea00000" + }, + "0xefd66a758954a1E9EdA760E8C3860D8D0b9f1e00": { + "balance": "0x3635c9adc5dea00000" + }, + "0x608FE9c2Dc38F18a660484D6F37d1BAedA910FcF": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3eb780f37814348657f054B36D1904b7a9750FE7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x07E32e9C56ef09A41f255E555B3F7F6E39345dfa": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9BD9b9EEB985fc143316f8Be049cd49DB5684B50": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE32B821f74129E2AF38BBF017A41E7890b98C7c4": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD889de36956e40E34d8D12D8Fe38862F9E454769": { + "balance": "0x3635c9adc5dea00000" + }, + "0x04Ceb99f70EAAB0E25EdE7E7f4d848d2ee8f44F8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5c8B92a084017e944d42bA694943C0b0c37cd068": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaFB5Ad2Ef231993acd46f765421AEf6fdaFf7375": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD0D68Da9700B8F5a471D802A3f05531Fcc7461e3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x87233F9DD91a8C26e3085Bd461d504CD77Bc4c19": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF575cc0d25D5A248a557eeE9f18366c2Fd635498": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8C835a18059c0df818DC206E03D0790183D9ddBc": { + "balance": "0x3635c9adc5dea00000" + }, + "0xDd193fe58d6ab098a3E8cF226d9d5CAE270C3C85": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa77C9F267666F7743471855a1ABb2dB539316505": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3261e51352F932E4D6ea6f2ccAc3D870BFf47058": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8e5a8B1e9C9d90790F4f5232039FC7a3178BF657": { + "balance": "0x3635c9adc5dea00000" + }, + "0xb54b7bDF7c88fE84b932f8a34305a35dedC27aED": { + "balance": "0x3635c9adc5dea00000" + }, + "0x807821E8eF2E2Bf8fE850AeDa26657Ad7753C046": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8B7e53f2Eb682BEE0B16b35940B8Fd81128a7BDa": { + "balance": "0x3635c9adc5dea00000" + }, + "0x36c64F561346282eC6b194f3ba68BB1d7089Ad24": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCB368c4d4b80F08e8650d5fAff3BD0f6Fe33CC18": { + "balance": "0x3635c9adc5dea00000" + }, + "0xE1792F0ad6e799233F1d3F4A8eFa2D41899817D2": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD24A27d989b0CfEd77804040CD3f5057eAE66cDd": { + "balance": "0x3635c9adc5dea00000" + }, + "0x194a47805C9A7b82d4690356FebA78B4DD11Dc38": { + "balance": "0x3635c9adc5dea00000" + }, + "0x442B19734fEd70f14ED2d7b1D00aAd3DBa9f1034": { + "balance": "0x3635c9adc5dea00000" + }, + "0x622d421d5cFB58821e6457a242B18BD65230FAe2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x173326B238A0111a91c903Bfec19cA2bc2B75616": { + "balance": "0x3635c9adc5dea00000" + }, + "0x667FCb5627C50c70CF6150348b4e176DaF3C5E3F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x05c07FA1a4e4867153FCB96736779F4bBA53BEA7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x320930aac5B033C3793209E8EAca000FCA596965": { + "balance": "0x3635c9adc5dea00000" + }, + "0xADd87ffd8c5bA04cA465E359418BF4549F9496B5": { + "balance": "0x3635c9adc5dea00000" + }, + "0x26096C66914cBb39C0aA67D448dE7cE194435921": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5d5004Abc417F97fb509269f321429feB3277857": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4c74ec13F7F5a94F03b8831E070B442AF6f0550B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xFD091c57700c821c2D11282148dB16765777442b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3635F61e693beB645f3fD0Bb4Eb411F33493883E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1d4602C11c3C33b1FdBF5b1DC25E356d60FA5CCE": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1Fd6E59544c943470C0dE7d5C982bc7792B1A781": { + "balance": "0x3635c9adc5dea00000" + }, + "0x625D60EFB26CC85433Ea3ACfC6dFA7F1CaF223C8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x796D150e0A7024EEC61EFebE48E90CEedBfc6D43": { + "balance": "0x3635c9adc5dea00000" + }, + "0x20092724ad1ffF8E31E2c49f100B05a855cAa6F9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x70F857CFbe9F473880E0d7F5D10F24332a0Ae9F6": { + "balance": "0x3635c9adc5dea00000" + }, + "0x15aaFc70e2A74fFef28020868B6d8BD81ad03b54": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7c0720bbfc707F80E1F2F72c0E4e298c4F012399": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2c2AB978f5F01866f6950EFab5A6A047595c4270": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5F1a100139C727E3bD18ab3fb334a7c5C947CA89": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8C45D103306144e68a95c00Be814c5a7311B8b7d": { + "balance": "0x3635c9adc5dea00000" + }, + "0xA5a8c53865124d30619ac1D2A1B6C1Bde295A77f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6591F9fbbAA0992cd35EDA1911cbc23937643b2a": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEDe9095786540622d1e270Bb6AE36505DED9C824": { + "balance": "0x3635c9adc5dea00000" + }, + "0x176d455C8f8A31605779F9c4d7924005708aC24A": { + "balance": "0x3635c9adc5dea00000" + }, + "0x57357b75BfB15288C06362f7433637C426298b49": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCFEEe4291e292dAe3a5c5E5DDbA37fAefBe6a2DE": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC22c2a57120B54f699BD6679530e36bB8e607A09": { + "balance": "0x3635c9adc5dea00000" + }, + "0x94B63eaAC8Ac77779e613Fd7B8cC54f4AEf43652": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd209B574be590AAbC82849aCD69895Deb1a2d03F": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8ad63450Bce5880AEf1460F5bae40784033B0a89": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6AADa411235950889E02B3c5Dcff265023D5AA00": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd0A21ECCB13cd1F2D85914b6D80b6A742CA65548": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaE6F56b99a2528963E1A15E87D46504335b21089": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9d327DBB9a3D6Fb7F45Bd01809a0e20fbf10E3b1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x46b10BFB0317d2A0222b92A1E05EfB08aE31124a": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0a9630684C90D7372e3eD813B337150778e3Fe6e": { + "balance": "0x3635c9adc5dea00000" + }, + "0x854d08C6D6dd74f463fcD2e7173094e55eA6F346": { + "balance": "0x3635c9adc5dea00000" + }, + "0x852f2E55374b42Db84dA52A1DE64804961909E80": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9dd8b025d393932Bc1B7171b1b4AA151e1CFA938": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1f1ebBc390Fe92Efe7e7f7b9b1Cd1C1e1F68BaB1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3537602812FF3df7f34072F7f52418F3B7e1Def7": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD083306A8Fd3d2eaAC90825521dc2eb6FB5eB342": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd0F1a39cD69D30a9e2cc6ac1Fe30685d6f431A09": { + "balance": "0x3635c9adc5dea00000" + }, + "0x00EF91D7FBe222966e6e6f9E337d2f88a7d023F1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3212D8929eEC3b379Bee7C42f5790fc86FE836ec": { + "balance": "0x3635c9adc5dea00000" + }, + "0x7F0c159d64D1E4Fe84BCe5312383534D795A9dfe": { + "balance": "0x3635c9adc5dea00000" + }, + "0x810445a4E2f69e41E016db44192d32c92718A6F3": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2770Ba357BFD6BA337a6854F7B113dd66Eb0c9d4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8793841b953F68a50186569835681b74A1c2ed41": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1eb6892EB676084F256d3fFD01182f26629Caf93": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1Fa5599D15ECA170cF00408b0Da17077CD2e9d75": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4B81eb7E85D6b2CC081607Cf50876c8Bd1e1c0D1": { + "balance": "0x3635c9adc5dea00000" + }, + "0x513c8633CE0c10e21C5b19d9911a3404d7CAc896": { + "balance": "0x3635c9adc5dea00000" + }, + "0x475C33f4e008c5ab520b1E48DfCE5e5A64e91a04": { + "balance": "0x3635c9adc5dea00000" + }, + "0x992D61b36faCA9e318f6c5c09A4D7d09D057F6E8": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3BfE548b3b25A4DB1a7233cD81A37BCe40C4491f": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB22156fEfE5EB2A7027d5518138ecea253bFB707": { + "balance": "0x3635c9adc5dea00000" + }, + "0x988972Ada2f904bA5c511F139A289E6e115B9017": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc49A513e9EB01D5b63298b82E9D747Fe1687B0F9": { + "balance": "0x3635c9adc5dea00000" + }, + "0x5Fac1DeBB46d885f2e3F69f582f08bBDf45c4F0D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x1D84E21c9D57EA2a21dCe968399e570B19E62eC9": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD59Ac5aCF7Efb2869B27c40D2101c79aD6a90006": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC13e523E7211A4f7C37346c5a72C7C3476097122": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6Ec0BF003f604EC43034FBb9D6bdF91305E115e5": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe2446A331AF034D8Ac0BC7eadeA61b4D5FC5F3FE": { + "balance": "0x3635c9adc5dea00000" + }, + "0xCD2240c948A4f2351aDf1A45a913b78C581E592B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF44464fFC4aBCbc2E7203fC7843Fab9976122D01": { + "balance": "0x3635c9adc5dea00000" + }, + "0xec25925B50aE31FEE9e6230E4407bA900cFA2F27": { + "balance": "0x3635c9adc5dea00000" + }, + "0xe2077b262A2B22CA884de516a890b8b23341B412": { + "balance": "0x3635c9adc5dea00000" + }, + "0x997906Fc78a09558b865509Ab6B6Fe2E7Adb71D4": { + "balance": "0x3635c9adc5dea00000" + }, + "0x2a3A6b1bc094df66389F2fEF0b1acCB82781DFAd": { + "balance": "0x3635c9adc5dea00000" + }, + "0x701BDC4f13cEdFf29127511866dE191372F3241B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xB4373b682dFCf9947217b07140cdD05B5087a3fD": { + "balance": "0x3635c9adc5dea00000" + }, + "0x259400647479A70A4e2915367fFB94c3D1Ef4f59": { + "balance": "0x3635c9adc5dea00000" + }, + "0x134EB5ea39a8a6b0B4A4C4a588c3c8cdF21F674D": { + "balance": "0x3635c9adc5dea00000" + }, + "0x4c93bCE3567Ec626F2cecCE150a70CbD2bC432Fc": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8412768FfabBcfd630176862B9365A6d98F4e071": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8856502b762CBa14d95CC3bE21b0dE23263B4cA7": { + "balance": "0x3635c9adc5dea00000" + }, + "0x809Ae7a627879D2903628b3B1a7f6B3D409D903c": { + "balance": "0x3635c9adc5dea00000" + }, + "0x8bb6D081502f6273f33085D53675cF1ffBBff991": { + "balance": "0x3635c9adc5dea00000" + }, + "0xEaCEf48B3cB7Bee2c26aA76E08228d16451Baa4E": { + "balance": "0x3635c9adc5dea00000" + }, + "0x3720372d6c7B9E2977E215a0f008C9AcAE142A18": { + "balance": "0x3635c9adc5dea00000" + }, + "0x9FDbc553d0A9Dc1945A2d63a3bc72279fc212781": { + "balance": "0x3635c9adc5dea00000" + }, + "0x70d89735A2c3F8af6919dfDc467A1Df9dEEDe536": { + "balance": "0x3635c9adc5dea00000" + }, + "0x00047f43e6494E4f8537FeCA5FE442469F301B4B": { + "balance": "0x3635c9adc5dea00000" + }, + "0xF9cC20b7a4B8A48aA41d500D767aDf779151FDEB": { + "balance": "0x3635c9adc5dea00000" + }, + "0x6efD6F82Ff8b5F3F3A87D9fD12c4C1dA4f6563FF": { + "balance": "0x3635c9adc5dea00000" + }, + "0x327525D41F0A733BC774416D6D1Ec9629F993911": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaC474abF9Ecd12f86747433852Fd9C098326CE63": { + "balance": "0x3635c9adc5dea00000" + }, + "0x93D4DA5397f476c5f9A2B66955323e14087cb50E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xa8DC57F2B81c149E8D81B1FbCa4A9fd80d8F3953": { + "balance": "0x3635c9adc5dea00000" + }, + "0x19A1F8E17AE102ED548aD7f37161376ba9e1C274": { + "balance": "0x3635c9adc5dea00000" + }, + "0xd23310249B5e1A3Cc832d810ebBe3CDddAc80ecd": { + "balance": "0x3635c9adc5dea00000" + }, + "0xD035EE995AC69d558f9a82309150A955723839d0": { + "balance": "0x3635c9adc5dea00000" + }, + "0x90EE90B978b96fff93e0B9c5dfe84FdFA04A257b": { + "balance": "0x3635c9adc5dea00000" + }, + "0x59745D951261491D7d95E1ebf1DA02BAAa10434E": { + "balance": "0x3635c9adc5dea00000" + }, + "0xC21DC78eA9d35d27714E754F6181A5Db310970a2": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0587722D111AeA8A6eA068Ae00814573163CA902": { + "balance": "0x3635c9adc5dea00000" + }, + "0xaf37a6d692Cc53947f49a77EC64bDdBc53b112eb": { + "balance": "0x3635c9adc5dea00000" + }, + "0xc92634f37cDe48BE413D9eF1dFE8CeF240e263e8": { + "balance": "0x3635c9adc5dea00000" + } + } +} diff --git a/docs/stress-test-prep/wallets_1000.json b/docs/stress-test-prep/wallets_1000.json new file mode 100644 index 0000000000000..51ec107577094 --- /dev/null +++ b/docs/stress-test-prep/wallets_1000.json @@ -0,0 +1,7002 @@ +[ + { + "mnemonic": "scatter ugly vessel lonely electric brain among inspire today change vendor miracle", + "kaspa_private_key": "b57f218e5ab82f2301c1fbe155dbfee8ca145d6aea1d534714625a8b6b583077", + "kaspa_address": "kaspa:qzd8y05guwj78zhd2ns0dw4fswpw3unad4eq9hx7ytteveyfl3t9sgaa9xkvl", + "ethereum_private_key": "0x19dab60b862565c57f55de3adf5cc955a7f8ae21363bb6d297ca52438732380a", + "ethereum_address": "0x39651327a988815Cd9599f0e48112E2c553e174d" + }, + { + "mnemonic": "just pioneer torch else biology hammer globe file police summer stable undo", + "kaspa_private_key": "b41fea5bbd91dc8657b8610a77eebf05a4105edbd74fec49b55732f1128d1a16", + "kaspa_address": "kaspa:qqm3slj2p42fmsg7hn3kat8xp2vpg4sa584vchdr35srxu74rr8dxavn6z9wa", + "ethereum_private_key": "0x0c46bda2c874b16c69babbda7bb5d37e80da8fa4e0d6df7b7b9d4917b56b62a4", + "ethereum_address": "0xcaEe5eE4EBD76C1B4441e3B6cB4C18f792cBc9Cd" + }, + { + "mnemonic": "weekend glory coconut shop edit chronic time receive maple page funny blanket", + "kaspa_private_key": "11d6234716d152829197c5452c42b73e8a580a82e2e348fbec6f40ca7cd41bf3", + "kaspa_address": "kaspa:qr8xajqqm6ygkrpwwwrl9cppwt4mjr3jrel2jcda9xqz3g93y5mzyt98vpx37", + "ethereum_private_key": "0xe1003cd67b946cbe4df3fe30a248064228253db16cb0832950d780c41d57b431", + "ethereum_address": "0x6D6E90bf5936c50f0aC89ACfc364D31900599729" + }, + { + "mnemonic": "scissors hope hat dirt double april gloom shine eternal coin patrol matrix", + "kaspa_private_key": "d11a607d05c3decec527ce3c2c17e3bdd778524de6b59e91a3ca3da787ee8413", + "kaspa_address": "kaspa:qzf9zdlxc7wt9uechknudrtk7ekydx8rgsxncwwfxxuptfc8dhza2r8rzae0a", + "ethereum_private_key": "0x61f68ff6cef9e9e6a5be5108c821f8201548039deed458d3e6bc9ab48ef9efaa", + "ethereum_address": "0xDe35fD852aFf84843A68D188694ADa792334E1b7" + }, + { + "mnemonic": "arch drive brisk mean buffalo butter company install tribe jump arctic breeze", + "kaspa_private_key": "6cb5e4fbfb5efcc8406fc1ffaa6d704c5ee273b020e65990429d2c71104798b1", + "kaspa_address": "kaspa:qzk2tl4c49x65axy9najhl6tmm7zrnfmgefjm6lusla9yecjdr3w6arph67w4", + "ethereum_private_key": "0xa8ab2d68ec85f8c8eec66c97581290c6547d79dfb5e87e1436d107c5915403c9", + "ethereum_address": "0xD749D1b0E87E40e32d19b1638b90D0802846BA46" + }, + { + "mnemonic": "into segment sing sustain net gauge dog enemy educate key quote dad", + "kaspa_private_key": "4dd65475746370059fde09171b25267e1ce23b1efad2e428fc24065775bcee1d", + "kaspa_address": "kaspa:qqtpgp5f2te0k6nytfzhxe2jc29ljd742wcyqmygwua95xx8tprpser2sp4s5", + "ethereum_private_key": "0x8f36a30a4f1091a3de6aeabc9128939d7e1e0ab492803261fc1d712f9ac62580", + "ethereum_address": "0x507118B045af89e6f6786287e52eFb98827Ca6A5" + }, + { + "mnemonic": "ethics maid arrange park gentle shaft family smoke sauce upon hard include", + "kaspa_private_key": "439c3a176876804120a9cafe37a885bf25bd168497bf51ba79d97dcde2eb9a5c", + "kaspa_address": "kaspa:qzm7fw7lzvdasw0gts7sn6xmhakrz2ku6y7udsdczhn4gl7mmrzwwk8mtj895", + "ethereum_private_key": "0x333fa5719dd36b30f551273bf95ba6ea6bce5a29a50612487e84126b21a6dc07", + "ethereum_address": "0x42314EfB675A7139b0cf505394194DdE986FF492" + }, + { + "mnemonic": "glance pipe student reflect virtual age raccoon kitten lake face pair possible", + "kaspa_private_key": "73d2e429437f24c4577a6edfb4bd316d95a1abe82cd705f1330c12683a7ae19d", + "kaspa_address": "kaspa:qrd27jmgkue9hj4r34u4s4vfpkma609zd2lm0d0u6u3engsn3vph6tue09ryf", + "ethereum_private_key": "0xa1389ad33df4c86e1c4d6103e9d4b285ea7aaf71a3eb0392d4097c28d2fcd536", + "ethereum_address": "0xdC6F9d9e5D123E55823d3b9765e60CDE6ABb62d9" + }, + { + "mnemonic": "hospital degree moral bus perfect car pencil salad slow doctor expire legend", + "kaspa_private_key": "cf89a651c78ee05c2e72a8d7ebd2f9ba9d1591abef0b81a08b61489845d1b4d0", + "kaspa_address": "kaspa:qqggf5urvf7547pdknjvmstd4uegevrsu4ft9kq843pm9nk8zd3exjpngefxd", + "ethereum_private_key": "0x15ff62838c51b134a71058e4020fd94739e1e64fa857b306a1ca606caed0de02", + "ethereum_address": "0x26B7084B255ffECfF609F3250e280a0288a9DB6c" + }, + { + "mnemonic": "plastic wedding season deny oval oil patient lyrics dinner prosper convince theory", + "kaspa_private_key": "a40d54e7d2f87d89d2280cb5fbd07fa7e401c7414758910fddd82fe5a29ac5f6", + "kaspa_address": "kaspa:qrd8fk05za4jks2u5amwhqlvdx42q7yays5a36sfulsk5jxlguxfymsjt4asf", + "ethereum_private_key": "0xd76728ddb696df0f447b69c8d80adab3ff4d6a82c207e8aa659e12b7ffb9ab78", + "ethereum_address": "0x0394C8163Ce6FBDfCdb220D03C46fff920d5378E" + }, + { + "mnemonic": "grant puppy super skate arctic amateur fat news crop sign engine alley", + "kaspa_private_key": "098a12bf2a7a00d563c2657ad3637e83d71696ca819fbe2682ec3174046e63c8", + "kaspa_address": "kaspa:qp6gg034976z3l3jhuw6kj95vqtgsq30pjg9cls22k5qgwj0zqsn6g6ua5r0s", + "ethereum_private_key": "0x5336d2cb4e841b49c616470979726b48cbe8cf234685c0dd3da36a3790391f07", + "ethereum_address": "0x2a3958ab223c79a6523A89DE3cc4B76e2D45a578" + }, + { + "mnemonic": "merit deliver menu puzzle aisle attitude void view welcome output mirror close", + "kaspa_private_key": "579f8ffa3d842b21f5296b970c778ceb5797538215491bc72835292e816b8d36", + "kaspa_address": "kaspa:qz0e7wdjzay3uzyagyt42gkg5ghf30ccf6k4mw5tdksf5e3aj068ydlpch4g0", + "ethereum_private_key": "0x2f277aadb3b2d3716f9714ddfc60f95c98582bef38bab15e227dfcdf1fe906f5", + "ethereum_address": "0x9A493C34d242d814AC35f2aaCf885d88840fDa17" + }, + { + "mnemonic": "leader health maze disorder dutch myself smart raccoon stereo weapon census own", + "kaspa_private_key": "4a406b9d5f59f4368a3ffcf5f17ab9b2eaa36dbce03899486dd4c85696358bef", + "kaspa_address": "kaspa:qz78r98ltjg49jeljlk34uqsq7h9s9002hwmwzq3gppn5f28aa0fk05jyp04v", + "ethereum_private_key": "0xf9911ba61dad6d15bf74ce599c4158aec735211f2c7db1da635e34a477309bcf", + "ethereum_address": "0x54FBE6dd1293583400c042D0F959C719c6C56DBd" + }, + { + "mnemonic": "zebra van engage isolate plate october miracle direct sunset outdoor clutch follow", + "kaspa_private_key": "57364e67431c50c8ae36bfa7faabba09ac945942e7f2f3183bf219fe0903b006", + "kaspa_address": "kaspa:qrv34s0wsxh3ausz58vk87wkk548p255caezumzhnqxt7ls0k5trkupr0ptqr", + "ethereum_private_key": "0x87910ad468557aef4d0bc7fd085fd33e5277b80ded6200de6e140fb0cfab72c8", + "ethereum_address": "0xC6c036AA113EBaec4AD945b44d775f5236f2aA78" + }, + { + "mnemonic": "degree usage album silk sphere again silent typical heavy conduct much current", + "kaspa_private_key": "26f8c68b85e4191981e51fdefea03ad824c62c2f9633347c4982d6960da335dc", + "kaspa_address": "kaspa:qpfaq74wutnmr5pcfq6fem9lzhc0z4s3udh04pavc848sv7f60gnw9kxtkfl4", + "ethereum_private_key": "0xbd80ad76ba5891b907c0e5f3a5879f7e70be4ce90a5032081e0e069d8f6ffcde", + "ethereum_address": "0x73E30639b46835201A818Fec45371EA3941DE46b" + }, + { + "mnemonic": "shoe siren enemy special rigid welcome pig bag bargain hero coffee early", + "kaspa_private_key": "33c507942930ecb9d3201ade563f689aa22fabe51a48114f7efac83f18502067", + "kaspa_address": "kaspa:qz4esdem5r2e9axw7yhgcc9fh2jdpuvfl3csnkh4kguyf9arc6l9wl3wftens", + "ethereum_private_key": "0x26b6c2e40dfcba9432fc191c6a4aebeeba63af30b0aaf904e57dc89be618bd23", + "ethereum_address": "0xf45c97902c85C28dB4253065b2C01c277Db5c0c8" + }, + { + "mnemonic": "sword convince labor forest sorry laptop food wine mechanic group illness churn", + "kaspa_private_key": "e2f9b57b70391e98987509781a70fb7a67947533264c57ef83277c6c279f286f", + "kaspa_address": "kaspa:qpkdh4tur2xakft732m0csd28xvgyddjj8w56kc8qqgx8pstedxkye0vr9xcr", + "ethereum_private_key": "0xa62c42a19cf5e760cb14b2d66a72bf898ef1a4b01215be37a17fce6669f6f4a4", + "ethereum_address": "0x2dBeAC0Fb80809B73F1055EC4cc13a42B9df46Aa" + }, + { + "mnemonic": "enough will truck unknown list gather ritual door column unhappy load remain", + "kaspa_private_key": "273bd761fb412fb45c6b869b215b1dc4359affa0ebe56464765380b61a1edff8", + "kaspa_address": "kaspa:qzryg5uvmt6uyx6h3tnfugrxf63eyrnkfty7d7wl3snk3zn6q2xg2gc4l6el4", + "ethereum_private_key": "0x81f490c981af6b27aa7bc2a9b9863ea74f9456b25a752f0b82889ea8296a455d", + "ethereum_address": "0x0B23c4fE8b47f9757e303cb3dCA8231481f02EF8" + }, + { + "mnemonic": "crouch phrase airport rough fancy glare color hawk when airport oxygen prepare", + "kaspa_private_key": "b19836cfc3b8737b141ac6dcf27ef417674e1d261392f8d5b4da01624bc02dce", + "kaspa_address": "kaspa:qpnju7pgycna86m5rjccq6askdqq27908gfa3ztu03r0gc685k50uljtdtyuv", + "ethereum_private_key": "0xcb82548d26bff656900d39a1b0de07cae5af311455f1fc1469d7bd7726ef3cab", + "ethereum_address": "0x58d7132408A045200089961719A44CB3088608DF" + }, + { + "mnemonic": "pond elder tool borrow hotel express edge huge trust deer february situate", + "kaspa_private_key": "eec889db6297c862c528b32731829460fa81f3125df2862b8aa7dc10d2ac32c2", + "kaspa_address": "kaspa:qqspcdc8p5ll8sflfjnqadd62a87ua2n2h2mks2srq6456gmj8jrw2dge40xr", + "ethereum_private_key": "0x20e47d2d50850b87523e069d93a3c158d986d95dde6fa34234d776bf82cf9ad0", + "ethereum_address": "0x604cD031F3C4377e11b3090c557d6da550878159" + }, + { + "mnemonic": "tree agree mixture clog claim coil valid chaos ramp miracle battle simple", + "kaspa_private_key": "0f174bffac8e1f2f17ab75ac4f9e4dfea7f13deacd35a07ca0bdb8574a7e0fe9", + "kaspa_address": "kaspa:qpwr4mv6grnnsur4qkkw9suwu63u47k0020klkmwwqzzgava97hlg5h2yrqu6", + "ethereum_private_key": "0x09899810b287346f799a639820b2a824462798f582f3c4ed556d20d178d338c6", + "ethereum_address": "0x4F71023A4B86283D654B293Ca9CB741ca9C789ea" + }, + { + "mnemonic": "primary front night truly arm rate scrub fall almost margin street prepare", + "kaspa_private_key": "c236483d8f5db70e861bef4a20fe69bd01f79fbedd9dfa2e7cb18a79affbf6a7", + "kaspa_address": "kaspa:qrt2yreke8wkl7juyehlc2ccgu67pf0xq5543xy96l0jegte2fzvz9dswxwhc", + "ethereum_private_key": "0xc98585b9d24bd88829202dc29dabbb4efb0d6a709ff472439b019acea1cf9740", + "ethereum_address": "0x1A1D0E5f201bF2adB3D68BE60997F115f85833E3" + }, + { + "mnemonic": "comfort hawk globe one exhaust require broccoli donkey engine type fold actual", + "kaspa_private_key": "e5630ec3d2c3b4c5fedcfc06c7059b3a56ad55b5b651723349c3108b951484d7", + "kaspa_address": "kaspa:qrk8paykvvgwseywsmcet0ktmycax8x9c2k4zxg8amq9u8z89n9xy4tem2p0f", + "ethereum_private_key": "0x14774cf706d07b20e2d0d9212d36b1227e47b5f2d5802abca53927daad44e508", + "ethereum_address": "0x333Ec54d7cF13f1e5d525894EfF0F8a9C9b10E5E" + }, + { + "mnemonic": "puppy lyrics lend street circle inherit quit loop retire wheel wait silly", + "kaspa_private_key": "97444c9f4a4a895706654423ea9913d433f311c19d0719cb750f8f2f4729d11d", + "kaspa_address": "kaspa:qzwg6jwc90ee7438k837ntj423du837mn2dfm6rsspj8e5ht2uh5q2cs5ykz5", + "ethereum_private_key": "0xabb911dadad041a2fe3cc5f046de528d42f40051d0468e98bc02d1e878f7040a", + "ethereum_address": "0xabeC5914f06f4fb79798dD7e4e3D5e00ac5A447E" + }, + { + "mnemonic": "coin element cycle senior fog marine gasp flat zebra release junior rather", + "kaspa_private_key": "1edd25f924bf742fcadf4a7782b563fcd273b2ecaaef445e45eff0af48f4511e", + "kaspa_address": "kaspa:qr4vmhpkgusgtkmmedk6ctpa4c56cgxwvfasvnvakaxs2el67jpwxyzjrexlg", + "ethereum_private_key": "0x682d82a1db9791cec0b070a3728648b75612fee0a936892b670a203b83dc15b7", + "ethereum_address": "0xf67F9A9E7b829e3911C755b76479eE3173305594" + }, + { + "mnemonic": "famous giggle tube toy actor regular demand lunar rib south apology follow", + "kaspa_private_key": "01bff518c48ca2f5de1c53e095fa63ea8d814f3818122cb3211835fec2e36295", + "kaspa_address": "kaspa:qrhf93ce6vfgzyvvamg7ann03cccdem2xlrvcjq03l59jqsdd8tgslnql5dcp", + "ethereum_private_key": "0x4188b218cc628ec1da3a60501a3bf918b4b91a9b29049802aecb55dc0bdcfcdf", + "ethereum_address": "0xd4CaaDE5877d2A5C2493b9AF43920d571FbE209D" + }, + { + "mnemonic": "know village arrest input during memory own mule sunset pottery swarm lawsuit", + "kaspa_private_key": "32ae7d8c70cef47696c911de66b7221ac9e1cd5e63c072ce67912d6a650f3bd0", + "kaspa_address": "kaspa:qzd7grcldpruyqf0vtjwm7zsz9x32y5kcttu7pjyyvmf76fdtuuru5lprrml8", + "ethereum_private_key": "0xbb92656612a729967cfb28b18a14f9d40beb2677f7fdc3c02e6cc9295d5fb57c", + "ethereum_address": "0x6dd097972fb7ce2C6947A458134c53db5C3e7a09" + }, + { + "mnemonic": "nuclear olympic desk fame acquire cook loud file exercise scrub element pride", + "kaspa_private_key": "6e0069595630c22108ba8ce85f8888f0d6cff911de3d53809c1c6929ef39ae3d", + "kaspa_address": "kaspa:qrr0w4ux4tm54cgz38hx386uw72ay3rgxgx3cddau486dxjh37ajvu4r0u4p7", + "ethereum_private_key": "0x90b6a60c789045afe7e07bfa190660728e5e82367d79becb3ef35a153d630002", + "ethereum_address": "0x6F2e5a2aFca3a7d55742B8c14e44697B3e69Ebd1" + }, + { + "mnemonic": "kidney rhythm alley tooth deputy sugar puzzle lyrics exhaust lazy dash canyon", + "kaspa_private_key": "4f9aa019faf1a9769d340176fbe14b23622f11ee9a1a5d4f67cfdc2a98236185", + "kaspa_address": "kaspa:qzj3sx9fnjl2z497hjkp46vtpnxn626d8fgfvmj7eagrsufhxucksv8c7rxj6", + "ethereum_private_key": "0xb7a89c85d8b009ef04eecbac625898fe7cb1769cee8ccd78927315f1fb77f63d", + "ethereum_address": "0x6f977919CcF9E78f9aB0f09aAb6b58c428aB4Ec7" + }, + { + "mnemonic": "garment employ uncle talent upper leg enroll race peace inhale arctic fetch", + "kaspa_private_key": "c9d72fe105e3bbcf88ec7b4e0abcf6a07ba07772c60ce73766df6624e056f24c", + "kaspa_address": "kaspa:qpkers8wn6gfd6wfyznh5wnvzxklhjfw9m06hg8spktqmsn39ypx7kq82cvyp", + "ethereum_private_key": "0x19a5d2533a82d69b86e5382582c8f7d9cad407495f60d4e60fb4621a0c606386", + "ethereum_address": "0x2bEED412e62Cf3D497Dd8F0d8D7687b5A6E7FBF1" + }, + { + "mnemonic": "forum normal cool identify intact phrase turkey pigeon pill pulp music donor", + "kaspa_private_key": "54a40f1f50079435f33ad1fbc455bc31bb2fd6a9285c627d474b9a38ece8dfd2", + "kaspa_address": "kaspa:qqslgs0e9x9ndqsdm89whufey4pzn7wu765vrhf2y3jdgumml4w3vnvklarnu", + "ethereum_private_key": "0xede69d810e415c93b9dfdfaaf6b804296c3e5fa659061a447a51c86195834c9b", + "ethereum_address": "0x713e9a96c1794CccA59baF002bBa48722005ab06" + }, + { + "mnemonic": "kitten eagle example cradle odor misery guess will bright combine treat mother", + "kaspa_private_key": "e4bedb91645371eaec67743c71fc7b9f89fb39934eeb28616ed151415128c102", + "kaspa_address": "kaspa:qperdple2s0ncf8pfyn6zpnjf6c6djt0pztdwqrztlca2hhapd90j8r5wztz5", + "ethereum_private_key": "0x0c3dbccf0ee7a9d3a45686244d1c0f3b7b477ded36f63057b19c60341a27c4e1", + "ethereum_address": "0x919469d580268a5F083D3542E30493B2eA0DB209" + }, + { + "mnemonic": "over panther staff razor garbage original tourist enrich chase impact crawl stereo", + "kaspa_private_key": "0fb4c500b3dfcc4eda9bdbd6e03a204411aa1b6f3147cf32bdb3385484cd58fe", + "kaspa_address": "kaspa:qpe6x893eru8kgcjw36xy2r2z6m79n89mzhh8u2s6ypp88y0nmk7yze74lht6", + "ethereum_private_key": "0x7f3d511127cc8d173652744690e00e2580b6c0ace7917159f289fcf369bc37b1", + "ethereum_address": "0x3c77C80888Db68878D1A406B8Ee36faa6dE7134D" + }, + { + "mnemonic": "twenty drive record together fuel say thunder ten fossil trigger town enter", + "kaspa_private_key": "a54594d21a0523bc26876c60c4c63ca73486c5228ae90d4f6824c488b6861c9b", + "kaspa_address": "kaspa:qptmaydrw3m272kjtmxqmkjxtx6s8v6nm7v7njplmxqda4dn2k33ge4khf334", + "ethereum_private_key": "0x2184c67cc43c5b0507a585340c315d2488ad997cc36447fb848974bfe600c862", + "ethereum_address": "0x85c9976cF6583dabB58E69a56B7d10A3E6942711" + }, + { + "mnemonic": "avoid globe strategy credit grocery apple again silver wall base abstract enroll", + "kaspa_private_key": "281d25bc134b186b370388e08893dab5f7903b40762bf435e983ef157a893aac", + "kaspa_address": "kaspa:qz8suprmr44m9xs3y87k36g7a8zkxlwk580tvrwl29pnlha9zyqa7p8x70xl6", + "ethereum_private_key": "0x0c329082152738d326b86384c688209b167d9729f6248e9bc082f07ed2dc82c9", + "ethereum_address": "0x1940094249210E88fa8EA0c93d2E765403A05797" + }, + { + "mnemonic": "scene island business cloud size file slab sadness female kid chair yellow", + "kaspa_private_key": "1e7ff41aea6aab8d7f7bc4bf2765ab18c636045c29119098774822bdc7cd55be", + "kaspa_address": "kaspa:qz2y4yxfv4hnegtzlun8hm64wq8uznkkntl04fuwqgv3hy9mj0y378at0432c", + "ethereum_private_key": "0x90a2b9e8bfaa4a14150f54681fb3f6188bfd2fd56875aae9a69d679f76de70e9", + "ethereum_address": "0xF37EB432B508670c3bfF9F525014251A0655b7D6" + }, + { + "mnemonic": "chronic summer slim valid remove cream cool desk erase rival honey alcohol", + "kaspa_private_key": "880432a8a6f3520149619a900578466ac36354f4c1943695efd111081952cc72", + "kaspa_address": "kaspa:qpfcql6j984lhuhgcnmz4g0fm2vjnm886rfgcccn2294qfd4f7g77w8tz9stw", + "ethereum_private_key": "0xfcbc5fb721a5c0e7488eb3de83b1a6417e725fc9c70a979a75ccfe777d42bf8d", + "ethereum_address": "0xfb63109E9b599B4c535Df3bE9C89e6b73b913905" + }, + { + "mnemonic": "hold flag struggle violin size witness manual pen awkward news august birth", + "kaspa_private_key": "cf2315df0d62e3842695d615d55eaba0691d063e65bf1829633cc16c4f789aed", + "kaspa_address": "kaspa:qqsxrtnyj2j52k237j4xltwh2dd4n7g7gwf0m2cmc4l2ssh80525vgsx74fyh", + "ethereum_private_key": "0x6afa0819951bebe807899062d15dfcb1216cca535301293d2656e58a7388e98c", + "ethereum_address": "0x872227B33A86341720eA16341824b2F429D160F2" + }, + { + "mnemonic": "cover slogan smooth flush cross mystery cake walk cat fossil enforce season", + "kaspa_private_key": "6a39fe5bcbc10dc352fa93e5705f5f99148b274f3cc533649c867100ff17772f", + "kaspa_address": "kaspa:qzzqllywn338p7lu9f6kcjjxh9fdnc2m0pcy79du6fhm8xquh407w9vft3knh", + "ethereum_private_key": "0xfebd60c21583c064635ebdad95bd71c54e7ee17896ade9d5b272c5290c78a4bb", + "ethereum_address": "0x308593AC2E4b96ff94599682D175A53Cf06Ef7F0" + }, + { + "mnemonic": "window address bag account angry point sail extend olympic wife planet true", + "kaspa_private_key": "8db0e2ae6b8c15e85c6f2141f162926304ed9db2ac4531006fc51f07863476ab", + "kaspa_address": "kaspa:qzgcmlc8p07lgy4r7dtj4ygp896x53mt8zx6c4thjww9rktgz6lz7ehvepkej", + "ethereum_private_key": "0xd61bbaee7780350cee9c32da7e7de6ff3c879145cd3f70afcb3caac2d092f0f5", + "ethereum_address": "0x2Bd14483b1d0E2F8159637eD7a1003b632FF9a50" + }, + { + "mnemonic": "bubble logic wrong million feed oppose three range fox danger staff web", + "kaspa_private_key": "cb820122cd0e43c156b034057d762fe2db5fa43e644544e9cc1367e62f051ae2", + "kaspa_address": "kaspa:qrq8na86fvv48wp9axq82nkgdhewypf7gmplexw83mhdwnfa65yx2093vhks9", + "ethereum_private_key": "0xde8b9f67b67b2cd1330668aaa5f89d9988b66ad2405705d203c7a1c1f88e74d4", + "ethereum_address": "0x03b073045D06f4b2530390837Ea24977F3837147" + }, + { + "mnemonic": "margin twenty crush inner border welcome session reason anger bright cook husband", + "kaspa_private_key": "831cc260db802548aee67ca292b32f6579e3991f87f139728e315bf38b3e306d", + "kaspa_address": "kaspa:qre692dgj9eex4p7zs05zwtpxvwsnglgnzdt94rqaa8lggxlh6ggsnscahjwk", + "ethereum_private_key": "0x29aae655ca5c475e4b23547246a9eaeaf62356b6f67f1bead0e4c99186ec8b7c", + "ethereum_address": "0xB53Ac9FB196E905559B92c0cA40cfd94D3fAdd4E" + }, + { + "mnemonic": "fold cannon bounce baby area erupt town divide select alpha vehicle dignity", + "kaspa_private_key": "2ebe3bf7ca604474e2a0cec6d84337751b59b7b9a304a7327b242af17f7a07ed", + "kaspa_address": "kaspa:qz2z5udh3ygmcavqwrlzdav25wqgx597yzft6xn5e335n3hs9534s497kl9gu", + "ethereum_private_key": "0x754c2d1818ab709553b0646e9c85bf1b9322deb7cc0cb09e533343cffa7ff0cd", + "ethereum_address": "0xD46FB87539516C36E3EA9b0d7a9a0bEa99586f3e" + }, + { + "mnemonic": "gesture era hire stock attitude cruise december boil addict install same snack", + "kaspa_private_key": "adf3aa4e0f681f7c2aabd377dd685ea045b9b3d1111c84c2cb578f342db53742", + "kaspa_address": "kaspa:qrc6e47f4jsm47p7g346p5hk6sau9t9nd22v5mvylx3t6ealfeznya2flkadw", + "ethereum_private_key": "0xe02eea13a5aa801db9de9d3f47651d89f6a5865c378b5cd0408832cfdfc5b875", + "ethereum_address": "0xcCe4667Ad1D28a4d93FFd9236f25704142f32183" + }, + { + "mnemonic": "latin fence prize bonus spatial wood phrase rate usage venture lazy work", + "kaspa_private_key": "d70212182ff0990fbbe214d256adf2cc031009429ec8655c98027d9579481488", + "kaspa_address": "kaspa:qp7k93xly8jwap2xpfmeemf59yeuufrkyv7x9ua03fvn3u90wans70a6m89fq", + "ethereum_private_key": "0xdf396992635ef1e771a7516463fe2803e304c8eb85af5cfe8852c83c264b1c25", + "ethereum_address": "0x9Bf5d48fd7F7E69427b8aDC00C159F2aaa108028" + }, + { + "mnemonic": "wool wide delay duty asthma skin element bullet basket radio wing theme", + "kaspa_private_key": "1df0ea272c4bd7a3f5bc77529e7e83c0c1872fa3c0f5e7c65058faab617364a5", + "kaspa_address": "kaspa:qzdp0khgue5xkeh4rp6xhfgeehtje2x0l62q26t8qu6x9ra69rv4v3fuk0csq", + "ethereum_private_key": "0x1f7039b1aef884d551a736e324e29dbc4320d87132b4ea33e1cd00a7c6b1ac25", + "ethereum_address": "0x0227E3EDbF22c98e0e324BFf829b5eC6b85b3352" + }, + { + "mnemonic": "easily prison still father couch canal copper beauty drill buddy forget shuffle", + "kaspa_private_key": "8630b158febaf78249e222afd001257ecd68076b9a155644def125ce1f83d930", + "kaspa_address": "kaspa:qr9md7vgxet5ksg2h55fc8h99da6vral2cpfu82fh98gnxnq5s75gau3r0tvn", + "ethereum_private_key": "0x08bad3c24334a81c022a57ab63d6a11f90af226e293a8605dafaf1a42358158e", + "ethereum_address": "0xE7ceC4b9485a6608cF3b94Ab52601e9bC2A8E116" + }, + { + "mnemonic": "squirrel vapor razor job amount suffer force prison sorry draw pitch struggle", + "kaspa_private_key": "c99b456c2e45ec1346f725ceff89be8ebebc101de6c6dbf95bae4a34de42681d", + "kaspa_address": "kaspa:qznk7unhhtc2h8z3yf2a3uj660hlrhr78psae00vmvvx2mxwtjmjw5zl4z58z", + "ethereum_private_key": "0xb46e3a273f75b2071c01ec08fc9e512b12e318fbe6109052dd913e21286f0698", + "ethereum_address": "0xd92f63DF617db97585Bd3d2f887A48A1fd29Cc34" + }, + { + "mnemonic": "piano snow dress regular grab junk popular jazz raw grow mosquito tip", + "kaspa_private_key": "6086af878d325c09c632ee430efee57d665449037496afdc6f9489ff5cb43d31", + "kaspa_address": "kaspa:qzvlez2fhx5zrxm8hkrl6pxz8mupv9q2uhy2j5fxl03qufmau73xwv83y5mf0", + "ethereum_private_key": "0x07a13117f44520756f303ca8f12f076aed6999c54b5f4ef7bf6eaba5b065512f", + "ethereum_address": "0x947eEA9F87b0325d01C7Ddb5e9e83dF4f0Ce03Ff" + }, + { + "mnemonic": "ranch maximum fade goddess scissors tail host base slab soda frozen neither", + "kaspa_private_key": "0c9a9fd05ef2968d861a9d07d6ab3164649cb211b5ee5a313c32e96a2989f1d6", + "kaspa_address": "kaspa:qpxmlusvh2ne5jkja5gahy6z9k2dx809s0nsfg6fjcrpc60kgua4cj3r4rzha", + "ethereum_private_key": "0x3f58b6e92eb3f6604d2370006728c8467ce3ef35c183725aebb87e681eefe26f", + "ethereum_address": "0x4460aa59AB41BEd43df0E61171de2a6D3DbfAe3F" + }, + { + "mnemonic": "person track ripple door dynamic priority twelve toward acid boss strategy draw", + "kaspa_private_key": "06d0e5be02335343b74947440dcf09cc4ab5506e2adce5e995773c408d751540", + "kaspa_address": "kaspa:qph33qeya7zhy0jlcetq3nqmmtfnvu6frahvzl7z5malnyyc2hyjqrps9q9kc", + "ethereum_private_key": "0xd96712cf42a296b4f76a89351a5518dddf7b8e7c69a203fba90286aaffd089a2", + "ethereum_address": "0x6ac397482c96C259Cc6527bB87967C2073f65A5E" + }, + { + "mnemonic": "coconut speed poet valley census tell able kidney inflict sudden load travel", + "kaspa_private_key": "ad679eaaa68cbc47d121ec86944df9e8977ade64271caa08628b7e1357c60906", + "kaspa_address": "kaspa:qprkh7d6dk3sqpa9pc2m4e0phtz7rpjgxsez7r27q0zp84nnmrttsx5wfqh9f", + "ethereum_private_key": "0x83a8630342c08f5ad177db122b374e3e28b11ef159daaa25ef10d70c97542c9a", + "ethereum_address": "0xD14242fCDE055b4A306F1b72305dbd3025fb13cd" + }, + { + "mnemonic": "lift total excite install prepare immense face skill gentle inmate slot myself", + "kaspa_private_key": "3c6a66f8be24cb59f562b419083736a0018cc3baf01a1f066a374e9d22c1a032", + "kaspa_address": "kaspa:qrgdvwyzzphpsyfktvr6amn26v7869emwl6795lajtnwnc83yyluv93pc630l", + "ethereum_private_key": "0x8a9154c93ab7d3cf5fc7baa205b450a762d1d67dfd27217f1ec3c3e1a50287a5", + "ethereum_address": "0x32e22a18250D2F3DF11758f8Fd386466400dF474" + }, + { + "mnemonic": "drip artefact young cheese limb effort prize side hurdle elite stool figure", + "kaspa_private_key": "3ea12cdd14193985fb0deec9c2ec92a63a30d90095a6a247e3210dee79ebdb3e", + "kaspa_address": "kaspa:qrcz0hej8cg7guqphgl38jxen5kty2p5ed9s2maqcvh7fhkv66pdyyufmav2n", + "ethereum_private_key": "0x1f5f1083c423ede1055d3b98aa698753d8bf2303c9bf28502f73fd44420c0b60", + "ethereum_address": "0x6DE07A857dc9822F18281f0E1A51deb0a4D45Ca6" + }, + { + "mnemonic": "flavor lend meat magnet degree cool couch wrap parrot laugh surface curve", + "kaspa_private_key": "078d69cc8a5f1423fd81eca1ff01437f8ccd9b35982887ba1ef256dad1bebb40", + "kaspa_address": "kaspa:qqu59vwsd3p4tyjl0p62hp64v32ln9epv5r92fe5k7gc2fulx7tdq6yxrvefl", + "ethereum_private_key": "0x2ca248f15f3b3ec95fe1ab657c5cfe7e572e8eac4a5936452d445c7871e9bed8", + "ethereum_address": "0x1fa0E45Ab3fE07c534cfFDA7683ca368b5e6A702" + }, + { + "mnemonic": "roof sketch rabbit myself degree side oxygen put blue orange include crew", + "kaspa_private_key": "07832203f7702274c5ceab07c5d1eaaeff379660da6c7a47861143693a9ca7d1", + "kaspa_address": "kaspa:qz8nks4v8xnecmpw5dea73540lhc7f4cq7sdpezymvatjeaenxgcxq50uyu2q", + "ethereum_private_key": "0x7ad22a7f2029e5150fa5a903c660b0843891b3a84812c614766839246759d0c3", + "ethereum_address": "0x9de5c24bf5F54235CA1939637B69839D88120204" + }, + { + "mnemonic": "course special hurdle switch kidney clinic secret dawn doctor vanish butter perfect", + "kaspa_private_key": "f2ebec764d08bc0a2204b8ace4382c1eea817ebe19072b71f96c87b95cd07920", + "kaspa_address": "kaspa:qz9avqys733n2p4geuhy0fq3eq7pyxd2w7snyxjtrgg237lnnt3xgehh3uayw", + "ethereum_private_key": "0xd805134725f5164dc380463f54420953a8355d0641897280bc462fd0156bbe91", + "ethereum_address": "0x530529C5d33484f3E4C67C0BcF68F8BBA7Ef737B" + }, + { + "mnemonic": "trap suit motor great valid purpose robot struggle canyon sun volcano curtain", + "kaspa_private_key": "30e95ff6d0ca56221d813211d727f33bd76f0877ea782678e99b7f7f37676611", + "kaspa_address": "kaspa:qqhc7vqp43j4t9jxs2l8rv4kx42qxzy94jxc7a7pxaq37xz7sus7x8e6way0p", + "ethereum_private_key": "0x6e7c8942da56b6a9548bd528618b6b89f8b12d8b8aea46461545dcfd865a8d1b", + "ethereum_address": "0xe50E63762d14631cf02c0b825a984703cB48d8c3" + }, + { + "mnemonic": "parrot pyramid peanut black cargo junior sing barrel tent danger payment hidden", + "kaspa_private_key": "902e5e40b3ff9c453b029800b731944abc6ba7cb537a51e4773b147ac036449c", + "kaspa_address": "kaspa:qz06tt4wvwnte6v70vczvkpvszvhxh78axrrylkpzl4jd22vmpjlj8svsgm3q", + "ethereum_private_key": "0x641b432374d25095e8a544fe6bf5da4c6f9a9d9fa551d1fe058b334a01ad08e0", + "ethereum_address": "0x32feF6d96D300170c81E0FB5BAa6De2DB45382Eb" + }, + { + "mnemonic": "burst behave during defy repair cool public drift grab rifle parent laundry", + "kaspa_private_key": "af5079687330d6eb310df258d4f6d3c03c52d76564c7bb834005c796106988cb", + "kaspa_address": "kaspa:qpdapcmrslmhyplk9rjdx95xafdhlvre35kl5xjunrpdcgwu944djr42t6cgq", + "ethereum_private_key": "0xd6bcbbde928ad44ab46da50c8175443f15ff5bb28a9680d2a7c6a84b0ffb3913", + "ethereum_address": "0x7Ba76bee45A566815a6CdDba645ba1A5BBdC5BBD" + }, + { + "mnemonic": "delay bicycle empty flag over evidence level teach embrace march side mind", + "kaspa_private_key": "a74115cf4712445a505da5ad40542c98e9555be0e3e7a971805180c40c0c271a", + "kaspa_address": "kaspa:qp6rvlyark3shajx3l5pzk02sthkh8t40tm74xwcgkcah95zzxa7gu856a8sl", + "ethereum_private_key": "0x6c5ec6b88fdc49c83a48b788b49d89a0b8a34b8fd4bdd2aeba679adca8e3400c", + "ethereum_address": "0xCe8ed9058a50A5c256D7Bdd9F7D85Dd1f68f4E28" + }, + { + "mnemonic": "salt leg imitate tube dress ball need grunt sauce lamp accuse blast", + "kaspa_private_key": "3ec8529120fa3e60746555cbd55e30537f2d83f2b4119151a7390007be727d7b", + "kaspa_address": "kaspa:qp5p7xwkuza59slzuvma8enzpfhe9aetj4fh7zva84ehhcy94rw8jmg3nm7r5", + "ethereum_private_key": "0x6970a9f93c68bd3d3f91e852c4724bb9ac3d474921a6afae0f638a5a3ace06a9", + "ethereum_address": "0xfA434871f586F7772FDe60F27964281807ED693F" + }, + { + "mnemonic": "tattoo bulk guess gas review nuclear leader brush month lyrics actual angle", + "kaspa_private_key": "d6f2fba12d56dfe548dc7a9e34e1611cdb1f4b0481a4aa7dfec9eac8be4ce3e7", + "kaspa_address": "kaspa:qz4pvjx9ye7u24l3e2zgv36gayqdqcs8fskt4emlqh90j7hp7w3fy6d80sjhg", + "ethereum_private_key": "0x68f6d919b441cd51bd85ed1fd87a95d3660a90da26317dfcc1130af1f4a36233", + "ethereum_address": "0xc350949C335EAcC45f81FFde175E6C6f6fE16262" + }, + { + "mnemonic": "enforce expand wear smart shop ill tooth bid inquiry concert produce demand", + "kaspa_private_key": "3f32ec9b0565256691a85f325424332fb87a274198ca1957fe773f0f7a013538", + "kaspa_address": "kaspa:qqmtmgprqcmcdc7dzecvlwpcyegw4sdyr46hn8h95m2j3gnwe85lgcvh88yed", + "ethereum_private_key": "0x0b0fea6d30b2b639254f91bfa472ae48e709fcc195eed87a9cc809cc9d9e6745", + "ethereum_address": "0x6Ce261D998f314C966A22697a91e232EC1b27A2D" + }, + { + "mnemonic": "basic office slam job large hire nose candy answer cancel laugh grain", + "kaspa_private_key": "c6f4a9091882aac36c16be546f5ac0b70a16a8549c2a91008b6624974aa9897e", + "kaspa_address": "kaspa:qq2achavj6rrv9yw6rpcf8ma3rz332n9eqxsvq353nzkxvhmlv877xcujvz30", + "ethereum_private_key": "0xecd4a952c4473a6ed9168cac6419822807ef7b3c68a713015847361354287cad", + "ethereum_address": "0x200aF74211B316d849d3C9fd19e870b286cDad03" + }, + { + "mnemonic": "goose despair youth fix season fork flush outer secret blossom crush narrow", + "kaspa_private_key": "2639733ce56c2700a24e869287622071c8266088b2adf8b3c5de2cff42c29a0b", + "kaspa_address": "kaspa:qzh4enhy07wwl9p5fuk8u4elfd6e7fqurmzy3ml62c86ftkwjjedvkf0zt309", + "ethereum_private_key": "0x432d3392fc33286d6df0cabdfc43857c2b471f84a0783dc4bfae7c1654339e0b", + "ethereum_address": "0x3E4817beD597Da645dC7a6343E366122EF8109Cf" + }, + { + "mnemonic": "daughter write wait teach ocean sweet expect common rather blur point odor", + "kaspa_private_key": "555fefdd39fa379ad945ff9b21c5e8473df064e74c551a930e55651a6882126b", + "kaspa_address": "kaspa:qzg566un2tg0nq22z9fm94q77jpn52llt9ln9q2jv9x8wdxrjay8kn05v9trn", + "ethereum_private_key": "0xc92a3eb67c0e460d4d4d4f561d39143dd52a208ea278a0bb063b15cb089f22fe", + "ethereum_address": "0xe28907e5b7A6613f19D508b639f44053BC342297" + }, + { + "mnemonic": "kiwi buddy alpha exchange tell skate powder medal enough interest ball uphold", + "kaspa_private_key": "77fd1c3d13c4fcd979c123f14c1d31e247c610aa99de1e0a1c395b6db3236b01", + "kaspa_address": "kaspa:qpdfuezp7ge8pd54wncn6rjca08vqferys0qqmvp4dzwez6y7tu7q5pcpe4gf", + "ethereum_private_key": "0xb8bc081a533d74a25956fc332e3a543b86d76497fceeceb7e75820397c70f0ef", + "ethereum_address": "0xd75Afc6a4002C51E27F819357083b4A5C809F29e" + }, + { + "mnemonic": "situate devote symptom snake leopard impact juice fetch across phrase long crystal", + "kaspa_private_key": "5f15081f0349eb5334305bcb99b32149839a8a0e8c837c23a659df5a42b42dff", + "kaspa_address": "kaspa:qq20gpnvvd3xstyf00ngcfsv8avj83k2v3eak27zycjfl63ymc20jg89ewf87", + "ethereum_private_key": "0xa3fecb38d8da8e4c570627e4430a31450c0033c8dce976649327480fd164f4eb", + "ethereum_address": "0x0c6EC4157F4356bE64734e70f862208A4b53cbBE" + }, + { + "mnemonic": "polar woman sort october timber jelly gadget sand sleep coffee cheese forward", + "kaspa_private_key": "1bee399869c8961d5ab84a64ebd548b5a335ee9b5bf244555dc07c494792dac8", + "kaspa_address": "kaspa:qrfjujkdpxx0de23sd650qq3pmqx6mc8zdzvcnwhf6cm3ptdpsa9u2n50x0cu", + "ethereum_private_key": "0x12cacb2d82b796513352f0f8d55a99adbc7e75886e2a9c5c3d93994ecffbac0d", + "ethereum_address": "0x0977A91309E6C21AA71307A885cc9EcbaEb25BbA" + }, + { + "mnemonic": "labor trust marble bounce tennis core glare flush silver help veteran fiction", + "kaspa_private_key": "aef69762db32a5175c5e6611540f7e590fb76dcd64f27fd37ff77012b48c18e7", + "kaspa_address": "kaspa:qqk733e8z6y8xsmrapytpyykwqly24k5p76ka5t75j4mmrtsl7pvycpepztwu", + "ethereum_private_key": "0x405d71e1bd53ac5b14447326b3e70a48a23195f2219810b6453bb58c48b85737", + "ethereum_address": "0x4A625A18cbc78aFf81c51FF55EeF1B766f87c126" + }, + { + "mnemonic": "birth repeat exercise rapid require original act sure praise sauce gasp occur", + "kaspa_private_key": "caf16f072abdf74dafd8ace8053a97d36f9c40ac749de56062ae4e6886184078", + "kaspa_address": "kaspa:qzte0yaqyu3czfrf4yjy7d9f2rymzlyj4yk7k6y8hqvzurlt856t7uq6gee4v", + "ethereum_private_key": "0x5ab0ae41a98eb55959bcfcb8a67f89d59544db398bb483c9b4085920e5b7e2dd", + "ethereum_address": "0x700C2a665Db768e6872BB4a5E2DB3953bf5a9C17" + }, + { + "mnemonic": "mass unusual chef mystery address page warfare fire inner argue stumble slender", + "kaspa_private_key": "8077d85b7ca7a157abcc38131c76a9d458f7855dc9d492a1a7ad1cbaf45d0cba", + "kaspa_address": "kaspa:qz4kfdrtp6mnfntgphyp9pzz8jy8khv4yg7sslrjmg58em338zgkj9ks3ku9d", + "ethereum_private_key": "0x88c3bfe943d6b1d7a0d38b772c9ee1dd7b929ebb0534ab21f12e2d1d8d852f03", + "ethereum_address": "0x6236b162bE785D8Dc590801d9Ce0aEb8c5F61dbC" + }, + { + "mnemonic": "laugh either dust aisle coin blue mansion skin knee artist hair help", + "kaspa_private_key": "7b0c9c220d28edf00b027ec877c099639b87c9ba70e91e98993b8c93e1cc63d0", + "kaspa_address": "kaspa:qzxl72hwqy6mq0zytt4m9nnrl6sds9794sfvawwee9cf7h3nqmxmvzttf94dx", + "ethereum_private_key": "0x5a4eb074f98aa2de60f05f3425c6446dcd2c3aabd3ff596a70c657768cc5c3e7", + "ethereum_address": "0x64112cB911dD137B12618c712FC167a0a8e86a88" + }, + { + "mnemonic": "crazy whip core record concert lake marble eternal path cat slam nuclear", + "kaspa_private_key": "42efc91587f6d020cd41d07d6c8164f077191f1ae067adf1cf4727d8d9e6a050", + "kaspa_address": "kaspa:qz529qcxqj4mll8yzrwgcqnty8l69xgy5nrkfycpn9evzjt0usakkcxfwap80", + "ethereum_private_key": "0xfb02069735b4a245aa3c6a9ff0b2bf0046c13c43ed96f17c6cf929c5d5f4dfb7", + "ethereum_address": "0xf6A70dDAa26CB37C287fa281289128a49f11F54e" + }, + { + "mnemonic": "transfer leisure recall shop air tissue dune rebel final quote service ski", + "kaspa_private_key": "87932b9c105048752ff36ae46ef10dff282cfe784d2ec5bae2a8bcc8128f7b0f", + "kaspa_address": "kaspa:qq7d67t2rmme083hz0h867gy6raxj4f8hrkvvd8sr726rhv40gjfg4jsxsehm", + "ethereum_private_key": "0x7c58cc42c2cd51b4dbc061a5076e461fbe4a81968863bf089702c96c9dc996b4", + "ethereum_address": "0x03797c27F3F2dD081911C7fCefeBEc9c0198d2E1" + }, + { + "mnemonic": "crash school century rough hundred castle help frog horn fashion renew begin", + "kaspa_private_key": "7b2e4f7f898beb430c011aec0a05caf6183edadbfac7eefdcb5f7d798278cdcf", + "kaspa_address": "kaspa:qrsaet6vwy6v5wckws08zngr5ngq995dwjeluk5mv03vwdzdfycu7vsf093de", + "ethereum_private_key": "0x6168313c82391986d3d7b2fa32f4c0af2ddb1623e211dc9fcc4fc19a86f17da1", + "ethereum_address": "0x86680D2e0b21322c51d63DE8B971999FEdF68498" + }, + { + "mnemonic": "tortoise discover raccoon ancient coconut health farm beauty foot early pill inhale", + "kaspa_private_key": "f0932069b926ad338e5b3e34f1923a6bed5a7879a5a178b511fb6c930ed6d640", + "kaspa_address": "kaspa:qzrda7xfva7yjh6u4z0wjvxsn40nf2mkhh0eu0hame6ftu3w35ykqx5j8jaum", + "ethereum_private_key": "0x3597b9966f66d2fbcc160c98cbd278eb080a5e0b739ee57727fd2a121cfa3126", + "ethereum_address": "0x7dE30230Cb47A87da0e019C9196436A90a9c4f8e" + }, + { + "mnemonic": "hurt lab dial hub junk mention spray pulse nurse home tower enrich", + "kaspa_private_key": "413706c8b36033a9f9e053fbc778ee749806550ae9ccc3b5b5a0cf9f5d628e48", + "kaspa_address": "kaspa:qzu658xnhrz26amzd8x08tdqxrh87c2dd43lu6erq68pn5066zw3x26z9adnc", + "ethereum_private_key": "0xca5de1072d7eb8b385d2a09eb0c4f6d0eefc56208920e203b5b65f0d6b80fea2", + "ethereum_address": "0x98B908E27770a76b3DE48CC34f0A83729D9Fc23E" + }, + { + "mnemonic": "oyster behind loud hobby minute climb banner nut push great burst educate", + "kaspa_private_key": "d24ea6f8ce212a0e3c4a11156c704bded3da9a899fe8ab6ff77d90997c98e5bf", + "kaspa_address": "kaspa:qpw5z5uedwlv6zxfes5a889xwc6zmnr5ava3udlhlfrax7524quq7jlaq3qxc", + "ethereum_private_key": "0x8542a2d11118a39211974d0d8f4df0a98b5f945390d89bcde11612c30d032c0e", + "ethereum_address": "0xA5A6EBa2C624C6938B559111eAE3cBf952433A05" + }, + { + "mnemonic": "broom edge verify crumble episode funny enrich gain collect ice fun into", + "kaspa_private_key": "6c58c629cdec1277050b84de8673278008c10189304b3c919bba915d320c1cca", + "kaspa_address": "kaspa:qz3x94ta8hew456h0wlfhxdeqwtlnh43px5rvfwnuwscctjkts4q5eed38kal", + "ethereum_private_key": "0xc4cd36e33c094d203771c91bd078da3fdf211955439ee73c4bb639f5344fed67", + "ethereum_address": "0xCEc0119EA27Dc69FA526572d63a12ff03b6ED46E" + }, + { + "mnemonic": "feel flat around rain help face actress raise silk situate west quick", + "kaspa_private_key": "2315c1f0eae887c5e3fbce4d1ca8bba4d2a2c7d4672d3e81495848077eb5f8c2", + "kaspa_address": "kaspa:qr2u8z42zy34rw9e3nejtkey9nes9kkyg3dhtr90ae6gg8zeqtez5ygdscj4r", + "ethereum_private_key": "0x8fbada28db3741213ba867b5f296335e12458d6b5fc72896b44ddbd76a0b8c1e", + "ethereum_address": "0xcaDe8668908e60A241CFbAc9bf3c52Ce9c3b944C" + }, + { + "mnemonic": "vocal wild skin rate brain walnut law settle zone disorder girl hawk", + "kaspa_private_key": "9678912c0879e6d3ca7266f80ecefb08a8de4e243c32e40ab6bdc64b86450ca2", + "kaspa_address": "kaspa:qq5gll7cvcww7nmrh6g3yr9ydp74n0l8rvsw3c46qy3eeeyh8t8lg5k88ggug", + "ethereum_private_key": "0xd97d28d6941fcfdca9c9e433e10f9daba6bb7d950113cacb83f3730bb630e283", + "ethereum_address": "0x60a5Db9206cf011c3AF808e42d75E06dE23d04b2" + }, + { + "mnemonic": "uniform release boring wall slender volume decorate twice raccoon glance devote wine", + "kaspa_private_key": "82df5d4afec75ffec9d8ca372a1e4857241038cfb46c4a414a6055038cbb8ac1", + "kaspa_address": "kaspa:qp4urzmal309t08tmu9z3h3cz6u492nx82fhg7fmm6228j8p3ejcymwqruge0", + "ethereum_private_key": "0xbb2ecc8b9f58678c276e89e95c31a5718265121e182e4bae2bdea67d44dcf76d", + "ethereum_address": "0xB31D65883C829f18ab4F29dcC4f1b71DB92f9e93" + }, + { + "mnemonic": "anger domain tumble popular answer potato auction cradle distance army blush teach", + "kaspa_private_key": "d9734872033922b082d42b6ba3f281f5d62d4b2bc763123274181debe3075cb6", + "kaspa_address": "kaspa:qp8kalxgj7j04ux935vhr9lmfm2c45tc9zkppv4lcxnhusl6us60gvscsvydj", + "ethereum_private_key": "0xd2aa234679b4a1a22a1bfe970e73c049656ea78e84fa54c2dd5524ca0c82a803", + "ethereum_address": "0x911B5C9C77eCa4c2060FA2e4a29F2D764c804497" + }, + { + "mnemonic": "shell become install legal mercy pole same grief denial live island jaguar", + "kaspa_private_key": "624b1cabb95f2a0064bf36ad30496a1545a51c5d114249e4988033976be61e8b", + "kaspa_address": "kaspa:qzr94dd4merg8yw6nrp5kfsqd4y5kgtmd0rnsg2nq8scw6xauwevun9mvzzqe", + "ethereum_private_key": "0x2753847dc96562d382d71000f439c2d74421f66605be424ac36df2a7ee9e0142", + "ethereum_address": "0xA36b154183247fF9feeB79C0a66430cAD92e8f22" + }, + { + "mnemonic": "fix item bargain record author afford thing salon lyrics hotel idea drastic", + "kaspa_private_key": "6e5ee09bdc6a659be5b0fc129fa7b359482259f347f6c780ae0fe4525713c069", + "kaspa_address": "kaspa:qr39z7ucq362mhy7p2tcasmafzrm5uv26l4zjwnwy3hnew6xrpewx69lgl3pg", + "ethereum_private_key": "0x7d4bf542b6123f045e8e901b82c791b3892d80a0404392d87ab488aa084a2d58", + "ethereum_address": "0x40477bFd6b7eE2eF19e87f7589d22b09F1C8Ae95" + }, + { + "mnemonic": "scorpion crush joke night horse update wrestle vintage obtain age pumpkin before", + "kaspa_private_key": "21ae8fdf851d8d4f7ef01e9e7fa970a404938c7bba399d9a8ccc286241d69da0", + "kaspa_address": "kaspa:qpql49vdrzwm080sx889u7j64yfdpslvdj3p6lfta0cjnsfxmh75sfdd9ze6f", + "ethereum_private_key": "0x8f05001e3cf08a68745bf4c2d582c37a3aa525b0913606b7540b5e28b0c471ee", + "ethereum_address": "0x4980b91cb3a663f69E47ec65EA65f15734924C5b" + }, + { + "mnemonic": "idle marble trouble knock eager town real ecology kingdom ready goose forward", + "kaspa_private_key": "a1c79c0b360e624c32591103bf28fdb470b9c9c921fe171457b9724230106f43", + "kaspa_address": "kaspa:qzd8efjgh3dtld22vffrqpzpy9f7m09xvrhqgms5lkpnrneulgntwz4qxeguk", + "ethereum_private_key": "0x0eba833c7a0a334401f47e186e03911d1b7f43a85247372c01ccf4b94555a73e", + "ethereum_address": "0xF2FfcC18bdf3ca9d6ffdbA94f2c4081aF0505D96" + }, + { + "mnemonic": "slow fix bullet any planet token loop mystery champion tribe often plastic", + "kaspa_private_key": "22413384f1de0ff927da5e0b445244aedf997bcb096bfc101e190d318baa3786", + "kaspa_address": "kaspa:qzv3gqngkkf8pclplrzdd4plz0l8dk8znm3pxz7g790sjwu8fckugt5a88ehu", + "ethereum_private_key": "0xd47778272bc43157a860334120a15858484e7675b257ff9d16fc9f733a332e14", + "ethereum_address": "0x74fC5Af28468Aa0dbe14Fc412C85d592217b07ce" + }, + { + "mnemonic": "scan stereo fix target congress hurt acquire estate tiny surface fun obey", + "kaspa_private_key": "40d5cb8fce321de64016423f43867efe7a1cc54dbe8af489697df5f383389fb3", + "kaspa_address": "kaspa:qrs7wwcm4qgavfvcldant50npnuw86lequgc7ldgctutnny2mdpc6z4f2shcv", + "ethereum_private_key": "0x2e3ecda35ea83fe788173b14d6df8c588a8d559052892dbc352e92054075311f", + "ethereum_address": "0x1A4600Bf3eF7D251930276ede30Ad54a86BCB037" + }, + { + "mnemonic": "exotic shed toss armor canoe victory wide worry oppose lottery pioneer seven", + "kaspa_private_key": "dad52a80ed1887e50339ba0bda8b3302fb66fc881daf3f3f9a6be122a8b47239", + "kaspa_address": "kaspa:qqkcu4cfrz96gp74hppvn6rn9p3nse5uv35x2q4kk7g7w73cf25wqvk8fevva", + "ethereum_private_key": "0x5d1d9c2c4e6f98e435bc2050fcea77f90ddef075b0e9622ecadd9c2a41be57fb", + "ethereum_address": "0x5207bF701A7450b6de066f9CD89121C3d299feB1" + }, + { + "mnemonic": "shoe tonight guilt scrap drift bomb slide owner proof exact next polar", + "kaspa_private_key": "a019fe267cd630fbb5a821ec095e5dd65189939348085f563e754bb86acf1b74", + "kaspa_address": "kaspa:qr0rd6sdfrvgl6v4qgffw24fcdz06rxq7kdtcm3neaf2vq7ttnx9v5x0gatfu", + "ethereum_private_key": "0x2c7897c028bcba892e6c422ec6c93577850850e3852b706f80c1116eb8ac2aa1", + "ethereum_address": "0x913B723738e19b91B40bfedc6f6349C789284BDa" + }, + { + "mnemonic": "ready shoot cave relax broccoli master actress boss helmet city bring between", + "kaspa_private_key": "cd1564a06325b93d2116449e64a62e9ec115fa541069ea003e831c826abb97b6", + "kaspa_address": "kaspa:qp6r0c0n9ecfkpwpymcc4gesfqrzf8man7r2gthy5wpu0ka4arq4gjvmhrgep", + "ethereum_private_key": "0x4032cb45061aed132dc1ae8011758a2ee165d332348f96d245a1e31aabdcd7ea", + "ethereum_address": "0x6C9C8327d8Ae8f525De0CB781F42653b565891E3" + }, + { + "mnemonic": "quiz wool bone embody close fetch aspect guitar beef add text planet", + "kaspa_private_key": "280b69204a258943237c43e3731a6998139fc044058ca9e902758fd49c9bb229", + "kaspa_address": "kaspa:qqj23erjjhxjvx0ayr8p4hnqfaqh2k0yq7l4qjh7v2vggxdhtc2furl6dvt7a", + "ethereum_private_key": "0x3dfb95d1c043c408265e4e08789079f840e431294890ebde38b8afb89df73fcb", + "ethereum_address": "0xa76408F61a6BaEbD8b7e69ec96672303aB6E4420" + }, + { + "mnemonic": "bridge wear night unfair stable stem blame quality boat damage depart february", + "kaspa_private_key": "19c703b0d102f4e2917f92ea473a5b958ded9bf1e307a3bcd84a75feaad544d6", + "kaspa_address": "kaspa:qqt5fjmfvffdxw6ecn6eyuygr3f8fc7yxaql53yjwqa0xgear8jcq7jgm8t7s", + "ethereum_private_key": "0xf2c7f435bc35a1cac90b6af794595e1e33a4a07e088179febf5964e0313fcbb6", + "ethereum_address": "0xf28983eA31825436db954DE573d65d8b0Cda24b8" + }, + { + "mnemonic": "indicate acoustic term truck express spider excuse shrimp mutual horror gun health", + "kaspa_private_key": "995fc4b7ed4ee4d27f3888e262e175129d4da03571c5601ba9b93fa51e2765f8", + "kaspa_address": "kaspa:qqhp5745nywez5gdjpq88rl2nlrzkhdnzcxgqws4yyqaa6nxs84d5akua9zzr", + "ethereum_private_key": "0xda71ba5f3f898ff15b4cc24ad3549c4c56e7c148cd1979295e314bf07aae55c3", + "ethereum_address": "0x979686Bb51d8277A7D6ad5c6980714d02906aD1e" + }, + { + "mnemonic": "cross gallery entire ripple liberty expand zero creek bread pink symptom alien", + "kaspa_private_key": "78810da1168dbefbc033aff40727a924721df16c64bcd961ce10e1b821bf766f", + "kaspa_address": "kaspa:qz4kcqar2lqqjhk8lu3pwz2xu92ghvjnc0y5jtz0pzcqy6efag6qgmkl322ar", + "ethereum_private_key": "0x26085a631a93d8b7dfe04e74c283b1b9bd5a6455374080d049e1ec45aa2d0d4f", + "ethereum_address": "0x7bea57A23F046377993E4ae5667969013F0A2bad" + }, + { + "mnemonic": "syrup faculty park punch orbit fringe credit kitchen help scissors lunar magic", + "kaspa_private_key": "3ae8dc890c918f8e26dd1a551e29be32e1604f53fb85403a93c1698e30504821", + "kaspa_address": "kaspa:qqqyrql32zly2t6gmteh3twww93ua88gq8xu5arxnd4d67vl0n7fgvc3x96n7", + "ethereum_private_key": "0x9816e93de394c8e4d200a3911b41639172ccd9806e6092d12116df21c53ad68c", + "ethereum_address": "0x58eFb4666C9080AD8dD16f0fDf1f6D35898b86A9" + }, + { + "mnemonic": "pony scale trip enlist muscle lumber bachelor copy enrich pencil attend supreme", + "kaspa_private_key": "b74f7420b3e4e17d30e4e584d22a8b83e1a7afd9d2fa8daf0c87d189b843b04d", + "kaspa_address": "kaspa:qzcm2zgmnrquvy5mephyd0pheqs6e9ulkh96rfrw4jtxj0djhd557mwm6zccl", + "ethereum_private_key": "0xaa087d55ed1a09cdc9c8e20ab6cdf1a4f00b8fd34e7d47d7a0c525d53728160a", + "ethereum_address": "0xeEDFe0dAa718AE557E49a1cE6e8C55f36469853d" + }, + { + "mnemonic": "left car virus term brush need media castle panel runway maple decade", + "kaspa_private_key": "f5616955795668adb7a392279f3c6f11daba754eea7595c71da3a296d9644a49", + "kaspa_address": "kaspa:qrh9zkj0mjytda5j66jg9v6de4ascv37zjjnettd6w3mafpwynff7mtmjjd78", + "ethereum_private_key": "0x434a46e0a9b36e33ab958dc03c16f6bf32bcd2578264afdad69af1f7014b5e7b", + "ethereum_address": "0x280080cf45Db80508Ec3d1Db02d326f7d03D5a4D" + }, + { + "mnemonic": "burger outside sorry divide idea torch uncover survey simple aim skirt laundry", + "kaspa_private_key": "a42749a02ddb4d811d0559630aaab4871a8543e03ccb340b7e65a168230f3c07", + "kaspa_address": "kaspa:qr9tackjljgd77u6ll302uk4k3zum0vxh3fgnmn88jxz6h975c3fugkxlcnek", + "ethereum_private_key": "0xc6bc49ebd4694a9ba25ca71d5e173a184fa2960e9f6c72fa65cfef03f4adc468", + "ethereum_address": "0xdBF93FAdF62147DB72105b06d202031363d5c9A9" + }, + { + "mnemonic": "view senior imitate tomorrow sport market produce vapor eight easy empower nut", + "kaspa_private_key": "7992bb49fc97d87089e763dcf40c59ded039b05e3d5607012c431e0058c3e6bc", + "kaspa_address": "kaspa:qrwxpps7cqmr5llysmu0j0v96g88pjltm93gtzsdypj9y9gv93sk2dh2g7dg4", + "ethereum_private_key": "0xcece54f771c9629f4c7f2e8158193f60d3e9b2dd4dbe93fd49076d17d0bd4b23", + "ethereum_address": "0xEa10f87e3DD44150573D2A37Aa7A4b769DA79F05" + }, + { + "mnemonic": "race peasant piano reveal civil zone lonely north salt machine person loop", + "kaspa_private_key": "b9c7dfea8af295109f20956b7a84f71385266a3829b5e80e7d0f153f35e36e95", + "kaspa_address": "kaspa:qz3lshf636rll5esmnf3ut3vy2rhue0mg8rafpw7py65k7wg83ypj6uraw5tr", + "ethereum_private_key": "0x700bbb3618185c9c552a763b1c570048d3e026db2cea1e182fcaf528cda73486", + "ethereum_address": "0xCD25A5A42Eb66E2A8aa30203Dc396242dC68c8bE" + }, + { + "mnemonic": "tube grief edge direct above attitude clever tag dice swallow legend join", + "kaspa_private_key": "c9faee23fe23792002a12112d124ae9c1b3efec6fa68560aad63d8b125301407", + "kaspa_address": "kaspa:qrqpxdm0dpkpdh9a0kv7c3f83mn8nqesmeutcqxl93pcc9prlr7sycpyy08f4", + "ethereum_private_key": "0x12cd68dfb81a778c40d78d01abefefff83ad8d6353ebe15e9324e9b7c722ed81", + "ethereum_address": "0xc7fF7f088cdC23e6107087Ba115D624D541D09b7" + }, + { + "mnemonic": "wrap garbage index happy fabric vivid bracket pony normal pledge child design", + "kaspa_private_key": "d3f46ecb6cbf957cea193d8b0b56beca37176d11af25bd34f6555c453b7e2e64", + "kaspa_address": "kaspa:qq9awwc3w88llm90uxnugx8j984uq98uf06s52xk73l3hfzs3csyutv3dvy93", + "ethereum_private_key": "0x249f7c69728d9c98dbbfc64cfd487028c242c389ccf54dfe119f47adae55d83a", + "ethereum_address": "0x0A69cEE231d3A58AFD6937c2958879CdF90cC0A6" + }, + { + "mnemonic": "lend harsh depth rubber become stumble clump news never unit arrive miss", + "kaspa_private_key": "969605afac3d250fc4e9958def6300655933dab723ab93c8bf68ad08da1c34f3", + "kaspa_address": "kaspa:qrmt2sq2kykmr6dgrtdl643gxw8jjarunhxqh5fh9966tmtlv7l9clch850q5", + "ethereum_private_key": "0x0d6290d4500c51f74cc1c9defc2fd740445b6740cd9aecd7618329889ec58ba5", + "ethereum_address": "0xa73B597eF02DBD7E0909D7B07D12FfE67a7C20Bb" + }, + { + "mnemonic": "silent wasp nasty couch theory explain deliver found avocado phrase provide photo", + "kaspa_private_key": "aa8a01e2a81167808e843f496a4956a1bb6d6ab2d0b7fd31509d68fd9094cd33", + "kaspa_address": "kaspa:qp4te6lumtkktkzqsx8r50mlexsfeqdlq29hrj9v9ap9cafryaszc2al2v43u", + "ethereum_private_key": "0xeb9622dddb4ed7e1b14f1a77a11d24a72f357dafd84e0d02c98dfd234d902e90", + "ethereum_address": "0x48e1caE47a84ADbeb6105b94Ed839F442049275a" + }, + { + "mnemonic": "mistake buddy immune slow impulse cost view ostrich picture knock cable eye", + "kaspa_private_key": "c7bd213d0b771e1a7621538b26d2404e2f02411b1b0bf4930fd42175a8893eec", + "kaspa_address": "kaspa:qrckxphgus9mnnau7qzklqjer7phnwp34dmkf7w86v3lgq7syl255k0m2cuuy", + "ethereum_private_key": "0x1b4fa1deb0cec67ee91b5f78ee9cfa1132534d912688150d02430b0abe975af0", + "ethereum_address": "0xdf9b18149a0c3b1C2A89e827212ae73FDb43D72E" + }, + { + "mnemonic": "peasant buyer joke rose silver credit awful zebra fancy talent skill market", + "kaspa_private_key": "7aee939b7d1c2b822ffb980180aea4306a4079700e8e9d91339a70b00eee6a71", + "kaspa_address": "kaspa:qqumz82fd5llqwh6njw7zgjz8cs5tu7frk625vhsh3pf6gvp85zdg795kqdga", + "ethereum_private_key": "0x53e50ca33f01ccf8b6587469233aff1bfaf26b6132e63ee906aba2a7fbdde85f", + "ethereum_address": "0xfAA5826C0f759C21E951Ea34805681a51A99C486" + }, + { + "mnemonic": "attack outer sketch era odor guess creek license vague just window pudding", + "kaspa_private_key": "0d4f124d37ef252efb6b9d3fa8f83752104ae5123b9ee5265a915a28b84d8092", + "kaspa_address": "kaspa:qrsrv6jaq0uwp6ffl0v36dd9mh424gukx0ygg3w2ueqzz97v64dzc7ew4qq8d", + "ethereum_private_key": "0x68151e719b75edf8bf4617f3cf9e058f2f44677e0d0f4e1946e380b6fa14767e", + "ethereum_address": "0x7Ac890e76FF8af76972fe94146db3aE150996c9c" + }, + { + "mnemonic": "talent write daring solar call favorite crystal large opera lyrics reopen dwarf", + "kaspa_private_key": "e208bc5e12563e63232ffc4c00f0c336e214a6bb8088d433cb00ea5db126d93f", + "kaspa_address": "kaspa:qza89sttlhfz25lsmvzknc0j6u7ayrhe6w0gzykksjcfcpzwmx0gkpx4aymhs", + "ethereum_private_key": "0xd19d31f2a7da10656a36799959f21f86c265849771bd2d1c21851400d4c7d97d", + "ethereum_address": "0x186Cef1D939fB2b54824E82677Dbc45b2bde2CE2" + }, + { + "mnemonic": "shuffle account cable parade envelope endorse turkey picnic basic palace burst auto", + "kaspa_private_key": "1d374e1c66277fc53c4d772c6a35d4ccdc8ce774e0d2af0aa4d717e3c30f2322", + "kaspa_address": "kaspa:qqsfvh4za0xk0luz7c2jfzmf6uuqesu52eav235nrvuvurj0jyerzdchcaxek", + "ethereum_private_key": "0x27195a9610433820fcd081d3761ea54cc30ebab96c74e3425b1d5db3b363b993", + "ethereum_address": "0x7b2806d0CF61DaA1BcA78c43aFF2e2C7479e9c5E" + }, + { + "mnemonic": "copper talk project project cycle awkward assist engage ignore task leave monitor", + "kaspa_private_key": "693746e9c9ed73b763dd3f5b4c9d2e72825e7b3677100bcfa22976308b9ed13d", + "kaspa_address": "kaspa:qpxptnstumsf28nm0lnqa8gq300ek5n2xsjegzydag4cnvse4jwk2mxrmzx2w", + "ethereum_private_key": "0x2cdb85cbcde096880e7c405c2d9ba408d28aed8bee7291f654257b2a76778b04", + "ethereum_address": "0xecE0E605E1554d68ae802e9471Fa0dfa48902822" + }, + { + "mnemonic": "cannon frozen leave diet curtain aspect miracle impact modify entire custom shift", + "kaspa_private_key": "6a48cf4d2ac5b0d73e0b7dc8d9b7e3b2bcb46eb82ea01b057f7718aadc48e6ed", + "kaspa_address": "kaspa:qzmv6fp9wrp6zdhgfml2v2tnmxzc4jlnuyhe4vmvz975n05g3fev2rx34gly6", + "ethereum_private_key": "0x4ce77664efc6d53c131477e4b7525d53857ea2d67a349de8767dd78bbcf42eaf", + "ethereum_address": "0x7212003fFb57764D3C2180Cf4d7A508e69062e49" + }, + { + "mnemonic": "budget enable kiss slab diary believe expire jelly exile lift barely peasant", + "kaspa_private_key": "ec21d19596ae86dbd43b209bc92657de403fe0924b1907f7488a09d623583589", + "kaspa_address": "kaspa:qrx66hthu0eccghlhrfmdefupk7ge5vkm4949rl3r6mm67jfxleyggqajp763", + "ethereum_private_key": "0x04651e7e34d9bd255336a0e0510204290f3ca7422087e9710c5e850f4e02d6dc", + "ethereum_address": "0x3d446C2d48FeBFbE7c6D8E037bD934c3f11e467b" + }, + { + "mnemonic": "misery hidden region juice stadium hip coconut kiwi similar nuclear fade nice", + "kaspa_private_key": "b9efa6dd5698fc8021023b6632bb9389a1c855380255ead6e45541b0aa86932d", + "kaspa_address": "kaspa:qzwspjx7juw26mn0kt394k0azup40l82lyzz5fdj5ytm4k3atfcrg0slj8jxu", + "ethereum_private_key": "0x4002412961bc44e12ee6934f1175056f7cb094ebaefdd399c9f27ef998327a6a", + "ethereum_address": "0xeEa8616Dc576EA6e151eBc491FEBE38FBFea000b" + }, + { + "mnemonic": "isolate explain powder catch best thumb shiver shell require erode fiber trim", + "kaspa_private_key": "365e207a461a13e5a6c9b03edd8675b38c5a793f0af9ba59ed665e0253913000", + "kaspa_address": "kaspa:qqf89d8pnfzkakgywwqkm9m3qujlts64rftd350tpnklqk6a4fhqq64apmzpr", + "ethereum_private_key": "0x32d72dec8ac71ba0e2e775f6028957fbe024356d29c0ae6e8bb519f2df0afc30", + "ethereum_address": "0x8b1CcDa5592F46143b8Ea5A046582C151C8afd2b" + }, + { + "mnemonic": "general boring ribbon judge gap useless skate action grass problem library climb", + "kaspa_private_key": "52bb2e452b47a295583233684a972a542d376d48f943a9789334850f73595e1b", + "kaspa_address": "kaspa:qz53md3r26pf5ynjqqkqyepnmg4kk5pvwl94l3kxr4uyxvhark4q77jtlq28k", + "ethereum_private_key": "0x64582710e8b82c3c982440cb9d2071d2660e37df5ad90640a1ecfb1155c9fea9", + "ethereum_address": "0x3295E22f2f3d053668506d33E2866Cb6F555A5A1" + }, + { + "mnemonic": "oval multiply comfort office minimum female appear uniform labor pause forward sun", + "kaspa_private_key": "2afac19f4fca417c1db2bc54629915941b18563a2b0fb9ae2ac4e7f263fe595b", + "kaspa_address": "kaspa:qqf0a4ncw7d7te5vym5a6cwle60kh252cj4s64mzttw87gft27ctg3ynny3jg", + "ethereum_private_key": "0x57459e1ad6468c3bbf12b1a587f16d251186cfd3be9aad4b9bfc39505fff51ad", + "ethereum_address": "0x9e3FD496422363BB37eAe42eE6a99f38B73a39d7" + }, + { + "mnemonic": "club upset pledge analyst solid suit black judge undo chimney finger speed", + "kaspa_private_key": "55fb105f4eb47e45e0144546eb1186b7ed2ddfaa354c9ffa5d9b19f5fe3d3672", + "kaspa_address": "kaspa:qzvxxlnm65mmtqrv0gtapke55guwa73esqhyzsrp3puwy4k2sg3nkfa5hjncx", + "ethereum_private_key": "0x01d2e126f454ac58afc18c049df56784fab42c243ee9113db77cd12a5451c005", + "ethereum_address": "0x7f3a5c3AD3Fcc0187358BcD22E2505f8e9C9a967" + }, + { + "mnemonic": "erupt asthma pulp uniform absorb slice umbrella laundry over upgrade click basic", + "kaspa_private_key": "647a1f64f6ceccbd006537ad77301d03035b50a130dd4727408befac18cc1c67", + "kaspa_address": "kaspa:qrwga460d64ceeupz5k6mn9uf3xc8pdc6ptmu4d8q9fv5a6hqqfzsacx85rhp", + "ethereum_private_key": "0x3b916465e7ac92a361f1b3648590e7b972a93987db5de4d2d687e070202860db", + "ethereum_address": "0xdd5862811fe1cb0CEF2A831cf1bF3E61E5BccF05" + }, + { + "mnemonic": "slam obtain earn team half victory surge mixture adjust gather tobacco tank", + "kaspa_private_key": "5db9206fe497d31536752b7890a5e0615746519e7f8a43f4cdcd1dca75c9829f", + "kaspa_address": "kaspa:qzmeem5expzq9s63n53g9dxeqpv6h9ax9yke7nyv5rhcvwk9xde8q9ylrzlhm", + "ethereum_private_key": "0xc86be1f0af88fae4d482808e9bb0b2d1837116db22bd843f5b25a4ddabc980e7", + "ethereum_address": "0x12AECBD89fDb47F9D27719b6606346c5a4DAF7e1" + }, + { + "mnemonic": "tower fly trick muffin layer chaos depart muscle success convince room task", + "kaspa_private_key": "154f9aebb398f340c24fbe77d2b75d19127f6f3cdd5f16f8555baf2e081028f6", + "kaspa_address": "kaspa:qrwf7k4axtq6nr3w34ja9j0n7pnl34kg5z7yj6c78qqjwh4tn49jgz93m86n7", + "ethereum_private_key": "0x9e4bbaa27ccdb62a2dd5e15fb4788aa4ac2f49439f67dd4a5f0e8fc600a4da52", + "ethereum_address": "0x56f7A65Ef856d2362163136b45E3a6Dc481504A8" + }, + { + "mnemonic": "two stadium gossip silly climb snow toss museum just smile paddle wait", + "kaspa_private_key": "bcf2f9397c6feb7af8962e1112c9aa3d9c895bdff75ad9de18044002f1461e36", + "kaspa_address": "kaspa:qpfp54cz37zchdz9mllte82ughcxucvrcu4ttyaj60hdcjtrwjyuc866ghnyd", + "ethereum_private_key": "0x6cc19cb2249ef4a99af9d95994351c9732cd5f0dd0b6b924180b19d0266c2773", + "ethereum_address": "0x8C1A3a097C1688ea52889f90C8510cee0275ceeD" + }, + { + "mnemonic": "blast trap deposit camp work nut swift clarify eternal giant breeze lizard", + "kaspa_private_key": "e7d7ef8cb7a4b5176e5626b1b442366b3f911c30e08e174e67180a0f18772d7e", + "kaspa_address": "kaspa:qzkkfc86u7xua868h4fc6rw39q5s3jvlpmsl75u75mrkk8yft5kvy394ud8d0", + "ethereum_private_key": "0xb7e309fd3046381dd8c1aafd8928240d37aea5acecb5a7dac7e74855c5f666ec", + "ethereum_address": "0x41D7D52A08614806CAb963f390e006Aa7fD46F98" + }, + { + "mnemonic": "swap power laundry awake blur garbage mosquito empower goose buzz warm front", + "kaspa_private_key": "d05e8e7ceb6f51527b20ad9ecf72496b45ec55ad61a6c79aed1e5ac0dcda51c4", + "kaspa_address": "kaspa:qq6jregpe3lmt2la2dh2lna85ge8dx5msxc72w4hxxd3xefxmh9hyu9mensyc", + "ethereum_private_key": "0xb7af31b67bd81064af3391e5aba6599662bab852fe497a4fe2ec83203f769514", + "ethereum_address": "0x974932C1a58a4374e67503b16B85B724F185f619" + }, + { + "mnemonic": "mix border depend suggest field special salad rifle custom usage clown long", + "kaspa_private_key": "c9b3447648f708c2dec828517b897ffea715e84808906d29f2afea997a3dbb2b", + "kaspa_address": "kaspa:qz5tfjateg8t5uzjnad68m5p9alq2v3uczltux9r8g87cc6hsa3uyhy4jqkpx", + "ethereum_private_key": "0x7b6305c6a4d48917ad47c3371b3fe46535133e8df073f6d61ff63d1db49c0ab3", + "ethereum_address": "0x61fA87B8BDCF2E723D9Abe26668f92A80e7C197c" + }, + { + "mnemonic": "edge bullet scorpion spawn zero rocket trumpet differ frown put strong direct", + "kaspa_private_key": "fab2d513e1552460318ffca144d9ea246010a590ccc413605922c65e19e1bd6f", + "kaspa_address": "kaspa:qrs4u8efll23hkx5jsjxakplj864zk46g8e4ymczu8fgm30zuhytg3e4qlqe6", + "ethereum_private_key": "0xf4c59a7d954228ac9bc19b242802c71489bca6b50c85bb21df64344724150e05", + "ethereum_address": "0xFA21275E4F80115D0AFdC4f49C18fc745e6878B3" + }, + { + "mnemonic": "gravity second margin foam priority name satoshi grain police pull drill blade", + "kaspa_private_key": "c97609ee49d2687567f4519cebaf5d42c0029ed6d781b381f985b1e7da957bc5", + "kaspa_address": "kaspa:qr2jhkfy4nhyglpmeh9u48qw76dr7emzzjlkgnl30vjggl69altmqdz3877np", + "ethereum_private_key": "0x2792a9d5b9d8f1df05cd6458e01e18fd339e5f5ecaa1a8d81ed3c1f4e84cfe60", + "ethereum_address": "0xB20645D45E17940F83B975A329d8f7875Df8975d" + }, + { + "mnemonic": "extra blast because any trigger surround embrace lock flame jump lumber since", + "kaspa_private_key": "6a90de4ad36fb0906bb82fed96f808583e3e7c79950c2e3d0e5ce35377b62d38", + "kaspa_address": "kaspa:qp3djm2n30wz6qfrn2qpsnvaq8qhxn83esjwjswvg23z0auk9at97903wtzs9", + "ethereum_private_key": "0x49fc038c5a0edc1013bf79ecc832582115dc235fc6b848c0582ff79fa2c95a9b", + "ethereum_address": "0xfE23F0C1661f7825A4E9F163AD31BDAb36a666D0" + }, + { + "mnemonic": "skull bottom unfair april pull fun music surface bonus spawn skull educate", + "kaspa_private_key": "679882f16e7be83136a25cd835fa1e5e024841c874dddfae509e124e7b7ccf83", + "kaspa_address": "kaspa:qzq89j7g3jjl75vqkw3unprew8y9tv3z3k7jcqqqn4gfn3v9j9r5sd4yaxvwd", + "ethereum_private_key": "0xf4eb5bce5db3399aeab49251ddc081e0f4c07dbdbad4ddfaae42401d6add09e9", + "ethereum_address": "0x8Cd596ebb06FA70DE1E3fB6fDbE1CB19cD2f761d" + }, + { + "mnemonic": "together garbage clip grocery garlic infant shuffle senior feel bicycle shift scorpion", + "kaspa_private_key": "9baa0f93fb0a0b5349f54e0eca815df0898490ebfeb66640810c326a92363c4b", + "kaspa_address": "kaspa:qquudpful2q87xkys8mw2vcnmj57ja9cncl9vykqereujvf8kc0jwwdjv628x", + "ethereum_private_key": "0x5a4b6955b364d220b2df48ee0ac66ea1b273379bef8414e68e7d9647e284043e", + "ethereum_address": "0xcf9EbB2A659072f4EBde96f0410557cfE4c1A35f" + }, + { + "mnemonic": "inject unveil peace host engine tomato entire debate report way hour chest", + "kaspa_private_key": "f5f521b97252f18e6eb0f414d2ac6cd3aa8dc248400f2f97bd98d96fb24f853e", + "kaspa_address": "kaspa:qz004kxngwgjsh5e6ydl53hwuv3cgycjdw3pwzsnvx8js8y73f95s4wycpvc7", + "ethereum_private_key": "0x8c925d0d3b643e42546868968c7063a14079c65c077fcfafa298279c3599c521", + "ethereum_address": "0x58498A372834318298E0098ab42D07c371Ef5fa2" + }, + { + "mnemonic": "gadget lucky injury various air noble finger cement box upset sun dawn", + "kaspa_private_key": "4b858360ff733a9b2b2304ed94b7d810b3adb2cc609d84ca32cf1401c52d512f", + "kaspa_address": "kaspa:qr6ayfksdqlc30n3rjndkgqd6s8dw5pnr834j5mrzxw00qxk6vss5q65njdpy", + "ethereum_private_key": "0x75940942c2f7ca04907b9d0b06d354612507ac79d3ca85a5a9445e1afd663b0f", + "ethereum_address": "0xf3b3Ae52b4CEe7578C1D79fBAAE305922D97a8d0" + }, + { + "mnemonic": "citizen love update payment anchor evil seminar chief feature display dose often", + "kaspa_private_key": "1e7cf73cc88b38e43f678539366f90eb529ff8dfb754bdfe733df41c0396ce3f", + "kaspa_address": "kaspa:qqlpt0ejdx4ewq83w3jh9pffr2zv3t0rq79u583jehpyapa5jy49gt2ejgs7l", + "ethereum_private_key": "0x38e35d906c0ab26dc1b980e29a2c404e8a2534583f550fe6c47dca537346f5d1", + "ethereum_address": "0x031C1E13D7eab8938d4a26cedA8eCeF69f28557C" + }, + { + "mnemonic": "economy tongue elbow sentence soda wish wash target fiction glory rail clutch", + "kaspa_private_key": "03637cbbaaffb8f40f19240634fc8c49cbaa87b09eb3c78f3760de24fe8194ba", + "kaspa_address": "kaspa:qrqdfc05nj8w30u4z5hr4vnwm0fzhpaahwtyh79pq9usc3zer2qfcrrs2gyqz", + "ethereum_private_key": "0x5ff366a7e3f65efafb393e21ae83dea2f917b566dc3be290e1299b40fb584dee", + "ethereum_address": "0xE68a39199322B332d5F3F95cB00fDED98d5fceb1" + }, + { + "mnemonic": "force employ marine drop blame artist bring celery green discover path dance", + "kaspa_private_key": "9a45ed6166954c435a021d873653cd8b4ffef34ad54cc808c96e29604cc1e9a6", + "kaspa_address": "kaspa:qrppyvhhd5645dvz389yr488edl35ad5re8t5p05etavfjh00dt76f8tm5fe0", + "ethereum_private_key": "0x11c804f75f5c0f3bf5d406753dab0d9b031c950ada976f00bb337d291c305e31", + "ethereum_address": "0xbB25D88CA6101A72612bC1A737853fcffE32B04c" + }, + { + "mnemonic": "swift work fall vicious upon token inject foil tiger potato palace ranch", + "kaspa_private_key": "e021ab982cb4ee97acc9a630d04e1e9ba63be1fc3eeab30a42821c9dce98707d", + "kaspa_address": "kaspa:qp6f9hammnrxvs5znl0wd887uh5tp8s0cy7m52vkwzz9cd8qgdjyqzdtq9vuy", + "ethereum_private_key": "0xbf0dfa9a2ebea326e6592949f5842f5f8e4510db1fc55558bf55ba04fbe587e9", + "ethereum_address": "0x4ceBb26b775a2d08418549EA47e607511b6476ae" + }, + { + "mnemonic": "afraid secret notable loud blur cruise duck radar train advice produce shiver", + "kaspa_private_key": "316c55b6d770aff46b110f2b0dac9dce188368df52fcccc5de267ffa4d850e29", + "kaspa_address": "kaspa:qptrjqy004mh0yeg08yenl6tu2tcn5vhyj5af3q82uchexfpyct5gqhsxnjkj", + "ethereum_private_key": "0x393b7d4288764a76e889ab50248da1ef69c704f468ce1e27aa9ab78d7eb0837d", + "ethereum_address": "0xD6a6c969ba0A66FDfb5EF19A6e0D1bD8732402b6" + }, + { + "mnemonic": "nut version title make library corn update follow crumble good hawk office", + "kaspa_private_key": "e5861774f7567cc7d1ac96a51a015d5b0b2e386e71f6e142110c224ed9005707", + "kaspa_address": "kaspa:qpjy4e0qqmjzwakvh9ctq75umysaf2fhrs90rrf3seh6wzsv5nam6hgdww6up", + "ethereum_private_key": "0xd7bcd8786a4c0bfa236fae8c22adae9c3eb56dbb1a05f7604de48687976051f2", + "ethereum_address": "0xE94Ff8A7AF5213b904153Bf1C3e8b290Ac4b6c7e" + }, + { + "mnemonic": "gym tuna retire assume soccer sick voyage verb latin raise board father", + "kaspa_private_key": "fe86d85146157d8de1030b2c5dedb1485815d90a6c834b242d904e197b12fd5e", + "kaspa_address": "kaspa:qrg0eh3crcpaemfs4464a97lm282t73d9eplhzsx6x8768ndvxs7vc4ze38h9", + "ethereum_private_key": "0xf61912b9cee2982ba1a0057a666dc799f975d81d4c20ead33953b900aedff802", + "ethereum_address": "0x3b1EeCF27797e13F83d66373b14Bc16453d583D9" + }, + { + "mnemonic": "tank history bulk debate general extend verb soul matter afraid afford double", + "kaspa_private_key": "7b8a6b49ef73eeff10e5852b32c80ff43a5f92ca93daeb00416f96f888e287cc", + "kaspa_address": "kaspa:qzxra8mrjez9nfetcwmtny9lhpjxrx5nnx9luhrya0ynpgghnwxvxtat0cqxp", + "ethereum_private_key": "0xa7612dd9072f0b0c0fbf2d1fe6729547efaf98234d110dcf43bf30463dbc7fbc", + "ethereum_address": "0xe0d8b1462015785a4597f8DbdA3972005bc7DAbb" + }, + { + "mnemonic": "ladder ensure upset kitten drill still found all virus infant window walk", + "kaspa_private_key": "7928b568b84a0f4dc70c26f1fba4af590b0df5e1105a031f91800e2207a9e416", + "kaspa_address": "kaspa:qpy0eaczwyhys25qhry27jqf27849kykame0hs03raatck7jgnmwznplv2ruc", + "ethereum_private_key": "0xff12a766fb33ecdb0b3e4484dae749ce203470d27c3ae0fb1da9aad946bf2c92", + "ethereum_address": "0xF4456AB1d9AE2e231bb3E4857dA4c7a968AD7E08" + }, + { + "mnemonic": "identify amount adapt advance need canyon lottery mosquito beach shoot cycle forget", + "kaspa_private_key": "20b43830cdbfac06cd3939509f2cd03386ddda0a07bddc6c02e2dfc82274abec", + "kaspa_address": "kaspa:qrx9l4dtvtq6edzg28f9dalwr0ndnp0kys5tear53pyf78c2n8dlju8yqqnm6", + "ethereum_private_key": "0x6b33ff98d6ad28ae9dd84e71a4200112e74374794f2ac5470127099c6a27a1b9", + "ethereum_address": "0x7086e48A28edf21a25754DD6F351d66AA6dCCD6B" + }, + { + "mnemonic": "able sting work someone isolate check grow adjust claw tumble pepper early", + "kaspa_private_key": "3eb390006ab53075c647c091bcffa2d00c7bbaaef1388d1e0492baf2defdf1ed", + "kaspa_address": "kaspa:qq3vw3mqlwhcu6fgd2k9fpm0p9utwjm0nudfd5qtxen8wunyx0ppvkynpczvu", + "ethereum_private_key": "0x618d0dca0f963b065c25bc6b2b9264cb69e95704760a2ee31a805b286ee8d517", + "ethereum_address": "0x97Df15214cBE01332A6e8FD326256940AD6080e2" + }, + { + "mnemonic": "unlock marble era sibling home desert good inside water trade lyrics puzzle", + "kaspa_private_key": "e5f754439c91d70012bab79bf5a47969e12b3a4515bf6b761008a07304fa4def", + "kaspa_address": "kaspa:qqjxvn8q9cvh77pmlz5jwknxts8legqdf8kzt72uprvzdswggfff7z7r46hra", + "ethereum_private_key": "0xcff8f69a2ba80ec046cae18d461199c02699130438e104c3054af444111e2d4e", + "ethereum_address": "0x47cA1b2340ADdD99d7759122B4F7Abe246Ca2394" + }, + { + "mnemonic": "network battle inmate normal choice limb another intact olympic type inspire toddler", + "kaspa_private_key": "a63dcb382f8ee675e78df3f366c3272d9abe8ab2b249e4270b9a089833c766b4", + "kaspa_address": "kaspa:qpp36ywycxvgqnj2t05lyxk6fclzgqcdkhhqm6rvdj6dn4ztunu67arcq0jrg", + "ethereum_private_key": "0x49c27af848bac9a00016f1c3ab1159ac8c522943af9790bbe9088335aaa595a5", + "ethereum_address": "0xF24C4EF73ccEd1D25DDEa8E6Ff14a9Eea04dB39E" + }, + { + "mnemonic": "typical empower there blue walnut bright drop drum scatter essence write off", + "kaspa_private_key": "00da303f6b1bd1043559ad6f74647e1f035f60950b6bb4d60bd24396f774f6f6", + "kaspa_address": "kaspa:qq7s9ljhleekzg5xks6xdvfrp83wwt73p36lpn5r4856fftqghc8jn9d3p88p", + "ethereum_private_key": "0x14d20535ec5f3bf7ba247ec328f38698b0e333148d42995c30b7e4baae1666b0", + "ethereum_address": "0x75b8Ea756a694280c51522D4426C9D003fACD878" + }, + { + "mnemonic": "lift water ginger castle deny payment liar quantum maze ladder laugh upgrade", + "kaspa_private_key": "140486b992bb7173d52490b2a9a43fff59af9c7317b2aa2bc84c2f56d53c0ce2", + "kaspa_address": "kaspa:qppqd0umdjhxlqvvxll028r96ngmegk7wgdpa9hs86qce8ya7y2cveesefhm2", + "ethereum_private_key": "0xee75a2fe32b08cead4972b86d91acd845b3cf8436fa28deda58cded2592a07fa", + "ethereum_address": "0xe6b7787DD540B9133d107d64A1301443257df361" + }, + { + "mnemonic": "wheel crew museum carry friend worry nothing damp chat avoid recipe belt", + "kaspa_private_key": "a6aa87a53f6ab33a69724c644836c5d010175aff2f7ad4de7904cab0cbc0153b", + "kaspa_address": "kaspa:qzh4yk7dk34h4j73lh70shn23wlxnk03slrj503qf4jxxfry3dw4qgulc96v6", + "ethereum_private_key": "0xa57815ac44c7eadac9ddadf6413e55c5fb73f889d6be3abd075bb55cd38cc4ce", + "ethereum_address": "0xCd9aC8b1E246b8A40C987050Ae431dDE699a1CDB" + }, + { + "mnemonic": "prize sure demand park toss dune speed main clarify galaxy onion fan", + "kaspa_private_key": "46d4e1abe6abded02ba8e534992dd76cd64fbf8089fca6339e5cf6ff51029720", + "kaspa_address": "kaspa:qzrmgavnd4s44x248c2gcukx5jl4xcd42gy44468ugmwj66pmgvhuwvt9keqy", + "ethereum_private_key": "0xb61e08930a20f0550ac3408ad3bac45979777d4f3294a49794ba79c70ffac458", + "ethereum_address": "0x632b2bb34575BBB1CFDf5F850b2d762adb76bbCe" + }, + { + "mnemonic": "vague sunny abuse between depart motion viable tape style stereo burger comic", + "kaspa_private_key": "38413c5c5735d7d7814454417d62ddb55b30071867afd55c411c24040c4d6adf", + "kaspa_address": "kaspa:qqmkytvtws8vhflrgkw954g5tlem7l0rtgt5f4czc0xwtkrp9tznj4h0kdv9v", + "ethereum_private_key": "0xf31de1bd2ce5cd67e2c85af5a3e240da90a3c7e2a2123ce71741ca1f46265021", + "ethereum_address": "0x80c503C058507Bf190aF439F9b78D58a5cfaF2b4" + }, + { + "mnemonic": "spirit orange truck nut rally other toward jealous cool bring insane toast", + "kaspa_private_key": "cfdbbbbcc76f5aa584055d81ca31851749f99315a55fef09da1acc1ec1d1ef2e", + "kaspa_address": "kaspa:qr7cxn9rej6wuhukfpc4u67emrdqh7zj2jhztk5h7e6hz8vhf9ju58k2yx4yr", + "ethereum_private_key": "0xe2a3d0eb11efb8b31631038cfdb0ce2bb184a5d02c05d89431be8158362ad90e", + "ethereum_address": "0x2129e2DdFf98F3bD8108D87cAD2C3f1DF1356C28" + }, + { + "mnemonic": "maple soldier dutch goat path tuition ability swear click festival canoe fault", + "kaspa_private_key": "75d31b9cdf2027dd3ef3108076aae685634760897248b27cd930a7944ff65cb1", + "kaspa_address": "kaspa:qqvsfq55jk364a69ga3e9k4y8k8qxfl7t2hvda6qmx40hs7pz7vh72xdpaq5m", + "ethereum_private_key": "0x50f253d886b3f5d4cb0ad4ef2bf7221e7a35d7cb1cc2323aee32c57277f66d73", + "ethereum_address": "0x644dcA88749B5C7AA2D964C7758753D7ca7e771a" + }, + { + "mnemonic": "kitchen globe december debris copy tone ancient social mobile false autumn visa", + "kaspa_private_key": "8daa8c54a2606f68fa3f9191d1a7cfd142a018bd3cde08f2cb09fecfc8fb782f", + "kaspa_address": "kaspa:qpspl8sps68n7yl08fkfwgpnrydst27xmwedxkkap3p6x4ymvalf2tkn0hqn3", + "ethereum_private_key": "0xde8daccacb68638351392267a01c234a46bbb4709a9e7e1408d74b6b667a450e", + "ethereum_address": "0xA818F1daf4053BA49375E2bE011B00f44af17aE8" + }, + { + "mnemonic": "project plate dog vague horror pupil melody among card hire junior corn", + "kaspa_private_key": "92a6fa34117e6ad0dabe2aafc3b7b1767a1268b12be2bd19994782e5d8b2ccbd", + "kaspa_address": "kaspa:qrhg9p00uuf93ceecxnxvswtt855ed7aqzzhrrx7zjw2e53tag8fkqpfun5yf", + "ethereum_private_key": "0x0cfb1ecc2aae8919eb5021564982eed11e00e5058b099b02f0f631d9d5326a34", + "ethereum_address": "0xF8633bf7c84C55CC658cB6A74d72d12d726d9Fad" + }, + { + "mnemonic": "coil olympic woman pig innocent slam fan cover crop cargo design begin", + "kaspa_private_key": "2c1cd94ea94822fe492ffb583609fdac9b86066ec0aeae5966b7c15cc7977884", + "kaspa_address": "kaspa:qp3mpe9jyn2363e8re2ppqdk2y5t9yxar7sgxz38d46qx68xkx5s6dztmjz4g", + "ethereum_private_key": "0x45b6c1ff7925702ac4b2bfe93c1a2c95ba62d2bc24897767a970f576cb338cfe", + "ethereum_address": "0xDAA1877c81D44EdCC09e431179417143D98Cf53a" + }, + { + "mnemonic": "gap cook aspect hunt noodle inmate boy fox hard melody pipe destroy", + "kaspa_private_key": "a2a43acb05c8322da8e549f4b883d794e7eb0bca2e4a69e2101c5e3eda93313b", + "kaspa_address": "kaspa:qqgt8p7l7vf92s4s46m7z520yqczvndhqjsvffsf2zaajx0kzc2qs2rnsmz8l", + "ethereum_private_key": "0x7e16668c3201252280ea6a8c31da18d539fe27edc0ad00f2bc074d6a34367966", + "ethereum_address": "0x105A05EA4b2754034f03396000d62285121083Ad" + }, + { + "mnemonic": "scrap skill rate interest rude humor visual tape sick atom dune damp", + "kaspa_private_key": "4ad6ed0908e2ca5a49fc7302986fe0c420dc7063f49f14cf8bc8d48df06d01f3", + "kaspa_address": "kaspa:qpypfyzyvc46va0ysyanmemqwcnd2cgzqsjg4v34gv8yf8ryhpsx7pjud8959", + "ethereum_private_key": "0x8ff9836871fa68ab92fa44436d7571fb1eb57e4da5d2d6d92a504e6bdac8ba31", + "ethereum_address": "0xf71651586E7D8e4f647c621B32D391e105dc806a" + }, + { + "mnemonic": "museum people carbon still wear remember safe search group phrase original veteran", + "kaspa_private_key": "91916fe97f782774af8f6aa64da7e832a8346c35370409d952a38a411edbddd9", + "kaspa_address": "kaspa:qp8hzqyw5rzsqcp7yrphv0ck0me65ec8xfj20f0lkcv5zc7dchvj7fjfwupwd", + "ethereum_private_key": "0x8db520b3544f4ab8e6b0bd0fd12d94bbb90b4ce9122578656c2a080827543a1a", + "ethereum_address": "0x5c22225a14FEaF3efb9202984e34C2004a2fc866" + }, + { + "mnemonic": "bracket nuclear trust beef grain sick extend spider fetch sauce amused trade", + "kaspa_private_key": "74f0343262fbea0933e020c550373e39b80cbaef2f69114d5eb6bd9bb1f554ad", + "kaspa_address": "kaspa:qrcdun6ut0gc853p30ndyzjy9qf7ctv823rq6ejthpkwnq0nkf7y6eluwt9gz", + "ethereum_private_key": "0x5cee3ab46b723b3dfe027236c0d5ff1cf86fc084c5752a68012ab7feeb0eb395", + "ethereum_address": "0xd3453Ad21284B166cb55273913641BF5d78EBBb3" + }, + { + "mnemonic": "setup mad giant invest enroll type title aware once awake raccoon diary", + "kaspa_private_key": "5245b651be4bd17b4e77f316de1891f8bd119dbf1499b61172e73990f08ca950", + "kaspa_address": "kaspa:qp5p934uyygpp67ajmm8td87eyvdr5gc0pu3qttxn9w6gqz5ezut526hzafg9", + "ethereum_private_key": "0xc616f57fd76430d70af1b40a9829efc73bf8733d839fdc597fa27b3a9152728a", + "ethereum_address": "0x531F76aF68695258c8B55c53698DB2DdafEEcf17" + }, + { + "mnemonic": "slight middle jazz comfort behind glance catch adult aspect noise enlist daughter", + "kaspa_private_key": "994677a252f88a1ed22d934292a31414918aba706a3eb87dcfdd7dec7c5ee45f", + "kaspa_address": "kaspa:qpxsvfz29ptf604ntx89z75dm28r8pnuea4fzggc658c7wh4lpvnkdk4fdr4w", + "ethereum_private_key": "0x39f933b6e4607eb9ac1c83531512d218dd0eb7e04593d5bbab1b0e5cbf403e27", + "ethereum_address": "0x0517E71CFe815A5A246C584cc33C6eFa138Be071" + }, + { + "mnemonic": "fetch deny like draw elbow orange off federal explain pulp below imitate", + "kaspa_private_key": "6a65c906aabf0c7efefa5a4ce453b433ec6ff03c501b2884c4553ba5f05dc046", + "kaspa_address": "kaspa:qpqfm5xfc7ggxw0kfqkglr8ahfz2mypglatgf98nxrl7c8r04gh6cs4uqw776", + "ethereum_private_key": "0xf371cccc85837a15ebc45013fe61e97b7c8d76715a386c1fdc91bc6f9321c1e9", + "ethereum_address": "0xb6e29ADE1C84d3aC94C870da4fcd7FDfe1F5640f" + }, + { + "mnemonic": "ability among income walnut seed minimum eye rule force finish first fitness", + "kaspa_private_key": "68f86503f4cac57228d5b5ef1bc2dc82bb756f4f9f6e70df37d8311d2673f78a", + "kaspa_address": "kaspa:qptqp3893j2rljf0ag47n5zge3su77z36hqcf5408f02n2mmrtx55qt320ahs", + "ethereum_private_key": "0x665d2a8e399b022299806c5ee97718a98cd8d4076141df3ae0d9e0eb69fd9b78", + "ethereum_address": "0xC4a051DaBf0b8e25cfF56e199CAe8F10C83db8Ba" + }, + { + "mnemonic": "special toast all please auction treat shadow present pet thumb video tobacco", + "kaspa_private_key": "35b491c7a6044ed3fd8dea89c9f4a7efbf02279fbb6b1ad7c91998a7b73ffc77", + "kaspa_address": "kaspa:qzy70w92cpldpl79zs3k83g6lvmvljrau89px7rjhca3aqln4zvlzx43f74h7", + "ethereum_private_key": "0x2e431ecb00d2c4171f758bb6a17c4121778aedec6fce68932d1550ac61bb2803", + "ethereum_address": "0x62933d905F7D0fEdc8EA908C4CB7265Bcbf4cab5" + }, + { + "mnemonic": "feature vote warfare stove number burst page potato room service bunker fetch", + "kaspa_private_key": "7714c61416ec9c8b943d9cfe62b37f0fbc4e33595d573ad3bdd269471c05cdd7", + "kaspa_address": "kaspa:qzsn3gsmu5m86zftp02gs6rvqk34guwjtnzxqz3lw0nw0mxcyvzekmdetntwn", + "ethereum_private_key": "0xc9b167cad2c99633907c5f4cd29a6738c5e58e84f64b42c5d63b5f846d8e78e4", + "ethereum_address": "0x99E02067fF994fB3C096DD521c88E385D7F782Ca" + }, + { + "mnemonic": "equal measure genuine earn nation rubber cup blood siren chicken category able", + "kaspa_private_key": "67c6ad70cc35d96cf9f9e09013b6cf3daccce4d0c3158089976ad253af05bdc4", + "kaspa_address": "kaspa:qz97tc3n6xewfp3mzse2e0la7pnha34h70ar0ya3e9rklkh94yp86keg67e3m", + "ethereum_private_key": "0x9534cfe3b5f54318f4ce038c6f9b7e3283025fbd7fa9707ed22cc81b5854df5f", + "ethereum_address": "0x8aa3b2A14831FED88Bc0F275C1918c98Cec912Ed" + }, + { + "mnemonic": "input maid rich engine fit exact cabin fatal narrow steel sail smooth", + "kaspa_private_key": "75fabe417e64776ba5f9f3f30750f0c7ef3de7936af9568095fd65469212abca", + "kaspa_address": "kaspa:qqkyhqmjvga4gdttlye5arqtfe55nxqxvuldayc6gje5kmk67xgpwa945yymk", + "ethereum_private_key": "0x55ee40d51ce78ca70276ed93d7764e24513786ab937805780eee6652bb6466bb", + "ethereum_address": "0xF24467BF04737919c87200753B3429619B9EC070" + }, + { + "mnemonic": "fiber lunar someone record coral shallow afraid whip squeeze wife flower luxury", + "kaspa_private_key": "30442a5b8bd75245aa668a6e3d101e1ccf7ab57f081c5eea6e3607cb3177650a", + "kaspa_address": "kaspa:qqev20c4pxlwnlr2wmky6s8akq7ryqky6cwklnxjw3qululcgzhyssehfd20k", + "ethereum_private_key": "0x4d7ac8afebecaff6e2d1f4173b3c07f822590416fbc6adc3edb8c900739d4b59", + "ethereum_address": "0x7ccDE1a65EBC0DACA5fB67F62E78B081588b453a" + }, + { + "mnemonic": "addict happy air collect two armed fault alien face whisper people sorry", + "kaspa_private_key": "b611a04e00cc6368323f03bbfe4d6739d34f3085dcb0f251e7b68c3a0095e10f", + "kaspa_address": "kaspa:qze9szxev8yuaqgmyh5r5wexrzplwsx6p0l67hxt2zd28vv9f2t0zc7w4pthn", + "ethereum_private_key": "0xf8c872dcb4386a127de8d4f56e13223fde981a3832322e61ad70e3e863619e70", + "ethereum_address": "0xc51304602f819a1437E81F5059bEa912185751fb" + }, + { + "mnemonic": "entire pioneer cactus narrow trend above firm laugh parrot sail cargo olympic", + "kaspa_private_key": "9503f9f95ddb8378ce47e78f3af1ef878c47b4eda19379f981ac1d82dd92bc25", + "kaspa_address": "kaspa:qzg7prvq8l6sehjfka3ehg89tde7rsh85wxaz4akc7mp2l763we5keaz0x4s4", + "ethereum_private_key": "0x4b1aa0aef59f106b2d122cb00d85396483c7661f7fdab2a7633945b83a0738f5", + "ethereum_address": "0x1BC8F9f655443A52F81E399fa0f7F5253eb16B22" + }, + { + "mnemonic": "small input wage fringe dentist air before fatigue picture mystery segment claim", + "kaspa_private_key": "dc541f7088c2a1c32bac3e0207ac1551aa98da7b0d51c3aa8557ad05c322c977", + "kaspa_address": "kaspa:qryplhj65ncp6wzgsmz4ugge0cmxxl6la8rptk7085ekrxj2jstdkl90huxrr", + "ethereum_private_key": "0xec5db30cf035edeff92bdb142dc77c98f0a07dedbafca21841aa2ebc2706ab5d", + "ethereum_address": "0x7b231c3AbD8003B81506A14e7C8365bd73005613" + }, + { + "mnemonic": "hole cherry buyer elegant then warfare such fiscal exile tone kit cage", + "kaspa_private_key": "b40d5fa28e533dcc87a91ecb337832eb4c3a08633e1372fe243ac16b180c10bd", + "kaspa_address": "kaspa:qpy0lnhx2unlhuqgrmc4j8j9dghgsu47t5v4t0x5f7y8srf8sjefqecg4t6de", + "ethereum_private_key": "0x6fe14d7c3bc0d3ac4d86996ef1b3143d818d5cd4b5a6a527ae1fec4f4aa3803e", + "ethereum_address": "0x4e00D029c79f895887A32A904363653523F741e6" + }, + { + "mnemonic": "shield corn dinosaur flag fortune struggle frost smoke dumb pigeon blur theme", + "kaspa_private_key": "0a9684e9523fd3d134cf7717c200eef898dc83ced68a99f177a7b5d49c0009f0", + "kaspa_address": "kaspa:qqte7u0e57u0nvkna5exrq7sz8me9vgrlnav5g5x3ydzzs00lryps909hraqk", + "ethereum_private_key": "0x7e46261fbbaf6a2ce574b414c43d7b01f60ff0942a86a93d5f8aa670be86cd0f", + "ethereum_address": "0x7d4A3D1599184ff9C792E70ef173b2c3115410eB" + }, + { + "mnemonic": "pencil cloud buddy spirit horror ten isolate fall hedgehog collect ankle alarm", + "kaspa_private_key": "d2b3f8a175ab689a22f75728cce151fd7d5b384710964437911835ccb693c037", + "kaspa_address": "kaspa:qz7twrjzea5l33mrewsgw7pfq642temr4x0jt5me5ezh8zklw24qgnwmqkvhh", + "ethereum_private_key": "0xa6e9a9f46a72f91de6e94028f2392baf0f1ffd03904f193940d790c8c7c867db", + "ethereum_address": "0x3Ab0FCeC1bC83a5f31b8dB676bf6dB15c1B49138" + }, + { + "mnemonic": "envelope business artefact vicious imitate actress false nominee panda nut glide chicken", + "kaspa_private_key": "919485ca87c44420148653a807acf1f1257442aa47c17e19557e7e17c3b2c6f2", + "kaspa_address": "kaspa:qqjhr5wpgqjj7wr53ve5y8wcc2gugxa7y5geugu7xuy3lcqatzmfqtkzh2s4d", + "ethereum_private_key": "0x04b8e0d8fbf920c095929fe566a8d650955615c8599ffd9ca96dbafeee12cde6", + "ethereum_address": "0x581e93AD5b8342E43B060AB368BfE6a9eBE3f36D" + }, + { + "mnemonic": "relief chase also toward satoshi purity memory runway refuse people sunset slam", + "kaspa_private_key": "a5cbe2f1b9e527a0fab376858fa15655c0abe66a8b81186021cf8098e7c4e0bf", + "kaspa_address": "kaspa:qprgl2hzmk3wm8an3td0t44asd3y7sx0360nexy2nasy4n5n50kh68kqf2cf9", + "ethereum_private_key": "0x491973f9efb4f689a66c98d27d39644029166698af1ffae2a5aa16efcf3d9b4b", + "ethereum_address": "0xb93538Aeca0E566b61747c1162ef89548F593cD4" + }, + { + "mnemonic": "spider trip parade wire divide beach ghost insect play bachelor type chest", + "kaspa_private_key": "a8d36074862be47c5bec2651891c265f349361081656e83a164a85a681ce96eb", + "kaspa_address": "kaspa:qrn74f76mky3599ya4y2jf2qcuewc728jjgjec84cpthnu3mpkfxsdt79gmy5", + "ethereum_private_key": "0xff51deff5c7d3b6f106227a6b376d1af4e44f0e956cb22a14d65973f2a8b35b3", + "ethereum_address": "0x68461d306C75ba5263b4a94edc804B1F76fA829D" + }, + { + "mnemonic": "mosquito caught slight width fish basic craft chimney color miss tiny sweet", + "kaspa_private_key": "b6d2e1d55e5418b2d5d6933e4a1116304cde4cc30556440238787668d6f42e30", + "kaspa_address": "kaspa:qqgcpfaq6q4k25ujfn2n4kqkln2a53x36vrfxg9klh533mpafktdqexrkwx70", + "ethereum_private_key": "0xde89c08f141af20518af7b6a8ffbed716eaa1bbbb5b45e04ade98ad8d830cd68", + "ethereum_address": "0xF2f77b94a41dc8E9C05a7f256E8fe64e70EeB7Cb" + }, + { + "mnemonic": "quality unknown tattoo evolve find icon lecture involve bird dog pave also", + "kaspa_private_key": "fa9173722a2167cf323018795d9050151224a9c94445fb8564031b1b231fe866", + "kaspa_address": "kaspa:qpypqhnvfly4cj5cd42gthkgds9nx4z5fxfpwvu9gld7qvy949ag55pajltg6", + "ethereum_private_key": "0x6151e1e2a4e610cfc237704882a9adaee4472fa932af9cbb8f72f307508d7871", + "ethereum_address": "0xa942D021cE1974906c7835DeFCcC9aCC4b24B24F" + }, + { + "mnemonic": "vintage hen either cannon bone canal pill swim demise typical family account", + "kaspa_private_key": "63d14e5fc496c9817636c58f1063af5b465164ca657d6646eb3e3261ddd570ca", + "kaspa_address": "kaspa:qrl7twz65n8uuvc9ysglzh4hys9ttws4dky8gs2qv2sudqcrfyhaqnd973543", + "ethereum_private_key": "0xaa4e51454248f44dc771f7d4c8b37142832e2d33a991009d6da53e12f880f668", + "ethereum_address": "0xDDa5395607d8e35D785b07bffD959C28036C1d0d" + }, + { + "mnemonic": "target extend husband dry absurd jar ridge school fringe shed field loud", + "kaspa_private_key": "8b8ca4ae2c7c2be6e5198614d4d26bff6e79d9b6e271abb51d3151076f25c5df", + "kaspa_address": "kaspa:qzgxchr6ct2ec86av0cuhnajlvx78pptthkar9s4nhd3d3jfd5akwx6q6ysqh", + "ethereum_private_key": "0xfae230cb2812c5218de4cad862c96af81b4379be5b49b63bd82e5963533204ca", + "ethereum_address": "0x23734d3500946AB7390288738Fb6639b5a77dc8C" + }, + { + "mnemonic": "lobster baby camera need evoke say cloud once wrong broken paper problem", + "kaspa_private_key": "8b0e1283cefab9d6e09e324ed2a79b4dad5de74a680c49d5082d8c2b41913a20", + "kaspa_address": "kaspa:qqgr3mffnalgm9336damnfg54nq576mj3ty5wjle3zmhf0800szk7nzdu9vvt", + "ethereum_private_key": "0xd08a5b10bd2b7ae755aabcde6387f39b68b1e6763dfd4f46a4dc293e9b5701e9", + "ethereum_address": "0x64867c989d961a6D27B536d7D941F8074418D8F1" + }, + { + "mnemonic": "cattle speed box under insect punch shift skull coyote junk doctor tell", + "kaspa_private_key": "be039c6b10f4cfb86f7492d546023a7b7d14c30e9567fb402f425ff7aa6ba76e", + "kaspa_address": "kaspa:qrgxzc54z435ln6me73y2l30us0jnkc8c4hnut96kjf7swu7cep27h63tvdkh", + "ethereum_private_key": "0xddc827cabf06cecab0d9f18ffca30a78a41d73e9e08ec2ce8e853b940aa7812a", + "ethereum_address": "0x669bef3F6a18E18A9d26916dA35378cBEB6673fC" + }, + { + "mnemonic": "weasel keep risk sting alien choose shrimp ozone grow rate truck parrot", + "kaspa_private_key": "abb77689c3595324bc97745e66264003b36a8bcff8d31008a516ff7b82791b85", + "kaspa_address": "kaspa:qqegwfk5fh0tza43kh6vgxat4r45q26vqzuqhxkkw45snv48rzpsj0nez806d", + "ethereum_private_key": "0xb21b0f18018a7680618bbfd1c2bb2833e7179e37563c67b2af0a8efde2b43cec", + "ethereum_address": "0x67D7c8f7ac26cd7B5C22C36E1f8bFfAbe969b65F" + }, + { + "mnemonic": "nurse allow stable gallery hole nice siege sun jelly cross sand swallow", + "kaspa_private_key": "ec77238b1cd435c2a4dad8494309da3f914b889381f34e1710897f5815bf4787", + "kaspa_address": "kaspa:qqw6p2grm72gx7kkzd3ag5skxq6d5trtn80syns6tnxg6k4saw6sg24lk38a0", + "ethereum_private_key": "0x311612d261009375b9d58c4b10ff0d213897490e83c3b51b984228efcd56c9a3", + "ethereum_address": "0xF999c291013552Dd4A5A3C3eB6156A72A524AC2B" + }, + { + "mnemonic": "drift rural camp jar remember plug cart mom foot uphold chuckle wood", + "kaspa_private_key": "c76955dacdd1e26c39ff9650ff4b9aa3d199c635182fb3d489031af15bbd4fdf", + "kaspa_address": "kaspa:qqvxvptwuyavhmkh2uxa3zq85pnz8yffx3xlp8jy8fc4rger5pm37erf633zk", + "ethereum_private_key": "0xc2bb86fdb6fdf1fd7148b283a1159ad3c1e20ed82d2032c9fb2e63d9f46760c9", + "ethereum_address": "0x2E5955501C776d1aF6DBE2756f3D24a0F84c894F" + }, + { + "mnemonic": "hero body usual insane grit reason damage stairs own pair domain good", + "kaspa_private_key": "482ca8c89c3500ffadf33cd35e1e343a3a33aa8fc13103fbd3a015118491df9d", + "kaspa_address": "kaspa:qzeqtskt2fh9zk7j5g3nw32sqjwuze7p99pmpuwwwxh002lmz07pgcd2xhc2u", + "ethereum_private_key": "0x917947d751c6d77dda6589d66a630f41e682c5a81e43ce8b29e90791d625bb18", + "ethereum_address": "0xa91981712E34c7d4234D44f2B0e822cd6a74799D" + }, + { + "mnemonic": "oppose music mixture pottery slam hour ozone slam youth city spoon quantum", + "kaspa_private_key": "90e587fb017c7b22ba30a01de674b087fec74044db28e65036c102818b000fa6", + "kaspa_address": "kaspa:qqh478dhxsunm7s83u5urrcuv4v6ud9vxhavkp98c89qx7rf9vudz8e3ys3ns", + "ethereum_private_key": "0x2cc00c7b3d19e81d3bac446531a791ebacab9924539fe40a8a5718396c14461f", + "ethereum_address": "0x9142dEED67E8D944bFC1aE32F1734152b7541Ee5" + }, + { + "mnemonic": "mule leg client grit dance evil blanket cactus rude point panic sunset", + "kaspa_private_key": "e296e5b78b481ea0260ac56cd8721a098453144633af6ba145ca3361be37e459", + "kaspa_address": "kaspa:qpyepmq0pe5da3ukrtqgzaf974prdc3ur6julxyrkvpwwv965xzgyy8r9tdhm", + "ethereum_private_key": "0x63cb6180112c3ba91c9411b60512d676fad4029a835e71bc7070cdfbeea474c3", + "ethereum_address": "0x449c295B7EBBAa527762F3f663e6ec8198752776" + }, + { + "mnemonic": "region ankle blur game burden casino library patient harbor album surge aerobic", + "kaspa_private_key": "822b2f9b42c3418c7bdaac3d202a6d6731c676a9178df1bda0aeca2d2308c928", + "kaspa_address": "kaspa:qrcfgcentx7cnzssj7evqmwxt3sd8hr9kv32q8dhqxny3dapqdswgnhfyssx2", + "ethereum_private_key": "0x7e8a2c2e5991caeb81a7a5ea8af74e7e0d6330a4e7b4d9c0ddae024b0df7836c", + "ethereum_address": "0xd0d462C1721df22d5Bdc132D6e2120df33a323bE" + }, + { + "mnemonic": "kitten joke pass awful cash crystal piano sure rent pride struggle fiber", + "kaspa_private_key": "8fd0e48a81331b1be1e01cf750df738524e09be1b2dc9fd966cd85db8ff723e6", + "kaspa_address": "kaspa:qz9d84x0rn4sgprtgzalf5lwy9wt985z98fzl8e27j7ezmc3zxh258mj9t8kt", + "ethereum_private_key": "0x5349b2cc4f33947131bf8cf944009d504a69339083919ea96bdd8865d2d39a69", + "ethereum_address": "0xA59E292037157449D731Fc1D95D1c0Ae0BBb2bc8" + }, + { + "mnemonic": "south civil chaos fiscal slam conduct eight express ordinary promote core weather", + "kaspa_private_key": "3814f569d445a7edd084933e267efc640449fe61d46fa11a59134497996fd6bc", + "kaspa_address": "kaspa:qrdly4y8ky42t4qsh3ggmkv23p8xm8yas4e75ryv5sqzcqchynasysztfcky5", + "ethereum_private_key": "0x451de55e18266963f429d01b78d1a4ab023c0a0001b6d222bcc6bdaf1b07c0f7", + "ethereum_address": "0x3C999cC4F5047CeDF837468e0638df842B38b51f" + }, + { + "mnemonic": "hockey people stock group uncover metal easily bottom anchor fine banner employ", + "kaspa_private_key": "e4ee7ce1eea6f014e25dd7662ca78782a3c6414a835df52e41d90eecb1a79c73", + "kaspa_address": "kaspa:qzt3430pw45c8fwndyf0rp0663rqhmv9agagfqmddqu2hr9dqk9msap636wfc", + "ethereum_private_key": "0x79ed7adf8828ec6e6445dd4b7ae84eb779707da9ca4763e5f6ddee8f746f50b2", + "ethereum_address": "0x7781742A95ad9500EbAFB9FE5a6D5D1e8D81B787" + }, + { + "mnemonic": "trust cinnamon seat light waste nose hungry draw pigeon room cheese bracket", + "kaspa_private_key": "09c79cb097514527160d1177989f6c8a61e52baff238b4f93daf192567894963", + "kaspa_address": "kaspa:qq6n24ajfs6us9902klq3gqe5pu3x947q07uwp750jdr83gy99jzur6udx3tf", + "ethereum_private_key": "0xb3e96a63f07dfdf28b498f1ed7f589b7b3736316657c98678fd4fed3099d94d0", + "ethereum_address": "0xD94C1E825f9A065F21749D8048B1dfba2a65e8C9" + }, + { + "mnemonic": "cake popular general link chaos vote animal mail axis shoe above kidney", + "kaspa_private_key": "a75d1f627d969d81f07d0cd7c39958e2fb74fdc1aa0f3dd53674a52c0842a479", + "kaspa_address": "kaspa:qq2eakzghsn9y0jh6xd0256xnjfhzcppx2n3l5fynzdz847fsen664t5e7nv0", + "ethereum_private_key": "0xc3d19baeac93b2a4b9fd95580cdf90a72472d284bb5066a3d492c4bded333c6f", + "ethereum_address": "0xc80daD2aF064798dC52D3099C31157150192fDEd" + }, + { + "mnemonic": "canyon rebel immense suggest blouse club scare result stumble artist sunset fatal", + "kaspa_private_key": "55f0f4d9199c633cd748d99464aff61c8ecc5d6aab58a04cf7c445063ee16f26", + "kaspa_address": "kaspa:qq3365hwj0t45phg8nukftmrw0tk4het8v53d8zaj0fat9xw4dkj56n6s2l2n", + "ethereum_private_key": "0x710a925a72f32d6c4da675703c38b8ed396b9e5db4b38df823581fb3237eae72", + "ethereum_address": "0x977ACc7912e6e9282d8901CCEBB47995b2daF4ed" + }, + { + "mnemonic": "bomb month vacant much mom marriage please opinion mushroom dad barely luggage", + "kaspa_private_key": "6a68286fb3bb608a0305ecf81a61a52252ef339e807fb766f141bd8eb012fa4c", + "kaspa_address": "kaspa:qzjd3sunw7pftcygffu2zydzr3uurtl7azwfyeuy506vrzlexa2g67hy2y53j", + "ethereum_private_key": "0xbae090559c3ac8b292a44c5f8f03223a511165790b719bb03e5c34eda1993e3e", + "ethereum_address": "0x5939F48a06A85473F5C9894Adc6Dc8dF79FcE39A" + }, + { + "mnemonic": "fork october hair sad alone success hollow kiwi alarm fragile ship good", + "kaspa_private_key": "ee3c42a63f3932eb40b2419ebaa4fe61df260972920b886c8d5a691edde581e9", + "kaspa_address": "kaspa:qzwmphurm7tqggz5pn3ccwsk2e7h0dm3xyawhdmgczqel7g9rhtczrgfmtt7a", + "ethereum_private_key": "0x65cb4935d5fd17900db9ae38056fa99f7978754d60128483a49b73790f1035e2", + "ethereum_address": "0x1cef4e71AF4230Cf44F38a7EffB7786df582611D" + }, + { + "mnemonic": "exclude dismiss biology biology sister glimpse have hammer mother renew attend tuition", + "kaspa_private_key": "b744efc06d7d02514a5ab031305ab29a65fe9658a4d5690184e53777ca50834d", + "kaspa_address": "kaspa:qrr94rjyyrlkarkthvsy3tfjyk650e0emkhvs5uv6jadxxps2tylgh2meacyc", + "ethereum_private_key": "0x37cfc4d3b93e2ded0b960843b7991653a2e42ca33f9889da7ce3e3410440d45e", + "ethereum_address": "0x40eFA1C825ea344700124e56cA128A56B7Ff65b5" + }, + { + "mnemonic": "banana essay slow powder fruit end citizen pulse surge matrix zero define", + "kaspa_private_key": "ae34dfe00b2530e141979e4476397412439fe2a43f47b29ee5ea78ea23a64ea4", + "kaspa_address": "kaspa:qrjh80va03n4wdussjwyzf5gelm5pwkqtj9l0lz2x3z4z7m5w8qx5zxws945l", + "ethereum_private_key": "0x45194a62cb1e926da16c9507154f6746698dae410fc2a64aba9da03999592d72", + "ethereum_address": "0x63dff48D889dD713Ce2c7A3c622020907407AFF2" + }, + { + "mnemonic": "screen cloth person friend orient final sunny blind decade wheel memory melt", + "kaspa_private_key": "028eda96da3735c1e86b1dea2892c04d6f17ba4d4f3ffc59a533f3e71f3d75eb", + "kaspa_address": "kaspa:qqdpmrtdf6f9y5u2smr02vx8gcg5neltrtuga4pjkjdhtq2drucz6nhssnt4l", + "ethereum_private_key": "0xb146aaf7c2aba572b9b98e1eaf39a3f1181ea989524bd2f03cd3b52fa1abc0cc", + "ethereum_address": "0x7206Ec6BBF0eecD57f314E0D2258000069E6Ebef" + }, + { + "mnemonic": "job system attract boy twelve lion liquid arrow snack suggest tattoo breeze", + "kaspa_private_key": "ad151ca16c802406d95cc41f39fb4e95004d5b75c13005654df6cbc7e06895ac", + "kaspa_address": "kaspa:qq94jj8ge3a70gt254c0cz8ssfl0u47ud5fae0v6y8prsl8r54u92nprjhw5u", + "ethereum_private_key": "0xd7df9edc80dcc483e6e736112969fd5a10eef9256785582710c7adc51b669f45", + "ethereum_address": "0x02Fc771F8ECBf6D75be91faeCF725C9f9e313A0D" + }, + { + "mnemonic": "blouse volcano fitness lonely imitate figure consider kidney federal chuckle caught payment", + "kaspa_private_key": "4d038012b6198514ff12c0770eef6ad9767f15ac8f50d56b829787d3b771b487", + "kaspa_address": "kaspa:qphapw4pgtfaukxhfghzqvmluvc6ny3s34k8jhwt338qfqzk6sfc2fqtvwa9c", + "ethereum_private_key": "0xd39f1478218ac635e1fd011b61f78e470e777c0bb0470156a8d830d6fab02bc0", + "ethereum_address": "0xec74dB6f052bDCB0dC84bE38b5D87Dd3159F0621" + }, + { + "mnemonic": "soccer duck pond pipe question between advance squirrel rigid arch target diamond", + "kaspa_private_key": "728aa1c8e6d6e3bd2f69dce49a9f6e8089c6b272c105121908cec07909f6d6be", + "kaspa_address": "kaspa:qpk06lhhzn44v9vg5ew0yp4h2tagsk2dt86j09l004n64zwjuwaxu3e48zldm", + "ethereum_private_key": "0xfad9f226cf01512031eb08f48b4fd3a3f71ad4cb5d268a754402b18b3ca94e2e", + "ethereum_address": "0x5242ca1fE957EF93bb56719370cdb56541D12A2F" + }, + { + "mnemonic": "imitate blind glance panther response raccoon cost now merge kangaroo earn ask", + "kaspa_private_key": "a85548a64042338a47b0b64bfa298a4aa2b3d9b65452fb4eb73ecd9efd97c86c", + "kaspa_address": "kaspa:qrq6ysskca9uzl5t8g5quynhsvkd9hv8dzu98f2ls52835nr8m54whdlhanvr", + "ethereum_private_key": "0x4d4479210b3c3eb280f3485446fe5695f025eee7d8eeb467f91a95b04bbe3c2e", + "ethereum_address": "0x21201e54d850011eFf0430fd31AAc6b87a105375" + }, + { + "mnemonic": "regular near sign quantum foster crucial tag remain refuse behave twice decide", + "kaspa_private_key": "3f35ec8d8346f1fc56aa373c24b0a4755b15443bd713a1192094a5ebc6f361a0", + "kaspa_address": "kaspa:qrnc0vqg8w737gn4ed9xcxx3tppz3hvjtmjczglj0k5pgh8yjgx0qkme4zm7n", + "ethereum_private_key": "0x6255487ed409ef7cf2a666946182d9083f3d3fb541725fc9ce5c1c81d411c678", + "ethereum_address": "0x8776242FA35Dd198319bAE4f2E0dEb46cFcA8509" + }, + { + "mnemonic": "taste rebuild effort chunk private catalog airport spend below afraid pony cat", + "kaspa_private_key": "85b421463381dd1128e1b5d34cceba296a7856d698eb05f0a0b420d62cdaa17a", + "kaspa_address": "kaspa:qrsgnmf9zhhk5y5pzpqppdgh3cw9e26xx5npeljh9nq6wy4scp8nsydllkeg4", + "ethereum_private_key": "0x54a4b1c222e190bc18a3cc298920fdb899863a42a05df56d45c8a0763850f9a0", + "ethereum_address": "0x0cC9260631A024E7c8C9d029da40a00c5118C169" + }, + { + "mnemonic": "invest similar prefer rain aim relax celery exchange wrong ankle sentence link", + "kaspa_private_key": "4ded530bec7f1136766064243a9bc9d785e91c3611be267c1f51e6cb4f4223b6", + "kaspa_address": "kaspa:qqkju883y3tskn70paqfk6m0ankz6rw2sdf0hfv35vnxedvpavw2jc605we6z", + "ethereum_private_key": "0x2ab4b9cf127d5a9d4ad4584a6cee3d2f42e9c5c50f7ddc49ac7a13f1a39de60e", + "ethereum_address": "0xa04C7Dd41f638995a67C3a6E502C5EA574A4e73a" + }, + { + "mnemonic": "first nation robust horror exist else ecology warm hero unusual excuse recycle", + "kaspa_private_key": "6f94ce6daeddc5103d5f6d952d6b55d734cdb6d30abfb156d103e28cfe7684d4", + "kaspa_address": "kaspa:qq472ramtpxuly34ga8lpy56qpdtey7tfjtcjv5yml0h93m46mk8yxw5jdk2f", + "ethereum_private_key": "0x269356a02b81a31d6ad512838cc74884913c90e6ab48ec5da25d800200d0c2a2", + "ethereum_address": "0x802A48c0511FCb6b4a485CAEb898F3225c9aAc74" + }, + { + "mnemonic": "alter hurdle escape holiday spy borrow weather lonely noodle proud menu modify", + "kaspa_private_key": "affc1c7a390a79a85a5bace15e08d6f016f00c0e3ab8faac2d7623156b88b9fe", + "kaspa_address": "kaspa:qq2uk0yvh6nk8hu6fx4su3n0wq5d4rv50vx00vmv85rnfa5d3k6ykm9x5htkg", + "ethereum_private_key": "0xc4bcb031a486b0fce89ab089c284717376bb115aa96a0ac84ff2805826d6dd0a", + "ethereum_address": "0x41253fcB9fA97b58C1d39A8Cf1254c3e4cec7987" + }, + { + "mnemonic": "naive hour initial giant forum picnic gather diet youth forward answer pigeon", + "kaspa_private_key": "db2942b1bac44f44aacc80989114489618a589a85a65eab0c4c405289ec88528", + "kaspa_address": "kaspa:qqu8rq93vlpak6ghvaawsl5e3mh8lrcwj76259rk80ad28vghrz7gcrs678vl", + "ethereum_private_key": "0xcc0464f0f4f0ba641e3aefed9894ea5741f209097d5e77b71ae93c029f50fae0", + "ethereum_address": "0x86F14b02f3dDeB5c13854e02d8835D523774E107" + }, + { + "mnemonic": "thought strike online magic surprise close cricket rough often decorate boy spirit", + "kaspa_private_key": "cd4270050f0488118046dff1ea97f549dff0aeacd9c40a0fb2752c75f4eca85a", + "kaspa_address": "kaspa:qqphjvues3xe6jcevtn2a4z5mqe3pe2fuwamtutvn89zjx3cpyf3jc8pn6jnz", + "ethereum_private_key": "0x9a24c9e5152dc64ca72bdcb8390ee90afe79af7318a4f7f315ccd642ace29361", + "ethereum_address": "0x8F0DbBDb3Bd92df79256c6eA345455a6711Da02b" + }, + { + "mnemonic": "little report liquid fence order cross favorite return security kitten fold actress", + "kaspa_private_key": "d2df75a6f18335c028d01e05c70945f5ecb4bb48922836723498b8f11bd366ed", + "kaspa_address": "kaspa:qrzv6lylsgmy3s45g3xkegd2ul8c64h79nkqxn60pa6p4wh75s3s7g6ly6hwj", + "ethereum_private_key": "0x8068ff4dc251f4d7ecd9dfe36d919b4e6e19b62eb7db1c920ad96b99a54c6ade", + "ethereum_address": "0xc2de69BFE8be8813bF4a8cBF7073FB5AdfE0575b" + }, + { + "mnemonic": "tribe lunar misery cloth unhappy try measure leader hamster lumber exact magic", + "kaspa_private_key": "264a6b1b4d68243e1e94f17cec15d7664047419a77fa3fe94873d805b6f94b9a", + "kaspa_address": "kaspa:qqt9s7024fyt2fxl8gzax8k7aefdzq92nm7398myyxfel0uwuffjze4y42mrs", + "ethereum_private_key": "0xa153f542fab179034b5636a142b258f14640e5ccf054e517c26ea0bb91b3dff5", + "ethereum_address": "0x22Afb8cB3B0b042C595877CE7443F83B49cA5470" + }, + { + "mnemonic": "forum coyote athlete credit snack patrol wreck winner wet fox speak ignore", + "kaspa_private_key": "b6fdb99eac1a5a234ca153b3ca6ddfb79c779004c7cb2036ea91b260db04133a", + "kaspa_address": "kaspa:qrflat9l0kwszwegav5tzxvfjuz44qnve9pqsd6ex4echja0fdcfvjjy7hgad", + "ethereum_private_key": "0xbe3f4c404db582d22dc4290c5128201c8504574f280a08fda72afbb4f8717b98", + "ethereum_address": "0xd3b5a542653cf587194e40aba754343E05015BD6" + }, + { + "mnemonic": "drink area forum behind police scorpion young idle slot appear hire project", + "kaspa_private_key": "c4cdd586ebf4b5ecdc269fb650255c1c88c52910b45f9bd23a0fa893f78ea9cd", + "kaspa_address": "kaspa:qzm5eyfc7jqyls67v769vcyk9qz58zxhynp56knwggjnxq4w44nuygn7f6f0p", + "ethereum_private_key": "0x334662e7a7856b0a66bdfbf9674476238b748f52b56dc02d55b1c4b2a5331349", + "ethereum_address": "0x8EAfF0e19e8b0F93e565Fe84f87818321e5Ae1Af" + }, + { + "mnemonic": "figure minor surge object expose intact eye flame echo interest burst unit", + "kaspa_private_key": "fa94dfb4031e3911d1d1c1677b649ca4a124bd03d7d50488bc73f7a65ce0d150", + "kaspa_address": "kaspa:qpppxh368geu8sajqrkzulq4vxdjua9wcdke2z0u7eea5anjr3l0k7sm2j60p", + "ethereum_private_key": "0xba839f64381edf5575cad8a9c4ed9c8207bb2db8232a9eff8f3410dc5d16add5", + "ethereum_address": "0xc6B8fF6729FC1141FD1F3f882940110eb6A131E5" + }, + { + "mnemonic": "purchase pottery curve special dose magnet era again version ramp husband soldier", + "kaspa_private_key": "d6d38de4c260597a01b91f5f20418a7ea685469001a9ff7e6ab577c19a7e55df", + "kaspa_address": "kaspa:qq7kpruv957nee4uzarere2pq9v84sueeh5m5ydesup885nytdyygmnn3eqwg", + "ethereum_private_key": "0xfaf99193b59160c368d6423c6df3b6e7216a01b80eb1ac5784dbf66e0ec5a5e8", + "ethereum_address": "0x57EB16243F41f35aF749a8F6aA748E822c1a331A" + }, + { + "mnemonic": "antenna orphan harvest curtain jazz satoshi heavy cupboard ankle enlist cliff indicate", + "kaspa_private_key": "21c8b8aebeaf93f4b036fd38ee6628284a3b43bc6530f1d9283ee2b10958a88c", + "kaspa_address": "kaspa:qrz4rjkdw5382z2956pch4u7r837t7md27dnrmnsnknk94wpt0qev0l2h4c7l", + "ethereum_private_key": "0xeb08b57a79f7a95a274ae701171ad897be727d953ae45e6b269d358b422e76d1", + "ethereum_address": "0xdBb7165244fde9692e68dDc0CF92aeC87308E1Ac" + }, + { + "mnemonic": "capital waste liar season actress culture misery peasant chaos april sunny fluid", + "kaspa_private_key": "4a0ebe86ce9d272d1e4ba37cd3cc06cd7e945da26d0b728a953463bac9afabca", + "kaspa_address": "kaspa:qrsdhytgyfefa367q74lxqsvyxrgagw9gs6zmn7u0elz6qumrdxpuh5ts6s3l", + "ethereum_private_key": "0xf7ae3fe9764f2ca2dcbebef4e156ce11a2311ee0170852039d8895c9e112c263", + "ethereum_address": "0x55F75A6260EEBE9eB565fa6f9F726D205e664638" + }, + { + "mnemonic": "phrase remain will early bicycle domain family brown sun term gym melt", + "kaspa_private_key": "59556ad9454e42682b45452b9826021924b17412ca12a3e18b9df03e68981e79", + "kaspa_address": "kaspa:qzr0r5luf9vae3vct9dch4lmdsep8kmke2f2j305cal62ckkvjk87lvsyl5gp", + "ethereum_private_key": "0xc40e2ae55ca653971240bb8d30fae3a40fb95b313e6b349e5cee015153613e81", + "ethereum_address": "0xCAbc67374Ea581e447DE9c1F729ab1239444967b" + }, + { + "mnemonic": "cushion waste split else possible grit enough account autumn silver deliver taxi", + "kaspa_private_key": "64708d53788eceb40ae0566f40bec4c635eb9e3e7d3abc12906011e4aab8cf0a", + "kaspa_address": "kaspa:qrn0l3n0tsuahyx5u8e0qxrqpnas9yl55mhvjxvrthmapk97cm6asrlzwmw7t", + "ethereum_private_key": "0xdc22890a739dd9f7b7430a750c123467ae6c6878f7d008c46c24ce3ae671c080", + "ethereum_address": "0x70ce9a450738124D02d733F4DeeE3f364dc65A93" + }, + { + "mnemonic": "canoe enact crawl dutch resist peanut trick crazy borrow stick zoo excite", + "kaspa_private_key": "34fd028156c7c025d8d70d49ffac870fdb98c8d67e1833409e03d33e3849d9aa", + "kaspa_address": "kaspa:qquq6nnpmhf8dceg7zdfhjx4n9h2ufzuhymf2jqtp7dx6prgtwca22fcr3h6l", + "ethereum_private_key": "0x1836689ecae3121b79f4dac5170857dd2893c0e2eda7c39b310b52711cf50fae", + "ethereum_address": "0xce766278FDd717076eDd380C63d182Dbf5970A8E" + }, + { + "mnemonic": "silk horror century smoke figure load radar marble endless section vehicle planet", + "kaspa_private_key": "a3a37789c937520398a5b853590f26c6b95991ce569fc5d105fe2c18e18c8d80", + "kaspa_address": "kaspa:qrnuhtg9zt6mykmd5fv7n8055nc6w2rs8e5htzw74tuzvh79zhm55ta7s0e5w", + "ethereum_private_key": "0xfa9570a36845ba3dbbcb6158ea94a998560eb69b921be1159c480c2f273251f6", + "ethereum_address": "0x637B2865e431CBb7Ff6637d1b02662829b30d63D" + }, + { + "mnemonic": "moon immune sorry artefact clown wreck believe cake run engage easy lizard", + "kaspa_private_key": "590634b54e26737fa6fcc534d9290c0418d03ac43043b294cefea6730a19e84f", + "kaspa_address": "kaspa:qqyvwp8ln6yz39njfjvwlk42h62tecyh4kswgh57ngth68c437zyvvykj6mu7", + "ethereum_private_key": "0x65719fcf8a30e64254a64a1f11d740a0a280f66c6bf40001ceb48c34554f02a9", + "ethereum_address": "0xDA47D64C10A081eDdafeB9a827DdCc4854aBBB78" + }, + { + "mnemonic": "wash swing famous leader property heavy danger can adjust broken exchange cattle", + "kaspa_private_key": "8d8a953c0e7d206f35ea84b8e04b0d4cbea991ac759a0b0af4a150ead0db1930", + "kaspa_address": "kaspa:qpwj9q6q27pnrdd6kns8nm2nudfxdzzxk6k4jwzktfe8k8xrtgp6jzmg7xey8", + "ethereum_private_key": "0x6f1d339a0cdce85a32db5b06ca0020f1a103d2b16123b46d96673959faf959bb", + "ethereum_address": "0xFD46b6D04C0D219B09B546b7FdE94C0Fa421ECe0" + }, + { + "mnemonic": "board still cricket tube idle bomb trick erase voice click stairs copper", + "kaspa_private_key": "bc36df715b9042acd2eaf118cbc56e6c1071f35ec336637390730a3812fe7e97", + "kaspa_address": "kaspa:qruyth5hrsekkj5a4qu8qu2280kde3nfh8hke5zelevgxwhsskd7swuwmvss9", + "ethereum_private_key": "0xd2ef3b9e88840684976fda3494df45545fd67e5128ef9c52a006de611e4bb18c", + "ethereum_address": "0xD43C103608752AbBf22D4A823efE379484f421CB" + }, + { + "mnemonic": "fruit state december seven boss brother loop pupil bundle ranch wear brain", + "kaspa_private_key": "edebfceaab8bde1822a173c6e8fadf6fb55ef48e938f839b784b82bd6f9d0c73", + "kaspa_address": "kaspa:qzdd503zup3r9mwphpl8gcshsx3lz73scv6ngx64de4kyfedy3gdvucqjyhg7", + "ethereum_private_key": "0x3f303cb5c0437655316808f90c20d83e4bc382ec45ff9c2f4104865f7e0cfd60", + "ethereum_address": "0xEa3851a6dbA3A1a334214b1ecDBB06912B44c14a" + }, + { + "mnemonic": "absent enact fluid tank pulse expect armed cross relief rubber weekend hedgehog", + "kaspa_private_key": "cc5bf442349f32dafd7e34543252f44d9fb27d544f99915508a0dc92c44f0685", + "kaspa_address": "kaspa:qp34l0tkshvuura4lw4566muv99f7j23wzxkg3w0c9qfexeun89p64peef9ql", + "ethereum_private_key": "0x56009f3a9829692cec61ec4037f589c967d61d8818217b6c89bc58272bb605de", + "ethereum_address": "0x08359D103c9B31ca6afebbfd7307C6Ce04Ac9dbD" + }, + { + "mnemonic": "leg regret sort oblige tube twin female library cage success prize about", + "kaspa_private_key": "fc254a8724f3321c678b5c07d825704dc0ef02d3cd5d18361783126877030a22", + "kaspa_address": "kaspa:qqlg8sk7ualyn0chwuffzw9w72xxqrnmdpnt3tkm5s0l3jmapfm7uerd2j8p4", + "ethereum_private_key": "0x867d5b9fabdd1009e2c625f11f545c703b2a9d8ff8745bf51ef067088ad65cbf", + "ethereum_address": "0x4Ebfb59547aD1263dca7E68B0e269e5914b2B6Cb" + }, + { + "mnemonic": "father hammer digital absorb shiver property pull vocal relax viable feature input", + "kaspa_private_key": "f72ee5c56b8147885389849108feec18c492871e6910b63c46171f48017b2a04", + "kaspa_address": "kaspa:qz08tyxzgh3v8mnprtas57jy9jwhyd5whadygh5wmu6pfacgf9r764858sln7", + "ethereum_private_key": "0xfcd5275c18250291b38921e7f849884b8b4a49dc2692b985178e619b6dc143f3", + "ethereum_address": "0x3285075cd84fdF96bef83b3E17188A048bD3Fd99" + }, + { + "mnemonic": "gauge budget place spike describe goat page tomorrow dizzy private love rebuild", + "kaspa_private_key": "fb39a579627e534382e3b58cc88f119415617cdbc30736568f60ba54c67b1d83", + "kaspa_address": "kaspa:qru849ndsj45vyjqnrpy0m8rld3hc03ewwhe9053x5gpe87xnknn6p4hyqexm", + "ethereum_private_key": "0xa596446612bc08dc7f81a72ead6c79465132666317ae3a051c56e22822972f2c", + "ethereum_address": "0x708Ac1Aa7b783e5A1e592F64246Dd62Eaa4870d9" + }, + { + "mnemonic": "typical tourist inject slight market any fire tornado memory crunch slice glue", + "kaspa_private_key": "743e9bc57d0ae57841bf6db7e0c6bbbbb7ef4848c18e0f5769a489bae5ea5952", + "kaspa_address": "kaspa:qrcw6mcnk96f2mj4c34fq44s2d32uuv4rll20pwp3wqjxd48nn9cyf7j8enec", + "ethereum_private_key": "0xdb640805aed0132f9f7b01edba4ef2867268692df37cba79e2d35706409e3432", + "ethereum_address": "0xB1E90Fe77FB3b5b17ebb373Be5728ED6464cCc07" + }, + { + "mnemonic": "gadget trade feature guard urban idle hospital dinosaur immune dry kangaroo goat", + "kaspa_private_key": "0a118ca95aaed5ad0666f0772c0f7fa93f043696aa500afc29796db7d31ed429", + "kaspa_address": "kaspa:qqcamnxpqs6m6dgw8wc8ty66605zyfrt92pwthv6sc0mtf5kyr9g2cw2pr8x4", + "ethereum_private_key": "0x763e74ba97e8735d911bece1c72729df8257afa4f23d2ff31426ce28f4f7e698", + "ethereum_address": "0xD1Ca72ec6efD1FF5aB433523019Fdba3645D4a3e" + }, + { + "mnemonic": "before hospital glory push flush refuse jacket will captain art math shrug", + "kaspa_private_key": "89c58096f3391886980b381648fb4981cee90687900adb9a6609af0cea5d79ee", + "kaspa_address": "kaspa:qre80839xvruhpuz2785p7ht6zel3my0ln9mfsk845wct7qgcs842ykrhqn20", + "ethereum_private_key": "0xe3e0663ae68c49fb430382dbd374daafcd65911438ba27e8393525dd472ba2c1", + "ethereum_address": "0x4B26990d120C99058cAa815F199B2C327e7Ba5c4" + }, + { + "mnemonic": "crew cute main hand story chief trigger tumble garbage flame portion quote", + "kaspa_private_key": "3f69647cce594de464b88cdd20105b9304c5da7339907e49eed63eec0d0e031e", + "kaspa_address": "kaspa:qqaux2wcg0qyncm4gurpq99ty770g9h8teydqfnx3cp2qgwly5v270aasdrvv", + "ethereum_private_key": "0x04517ac4e60e098b85256e5d1cf3291d0bea3420c768cdc23dd1d3275c4c3052", + "ethereum_address": "0x61B887A79769566042F406C342F32Cf56830cD3d" + }, + { + "mnemonic": "alcohol dolphin reward that wash police grocery clinic spell peanut melt sunset", + "kaspa_private_key": "a28cb732919bea73dea3566ea38ae7693cc7c6206946c3d5843164dadd683a4e", + "kaspa_address": "kaspa:qq9rspcy6kj7s69e3j8wkagwlx38py5dzdc8pw7h4lj58hehpmq82w5fy9gve", + "ethereum_private_key": "0xb5a85667629cd4ef4a54e8a5db38b3380c29093d397e91af05b16e7434fe9549", + "ethereum_address": "0x2Eb7a6Bf430AFe115311e2101f75fee0871Ab88B" + }, + { + "mnemonic": "tenant hurry better dumb muffin shop question eternal reward pond potato foster", + "kaspa_private_key": "6a261c1cafe1299677cd2f77136ff97f126bfa5e497d09f10a05f0adbab4ab4e", + "kaspa_address": "kaspa:qqvypz65xe04xepqes03zz6y5em5vaj70rff02vgk9gj2rf3hrpz6gfpvea8d", + "ethereum_private_key": "0xc67bdef954f767e6e3d69b4a2183ed186cb7961112981b032c5a6d532e5b76ac", + "ethereum_address": "0x053269CADeA06EDf1847899cB691DF4cb195754F" + }, + { + "mnemonic": "cabbage lock sketch tattoo pipe pistol sword police find hip erase coyote", + "kaspa_private_key": "9922e01a15fb1765c1eb6979ef66dc661f545d8aae4fb685c94969454d4b655a", + "kaspa_address": "kaspa:qpu4avwd596j22gk87e6uwme9pqg8hz03zdqh6ku8f9f59570azuswe0qa28f", + "ethereum_private_key": "0x3214967075f7758f7669b6d15e9292799c0fb1d201208ac4a177378840a1e70f", + "ethereum_address": "0x766Db850B5e1D7BD172660bFB35CCf7E901de8d8" + }, + { + "mnemonic": "brief exercise input rifle always manual lobster dog kitchen zero certain edit", + "kaspa_private_key": "1dc825349f9d3c5f21980727b32341464966e89bcb20397cb569afb78c1224b8", + "kaspa_address": "kaspa:qrs8mwutj4hsf24lze5uexwnlqy5wn6am2cperwqpyenvljttkawznf3r2drn", + "ethereum_private_key": "0xacec547b9e89c0738c5e86e2a91f421c8c0e851d5ae9400db3094f97b44e4169", + "ethereum_address": "0xd3d4038652063C86F19F84303C719Cd4C30669f4" + }, + { + "mnemonic": "hand police tragic rare royal misery alpha among foot palace such naive", + "kaspa_private_key": "4423229ae71a4c21e4ee53cf952f77bfdcce8da2f2f6ec28bc5de48cf3d82f20", + "kaspa_address": "kaspa:qqpw86nt4aqk5lzsnqltuhxvt9r2td7plnh9ltcrxm6xuxc6nhnk7n3s63ks0", + "ethereum_private_key": "0xa7df4f3a4ed4d494629961ecdb525efd75ea385cb7a50901f0d7ff6470bf0b2e", + "ethereum_address": "0x2c001587c61e5AE9F39e04A7Ad6112925dDd7e2D" + }, + { + "mnemonic": "critic phrase goddess age grow elbow oyster hedgehog divert century style art", + "kaspa_private_key": "4628ceae473dfc2b0176ec83058117b7b8cbeb5f0cabc465b885b4d0bf03ef69", + "kaspa_address": "kaspa:qrccj505lh6e7dmfys5q5nrlfpevc8720uwsgsq6kqd4xnu6n0dmghpyz48zg", + "ethereum_private_key": "0x65c71cfa5eab6741705c6fc89e27768727de22f84f0f296ac41f7ff727e1845c", + "ethereum_address": "0xb011E70f19F1001A04A15Df39dFE035dA9bf4A93" + }, + { + "mnemonic": "shrimp install peace cram already weasel slab print bonus empty vintage clap", + "kaspa_private_key": "312f6834f44b87523e1f43e82e53a4bbfe661d6c7f7ea59a89dc32094af5a207", + "kaspa_address": "kaspa:qq5lk9mmvk0m5nd5rzzz7u7ykwevtu465p33w9man6djddaqjg6f2rkfx80fz", + "ethereum_private_key": "0x55bf880240a3ab55da7c8d7f77b6841b8c189af0d19b9dea42d7f2f22a8ec519", + "ethereum_address": "0xDc8044Ff68fdE11eC59F795FCf39e587547fCBAf" + }, + { + "mnemonic": "method pumpkin crop wave alpha insane mad margin dinosaur arrow sudden either", + "kaspa_private_key": "70611ad74e1029d2a8ca7c54d06340fa8dc6f03ab39d359206c7a921c6d5f8d6", + "kaspa_address": "kaspa:qzrglyfjtc822cmmjm54yphfc4quzdmxcr086czk0h7wth3848uzx3uvmnxqn", + "ethereum_private_key": "0xc7a73d29219951685c4caeb64880d1ceb6ff64faf0d718710a51d2af58e7acd3", + "ethereum_address": "0xE4DFbAdab2eDe6976AdEDaA73BA39EE3a0e78480" + }, + { + "mnemonic": "mutual country window start famous sauce theme chair prize shy sun error", + "kaspa_private_key": "0e397d909afc7c4de4e8014ef7d32a14b3d81ab1d97f69c287b9eb231b2b334b", + "kaspa_address": "kaspa:qqytsf7uryu06pkfnrl09uag3y2fgqsq9pp4v6fz2p8rvp5urj9jsr5rnq5uu", + "ethereum_private_key": "0x9292160d2e6537f1ef9f9bb09dd8b324d1867f4eee0799e36183fa92d0df6fa5", + "ethereum_address": "0x1FA00C3198Bb05757695D42d85b54a2c0E0f3078" + }, + { + "mnemonic": "enough hockey despair little elite warm open photo crime kite inject wish", + "kaspa_private_key": "cd065a0ba160aa3c3e92e45f5f13ad519ac6208c142c6ecf8d0ae5036452d621", + "kaspa_address": "kaspa:qz6nz0xlrtc2qz65zlljg0wjnm67ax0qcfey277myr704z6dq69uvpqrqw5l4", + "ethereum_private_key": "0x8e1cdb281084daa52ac8e7d438a7c7572e4a741afb459966ecdd5c452f020b7b", + "ethereum_address": "0x2c56FE9F74aaf86176F41cBc9737957865098244" + }, + { + "mnemonic": "current panther boy gap toddler secret demise point luxury pluck blur stick", + "kaspa_private_key": "55d1c642fcc7281499566ded51933e687b962a3a6ba637bd6d840c5e32f3e6a1", + "kaspa_address": "kaspa:qrq3wrzqd48dk8hz8zcwcnr24whdn9memgkdv4zddgxjj9mwls2jxrn2kgsjk", + "ethereum_private_key": "0x9933911c403028b8f87c1b85954e52cd56c6591f5774b98311e3390d292a888e", + "ethereum_address": "0x1ebb77F130191c93A8734604D39f35579970cF5F" + }, + { + "mnemonic": "ski panda alley start move leave possible this grant plug arrow borrow", + "kaspa_private_key": "b63f7814b7d225cb1002123dd34308760305d6e9f625e6ecac5da4b652ba348a", + "kaspa_address": "kaspa:qz9e235dv3mypuk5gut074uj6tca8q8j87qmyztd38xd486p58q66h2u755rq", + "ethereum_private_key": "0x13fdff509be1ce26cd6721b9fc352b70ac9447380a938653342ffdd072a5f1a0", + "ethereum_address": "0x76e8CaBB03d998b8BD9EC01220b6f082f0CB7314" + }, + { + "mnemonic": "wisdom liberty yard kit lonely impulse open owner swallow input umbrella motor", + "kaspa_private_key": "86723e3c0851d38d616752e53be117b18b52260e1d0b1eb0b4a2d5c8d498d27b", + "kaspa_address": "kaspa:qp4crvj9ypwh04wq9s0qzqqfwcmkvsjnrzfysy63h2k57qvr0kvnk7yrr0kyc", + "ethereum_private_key": "0x0751ed47c85b11baea2a245e7da4f9396287ee4c6f3721267f2e83ef7ba671d5", + "ethereum_address": "0x38331042EA58b9fF652FB871FBe103D9CD7d7663" + }, + { + "mnemonic": "smoke wild husband dry claw angle another help captain tattoo logic derive", + "kaspa_private_key": "9cc26c65c0a50c87fabb509f95b07e6db56bdef995da2051bf8d5ff60e5e3bd9", + "kaspa_address": "kaspa:qq3d3k70h99m4yuy3j0kjcg6j6w8426wqlmvpfptm39nepwyk73sy4596zfsn", + "ethereum_private_key": "0xd0a65d0bd86d15a1d0e76e8f224bc6fc0adafecf16efbef57c2dfbf0bf443b32", + "ethereum_address": "0x28390cBdEAA2dBC1283Ea1C5c77688447B08dEEF" + }, + { + "mnemonic": "victory school riot powder doll sorry exercise donor open juice nerve word", + "kaspa_private_key": "2319504454f9359d5b570965b3eff3179fa9cb45a9c5bdcca062265d53f82152", + "kaspa_address": "kaspa:qp2uaaesjvfa5r39yll4f55fhhm3szgfyqrgn9u22jvf34t7ezrk6f0vzr37y", + "ethereum_private_key": "0xc19a6095ffb5637db06cbd317fddc773c3fe76fab1e72a9c4fde53320a3a8076", + "ethereum_address": "0xF0871B7f21D623297672898Ec696B9f62b05751A" + }, + { + "mnemonic": "fuel skate inject buzz truly much group try attitude relax skull scout", + "kaspa_private_key": "11ff344415a19ce4b52fdec06dc84256d9295ec065f883f6aa6ff88c2ed1bdca", + "kaspa_address": "kaspa:qq3pd63a604rc9vdmw8x9eque6uqqmk5jqezal5pnddv4tmqwlztv0tlk0nnm", + "ethereum_private_key": "0x54aff2e1e1d2afffe14bb74afa20395b7392fc493e6ea15d1ad9fa3033cd1782", + "ethereum_address": "0x77a44AA2C9018dCE307D9cB7F0719aEF9086ac5b" + }, + { + "mnemonic": "search shrug solution parade hamster rocket disagree little green engine mammal mass", + "kaspa_private_key": "d29fa234567c27a4eea28063d2a5a42bd3b538b6afa7c4cca843961f82c842c3", + "kaspa_address": "kaspa:qqzl8n2v8vwkpaauvs6ks5qm74sf9wxr0t5f0w2fadtzzn9p3vgd5ftwj5epv", + "ethereum_private_key": "0x0e4cf7538df11ea517600aa69733ea863eeed5342abdd51085df9ba89bd267b4", + "ethereum_address": "0x5b4c0cdcad4d7B4a953aDfedb6ec557BAd1f6A07" + }, + { + "mnemonic": "vault wrap speak husband blade there uncover prepare fluid gentle chunk random", + "kaspa_private_key": "cd211ffb6d20920622cb8464d40674a93a231af085dd68456397ec86416e0a5a", + "kaspa_address": "kaspa:qps38cw78j2awz4592jeft5u9k2lu0yzgu6kxx40fmjdzkdad8z6sp00scqqt", + "ethereum_private_key": "0x13498b46c311f88a3149c2c6c2c30ab87c09d48ebfb462fdfad51f959207c3ad", + "ethereum_address": "0xB37390Bd7cA12D4EA020FcBa18522BD937AbF148" + }, + { + "mnemonic": "renew auction trim negative obscure faculty lemon dragon rare ability ridge like", + "kaspa_private_key": "a93d3dfcc73a19fb2c7790662a70d13d3727b0fbd55e318db026a86d42ad2f3f", + "kaspa_address": "kaspa:qpm4ufj4mnlzm6jmrnqvle5s28nmk9n6awydayhuu58lgwec2g6ncsc5urey2", + "ethereum_private_key": "0x149bdc6cdbbe158924c07a2b668968266c254eb7aa5552ab9d25097d646b82bc", + "ethereum_address": "0x1bFa4F87E87f0Ed6740EE7611766344a515FBA0B" + }, + { + "mnemonic": "miss level matter praise quantum hazard destroy camera host fruit ill olympic", + "kaspa_private_key": "08b851153bc2ecb3d1ca8439dac38059402a5b9a4a83f282a13082e59b084a19", + "kaspa_address": "kaspa:qp7mw0vtg4kks9rxuvm7d02dy9cfj99x7jy2gedzpp994c70tg45kqr5azaqr", + "ethereum_private_key": "0x2dc929693755e6f8f61b238888be27e42dd17f0d74e6f3bbbf4db8cabee13435", + "ethereum_address": "0x15e6EDC12AB30Bef83142257AeEb20b01c4e4C95" + }, + { + "mnemonic": "flush either critic lock vital pigeon blossom kit hello noise potato undo", + "kaspa_private_key": "5a5cdf3b959014a2637c46ede258b9167dac274e263727feb35eea9a0d2bcb59", + "kaspa_address": "kaspa:qpgkg27u0g6d5fkqrjpz3nfsrytaktm8zmyk0lhnhjks95g6n8ltvsypwdq0f", + "ethereum_private_key": "0xdea9f0899670a29578a3e8330fd68ae82289249c031c210f979e435dc5220d28", + "ethereum_address": "0x73B51EfEeCBa3EA3B7b5598e693Ef596E924CA12" + }, + { + "mnemonic": "double become robot cross oven cloud question raise aunt teach private illness", + "kaspa_private_key": "1c3007fd4957526d7fac44b6e184a8563515dfdf5b9249a6e33890e2c5c295fb", + "kaspa_address": "kaspa:qzzhu22mdgg7cf7ljmejd6cjg5x0j00a9570mq9ftztmpue8gktgvr66f4q5j", + "ethereum_private_key": "0x78589fafb9ccea8256d47e1a315ce54c03b3ba5b4de3b1a75384b4e0f9b63888", + "ethereum_address": "0x7a24aD28628DF192C1B1168575f2CD0194b7B397" + }, + { + "mnemonic": "ten throw oyster charge trial bone cradle fabric tide property negative heart", + "kaspa_private_key": "5da5d2ec95d89278ec14c567de00afdb7dde34ce0fed659e1ca11d6a4f5d36f2", + "kaspa_address": "kaspa:qz6de00x2nphnpkutg5nxfg80zvstqswz5ejlg0x2rrhqqryewf5wsk8rvpfh", + "ethereum_private_key": "0x62d853c98e3e7810f5d7a7397a56d6c4c324d57e2bcd82daf8360ec227e3a6f6", + "ethereum_address": "0xDFbDE30c14Ed0B57B11D075AA732fe2484A3446d" + }, + { + "mnemonic": "bring hockey arrest gossip humor quick wrong fox choose result cause tackle", + "kaspa_private_key": "dfd44bfe4678528a54e8d8e301a08fa8b2d4264463f966cab67f1e316d3f9366", + "kaspa_address": "kaspa:qpnsvdp7x6sqnc0taydesz6jd3lvaygunv500j2nnt56rn5pd0nj5p96a58jf", + "ethereum_private_key": "0x4a1539cc9a2d9a8f6de63969c38d503702307fd445dca438c1e0a7a191a9963e", + "ethereum_address": "0xe8BFef36578466BE129A95E14Dc37892dF23F6Be" + }, + { + "mnemonic": "pistol siege into grant play bread galaxy total possible island zero evoke", + "kaspa_private_key": "ccabc489dc36ca4fb793d71273d4e716d6a3e82c3d1b2e7fb8e081256b1ff230", + "kaspa_address": "kaspa:qzftxa7l4t4t338jt6v7mvk76qz2jgel06etjvv6ynqu2e5agu7jx5wpkuu4z", + "ethereum_private_key": "0xb0d17daf8f1f2e182ea81f9e99a33788f06b6db51b6ae7cdf84289579b4ab664", + "ethereum_address": "0x5BFfb25aB47376906FBcB3892ACc6D42790f6703" + }, + { + "mnemonic": "describe olive replace about correct apology hockey tackle place own inquiry humor", + "kaspa_private_key": "f14d1eecb600a13ebf2636d5bd5a5e8dff9cad7ba3e477e1d3b65cdf724ddc78", + "kaspa_address": "kaspa:qr4vvx65czz0wzh57853pyxj4ezum22u966spn7rl79s2p9ch47pk7g7zg2x0", + "ethereum_private_key": "0xfa2ace5c0caf9d1040fa0edd86032ed57b68a0beb89f72fe24053bacc95a6940", + "ethereum_address": "0x09fBA2c8Be66F52b961805896190e37E3deaa4ec" + }, + { + "mnemonic": "brave metal symbol side initial decide argue other seven phone bubble stuff", + "kaspa_private_key": "912dd640a1db7cf37867c0a5cb3e44bb466b08811399739240e2cc250d407812", + "kaspa_address": "kaspa:qphq3lr4fs929qzmw85lade7p6pscrcmf3lpsf79t2lhhmfcd0lfuu234rlj9", + "ethereum_private_key": "0x01bb07937046a25a33ff8d97e34f7b299a8e6a32c4a405ac288ffc567f02cff7", + "ethereum_address": "0xe50bC9aDB2807518930155304dF3F06B6eEE0E36" + }, + { + "mnemonic": "exclude coyote blood silly divorce celery person thought member office baby erode", + "kaspa_private_key": "8b10604756d5822caad52ae0185ce295933189de6b9e77b0e7883b719ce43b13", + "kaspa_address": "kaspa:qz7ll6zfhk34ysp06hzf2296qet5svnh6y4c2fd9mgt8lcgktk3j2rnvpuwc3", + "ethereum_private_key": "0xad0f199fee05e135f237109605356bbd0bf93f6ecab23eaf2988443a068cae7d", + "ethereum_address": "0x61C7C379770963bB6b97bfDc0dB897560656b20c" + }, + { + "mnemonic": "velvet humor loud clean leisure knock shine mystery gospel faculty auto volume", + "kaspa_private_key": "3e3e139b04198a36cacb3c449214bc15bf10956a7a9d65ed7d332a21714216ea", + "kaspa_address": "kaspa:qrc5txnfhcclqj8p5ntf8svnmh5dyafgmzsy8ldryngmhssw6fvakvnrnshah", + "ethereum_private_key": "0x4fcdbfd693aa05f257b2fcb3b7733291e4f2609fb21da8a28348ed487c86277e", + "ethereum_address": "0x614BfF167b35EB8fE509D22822CB60e8b50cD30B" + }, + { + "mnemonic": "minimum plug tank long sausage raccoon razor foil mixed chaos wrong salon", + "kaspa_private_key": "7c0c3f6dc9291d914e8fb0e9e5e982677c0114d0d6ffc53397230c06ba2b6ffc", + "kaspa_address": "kaspa:qzra4reqkmw737ywghsh0j7pf7tcnh35d06kuueww5xd76ghl2qs6mqc6egav", + "ethereum_private_key": "0x014cce7f115ba84d8fcb68f4e95f748cde923fcc5843a569feb47e4928829d9b", + "ethereum_address": "0xeED049872d40EcFc1588F1a973661De199f06945" + }, + { + "mnemonic": "lesson bridge modify ugly imitate velvet note outside decline fee train salute", + "kaspa_private_key": "2fdfa7abbaca74e720854c8d1be7840e5a51e39748f0f1117b012730b5107e11", + "kaspa_address": "kaspa:qqhe59vaj2m0xkjycha0nz4rvhzxqkqtvxfwt7tvv87wkp2jl20r2pajn5uu9", + "ethereum_private_key": "0xf900fcb0c06c763e7f7ae1df75bbd986613ea5f4baf066a2d6250739598450ee", + "ethereum_address": "0xaFb975932690C26F23Ac5dDf042A1a43814A1D9F" + }, + { + "mnemonic": "mango unfold still pioneer jelly try spare same genuine square blossom laugh", + "kaspa_private_key": "b76d2c0555588726dff1fb55eecaa143aa87b44829ab70d8e777dbdbe6c6da91", + "kaspa_address": "kaspa:qp4wk3zyr25sv9dt026cpdmpv7jtmwkg5cwcpq7mpk432estgt6gc5jsltzyp", + "ethereum_private_key": "0xf48fde9e8805b3b11d8cf92d72d30bd983ca35d35a0081ca546de6fe8af2332a", + "ethereum_address": "0x8d1632edc26260d506C53F33237C3a4eB16AfF3B" + }, + { + "mnemonic": "drive nephew jelly brave brush ski taxi melody immense cloth priority satoshi", + "kaspa_private_key": "1bacd0cc64429ac55de12e364d6879405fa020e96b7ff8c86759b9dfba812fcb", + "kaspa_address": "kaspa:qp8gaarrtmadjlsdcyx8alqwhs7fsgfr97esucw0wjjgscpszgscvhefujt73", + "ethereum_private_key": "0xfe15c7e78c2427e6fce86a96466be0f84537f670ef2f9dbf7e3a59b7b577b434", + "ethereum_address": "0xe5aa390b3Ca852B4231E1Da6DeFF195d6A426491" + }, + { + "mnemonic": "garment narrow virtual poverty disease fire issue glue return arena uniform cattle", + "kaspa_private_key": "98ca9f72b932a24450aefb5d1866cda9bfa97c3824ddde786605de631ec9c0ea", + "kaspa_address": "kaspa:qqk83mg7dzst0d3nfraxy9mfjscgj0skskgq4tcleprtmkg5apqxxth3cehpw", + "ethereum_private_key": "0x3da1f8254c5bb09aaa36bb1f69cdd12f82f03c7b2e00564aa0487a59484f45d9", + "ethereum_address": "0xcc4C46A6d641f868ab4d97BB53a7Be696a95C0AA" + }, + { + "mnemonic": "flat humble shaft design design coconut empty picture little mimic journey fitness", + "kaspa_private_key": "8bcc75155e748e2106daecb172af9aa86c0cb66827203c5af59111ccbca62a04", + "kaspa_address": "kaspa:qq3wa0yy0jf0f6vecct5e34h2th69nu034rfy9kap6tqa2ta4kkrzkqh23ksg", + "ethereum_private_key": "0xb760172c90cf99f0a8fe1b72712b408f152ca73ada2694afe17ac4a49b3e3689", + "ethereum_address": "0x03a0b26bf220FFbbb7fBAB46c22Dd23C5dB86Fc6" + }, + { + "mnemonic": "across toddler job hurdle powder keep desk custom shiver skate coffee abstract", + "kaspa_private_key": "695527667ca011df2336427c570046141e6a78623ff5dd0bec841fb075dc3299", + "kaspa_address": "kaspa:qrdy7htkt5xvm9tsfkznfyftdk2gw9nc2xje3j0lcd5rz257lamtuatrxvchx", + "ethereum_private_key": "0x97bf82090e8b3c17bbb39e2fc2cc40345c36575e049abc500dd45ba504dce598", + "ethereum_address": "0x184d5FE724BD57679B1687fd633D03b6F5d1c46e" + }, + { + "mnemonic": "airport pattern mountain garden ceiling grape coral drastic pact tree tray multiply", + "kaspa_private_key": "56533101f4bfcf6eb079c5c7e084661a0e383c3b7145bb0500664a4e89ec9c16", + "kaspa_address": "kaspa:qq9eeh5gn4xjt30qn4wddjsrtjevjfk7xwx6dvh6f6vn00kdruqu7pdr0r4hs", + "ethereum_private_key": "0xfde5113cef2861db89949c0435d9c454968ac16f6b12b6b8dc54d34933a683ec", + "ethereum_address": "0xe183071BfBA3280303B86FAa98BDa18f03823B39" + }, + { + "mnemonic": "broken piece leave wolf drive unveil forum gate invest pudding used crew", + "kaspa_private_key": "ee7eedaee6a52a69cdabb48c3c95f3a7c594779d382b5fddc95c594383f996fe", + "kaspa_address": "kaspa:qpa0tm6e0fccpex7mkzfzdt6tech2ktg47mjj3d3zld0j0hwd8nvcjhdrqfwh", + "ethereum_private_key": "0xb188c893043ff2835d6b1624603678bb0a7a336700f251190d6a0726cd079285", + "ethereum_address": "0x483C9646DD941E72726Eb36AA3Fd33152C203506" + }, + { + "mnemonic": "injury flee client rare dawn left stage error title dismiss noise moral", + "kaspa_private_key": "12a0ef122029759c839be6803e7884792ff812948107035cd80cb6f879612e17", + "kaspa_address": "kaspa:qzj775m6g4rfssgtf8zksgll54j8k5vhfjwjqcrevgc52wg2f0dnjy909sfvw", + "ethereum_private_key": "0x67caa620b851946dabc25032f34584bef6fe8461010657a6734aac695245106e", + "ethereum_address": "0x341498633906E157ec61c5B62325404d2723F7c9" + }, + { + "mnemonic": "purity parade toss rent frozen domain shiver parent rabbit measure kidney outer", + "kaspa_private_key": "44c9ab177872367c0d740a52d7f3d3282ea8e6e00884c2de183c53b57b1f38e8", + "kaspa_address": "kaspa:qpewa0zunyw9w5870pudecdjqkq6r82rg8upc6qppsxlw8xcr83fj4cwgzea2", + "ethereum_private_key": "0x2a23f0e4be1051cb9ce58a8bd5b25b8a762a00eeb1e1f250750085cbeb7b6c2a", + "ethereum_address": "0x4Fa601E79e07Efe7DC90D45A029422EA87974a18" + }, + { + "mnemonic": "vapor consider either private secret spend math kiwi other try naive cloud", + "kaspa_private_key": "5165beabc9a1ce883a59da1677ddfd1eb1a3e72453b43aadf7ca29c04d236a7e", + "kaspa_address": "kaspa:qzca5e9sncr3qksase5jr07eev2e2mf3ur0khwqxk4z48ch435dzc5ladw203", + "ethereum_private_key": "0xc2a7c2421ef7d8aa5fe87259597391550daed458a8f0e0308f38f9d91a339f0c", + "ethereum_address": "0x146144De3372C72a10c0378f77f35B14817BeaC2" + }, + { + "mnemonic": "bicycle thumb rib fee ice tattoo myself return deny cake wise warrior", + "kaspa_private_key": "fe34aef9462145e132a6ea56a0fc9dff5590312ec37cc2e2cf67f4443f792093", + "kaspa_address": "kaspa:qzy8uyt7x4hh30fg78hyrm2sxaz5vwle6l4g4kkzhxh3p9g0dyhps9wfha4dl", + "ethereum_private_key": "0x62c5f52bd04597c7af5c969e55cab962afa151501d1c2099d5df7c8cede72ad8", + "ethereum_address": "0xCec2a13B5255c8d78a7A0fd7EF0F1f4c0A2352D7" + }, + { + "mnemonic": "pottery oval dentist bargain volume top loan fame climb walnut maid bonus", + "kaspa_private_key": "a81206ac86c43e56045d52fb238fcc8d70438fa4c28bcbc0aa3c09237ee8ce18", + "kaspa_address": "kaspa:qpvz0sdyxhgjsnx0fs3pt29x6g7u6zra5fdmamgw5vccpetu25s9qc3k0a7mf", + "ethereum_private_key": "0x72e87dbe30891a18763bf9f6c61112e7ec1536126f1e2d8adb30255219a0e4cd", + "ethereum_address": "0x3cc094E51fbF256fF3BB95FBd2656D0A3E3A7E61" + }, + { + "mnemonic": "car first quantum once photo asset pyramid rigid steak sustain mass shiver", + "kaspa_private_key": "0366f96a78c3b44e8c17ef9aef5d5ea0214fa73b2669db1addd818a131212d7e", + "kaspa_address": "kaspa:qru0fscmhlccgwt9r5thl37pat37dzegparzfk6gn69h5a2fc7hx2636gyp0j", + "ethereum_private_key": "0x0fe37e60d1372cf6db5ba0603ad44a69ad23d04e5ac45659d76d457916d74cdb", + "ethereum_address": "0xCe970B08c163c14AF00468E3C3829bA17991bB11" + }, + { + "mnemonic": "lady cycle zero person electric popular tragic unusual armor purchase lava fame", + "kaspa_private_key": "9295c2a8a92a81c8581fe3d499d3a36c83b93a723e7f7d22396b0dea601f1545", + "kaspa_address": "kaspa:qrfkanlx2sumpr8mnhltr8ajny96qw0r54f33mxtfwdhz0y8mg792e8ya5qhu", + "ethereum_private_key": "0xe7bfb19eaba04a3e869739b1c407049575f1f806d166d2a714a1dfe11c11d234", + "ethereum_address": "0xE463DE5eeDe4B9d2f115Fa2a1f7A99E95d76D39E" + }, + { + "mnemonic": "erupt useful faculty doctor elephant scheme culture wide hunt sport unveil midnight", + "kaspa_private_key": "46f8f7222c14a0000ad9ae60e6ea16457dfa017d71135ec8cfa9ed7752870965", + "kaspa_address": "kaspa:qpgvadd0tgvpr0vudk5m3txzv5yrqatrvsxcmjcn2zx4mq6w042ds2fklr3gc", + "ethereum_private_key": "0x27ebf89e1a8cdd2d5277cdbef1edd8e03b892007cc13330af8fe9be90eca76b4", + "ethereum_address": "0xb8d5F0ccD87C265862550833E6247Be0B4161D00" + }, + { + "mnemonic": "tomorrow slender olive hunt animal excite soup riot ostrich fat pumpkin crane", + "kaspa_private_key": "53296da9c399ebb827009f3b466c6f5f0a6c8caab4a06fc7a5b797b311d6aab6", + "kaspa_address": "kaspa:qr8nh6676my9l2nxzljhyezws4x6ucqrsu0xq2etj3zgqcnt73fqxtzwft9e5", + "ethereum_private_key": "0x984211d5b5c9c3ec4be96dd1120a0746dafb001b81fe8859d9550417604eaead", + "ethereum_address": "0x03aDa20C9332873DEF2508595b5757cF849a418a" + }, + { + "mnemonic": "stem view real elite truck during alley twin casual peasant morning cave", + "kaspa_private_key": "d2575c77ca1f75fffad64fb4fa6a550cf53a67dcae380cb843d85ceb050bc2ca", + "kaspa_address": "kaspa:qpev3n93aqdr550m3mpskgdk7eugutqvzn9ump4tazkt6q8vwn3jxs7lum9ma", + "ethereum_private_key": "0xd33d5f2d9fe3895be11bfc28bfe14c7e374b9d842a8de3306e72ee157c7cc2f0", + "ethereum_address": "0xf0a4Da51Ffbc1D72c43a40a9C295EF4f0454F0aD" + }, + { + "mnemonic": "left obtain price rude future aerobic hammer bone ask vocal guess tennis", + "kaspa_private_key": "cddade3f890229e756ff8c6885fa55744ce29db11cd1ef44a4639dce9d0dd423", + "kaspa_address": "kaspa:qzm6jeajus0m7zenv6efhxdd6e8m9afaqnsreshfdxkjlqstmg5yspu3svta8", + "ethereum_private_key": "0x950c3e83a9837ba0f6650fb9431e7ac3eca663ae061a59a53307af26020f63a1", + "ethereum_address": "0x6949b9F94801993de8d6d25E78eDFE2a63D26CfE" + }, + { + "mnemonic": "bundle clip various now ivory end bitter shy rather amount toy clay", + "kaspa_private_key": "6188627407b4bb8d86756e33310f50b825953b1f77f416f34cee9d1301c438fe", + "kaspa_address": "kaspa:qrfupfwrmv47fued89ncw0xfqcyanp3cjrda5k6hvxuaw7qu263gk36lkgzuc", + "ethereum_private_key": "0x4c17c268f1a83c2adf1c1d2627199a192e27f1021ac1e0927f4b77a601deae77", + "ethereum_address": "0x534C615Af5c8A22f705D2c165cdf79Eb0caf10df" + }, + { + "mnemonic": "survey brief cheap gown hammer slice great defense silly grain venture rack", + "kaspa_private_key": "af82fb8aa2e7033a4bff2d7724cdc4bd1b4e8e41372e4bf14a95cc50981b3198", + "kaspa_address": "kaspa:qp00s5zm6mvg2zkjdt0phq4m9cfk85e3haevvw53szd6q6c8r3llj5kps047k", + "ethereum_private_key": "0xc361a9490d860819b8bf09f805caad1f75947f4655b60b0e435ec33a43158cbb", + "ethereum_address": "0xa1d520255df352611881014FF01A9eff128810bC" + }, + { + "mnemonic": "high warm blue spice neglect oyster crush choice public mystery copper exhibit", + "kaspa_private_key": "7e282c0d7bb84e9a89a43ec6e626c88457c2e6ea250e95b01ef7f84509bd8637", + "kaspa_address": "kaspa:qr8tph67wx7mw70tz865djd0tzd375r60q8s3lcp9hhsvgdldz26x72akn98t", + "ethereum_private_key": "0x724a367df21c8e4cb028004c42a4598c45a4570fde16367b90c58d176b7286d6", + "ethereum_address": "0x465c8e4087CcbE94AA3AC4A946a200982547C05b" + }, + { + "mnemonic": "slender palm shallow wood board mean call mutual wide home column second", + "kaspa_private_key": "c2e489b6bfeac26cbaf37935ea72cad5cb41bc4eb95b5cc18a06295d43175071", + "kaspa_address": "kaspa:qrhcz537nr0dfwkdtz95lfsc9szrg4hw2mqh4489nd4keug85u77xjqpmwhfp", + "ethereum_private_key": "0x3e76b4640101be998641ab5d8acc0739f9452e1855ada347dafc0dbbdee8846e", + "ethereum_address": "0x9F11b7c959968bF7E0aA66C493579a7Be66957A5" + }, + { + "mnemonic": "head cupboard thunder topple kitten scissors style share pigeon muscle disorder boost", + "kaspa_private_key": "bda0ec612ba9234f26b19dc160e8fe88cc5938b70b118dbc17cd47b02547f0bf", + "kaspa_address": "kaspa:qqghajh6e9lr29qkfap4a8kpxg4zzra6m6can9ufwapn2pfat9acce6vu2jj2", + "ethereum_private_key": "0xc3ce8ff16363f9c410fc51b1b90e499163a216fb0a81931dc77603af5b0b4ec8", + "ethereum_address": "0x67E68b1908A8884A4540e1EcE70457c1B3183D13" + }, + { + "mnemonic": "magnet keep escape problem sock leader shuffle picnic segment possible decorate message", + "kaspa_private_key": "1a766fae9912fa0a0fe40a5cd8f5e59f2942c19c2c5f410b0756156289aa0090", + "kaspa_address": "kaspa:qzn7k0ur22npa6pr2d2hk538v05e3fasx9vzdjacg6e7euzur9juqd0mjujyq", + "ethereum_private_key": "0x728c3c9fec06339d337ff7694391fb29ce65bf33ffd4bc9a60f7d918cc1794c3", + "ethereum_address": "0xfD9dF0A907558D4736ACA8F78F2e4C62474eD427" + }, + { + "mnemonic": "mobile garment dinner write blind damp ridge actual expire badge spoil wish", + "kaspa_private_key": "1ae10f56ceeb5d64516c17d8df4d6f662bfbe325ce02ddffaa95329c07cddf23", + "kaspa_address": "kaspa:qz346036dh94dwk4gket9aqz3kle644hs0gjw7xhpftcwzcsh2d0gqx4jl62w", + "ethereum_private_key": "0x419f8fc00c9b8e6f156a980c460e2bd832169c7cead9299fc224277f4cf0a940", + "ethereum_address": "0x29B3b4b819BA37AE36F8d4A24FFD06C2935bDAb5" + }, + { + "mnemonic": "multiply donkey blossom pass copy curtain sample stove impulse spice uncover ripple", + "kaspa_private_key": "84a1f4a756cb0a24244cc7f79bb2a4241cbd59606a187909e6d14a3efae002d1", + "kaspa_address": "kaspa:qqkdrlzcf7t3htn55v0vgkwdw7evq2yghdz6q2j5p7xc3p7pm7apcum94sasq", + "ethereum_private_key": "0x5a7c1cd56e56c62bbc570734cb973b502fc6249b4a1d6b818522442364aaaba7", + "ethereum_address": "0x703fF3db12635234E67a4016B0ab76006d955C65" + }, + { + "mnemonic": "light february tortoise usage test embody energy donkey party test bracket since", + "kaspa_private_key": "7b765725cc52fe136a0695e73a2c08605d4e9989f1c7812deb284c18515c95d8", + "kaspa_address": "kaspa:qrv5zh07ygchv02yxq8qrte49q7jfft6gtgpmchq88spv2cds6v3jzp8a7vts", + "ethereum_private_key": "0xea047b24d3e264ff56e8c593e9cbce722089d51f8a09c4472ba4e9559515fb85", + "ethereum_address": "0xb5eAd984e13F8a83800F050a4Bf07De121b531E4" + }, + { + "mnemonic": "friend drop sunny about comfort abuse arrive make hire bachelor picnic please", + "kaspa_private_key": "8954862c4539861353f698af3bedecd3215e53489ba02f1c45a898ab22c717ac", + "kaspa_address": "kaspa:qqpvv0aeyp8rtt3dmq77p3vpthjklqpalgc6l28w83jn7um38jlpyfjj864vj", + "ethereum_private_key": "0xb158ae247ff7d2be386b118acfc34a06d924bdba06d4f8aadf36716dcec733f6", + "ethereum_address": "0x6A9d758818E2a72FCEd1DB574990b2Be876361dA" + }, + { + "mnemonic": "stamp describe cry noodle cry hunt slim gap brand elevator rocket unfold", + "kaspa_private_key": "00dcdfa2fe013530af66fc190ab5ac3ab07032ab2ab93db23b5ab51bccd8d2f0", + "kaspa_address": "kaspa:qzn3eqt3enwgtcewrn6q8xjk5nyw6v3sqs4gunt7z6mzk83qcqgls57r4nrtd", + "ethereum_private_key": "0x1435dbb0bc8083a497d5bacf82396b901f7dad527b628164d58c56006654643c", + "ethereum_address": "0x71BC3B0Ea8475F81B489AB52f03Ad4e04D9eBE93" + }, + { + "mnemonic": "candy cactus museum exhibit gold start ripple blame stem giraffe board dolphin", + "kaspa_private_key": "7f900274496f97c0badc3d4da02be0ee490964d6df23ef49271d7181e04e8964", + "kaspa_address": "kaspa:qrr74wdhct7frqavvjawh88yc49dsrwr2es68h8jy9nujhqp5myqx6c4r7q0m", + "ethereum_private_key": "0x848c17f179a05ba6addb64d02fe944c0ec63c6bcea01f2cb2ee8f44858443df2", + "ethereum_address": "0xC2FE57EE5e628aB9ddfd94961204c0Eb58fB11Cb" + }, + { + "mnemonic": "either anxiety sword similar fun umbrella roast pilot cable image discover suspect", + "kaspa_private_key": "8bf5d70461e2fe30b1a1691b26ad49082cbb690c51d1586ff929db8a8d3559be", + "kaspa_address": "kaspa:qrjtp993k9y27ugmk565tdq9jch788q0dzug269f53f2anzalc6eg4pr52tja", + "ethereum_private_key": "0xc731933d65a5cda54d05e2c33cd72a1494ab0fdfee8f7b0a9f17cf81ac60286a", + "ethereum_address": "0x24ADFD31cF1C354E2eDa348aDF93eC244f31AC75" + }, + { + "mnemonic": "throw shadow pudding depth couple picnic pattern cereal interest embark floor one", + "kaspa_private_key": "4c3bbb5125045241de5f9e5ab788a86bf0b61c39731dcec71ba0cd96ff8ab38e", + "kaspa_address": "kaspa:qpwfmr83fwshstduhnqjzl5g5s76qv3jnl3txkmcuxfqzea5f9q7zt3cm7vhr", + "ethereum_private_key": "0xb7b49c97ee023525701b0d50181551ec6cd58c93287657427940a1d96cf9c64f", + "ethereum_address": "0x28694D3FE65A81Cb845f2197605CCc761E847E9f" + }, + { + "mnemonic": "guess oyster kidney action essay easily fossil identify voice ill sign hobby", + "kaspa_private_key": "02888854d10793b41bcf3097bcf9ea6cf2698b9386ebbcd456c0fc84e7b897aa", + "kaspa_address": "kaspa:qrmcfwsyw0ups2we5ga3ng443zq9krz8mxynjhns6xh8hdvuhfav5xpzkrwnp", + "ethereum_private_key": "0xbebf14ee3342d695ff9d7e5e42e6ab928f10167a5c86cdac763cd3ca206ed4ed", + "ethereum_address": "0x2DdE600Ddc5e1cDff8CaD94bdFf20c038b4b59b5" + }, + { + "mnemonic": "nominee have car valley enact obtain chalk figure verb forward wink night", + "kaspa_private_key": "ebe5311058af25c748a2d1523f3f1fb987693f9df9909638ddcfa6b39557a31f", + "kaspa_address": "kaspa:qrpgz5u93r7pppg77ylruz0z7hsmnzysn2w9wnuu6e0lwryncp92su32wrxax", + "ethereum_private_key": "0x93c261f5b0187f005d4322b8fcd991e3054b732e08180b2e6d863e94c7854c30", + "ethereum_address": "0x325Ab4Df3728187143Be38526d53d0Fcd4E93EDC" + }, + { + "mnemonic": "grief swift pitch treat farm dignity arrest roast exchange pledge tail hawk", + "kaspa_private_key": "862019a759293fc3eab8deb2d8adcf53f48a898799382aae84d4239cbf00168d", + "kaspa_address": "kaspa:qq0vgwer8d53t6hku2cpdsf6fuj6n0x4mpcnuz6lqd204denk7m97gq6qgyd4", + "ethereum_private_key": "0xfc55d6caff66126fa3cf571945dc1f00f9d53ec70a2e15a342dab7646989ce3c", + "ethereum_address": "0x3fCe85541427BE081f3f2cC9393E122265E74ed9" + }, + { + "mnemonic": "ankle control laugh inform slight around reject series lesson quarter hunt trust", + "kaspa_private_key": "14475eb1e2c0d003c6620ea901faafa1238ea6c41b55eb075316271af0518672", + "kaspa_address": "kaspa:qpajzvl40d0gu6ca0wx2nxu4ez3lkpjarj9dvv00xupqc9s737xzy68m5gg9u", + "ethereum_private_key": "0xbd7cab1e11f27bbacae57aee6475795837cc74d393d82b0c4d4b521d3338d66a", + "ethereum_address": "0x4496DD2083012B0DD2E448F9b27F29E1a132186D" + }, + { + "mnemonic": "glide time clown cool exist defense copy muffin way half royal vague", + "kaspa_private_key": "df02ace45f8f653fe91ad9d3cadd8980b9d3e9139b1bdecf5c0e0a656890305c", + "kaspa_address": "kaspa:qqnkma0s8vtaz0ecrxjanlucah32g0zeydwl56cmnsd7c2lqdkk9vlgynwckl", + "ethereum_private_key": "0xd04449e443418ab3c912c874fcbac0215a7ebef0d493abda737ebe8dd0c5284c", + "ethereum_address": "0x8d2335C4eBD2bA9e689c3e10CB634c435aBAF036" + }, + { + "mnemonic": "mean word team salmon error heavy library guess absurd plate future salmon", + "kaspa_private_key": "30bf015fa5f1360c35a6f15191b56ffbb39f943168e4815ff4a40e64f396c02d", + "kaspa_address": "kaspa:qz8rw26ner4urj0fyj2hlldu7vh6qrguzdy75mpq5hexlh02ej0677cvymzhw", + "ethereum_private_key": "0xaa9d86767713d5c5f65c6edeac39ba30d802c50e0343f2d3d21f54c80fd05435", + "ethereum_address": "0x37723480B6cde6fd18432Ef639CF6CA0f8365672" + }, + { + "mnemonic": "cook wrap place wear good price castle talent beyond hammer sing west", + "kaspa_private_key": "3df04058d260e6d70378c389b2c5868b24ef67c6ce5b875aa91c605cd2b3917f", + "kaspa_address": "kaspa:qz40agm8l3uxu5fz3femd9m64zmrncgsp0578zs0er7shjll3p0xvs43w3f0l", + "ethereum_private_key": "0x3143603e13b7824359e6e29ebede4d60c736a1304325f39bd57c734fa8c9c988", + "ethereum_address": "0x7347Ef0025105CED5179c42d899f77eAD1F98b6E" + }, + { + "mnemonic": "torch staff spread speed west cost super describe myth segment rubber sail", + "kaspa_private_key": "cb3cc46f2a6df2f64c68cf7f61abe95336219f690d49b84f85f1fd14fd348f7e", + "kaspa_address": "kaspa:qpr9e8x3lm7cu5y5mu2prxqxdvym3ufydt2muv47zfuz9qvkraqryhp0va2zl", + "ethereum_private_key": "0x67586e235083642444837680055650c2e6625c08f5ac1e80ffd464799ded4173", + "ethereum_address": "0xaaA0e48a689A303a47d29474D3c29d2E9270E29C" + }, + { + "mnemonic": "letter era silk daring pilot case citizen weasel salt morning collect merit", + "kaspa_private_key": "bdfd71ee22f7876e3be5e2c4036cb41d6a68789f2a763908f9e8f0f1d2ccbbb6", + "kaspa_address": "kaspa:qrasj35ypdv0t7redxf7s97k5wzle0r3ddv3dj6928jfxpd6hcdvywpv7m5kq", + "ethereum_private_key": "0xc90c1faafefe38790b4b70bdcee4ece69f6d124c3917b4c65ae15675689c9b40", + "ethereum_address": "0x3e81Dae08dd9D3390e06841b708D21B3F495Bfd6" + }, + { + "mnemonic": "north guard cat knife escape opinion talk senior total affair cash melt", + "kaspa_private_key": "c047c02d11d8fa77b0ba2b8bdda0b1f994bfe4cdd6fbd77862c9c8e1726928f5", + "kaspa_address": "kaspa:qzre6g7ne97y4sfzsdjnyh9y20qd0vxe7fz5znwk22dy9lxmqwj8vwea5m0j4", + "ethereum_private_key": "0xccd73674155f34f9f90fa7c50d45076ae88b2419a1d3a9819a82467f954de39b", + "ethereum_address": "0x729579c77D9dDE92F37bD99eC2C35D268F76092D" + }, + { + "mnemonic": "gloom since urban diagram major pupil until tiger lake broken tide diagram", + "kaspa_private_key": "dc4f75dbdcec9f1a84cea15b8c14048aa055dded5c184476098f80cd52dd4e28", + "kaspa_address": "kaspa:qzs43wgdutw8lk7mtgz90387hprd8c5g7550yrdgycct7qtxwm5h7287rlhgr", + "ethereum_private_key": "0x6a4484c2262e9eddc6d735076469e62d4a02b645504f24c3d3869cc2f3587fa0", + "ethereum_address": "0x4462B3ad432922E836C47B24999D88176b723542" + }, + { + "mnemonic": "run trend season junk tonight giant laptop unknown fiscal rich quality appear", + "kaspa_private_key": "9fe996f3b1ef70c0c7683bd871bdfcb05f41522a30a0e74664ac95845d09765a", + "kaspa_address": "kaspa:qz9zzts302jtrxf04672ty7qh0u9glvxlmnw27nz3n8p7695vxn9c8wtplyuw", + "ethereum_private_key": "0xb82f08b8daa2bfe28178ffee9c09155c5e0d22019366579086a51f4fd7078c18", + "ethereum_address": "0x6e9C63530d620c845bc8E6F2D31E65e59750330A" + }, + { + "mnemonic": "chaos notice image inflict pluck alarm accuse clerk warrior puppy tiny cry", + "kaspa_private_key": "3eacdb4d694fe1013f0f2910c086537f145687bafb0ee197132e65f73ea9d624", + "kaspa_address": "kaspa:qpgp8a7d9ctdl7824vax5qfhsdxyletf5tdhdlx6ta0j9ef0gl96ckl8wpnsg", + "ethereum_private_key": "0x3b65a5799a689f7a535ac1fff5b1ba8b37fc92e9de0cd7ec27783b4d4a86ed66", + "ethereum_address": "0xf21b782de9C4a4641f37864fafEF0bcC167e543B" + }, + { + "mnemonic": "legal chat dust shy donkey level episode move apple select hungry state", + "kaspa_private_key": "f49ae9ee72aae31028a667e9be822855f30fb183684b1fd0cb1e2b09402e6d1f", + "kaspa_address": "kaspa:qqhenw7f6fxeqprrzqntjn9zztnyfculc2sg5mtnqeg3fyx3r7v3gjm5nhvsn", + "ethereum_private_key": "0x1e38ba5383e4d16a78f951b27932ae6cf1ebbcff62f4df8434953d921cfcab16", + "ethereum_address": "0xCa28e89040EA7b83354E43cC43F78aB8F3fA5362" + }, + { + "mnemonic": "rail mail affair amused toddler buffalo track resist frequent fresh stairs iron", + "kaspa_private_key": "2004b717c430cfaf0127671757a9afa64326377726fdb35a0d3c6a0c37e53306", + "kaspa_address": "kaspa:qr9kqlxqns97s72awtyg46sv85wmkuf9dw8wlhxr7ajamkw2fqsru5hgnnmh7", + "ethereum_private_key": "0xba71af627eaa80ce0075846057a0e68b0af8677fc873b486bed0d9426e000217", + "ethereum_address": "0x472cD52581B59ce0b00cfadeeC90C44668243661" + }, + { + "mnemonic": "clinic ability dish gloom plate income ramp monkey helmet wise kingdom bronze", + "kaspa_private_key": "d1551608dd538938559fc580389dfccaacbcb1d5763617d5e11f6395b8730b35", + "kaspa_address": "kaspa:qzwtuf2hp7rwcm0eu05eh4ge0kxrj76kqf0fulgukr27zlfyjqlsyfksd0cty", + "ethereum_private_key": "0x19690856bffdbf458cc79a80068a846828c894474726ccb80afea81b49a7a836", + "ethereum_address": "0x6A0789E55Ec26f8Cd52d92e34f817dE202858759" + }, + { + "mnemonic": "because oxygen mean ice liar pet night quick ski giggle pond analyst", + "kaspa_private_key": "06640ae0b69b8793fab1185156cd7717ade38a1ee2152059aacf960cba80a7ee", + "kaspa_address": "kaspa:qptx3kcxfhr6nm3930hegtamejqm9egs3dpq9xdv6pr2fuwkwgqrkqnlp4x56", + "ethereum_private_key": "0x6b73e6307cf8565a7452502f66772bd17530d5d8eb6d2ce5d0a362d299173e57", + "ethereum_address": "0xe96FD6F4C869dc77cf10edd5826Ac9D6fd34417D" + }, + { + "mnemonic": "pear filter sign item plug unique trip tube client injury awake slide", + "kaspa_private_key": "e0c2c2649394479accad188e7dd1d4b7bd87c52b109c45ff2da453fdb70bc413", + "kaspa_address": "kaspa:qpcmzqc4cd68k8rc9c7uwyttzdel7erdqr3un9uf8a0pfx9g5464zhq09m3ze", + "ethereum_private_key": "0x66380f9d47b405edae368d687d4d8bc3e54863825b26ebfe6cb9153633084365", + "ethereum_address": "0x54d01ac9D19ef1019CB7fD7a2215cb9d867C13ea" + }, + { + "mnemonic": "mistake happy gesture suit raw away critic rabbit apology million inject simple", + "kaspa_private_key": "c588a55eff03121682273a1b7912108c6ea9469b0c3a73f072cfd6d42608657b", + "kaspa_address": "kaspa:qqxrlnxw6hynwp7ejz779huxn2h5hx2t8wx3vangx8yuu5qadxptv2j2a6qw3", + "ethereum_private_key": "0xb7d9ae12e27973de63342e17d4ed7167ae8bf04e6dec81e5e07182c2e6da340d", + "ethereum_address": "0x3E41568D152f0E1D0CeEc00BED18A82C8455fea9" + }, + { + "mnemonic": "shoulder dinosaur direct plunge inner name trial south raise glance emotion gas", + "kaspa_private_key": "a2aa0deb46caeeba520f86d9e223316ea85642c23a0b447a5f83cf3ebcd42c2e", + "kaspa_address": "kaspa:qqwnlmvd7geqh68k60gpt6akejsdaf23pf77je36mvcztxznqv5tgjsc7k5ux", + "ethereum_private_key": "0xd268fd132e2999e1a2cf9266309a0ecd7e8cd3eb7ddf2ff1e9e336e009357a30", + "ethereum_address": "0x917Cc3eF145362903CB43575D4BA962d155E37dB" + }, + { + "mnemonic": "private crew bean pool announce abstract false defense company input barely fitness", + "kaspa_private_key": "7aba3c297dbd5c490ecc8201880d9df065c1d221e10561a78bb09439bea79d8f", + "kaspa_address": "kaspa:qzvmuyfc6npfjv0h8zqva77hf5z5kvk5zqupk2u444z99n6daxafzvp3js3hw", + "ethereum_private_key": "0xa411d7a4cda7b221a997a84881317d89eea0f4f8649526a55e375d61f4713cdb", + "ethereum_address": "0x44DCDb3cDfEe898C134377be40Bd2aEA2e43B03e" + }, + { + "mnemonic": "aim stage chimney man fault copper art meadow final local system affair", + "kaspa_private_key": "49f53b749730587eb740c8619491ad83ef9a3dc7a3cf337f47d5fbcafef01e2e", + "kaspa_address": "kaspa:qqsw72kp37u34g95qsxh6f6qh4zrte3y3nwlet6wfmu0m3npp5ntyfx26w2la", + "ethereum_private_key": "0x141cea516bf18912553cb1c8b144604a38c5b10e33ed885c70652f814fd109f9", + "ethereum_address": "0x667d55a2919beFD9e74eCD4Ce272b637C5cA061D" + }, + { + "mnemonic": "finish found garbage tiny trick urge remain stand rule piano present before", + "kaspa_private_key": "95e3cda6a3064bce932cbfa7e048798ed32fece5915e2681ae003b1fd6cb1f54", + "kaspa_address": "kaspa:qqphszc06wmztee5sh8rpyqce8529tpwpr3k6h5nacmectzj307zgth376jax", + "ethereum_private_key": "0x0e60fa3e5fe40886e00199b4db1274c2aa7c821ebf9215ddc2d725488c5b5691", + "ethereum_address": "0x93A5eeC71C3AFAC6F2cFe19959d28F019f738D30" + }, + { + "mnemonic": "also olympic donor clinic wire annual bless door educate valley island gas", + "kaspa_private_key": "0f49c2eea5fac006d964868cc9e25fde3ffd6319a0230697d89dd0b372778844", + "kaspa_address": "kaspa:qrzc39jdfh9xyjfcr7e83t3fwa27kpyytrslcp9p5ndknc3htcp4jdakzjfz9", + "ethereum_private_key": "0xf606ef4086e99a216ad589caf61233193bc05d532ea58dad8bff5fc3ebadac08", + "ethereum_address": "0x283b4828f7A3E71602C80A3549f118b8b6961B85" + }, + { + "mnemonic": "crunch off minor enhance lift script quick milk spider nest curious dose", + "kaspa_private_key": "462df39df8fafc9fdf1a1eaef65d47d4da7b11261e639cea03eaa814b09185e1", + "kaspa_address": "kaspa:qqtls8zr6v09tvf38tt8xc0rfxl4wwjnleqleggzdle5nkssfep4zcez4329y", + "ethereum_private_key": "0x107af9f4e39a0cad91945eb9ba80988197929d6fe6638eb83a5152203dbd5dc9", + "ethereum_address": "0x454C9DD756ac431eDb91c090a7eb75c87307091E" + }, + { + "mnemonic": "physical slow wrestle believe survey olive success erosion crystal wire punch assault", + "kaspa_private_key": "33e7e760d5ee6eeb48ee4eb0b40846c72821394ce7e2b738da7d416e5eb27a9e", + "kaspa_address": "kaspa:qp96j2828k07k78j64m6454ea5m7hvpulgpfsm88r0wmw9ku34wdu9a7ks0v4", + "ethereum_private_key": "0xa167f57fa808616414c5df2e33360ed5f03561b3b080b1a77cbcf126d77fcf99", + "ethereum_address": "0x11C008891889D0F66Eef35CE13433D7186d50dFD" + }, + { + "mnemonic": "poverty service ice fossil sick olympic aunt gap gun neck emerge witness", + "kaspa_private_key": "ed7d11201a791b525e2f08393a2497069a758964f80d2dc16ed6c84df0c0c3f0", + "kaspa_address": "kaspa:qrxgjumrvmqv5598vdkwq6wt39gxdjk59yzxzffszldc80rej73w575s3j72x", + "ethereum_private_key": "0x40056cfeb8431745f5b4e954e51b41cfa430fa5b937db2a84305ac5c73425321", + "ethereum_address": "0x573930292a7Bf8B4205268EC3a1c37ED5De5Eb7E" + }, + { + "mnemonic": "carbon wisdom describe income skin toilet coral cushion nasty swamp ask motor", + "kaspa_private_key": "a14e8117e665f0c111afef54d6a3eb3eb7cac1c8f267183f6267f1abb3897c7a", + "kaspa_address": "kaspa:qr52j79kd2fa6f7x83v5e0da79denq75tyfvjw3qhe9wummrmqxx2c60ecks7", + "ethereum_private_key": "0x6cecbf3af0bb43fa6d084e384fdaac0a013bf8e262e009a6b3603ab8b47bc8a5", + "ethereum_address": "0xD686FCb4f6A9EBf5E3Ef6c45E2E50cc251120CfD" + }, + { + "mnemonic": "smoke bus penalty kit rare audit agree region health any weapon loud", + "kaspa_private_key": "e190bdfb3ccecb58bbd509bf0c03812aafb9ca82b98681406081581a8efac025", + "kaspa_address": "kaspa:qrrjan4mxrzn94fzwyeht2v8sqxxkeaqs58tywv2cuv94sch8259xrm8j5n7e", + "ethereum_private_key": "0xf6cb158cfee40138219c46ee5e81919d7c5e63859ea4dfc83b80deedf55f6a18", + "ethereum_address": "0xc9c9E887d8a32Dd12e42d035E97C3B860FFeb325" + }, + { + "mnemonic": "crouch oblige benefit load old mobile record decorate fee stomach opera nature", + "kaspa_private_key": "2dede45718f9a6bdc509213da31bfe87fa07aa2a5a642ed86a4bd980886c7d97", + "kaspa_address": "kaspa:qpnrfvmrrnen4ejw5snyrcdcpxvjgskg0uc87kyu3hr4utmj0gzhvxmyqdcjw", + "ethereum_private_key": "0x53bee59abef000b3870c521959c81a04804127414476f8f62eeb055079adcf0f", + "ethereum_address": "0x0091FacA627Fb6470179Ecd229C059e586fa8900" + }, + { + "mnemonic": "wall burden involve device offer dinner bean payment demand battle notable move", + "kaspa_private_key": "d759e5a4671d128e8cafb6b3f605332f8b986086188e0abb63a8e6ac73a04fdc", + "kaspa_address": "kaspa:qqslalpzgsxx5e294kshapcsepy0lj6j5y4r2z2yg34e75pqv4dvxersdueuc", + "ethereum_private_key": "0x3caa6cccad500718a6e501d9604b21e21220566bca38030c19ffa64a096e5597", + "ethereum_address": "0xF57954A8aEcCe10198a3e3974596FC0CBF56a0ED" + }, + { + "mnemonic": "tortoise educate alarm rebel few slogan only casual nice shaft solution immense", + "kaspa_private_key": "67d06147f8f5346b5bf9b9a2e40271a22feb6b7fbda8c673c079da2c00a8fc79", + "kaspa_address": "kaspa:qq4frkte29530kmae0fh3nuz4nn6pyfv2tczgd2qapgs9w5sh5u2s3vm6jm68", + "ethereum_private_key": "0xc462171c9db9d30dd026d53af51cbb43e62fea284669cf544fa4574085af8db6", + "ethereum_address": "0x6747c39Ef64D7AdC50E42f3A1fb3D9C27c0452c8" + }, + { + "mnemonic": "verify warrior thumb action taxi slam rescue eye ankle twenty mechanic risk", + "kaspa_private_key": "23a131c451796d8304c654ee2902bf75290b89aea3fa3f6d6ea2d0cbf8e502b1", + "kaspa_address": "kaspa:qrq65mf3s4xyfysrdsyhq8qjvzu6jhvgw0r26n7uuyl9p2rs8c4tul2fh8hzk", + "ethereum_private_key": "0xd2e4318d1332670688b6b5f50e278cef291901b50a79517b0347ab643c2e4e71", + "ethereum_address": "0xc81dD860eB91D441ff97b7C57a1D160CA1EC3134" + }, + { + "mnemonic": "marble proud noodle embark scan digital amateur cargo arrive define island upper", + "kaspa_private_key": "978ed87d858ccb664e3d6bdf6393aa4a71a4f9e84504f9b02438e464a775fa48", + "kaspa_address": "kaspa:qpp4chzxrd9qvh5acsayad9rwrlx2ghjz3h47elfvxs6ky59x936j57a87wvu", + "ethereum_private_key": "0xf2ad230fd84d536bf15c585cdbb8350a487fc5cda76cdc3f9d2d4d24d1acd57c", + "ethereum_address": "0x0D930a80Af5D1bdC9cAe8a1a7593e924D0847d60" + }, + { + "mnemonic": "short stock region appear logic raccoon finger sort lyrics mad fuel place", + "kaspa_private_key": "dd85415d236e08fc89ac9b7a55a5b08013d29dd5e333bcd8074ae75f272098f6", + "kaspa_address": "kaspa:qqfysxsjf69d3lzxaw6aj6r6mtfs3tr58lt6q6qewfmjk6fj6773j33d2keah", + "ethereum_private_key": "0x823e241c348b62140883ba1517a187aa1629167830a0bb524c166021e3bede1c", + "ethereum_address": "0x35fAf932F42501ecc5c5E51191D6358c2bf50aD9" + }, + { + "mnemonic": "afraid ripple fly wife point hero wrist milk what pluck tuition cave", + "kaspa_private_key": "8b87740a339c5e9af52d736557095e1be09e105b4046288c64b5d79427a27a12", + "kaspa_address": "kaspa:qrrtetcujmduqhusjter8kuf5uas274u4474vqetkgs9xzj7dhs9u4xvt7rrr", + "ethereum_private_key": "0x82e2f290016e6cbc7f7b983eb7be0d6fb2bb03a5f4330eefc74dd0ac04c511cb", + "ethereum_address": "0x3AdF0Da8797Cf3936e762473894Ab201Fd288176" + }, + { + "mnemonic": "join include maximum prepare census owner stay friend brick frequent artefact planet", + "kaspa_private_key": "f4c489c3ded0085336431f7b7bfa7c9679515cc33c23be852c0127762e4aba9f", + "kaspa_address": "kaspa:qzyadc2sdqwef5h5yqz2krw8kgy2x8vmrmyj6gfcv2j2z4gen5mes5q92590v", + "ethereum_private_key": "0x43fb00e8d41a6eb2ba1a2998476f6932df7cf3645481c9e90ea0501e0a7b49ed", + "ethereum_address": "0x343BCF5aA1faF1dd409eB6cC79174228F159ddDA" + }, + { + "mnemonic": "task brand destroy lecture lamp brain hat betray twice onion supply sudden", + "kaspa_private_key": "1ec965f27bd22c1b45e6b74f18947f65e9945d950819cf29de36bbaef7a15a05", + "kaspa_address": "kaspa:qpazcg3a6hwjrlx9z9cfgm3ckmevtflk85any9ch26h6q8kq39kx69averkd3", + "ethereum_private_key": "0x05e1a202d8744e4fdc1025ffdd0ba474e59f84c2322e0f6886d44b083f4fb014", + "ethereum_address": "0x85a514a5E4A91fFCEFF9B533cd9c7434F7dEb280" + }, + { + "mnemonic": "choice slogan hip poverty general memory success already torch easily green pipe", + "kaspa_private_key": "f2c97f6582975f69eceb41f93cb84870de8d52bffbdf07a702cb326c641007dd", + "kaspa_address": "kaspa:qp03jvcqmmzj74nlwp3fqmkdxwlfm4c62twnp2ft2n45q22r0vdmqc204du48", + "ethereum_private_key": "0xd46e42878aa39682f1a9617c6502326836ebbe08f57bbb2395d957052945e80a", + "ethereum_address": "0x6Af992ccC8696DF1Ec523EA8204b8B6A748665Be" + }, + { + "mnemonic": "foster motion perfect skirt dish captain chicken okay sibling party style bridge", + "kaspa_private_key": "7801a245ded26578862490e3d2446e4a9d7fef37405ff73e04e77fc5592d0837", + "kaspa_address": "kaspa:qrmgqcy3l0cjpyyc80sd38h8g4f06v8mlxl0lyhcmqu39um5df932z6qp6rpc", + "ethereum_private_key": "0x088334b86dfd86e4aa097c89a071f122bb111224836c50c2e3fff7a2c4358f1b", + "ethereum_address": "0x494AD22F92E2edB66291Bb149589Be1c1aa41b33" + }, + { + "mnemonic": "good project grid decide real cup swallow flag glue enforce uncover wise", + "kaspa_private_key": "38e5eec24bf9ebfc3402312930763941dce892db17e633e41343c63f571a55d8", + "kaspa_address": "kaspa:qrd7zqv0dx8mytuk8y7nmz62nh9kvd723kvp8ft8w8grnlrecf602e7lpw8ck", + "ethereum_private_key": "0x0eff4175eb61e554af9fb689a3e0f42744650882a45902b89bc59645ac54d503", + "ethereum_address": "0xAc55bb71fa42657c63F782Ab781658A660Db48E4" + }, + { + "mnemonic": "tourist toe sunset paddle sea wagon walk parrot young then mobile liberty", + "kaspa_private_key": "a1fcc2456b191d9acb9e41a77743e19cdeb7359b873b065d5e0a23ee1aa50c34", + "kaspa_address": "kaspa:qqlye2a82nchpxrarwcjzv3uc0rmtqv5tr6y4hqmxyxgwgnekg4yyp9s8u9d0", + "ethereum_private_key": "0x5f6fa42947389f88818fc269623a20ee04c34acb7a8a193c12a87d2d1dfd1f6c", + "ethereum_address": "0x3AD00d1b888502A5076114Ba8cd7469E02E8d39F" + }, + { + "mnemonic": "very ramp inquiry account oyster ignore know cupboard uphold fame purpose shock", + "kaspa_private_key": "81db652da015ad70eb1ff952eee5a4c2ed08b3e97b76ca0ad3e2b2507d05d9ef", + "kaspa_address": "kaspa:qz9ts9kc0aw0u7dxdlzqvcwavxqjnj5hzpl5sv8jhzcf85jhzar3wydsavw0y", + "ethereum_private_key": "0x0314b68f1ddff1ee47ef59277c6392841bc440ca398fb8f7d217e24735fc7760", + "ethereum_address": "0x64Ab9aaA552b40962f6E7044f14057d0a1328AAD" + }, + { + "mnemonic": "girl come photo shop impulse copper deer sand field dynamic spin dirt", + "kaspa_private_key": "0376817965046076fb2bf977150d9980a255aadb62f5e0e4eb5d219732c6d723", + "kaspa_address": "kaspa:qzp90zf8xa64mjs65nvknehpznxg56sd8jhspj3k9fy5kpfh2l4uggftngh7z", + "ethereum_private_key": "0x545d227f9164dd9caa1b65eb31d2ba2af554ff9462249c453d9c68a51df5ac3e", + "ethereum_address": "0xD8D2af8CaDe68148EFB29118514563b04640006F" + }, + { + "mnemonic": "dog nephew aisle skull supreme step supply erosion tuna inspire dad diesel", + "kaspa_private_key": "03238a4d08fc14638d37a69a9b5fe16530131605635296e182ce7d0790dcadea", + "kaspa_address": "kaspa:qzrr9d7a9ezck5c7pkrfes7fsfdkv803hyxrvn32lkwy7jurfngtsfmce3xq0", + "ethereum_private_key": "0x6c3fcae20e294f8f8740c0cf6bae17325650b8a4ab3d57e2e53b5d5c10fe4a84", + "ethereum_address": "0x322da497423b074c4F16808230CF6792C24CC955" + }, + { + "mnemonic": "chief crucial idea empower autumn tenant sunset enjoy ramp security hard hungry", + "kaspa_private_key": "3dcff4611d3282ef0c82ba77b62dfbc49f1379ea490a5af955aa58f21b200f34", + "kaspa_address": "kaspa:qqeqq3dz86cqz2sgj5f8y75dg87g750dazn34th66mszzttyft45vly26fw27", + "ethereum_private_key": "0x85177e00f2e50d0a80f241acbf3e0e970175506a04db859bee621fbd5441f8a7", + "ethereum_address": "0x49f72dD278C9736747062F7a0cCCDb2c60De2b1C" + }, + { + "mnemonic": "hunt imitate history domain spatial begin buffalo ancient menu suit business police", + "kaspa_private_key": "defefdcedcdb011685b735800c79a042f6131327a9fd7fb535b43a2687562e54", + "kaspa_address": "kaspa:qparskh8j0rnfnkek8egp5xxfgx0w2jx0dgu06d8k9jrt3z3v3znzpr5s3y3c", + "ethereum_private_key": "0xc0c3e0ace816f6fdd6c87ebc0225190c487b118b8dfb30518769261f74cbece6", + "ethereum_address": "0xd1Ec9b23d5EAD60aFaBcBE6E23e0e25dcBFbD60e" + }, + { + "mnemonic": "brass apple render van health magnet invest mention gallery index harvest trumpet", + "kaspa_private_key": "a21bfe27ebb0586fe57e3c9dbc9eb2d5ba57b15129b53bc95acfb27492319f07", + "kaspa_address": "kaspa:qphk7fgksn6gsdljnlsgyxj9cm4ujr8zd7te58h5qrehfkcfhds4z029dxem9", + "ethereum_private_key": "0x0386124d7f61919fb54e1ab28e27711929f478d7c3d6ee6b06f15b2df9434326", + "ethereum_address": "0x961D36622eCB68ac327f1BCab17da63c4FA9294d" + }, + { + "mnemonic": "pizza balance awkward unique shield asthma spawn mixture injury modify ski brief", + "kaspa_private_key": "7d9b34848f14c3eb4d2011d33b762c73241e1da955754a96e573cec59a3c5fc5", + "kaspa_address": "kaspa:qqlkp2hv7mrz0z3vx3tye2w6ryd60cgkfj0rxww8zv3tnylptgdr6jngvgx2e", + "ethereum_private_key": "0x52397fb7e67be9fc836a5205a3c965a3a82e352673cafb456beb184e0ddca78f", + "ethereum_address": "0x476FcAb4Cc1E03DE66a3157Dd81D90bCa7cBEF05" + }, + { + "mnemonic": "catch sock science orbit fury clerk faculty salmon grocery utility chase glimpse", + "kaspa_private_key": "f25a461775a9964ad7b8843ff8b86812bac4bc8b34596409c09037493af4719b", + "kaspa_address": "kaspa:qzrx7at5djr6x4jkanvf76ftyqn9v0904dndrkx9cs9979ee0qtdxqg36029g", + "ethereum_private_key": "0x10b9e44fe863093f80ba62bb7367c6901a17e55579ca1a8ff95c44947747bcce", + "ethereum_address": "0x304Afff0Bc29bd129F19D7F7104f9eF9111C8E67" + }, + { + "mnemonic": "exercise frost hire usual squeeze raccoon wheat february flock energy cushion next", + "kaspa_private_key": "ea791f89350335ea9b304401dba996146ae8c0ef53666182c6fccaa8c1f71dd4", + "kaspa_address": "kaspa:qp675tann8yv7wjm43uqj3z5r0vr5a8enrwc7wflpxan3w6lhy7l2wtttly5v", + "ethereum_private_key": "0x466072e59fccb964d69e9d883f35ebf5a5cee7e78aaad37a10796a04b1467f38", + "ethereum_address": "0x75793F794645478A2DA531e0134BF6849ea79423" + }, + { + "mnemonic": "blast fluid craft stage inquiry yard rug loan crawl spatial divert idea", + "kaspa_private_key": "a03429b0202f43b3c998c4ba8d39462a67115c466a07dc37c1bbfe4cf0d9ffcd", + "kaspa_address": "kaspa:qqq07jzjy6v26du75jn9q8s2n60k848ufkng9p04se2asr8z0w2mgcc08rugs", + "ethereum_private_key": "0x087b2f063f9e1e282b661d6f7ae9b4157a1bcffe1c96bb37b9850c16fcc16e7e", + "ethereum_address": "0x20067c4eB32c0cb76B6F99ea10AbA359C9e29D3a" + }, + { + "mnemonic": "summer stick gas domain dwarf route aerobic next never second satisfy glow", + "kaspa_private_key": "777084858264695c016182be118e422f5027b6ec4cdcc244cf9b4d8b4dd71c52", + "kaspa_address": "kaspa:qqa4c3z8nh6avnlqw90m78ppfh0m838kwhz297r5wk0r26kyy3ycz4n3pspnh", + "ethereum_private_key": "0xe95b4c0244ab8bb564d106e9b05fc28f56c596500b9902d1600df90dfd9f61fa", + "ethereum_address": "0x39116c471b55bf3Ea9BD294EB2AAF07e88707d2A" + }, + { + "mnemonic": "certain tree deer weather ripple imitate fan hedgehog analyst when enhance they", + "kaspa_private_key": "4dc9e56a1885225847f0a665990ab19c3051b9650fae685c154b59f41abf97dd", + "kaspa_address": "kaspa:qznjkrth9vq7gy22e85dq2gxxpj8uv3qzdns92wqkpwj4ygcqh9kut08dslfu", + "ethereum_private_key": "0xd6eb55583c12f3d0938aec16353783c24e6ab77b07ee0c55f5651aafc6329ead", + "ethereum_address": "0x607F88B2F78E89C8d7aA5Bf2F13F73EE94EB2FAe" + }, + { + "mnemonic": "ritual urge purpose area rent two party print often traffic quit concert", + "kaspa_private_key": "d62112c1622884dfc0f135e5491b3c305868b43cb1508c3aa7459fb025c35dca", + "kaspa_address": "kaspa:qz3nznuw0rz59q7qyrtm3hpkj984539qhk5tla9ktdjemectd4cxsn0wr0vcu", + "ethereum_private_key": "0x5495b209b9ff8435247d84993661c45e984b3cc260c8088f77aae98479521c7d", + "ethereum_address": "0x387eC9C659022bFC3c04f2d96BC2B1711614e4F7" + }, + { + "mnemonic": "arch inmate salt couple lemon avoid melody valid exercise puzzle upon sponsor", + "kaspa_private_key": "38782ddcb648d2c356f38cd3a01be288e85c1c957192955a4654d6037bd667b6", + "kaspa_address": "kaspa:qqc6qcum3a8vda5lqme2wrzhg4gz049gntsn5lrfeskt4m7wymm0gwk50j0ps", + "ethereum_private_key": "0xed8916c9d09dc654ad4ca60476312b37a825bd9d506cbc4d7cc61c0a5e74d8b4", + "ethereum_address": "0x9ca6c63404a2352Db6A41205eB5927CBBFCD12bB" + }, + { + "mnemonic": "dawn sport chair avoid because slow hurt ride devote arena pelican portion", + "kaspa_private_key": "cb84b0ae48492d83c4ec2597cfc03377a00d506816f6e8541c9dfc62afedd8d8", + "kaspa_address": "kaspa:qpz3cur0jsp0m74q4gntv0dqhjqqw3axyvn0054h2wgc46r3c48vv55m49dum", + "ethereum_private_key": "0x2a53141feb999522a69e76c52c8429b451df7a85891b1e7fc392d41f25705a06", + "ethereum_address": "0x98e81c113AD42DB7E89235F250Aa79100f6BFd68" + }, + { + "mnemonic": "accuse aim ill gaze pilot fan craft surprise say math scene total", + "kaspa_private_key": "df9314a2e5a4da907599c56995d82f47dde0dcaedc142fa7fe7a198c13242ec6", + "kaspa_address": "kaspa:qqxqd0gr9gq2kv347n2t67js67tw69uww5m3jr8y8ergwvy5ge20yp43tdkl2", + "ethereum_private_key": "0xf5ba6592c3f4125632e4e6dbfb9199036bd6da955c9f263d6c098fab04b970e0", + "ethereum_address": "0x2062366b72C037C86d9Df54475a2068c297a0216" + }, + { + "mnemonic": "file tank hockey state feature laundry mask pair rabbit atom fit shield", + "kaspa_private_key": "679aa1c24afcf8ea2ccafe324694966a96c63954ea90db48630942f997de93da", + "kaspa_address": "kaspa:qq42jjkf2qvppsqfxq4qhu05mg7laep7jq6qphwy48acxw9vpzfqglwj7r2jf", + "ethereum_private_key": "0x37254f7381f5689112708c2606c9ca58d6e5edabdb37ee95883290b72c4875c5", + "ethereum_address": "0xC72374d348CDe2f35bBAb16A013335c80A05bcd8" + }, + { + "mnemonic": "deputy midnight cancel famous earth subway elbow code mention palm author shed", + "kaspa_private_key": "ced3a4b2959d9c91a44816adafb9964b5c3e8a999c5c18256d52ad629f259610", + "kaspa_address": "kaspa:qqqahh8dlwnmtzrd5j8stnk8gegwg3rvg0wqsvtfgtnsq6q5dgcqj64sp5sxn", + "ethereum_private_key": "0xc845f139717f4d2ba41e36ef83e113a66cb145715da98ce6a47853008634165e", + "ethereum_address": "0x844B87df61b4AF4Dc7DCF597ffEc391832c8a683" + }, + { + "mnemonic": "clown mass tide then pride era want barrel churn fluid hunt useless", + "kaspa_private_key": "622244af6e11cc905f0f971353b5e4d388debeacc5b7dd8807fc276bc1816383", + "kaspa_address": "kaspa:qr3ucep98dlr8vju52mufzsjn70f3zrepkxkem9zjgchea48rx3z5s02lxwd4", + "ethereum_private_key": "0xa555254dccc8df7a5f14390888fee0d24f867d282ae06fdea909fbdbd8cc91d5", + "ethereum_address": "0x80eAD62785A9ACb75E92A3eDc6Bc476C406bf401" + }, + { + "mnemonic": "blouse install reunion random midnight able scheme cable lucky exotic bar manual", + "kaspa_private_key": "c2ac24c96b69c8445f00381ee89cae85a21a118974950a84ece032ec0a9a6c4f", + "kaspa_address": "kaspa:qzqjfxdzcgytlhxgj0v056qlszsgcge9q4t82zs4jqpvly0lp4yfskp0d404a", + "ethereum_private_key": "0x629f12967c8d85532cccf1f6fe2d2a000f1ce4fbf92c956f95ea6f0030ef8dd3", + "ethereum_address": "0x578CfBBF9ED823F7537a226e7E6c7663cFa72b58" + }, + { + "mnemonic": "letter knife drink avoid drill disease slogan attend anchor marine donkey segment", + "kaspa_private_key": "9e31b29f9ac8c7432d098b89ddb5f27202da03add423b0fded9d38bf5e1327f9", + "kaspa_address": "kaspa:qpkl8j5pwgdyfwh844xnw6vfx58xzrgsz5hrs8cjxqh4vyssmqne6gv960yee", + "ethereum_private_key": "0x48bd4b7273225215803e2fc143a21f8c4563f7d629e626aa8a863f9de829d301", + "ethereum_address": "0xFB90A424Df7DbA0e1187D4b383E3B95b44c121c8" + }, + { + "mnemonic": "syrup fork brush safe rule physical peace leg fatal friend brush cactus", + "kaspa_private_key": "efa90952c5bbd954e87ef5083afd00503a08f58036d8cc06011ed64572df438b", + "kaspa_address": "kaspa:qrledxjrvqxmqkqq4nueases0vwr6g3uwrtuh2qfdjx7cudh88zzgzjdq8t6y", + "ethereum_private_key": "0x7219e9b3f1fc2864b2d4ac1ea5572e591a187a0611376c977ad97c23316ca533", + "ethereum_address": "0xfa246FBc23895C5114C93EBD009724eD8daB2dD0" + }, + { + "mnemonic": "replace tobacco drastic car future notable dinosaur blush buddy zone science velvet", + "kaspa_private_key": "b72527c68a15a047c90ffee5869a6a170da19d81be94d3fda4f6c593e6c039c5", + "kaspa_address": "kaspa:qrcl420z3e3zkkzx9wpaxk3e4drdq9cgd0qmvltk2pmmcv387wce2nx7wa4t0", + "ethereum_private_key": "0x9752cdbc91d3bcde6af285f5587392b38e8c122d628de2c002bb84057b3b83f3", + "ethereum_address": "0x28a3eD539CBb5FaDaeF402B84c3DEA9E7cF714BD" + }, + { + "mnemonic": "cliff bridge ring cousin gasp they guard mimic select float tray uncle", + "kaspa_private_key": "efb645cf5ac58b280b14776c87bdbe81787983577e82266df3e91aeb4062b231", + "kaspa_address": "kaspa:qqtk7q96quzp60yvjk5ss0qfg54c5hrrpsc09jk8cmd3evskr62d2ctuqga3g", + "ethereum_private_key": "0x4c036a9d1e7287216ff54e5c49dd4e60e03d1cdee4a3ea5aeb96245c55c222d5", + "ethereum_address": "0xc46aD9D6FB06c573FAD560017929d430C437000f" + }, + { + "mnemonic": "spawn coffee trim wise popular father tool tilt property chunk industry fish", + "kaspa_private_key": "297c9588abadafcefd3308d98b319edcce7f7c4d4d9d6c91f0cdad0b614aa48a", + "kaspa_address": "kaspa:qzw59rrmlyad4wk7dqxfaxlgn5ngrrq69zhz7ted2xc38jplfng8s58wmcfgz", + "ethereum_private_key": "0x47beb4800e2593d4d0d9ad09a02660586bced1624ed7352c5cba1479da138790", + "ethereum_address": "0x5B33C5741E156dBA77620858311ED981aF4414d8" + }, + { + "mnemonic": "clump park unfold drop kit speak kiss vacuum never board undo fortune", + "kaspa_private_key": "d6ba4b2a61c68f84c8294608db0cc43777647f92f24c7bf847df29d60d3d701e", + "kaspa_address": "kaspa:qpwpk5n2xtx5pjc9pz9hyjqlamggdcjw78k0kh4raq7ny9m7hutsx8ks4nf9j", + "ethereum_private_key": "0x440227a6a729b5f7f2d46f2c5a2025103a9409c35d3fad5e590d2f4d4e699e79", + "ethereum_address": "0xA8b9616F9f754a760450d0a80d24Fed120b748f1" + }, + { + "mnemonic": "course ridge attack episode cement noodle merit hello circle coffee intact behave", + "kaspa_private_key": "c3e4bc0df432e828a87bedde1c21320a9a9d2e7550302887a040d29b61360e66", + "kaspa_address": "kaspa:qrrcg3mfzsdrzks032sr9wr7yphrp0zn57w3h83fsutyml553xx2gr9uzk578", + "ethereum_private_key": "0x5395632f1f7ef9068c11bb0da5737eee6162351745389a1a72680f33c011a607", + "ethereum_address": "0x27f1a23C729866fA826aa28f67EEc9183E7aEadb" + }, + { + "mnemonic": "vehicle keen usage century nominee talk rookie winner volcano injury box around", + "kaspa_private_key": "f1e5ec55fd6040eed393fa92f34adf1dfb0195f9711708f7e4f66bebf5f39d61", + "kaspa_address": "kaspa:qrmu5tnnph8daus8kz8609untsu9zr692vrph8gtkruy7zcsmgaxj4m4qm5ss", + "ethereum_private_key": "0x92a95f879b8e11b1da6fa7c47daa5b09a5d6de014612586ba7e47872a27853b1", + "ethereum_address": "0x02968D2115cfE34988ffb1A65CB8d5CBF08AdF7b" + }, + { + "mnemonic": "obey rebel critic monitor physical beauty rural process phrase squeeze distance wrap", + "kaspa_private_key": "f4449009758ba603cf6b13571e5b1e9fef4fd5a66ff8add077d6e21dfa00773e", + "kaspa_address": "kaspa:qpeca6n6n5kljctuzn3ucrm3tl7f5jfkmtpdr5rtgtvexjuwwrx76dqkgc2lm", + "ethereum_private_key": "0x1f48f1a3d0f0cf1e554e686c4d9b14a17a700b5ad624f6860cec00962ae74d03", + "ethereum_address": "0x40bEEb9Ce5aeCBd41B5FF5a8e65F79DB938c7554" + }, + { + "mnemonic": "velvet pilot oxygen wheat forum audit oil permit enforce estate enhance fever", + "kaspa_private_key": "c24e045f7b981f6ca4068158622babd071265dc5ec69bb880270c723b3dc06cd", + "kaspa_address": "kaspa:qq00qpwt940shcjpg5x82untwr0ygmaqczq8ua9ykvpfa3cagx8u6j7a2284k", + "ethereum_private_key": "0xcf3a5878d8dc36cd5d217e7f75644a4838c8da5de5bd4f101136635838bea661", + "ethereum_address": "0x94B8041177e1baDDbcB3826172E992F1e38d1294" + }, + { + "mnemonic": "neglect special success other cradle awake antique include resemble utility credit tiny", + "kaspa_private_key": "817a99ffe62e1aa3385dc79275f820cabc2870d9f4e986ef99b8eea6b1a28654", + "kaspa_address": "kaspa:qp8v4quxgl4cx3uccxkd3xtyhhz8nn2y5h7sghvvltp56e439nlxu8wskve4t", + "ethereum_private_key": "0x2318688d3b972c37ab9d2c12e6d1c487627bf10847dc297825ea238fc700622e", + "ethereum_address": "0x25CC75E6066685C7EBC338DFA69FBF657DDDa69b" + }, + { + "mnemonic": "power drop path gasp exist view demise expand giant shallow rebel outdoor", + "kaspa_private_key": "358fbbd8d96b888266566d0c8ce85d5909c2ab271f13d3ec5b12dd53e78b9652", + "kaspa_address": "kaspa:qqggyvtpwwlxek3apt8h23p5e2jsc442c6l6m9wu0p0frcw9hjxczj9zcsa9e", + "ethereum_private_key": "0xdba5cb4dc6c3a7bc60cb64d20dcf242f9457ac650af6b9dc9fe2032ed871c7e0", + "ethereum_address": "0xeCDa1747DC6fe30Ec04963ed0964e64784AC212f" + }, + { + "mnemonic": "tube save skate suspect output place put embrace inflict shine urge chef", + "kaspa_private_key": "ab567fa12005eefc8dd576ba8309e0d7eb99263b089040242b200cb1ceac4b58", + "kaspa_address": "kaspa:qr2fv8xhhzquzc9c2vuv0epfq5tylug099j3x44aamjvsn953py0j67ytjt3d", + "ethereum_private_key": "0x7c3bf927d0cdc990f6c2e8f550af25a9b200100f285fb7772a000b5c67258fbe", + "ethereum_address": "0x941eAD9B4336F76DEE25b09B65C24fE3B19DB589" + }, + { + "mnemonic": "success dry list sugar crime coral project auction nasty pioneer almost weekend", + "kaspa_private_key": "d36fa49637a35213ae0d7a5d6e106bd3991a7b059c51abbde8a0e90b3d54d395", + "kaspa_address": "kaspa:qpm34zd6dd6nycepvt5l52q2l3ssqya4uchdd8phz3tsas3q4qy3xjfan56ak", + "ethereum_private_key": "0xbf5e819e39c0178c21ba8c7b804c003e87f7b7d51cdf0e9755fae08347ad1143", + "ethereum_address": "0x4CA7fBe2A1ae21fbd4f7A70bB05f786990B58570" + }, + { + "mnemonic": "cover boss close depend rose history wrap impact usage wrap pistol prison", + "kaspa_private_key": "b06d464b81327112c927838ecef8ead1a28c094a29009a42fc050fd3053883e9", + "kaspa_address": "kaspa:qpdqu00yx0pydunh575ptuj8f0w09n5vgyddvxzrgdv0mrse3r59ypqxtcjcc", + "ethereum_private_key": "0xcba82e2af8cff061e379d39070e2b7ebab8809de621553cc8ef03e140772ab3f", + "ethereum_address": "0xe8b9332244154BD7947BFBc36BDF7d6cE90F6aD3" + }, + { + "mnemonic": "range stand uncover legend frown inmate witness party moral melody kid forum", + "kaspa_private_key": "c541b42383d9a0c7d813c54b6e52337f7818f714441d4c057b2b418a08e8a015", + "kaspa_address": "kaspa:qrtjgxq5wlxq3j7uqmfz6chtptl8wjucj0s7wv026qsexcd0w6udw36gnmlx7", + "ethereum_private_key": "0xf26a05832ebe1d698a99a5ca6ad6c231a83a1b8fc4f93e5c4f6267e4aa42e2f5", + "ethereum_address": "0x16D28f2B2aee0FfAA383694e851deCaF9Ff7B12c" + }, + { + "mnemonic": "cart fiber rebuild dilemma dynamic law order minute ghost right drink canal", + "kaspa_private_key": "24c5a5bfa7de1e68e2727af44528ffc817e40468b83624759861f8c61d4eb9fc", + "kaspa_address": "kaspa:qpatq4esyw0dc7uul7ap2z0ap3nyrrjaqca56eumanvvhnuaa27ljjlyuay4c", + "ethereum_private_key": "0x9190ffc455aa4c7ca5302749a051059b4643fc9c86466cc3609e877bc1703646", + "ethereum_address": "0x71352589A6eb22c3fB9af60226A704a21Cac3d33" + }, + { + "mnemonic": "help timber swift firm drip target animal enter category caught laugh hurry", + "kaspa_private_key": "a1976df293c639673fa77e5dd6738b5d98d7adb8a7e5b7263680b9e30fac1baf", + "kaspa_address": "kaspa:qrf357h86d2hgu0hvmjtjyc2e77hr0ty55lw3cwm4j5zd7dtg9um7tk30zeez", + "ethereum_private_key": "0xfa75c7491e5cde31e4184736628dad7caf81c7589473b60ab5cea992b9d11d82", + "ethereum_address": "0x43b51Edff6c822E750d9cc43D04b0Bb2a0A89553" + }, + { + "mnemonic": "antenna dentist dish pyramid people brick carpet spike mechanic wonder wool ten", + "kaspa_private_key": "cf893984b18e5695cbe3430a087a106fd4961c4d6b6a1f94a05523be7962d58a", + "kaspa_address": "kaspa:qrxxmrcpee6l4rcuqa482j53zql2hyw4u045fjd5lc0fle62tqvfjwkhesqfq", + "ethereum_private_key": "0x550a4fe7f96a7dd19b1c08b7d8ed85098a07a8d1ae7820773e16201486bb347c", + "ethereum_address": "0xe78bCa88f556B7CEc78d1BC8B42342a21C0e9054" + }, + { + "mnemonic": "confirm december cigar quantum ketchup tonight butter trust teach rare okay original", + "kaspa_private_key": "ff535b1ecd36798a1ecdf61479521b7d4b22d9c11038760a03482e7b41f2853e", + "kaspa_address": "kaspa:qqh4cw53pstqkwnxweekpktxr2thpr5cnqakxcdz0tyfw56qzlcl6c8sfx7wq", + "ethereum_private_key": "0xec11b23bd653bfc4037d9fbffb481502502292062842447848a9e97b9ad4bbed", + "ethereum_address": "0x5Be7ecCcD2a27880A9517af6BB5B09E74805fC42" + }, + { + "mnemonic": "base parrot emerge mimic license save inner maximum problem demise lend outdoor", + "kaspa_private_key": "9cc34e1ba6bbfc1fe831745cd8dd7ec5056a7441202962d2593c36422261a7f9", + "kaspa_address": "kaspa:qrhuusjr5mk487n5gel9g466397d3f7sd3pws5wpwq8zjvm640pds9re07qgw", + "ethereum_private_key": "0xb26533cc66af6e4651521f62060a5936d136364530e05f7ca16a4568905779d2", + "ethereum_address": "0xF32F73F9f862eeD70889e6512061fe9Cd289C664" + }, + { + "mnemonic": "early garbage upset fire float faint buzz village bicycle cliff soft stable", + "kaspa_private_key": "63c93f9ede18ab19055e53a6fe09666082aa0eab883a93e2c2d6556646e23c65", + "kaspa_address": "kaspa:qr9txskqke4v75zuxarpjty9kd5xzurdggzcct23kxtrm3skvlppxxm82fz2l", + "ethereum_private_key": "0xc1c11b99513fc4b54444d8426b2f86b28bfa47b611a01d8ea97a042d83c95869", + "ethereum_address": "0x86B41303027314027E49c8B3C31Ae1248a4a0F17" + }, + { + "mnemonic": "banner bomb minimum curious essay visa ordinary quarter add light tornado picnic", + "kaspa_private_key": "59cffbd677053d29f46feccf634daea05fe9179bd81efb28c5128a584f2873ef", + "kaspa_address": "kaspa:qrn6wk5q5zghf06xemteg2s6rtek5ygdr3y7ncyrn9y6ljtny6jmcxtnqt68z", + "ethereum_private_key": "0xdf8a7540271de2811a2c44f7fa1a7ea7507edfb7c7d6fbd33d2cbfad53c0b7a6", + "ethereum_address": "0xa72603aD5aA192bf805435f446ba720365222C8c" + }, + { + "mnemonic": "rival genius robot sort relief satisfy whale program gold piece arrive inhale", + "kaspa_private_key": "533364681254c50cbc9b1397f5cd8c0597329cb93d7455cacf2f97b6f893b2b0", + "kaspa_address": "kaspa:qqd8u0zf0c80t58avevu4dkpp2awphj2kwaqu6azg5hf2fhae9yywkup5a3ur", + "ethereum_private_key": "0xa3fcd9d41a14872567215de9440ad5543fad1dfdf7d7e1370594c068d614b19c", + "ethereum_address": "0x8a26D07b06a65478595724BBcbfb8F2132AA11E9" + }, + { + "mnemonic": "fabric universe pyramid ignore night vote blame what ketchup glue funny leave", + "kaspa_private_key": "0ef578feee8df2fc209e8774628abc576ebf302bd04757b612704d36ed8b3bea", + "kaspa_address": "kaspa:qzt3savw00gp8kvl5e70ym7xhwcua0duqusj9affdacrqa96smzj5c0w4zwas", + "ethereum_private_key": "0x2bd12bd5ef11e45e11997ac145851809a508fa45e1984c10b342f2a7ab71742a", + "ethereum_address": "0xA923f90d580aa10d2C616D88e5be25ae7E5be718" + }, + { + "mnemonic": "obey gate offer worry animal rotate cycle bread pigeon replace waste glance", + "kaspa_private_key": "a295809f2ce4b8146f83c1dbf555f2c3bda70ebb2444c1c61368ce3a11ae7e22", + "kaspa_address": "kaspa:qq4vneht253k60tsp0knk4hm5lktmdzyw0ue3y0ksjuhx49ndnu72rpygc2wl", + "ethereum_private_key": "0x215db07ce8b0093fa2488a7e0d7f63aa630621fffd3bfb02c7209522e50063c2", + "ethereum_address": "0x13877411e01481A3FC5DF689c122Dbc29321D6c6" + }, + { + "mnemonic": "dial faculty design travel success ensure glare decide six end culture water", + "kaspa_private_key": "b4f2e452a5b909ddc2f0634db5f0f3188d9912413aa9b7986268f275b7024864", + "kaspa_address": "kaspa:qzsa62zzx2sqk75z9ra3zh3ncmsw0c5ffeqkdjzzpwevzfcew90pk93selmml", + "ethereum_private_key": "0x880633356db92818622db3904ee2e7eb426fb8a842f3fc66103ea6fc904804bd", + "ethereum_address": "0x68EefbB8C9E2fcfc4F9E74C00e8EdD68d1A2cB3f" + }, + { + "mnemonic": "danger online expand worry example divorce laundry laugh total inner weird angry", + "kaspa_private_key": "169c131eec755bd75faada9ab63f6c367cd0a51230911a71d36f8b678f2ea4d3", + "kaspa_address": "kaspa:qpveyzaupps49pv8r8jd4xkgzhfucx50jfvzmhyehdhz0qk83yewx2a0cmv7r", + "ethereum_private_key": "0xa9a48fb2992a952c5d1b2de7ed77f5a957d8409bb09db3da77f9f517ceeebb33", + "ethereum_address": "0xfCD5a8daB02D948238FE319cC5A0597287616564" + }, + { + "mnemonic": "ugly hurry harbor month town correct wood poet hundred girl found caught", + "kaspa_private_key": "89af277679575e90dc1e40c91bd722b6a4ac7d188248dc1abe5b9d860652116d", + "kaspa_address": "kaspa:qrcvwafclrvaht02rexeajsyq3n3dhtaw4ypkj6gu44m0wkmuy48745rudjgw", + "ethereum_private_key": "0x030d0b61ee3f68fc0672d14356f579687e5341df596af4ab98c91dbdc39508d5", + "ethereum_address": "0x4031B93CE14eB1F84b1d6337590Cf35F241f7D85" + }, + { + "mnemonic": "jewel base work nest flame accuse invite december combine horse door envelope", + "kaspa_private_key": "89e3db132710b4b438c394b8d99e957c8dfd01a288b179cc6ee08a26bf246f38", + "kaspa_address": "kaspa:qz479yf3sms60htvmccpp6ynchsy8jsffzxntpw0e8464lr53qhx5x7eq5j54", + "ethereum_private_key": "0x580410667358f2225fc71190c1397428549c86c0b3d5ffc17c8105ca6bb2ab6c", + "ethereum_address": "0xE326BB2BBfd7a86518752f8c4a573Cb29463C23c" + }, + { + "mnemonic": "jelly fantasy refuse body once cool dentist master learn pave air venture", + "kaspa_private_key": "f0a3939febc38c6af8b30f47bfdca36508fe663c092dc28d724ffbb74b898bce", + "kaspa_address": "kaspa:qzfdh0zgmpxgvprn6funrnru3469x689zhmz7r94luvl8ux4jyshyzw6ncmuy", + "ethereum_private_key": "0x7332a302a7c586ba5d06aa0ae10defd0ca69e0e3bff9b7bc04da4b71cf17b06a", + "ethereum_address": "0x66AEc227a7fb108ec0A4d9fB791e3eE03Ae4680e" + }, + { + "mnemonic": "attitude claim define exact fury blood legal obvious crop birth runway patient", + "kaspa_private_key": "324fc86016e6c391a4b0bbf14caf33f64a8fc5a1d4f8b1f05dee7457a0135dee", + "kaspa_address": "kaspa:qq9jp2qv4npfggld6dkp00mfsggpecm4k0n07x6nfu73p8ly9rhgwh7yhl9a4", + "ethereum_private_key": "0xe0f37327a78acfff7f84080c03cdd2fb5c0b9e05531c148f83aa550144b0be6c", + "ethereum_address": "0xfb0dE586b21384C88C85ebF395dC95f3b0786ba2" + }, + { + "mnemonic": "typical canal pistol neither math rifle slogan rural doll donor clip piece", + "kaspa_private_key": "e228abf9a2e75eba2ad6170a62fe935eba798239f0b3a31af231019ba3940172", + "kaspa_address": "kaspa:qpyj4n2nefqvs3tmfdckg0vpszn6ksp4er9yjzjm9k7nepdedymyc2wdwnth2", + "ethereum_private_key": "0x199bcd54947ba5ba8cfb8b8bc1e6484c9712d4bc1b37a8b5d5a7861c8c355223", + "ethereum_address": "0x6f0056b853cF40ab7d63C34eb77a22ecA550607D" + }, + { + "mnemonic": "steel surround unaware street normal hospital position trap betray spot leave inherit", + "kaspa_private_key": "f212a3f95ee7e21de30c0f46037545352b3f75662e6db40f030316bf409c6b84", + "kaspa_address": "kaspa:qr8nazv5duygsd0h4wtkruth43qfjuau9rxcl84sydkq7wajd52625f4zhn0h", + "ethereum_private_key": "0xd043671992788fc937680e7523f4c1d2638e318915cf025f7075cf9018e6d524", + "ethereum_address": "0x2f901f06aa6709c6ec0D5b49719fa2bA43F776E1" + }, + { + "mnemonic": "talent reform pepper short tent blast jungle rely beyond feed neck embrace", + "kaspa_private_key": "365f4732fb913ea055f71bf6d9564d68e04414adca9c2627537397f9de6cffa8", + "kaspa_address": "kaspa:qqpccp9l40rh6v4wjcw0d6j2cng6a74ak3x773thzn6tex9mxtun7mstp544p", + "ethereum_private_key": "0xa6d7b922675e9c4122f23569aee7514320ecda24c23c8060de198866833fc18d", + "ethereum_address": "0x2bCc0f4E5Ade077FC3FD4697f6568B8CD2dc3C1a" + }, + { + "mnemonic": "own lizard company song uncle flock cable clog panda miracle submit clever", + "kaspa_private_key": "6f82e4c404e3b0f6f51e9bbeec62f551da6595c88a3c56c5d018cb2d78e9e62d", + "kaspa_address": "kaspa:qq3mhwnyuuhjscg0qzmp8t7xdzj5xsrdkdlaw4cfte37f6es6h7gjptv25asj", + "ethereum_private_key": "0xdf9f2e415494588e77f6cb5e7ccb8e5e206de587c4176891a689a1fbe51b3d2b", + "ethereum_address": "0x5A912217d8f24a584dc35A8aA92d5c17814fc6F2" + }, + { + "mnemonic": "loyal oil lunch govern reopen donor atom dolphin pen miss bid chimney", + "kaspa_private_key": "a0bf312a639fcf8c94520c9810b75d429d79e7a7824979f65336c4ead85a560a", + "kaspa_address": "kaspa:qp6gr4202v5gv6jct4w0w43cqqlegsvjwrvn0nuh7lgf6fgpwauxusj7kzz4v", + "ethereum_private_key": "0x48ce7036990f75ffaa73ed616f234e6d645ef6edec1d297b0b62ff3b60d2ea94", + "ethereum_address": "0xb15F961790597A9898ef16Ec9921d8171e8Fa8c3" + }, + { + "mnemonic": "still candy antique animal pupil creek adult envelope frown cereal example whip", + "kaspa_private_key": "272c42dac6f23b9b1fcea4b5f913ddf538013c23748ef79de1bc4134723378db", + "kaspa_address": "kaspa:qzc0nme4u5rfgd7q44fkhjmavpzetavtk5fttpd00r20l8qn32mes9zlv4mm0", + "ethereum_private_key": "0x5ed7a3afc9b304d1ba647e9a5b432992c83aa98f36b5d5a938a406a6f3f6b676", + "ethereum_address": "0xbD3576A0228AF15cbFd2D6FAAFaF73af11d8e174" + }, + { + "mnemonic": "supreme electric slam canoe pave cloth load zebra lounge glove legal dumb", + "kaspa_private_key": "e5c5c23d17c4e30cf7defdadfae1ebe0983ee29d8a873d231b9072a757b84f7b", + "kaspa_address": "kaspa:qpg4fu8jwvtxwh9mv8f0f4ulrx3qjsfeg7kcpysuhglejxkutsppzlyml2qzn", + "ethereum_private_key": "0x0fc979eab7f263c40313cd0ad4c62a7ca184414fe79be0b1a72acb59f224adf1", + "ethereum_address": "0x16574DAB19DECEb41E8be4912d39E1A7D908b59E" + }, + { + "mnemonic": "tunnel casual guess toddler future detect exercise dawn shield room solar harvest", + "kaspa_private_key": "3210ff7e9c62d66e3c7f36104279ad9954dc84a64b7f291c84e6959beb65758c", + "kaspa_address": "kaspa:qqmemuhjr3t7zc7rc9avgu07d2am5cj8w8q84fnhdr769z836ddtzpsg0260f", + "ethereum_private_key": "0x7ae7a004d438af04359d4737763023fad39b3fee27acc039c78ffb009b493b34", + "ethereum_address": "0x06bB326bbD3352B7966CDAdBcA95e58b07543032" + }, + { + "mnemonic": "ticket zone forward convince fruit eye agent century smart venture cancel recycle", + "kaspa_private_key": "c2de97b98cd5d8e8e3a36c758e845b6fef422fb3447031232ae0fae6cbe65d7a", + "kaspa_address": "kaspa:qzc4zt0ek3n9u88npgdmlcw7qq3l4zy8c8fvsfdm767ay6mv37t0z8mdytlmg", + "ethereum_private_key": "0x467e37f8adaabb99c491813cec4b938c1b529c7b9ab3e29f3268fccf13491ba6", + "ethereum_address": "0xEEba8A220d2D38c1021845659F480770F8c5D754" + }, + { + "mnemonic": "inhale uncle caution expire flip social steak focus cloud patrol rally remove", + "kaspa_private_key": "17a5512f1bdd65ffd775d3987fea8df9e26e17efb37bd2f19c159e94f8b8cc1d", + "kaspa_address": "kaspa:qpcu30erfqupwtcye23c4u2ahfj9chhdn0a8dsqawzqpa6s3njw6k6ged66ew", + "ethereum_private_key": "0x37e3a552a8f9e97a0749ce26faa6eb39d73c96b0de73a5dbbe078c2da0dcb3a1", + "ethereum_address": "0x141f19C7EB9288385e5722290F1b871a8ef474Db" + }, + { + "mnemonic": "bird fun between silent either reason sport wreck problem target minute banana", + "kaspa_private_key": "2dba928ffc0a41f6cb79f267312da62c65a79265c930f8f6f8362d7076dcf97c", + "kaspa_address": "kaspa:qpaklrt32h5s23rwfn450gsr29vyuckjw9lgmlymf299angs4jlgv9kenmdlx", + "ethereum_private_key": "0xd58ff860cef2a608072daa5edca80d8c588e7dc15a555afee04b8ec6c429baa1", + "ethereum_address": "0x34a1DF6D04E1B988627a4ebBab3089C36F57A9dB" + }, + { + "mnemonic": "ethics lumber receive post purity beauty hello lion quality train proof actual", + "kaspa_private_key": "2555396b5ffa71ee592ea37f0983e9f98d8bbd96df91f8ab58ee533519e33265", + "kaspa_address": "kaspa:qrsef9ega2yzulpyda33zu4pm25el9hg2lp47gw3npu24curyzhz7u280gdma", + "ethereum_private_key": "0xf4b360fa9126282e115748443c429ec19ec923cb24e6afbdde8ff0772421d6a1", + "ethereum_address": "0x3D3858C409778a7af0587857051140734089740B" + }, + { + "mnemonic": "culture attitude royal net crawl orbit aunt scene street diet syrup uniform", + "kaspa_private_key": "423ff5719eecb22926a219561e608300b90d99a260365899c82897003b0862a0", + "kaspa_address": "kaspa:qrmxkd7e927swjp2h3j6d5j820aqkpjancctt6mq3jaaqxs7v0kmcq3ewf3ay", + "ethereum_private_key": "0x36210bcb0f739dfcb28f4f7fc5d15ea406170653e0bb1c3ffda91b5ffc839178", + "ethereum_address": "0x563C0Bb19a999A182fBaF63988Cf61ee5570e2C3" + }, + { + "mnemonic": "trust search asset secret private breeze tobacco eagle rookie sugar search man", + "kaspa_private_key": "6b2bb67a24d7b7b80af780e1193ca64421b2b7f34357a05db8fec01d59f06ac3", + "kaspa_address": "kaspa:qrl98np000xrfexvpj3kedvvtrftn527rhn3h3vxmfz83mfr53dcvs5y3xg9p", + "ethereum_private_key": "0xb08356a327da513868bbd4d83461098853f199a6126e5a6c4753a9da3e0cbf84", + "ethereum_address": "0xAD823Bb663fae604bC737dc443F7Dca506546A58" + }, + { + "mnemonic": "another box business unfold recall festival surface upset color orphan mammal hammer", + "kaspa_private_key": "437d12de995f3dae0e8c38dea44bf28318b18fa5426f4c3166d60badb296a632", + "kaspa_address": "kaspa:qzzejhsuud3l4yaq6fzagvdhpsx2cte89pkc3342u6l675ud3am3qtxv6kjes", + "ethereum_private_key": "0x43beee71bfeaae68d5cf99aa6f11a89932d22c2f3d7a4bcd5427b74544fa457b", + "ethereum_address": "0x60b3F986AF1e6502E481bBD02bB0E6Ed93D25Bcc" + }, + { + "mnemonic": "venue monitor stuff balcony steel early success hedgehog stage secret faint tired", + "kaspa_private_key": "e78f8c2080dbe72667531bc85c85ef28bb634306f73effa868369ad146ee8c5d", + "kaspa_address": "kaspa:qqj2av0af4gps3aprrqx93mph269ffkvfx8cz5ag9ma02k3hd6peqzerw737q", + "ethereum_private_key": "0x8ce270382f17ac503481b64e99303c40c86cd6b515bbdbdb59b1d4254a548499", + "ethereum_address": "0x5d7f9a86f5555CBAc2A37824343b2ec495380306" + }, + { + "mnemonic": "glass climb left impulse must elder eternal rabbit country spray palace picture", + "kaspa_private_key": "5dde7fb8b72df667a49c28a64d91396ca4d4a31ab355f594cd242effc7f93d80", + "kaspa_address": "kaspa:qqpd7u7hxd0av46he0aaucygtulw46dhzh66dpaksjv8z604gpepjqg657tm6", + "ethereum_private_key": "0xa946d4b62fad1b4581106f25c730d867dda2ad64a5e334b805df751130ca7589", + "ethereum_address": "0x5F58250a5b315AA0Ea5dbdeF432925bB666c46F6" + }, + { + "mnemonic": "crawl absurd crawl edge iron paper cycle shock runway kit knee wife", + "kaspa_private_key": "31f2d579f306f0a9d958950e00623325606b18b7b1ba06d5e5e0ca7783ba8e24", + "kaspa_address": "kaspa:qqx5lap6k3r2yn5hk9zckw47yuf9kpv3f4shf864c48n8p9k97crc3qlr47gf", + "ethereum_private_key": "0x8c62b0378c222138c9272eee67a0c664dc0c9384a2ff0501d56073a93e598843", + "ethereum_address": "0x26dF1b176edaC4D5a4afcDa3ED70eea97E5F6e50" + }, + { + "mnemonic": "spell snack symbol grace ready crop patient glide impact unique differ crane", + "kaspa_private_key": "479315b460c3748387522c4a766bf691e87fe19662c09824c62a6e55118922ee", + "kaspa_address": "kaspa:qze006jrh323gylkvv7ru3a8ucazpwcrlypgzz3g4uugkde84n6nu825l7akv", + "ethereum_private_key": "0x0f33d0bafd2c7a5fd21f6986640bc2793ebb3772aa154525163fa5a454fb0aa6", + "ethereum_address": "0x7EC78429FBBaef5e54E039E4DbFfC4941909004C" + }, + { + "mnemonic": "giggle idea behind unique choice regular pear wrong old puzzle manage run", + "kaspa_private_key": "8171340f139a7e2ffba35bca8cdcab74644e0eef9632f501b818acd37554943b", + "kaspa_address": "kaspa:qzd8dw0ykj06lyneum9d7lzt2fl3k48t8u39e5fw6v55h5562qnx72rctwjej", + "ethereum_private_key": "0x1056a15850f6c2a3cb64ef82c7f90e91b9970520d4f79cf8a2c4c6c53b923100", + "ethereum_address": "0xc65f9051eD91a2Cd3Ecb5Cd2BEEAe887Ad63456F" + }, + { + "mnemonic": "submit sign monster million pause silver local mushroom grow news heart cruel", + "kaspa_private_key": "b377c7cf71adf1d56718c554a4ac477ee48854f6091330fc0bd909d20a8df02a", + "kaspa_address": "kaspa:qr9y7fgknh0zs50y8flvgggx22alqc432vft4qw7ht3t7g9eep7nusj3t9yyt", + "ethereum_private_key": "0x62f1f27807186f1864149c746529cd5f33073b020fa5fde0ac10cce3de2f1987", + "ethereum_address": "0x1CC67A0c9246eae75c6369282a43A231Aa4A14A4" + }, + { + "mnemonic": "tortoise dad few imitate rack knock group cook mango essay range vapor", + "kaspa_private_key": "d256b5941c828f3d42de6da9c71a44ae68a78340c075525f82c202df7ee40544", + "kaspa_address": "kaspa:qzj90q83tttj2y8jecwftr0fmvjk9vzzu8qf88q80p74qrfjl32zvere5kvr4", + "ethereum_private_key": "0xdd743c8a6adac491f3fae32de4870835a56e3f23fc63114b36cf97225eb4d375", + "ethereum_address": "0x2c7aD3Ea70047058908acC891ae5F09eb65A6B4f" + }, + { + "mnemonic": "garment ivory grab scare raccoon movie twelve coast math average surface sunset", + "kaspa_private_key": "29cc28cf1fafced00676d2a2cc236365640a01029dd57edb493db62c1bea1c68", + "kaspa_address": "kaspa:qqpk62xd9wl4n0e78qr5knjh30hs99hkqrdxxdux8gpulx596wrjva8jsnx5d", + "ethereum_private_key": "0x59965be6ea00daf26e42a9885db4b43d111cb12346e7ec74dc79cdf050bed4e6", + "ethereum_address": "0xb5639806cfa794Cf50bcDbDbF79d4D651D162228" + }, + { + "mnemonic": "alter pattern lemon cricket slogan volcano inquiry nothing arm collect screen flame", + "kaspa_private_key": "b8aa05bc2ea9a0f6abecda8b858b5a6960b3a433db3af1617fcb6a712999c47b", + "kaspa_address": "kaspa:qqlps4xgm79znfq8tuklfjd0krgv6zqeltvfcyp0cgkx772q0fqhzme7ayx6h", + "ethereum_private_key": "0x173e011d78d2f8f685b16a61086d5096b0e24efdc24db3ceae9bd1c366b15394", + "ethereum_address": "0x04f96d031ABD280e05507Ae3FD33BAf92eAE9082" + }, + { + "mnemonic": "bind cute ribbon will science gym unable couch unique chuckle nut short", + "kaspa_private_key": "0be40473913acb194ad4007187292c84243b07071809f7e27f7a11e8ce014eed", + "kaspa_address": "kaspa:qzuu8txqewqqe6x55av0xtxkvu3grq8ejjjxnn2fqu8pdy676740xrwcfl46w", + "ethereum_private_key": "0x90f8f819d0178719956a102795be55feb86d2abbd2eca1d867dd85ab3c470789", + "ethereum_address": "0x74d9073B75d181FE4f8c0bCd2000Dd34fd7683fd" + }, + { + "mnemonic": "infant tribe slim dwarf maid crunch squeeze gap celery boil beyond exit", + "kaspa_private_key": "ffd3f581f560c8e8703906355f35f36c63ec2477d17176f57ef90c4c64b4e3ca", + "kaspa_address": "kaspa:qqg28au97hfnxuve45nd3dzc3va7q8ffzfn7rfgcevd478vvwnwyc2s7388ax", + "ethereum_private_key": "0x90eb2598d0c3ab353ff15a72b3047089d22064b85a1dcb17156be39bed88f21d", + "ethereum_address": "0xcD7250989Bf301AD1CF2B0481818E7488c4614BF" + }, + { + "mnemonic": "cream improve impact cake fat senior where uphold cream urban range tent", + "kaspa_private_key": "9b1192f48c1f24a26b39997450043df9a87cfa9e6b0313092fcb83750def33a1", + "kaspa_address": "kaspa:qp0djaujvucwtvl7cf9rh43fhq9mjmztr2rjjyh47d0jcsrhqh5qqjn3cy40n", + "ethereum_private_key": "0x4a1ef2dbe9c45eadad247385ae7f06fd95c869e8505c4a5e1b4c9c1a1d923b3f", + "ethereum_address": "0xfFd6B83A609Ab7e964Ea148A3d51d31Bb619AB55" + }, + { + "mnemonic": "cushion gentle tool outside safe prefer north safe found security afraid rookie", + "kaspa_private_key": "8cca7ed34d1f83151e72eaa848914f55363905bdb0e79e8a9f0f80bdddaf8194", + "kaspa_address": "kaspa:qzgavdt8uqx9gymwlcfv809kmen2ewkqc8erqfn8qqdy94ntefepq3whqsxml", + "ethereum_private_key": "0x12de79e09d173b6c9f3c09493ef87459b973bb68e7f9a0a3177ba04752ecc5aa", + "ethereum_address": "0x767Bd74703eD3256716eD72BFCB4B911398E8717" + }, + { + "mnemonic": "cause elephant during catalog liquid release session size ivory female laundry peace", + "kaspa_private_key": "f6d231327d7221332d76dc88fa5083a21841681365b1668edcbe0d7a1fb1c04b", + "kaspa_address": "kaspa:qzzeev5mpvm0amqsa5kthq0e2lznt4qnvypnj37glwvh9juq7cmrx67gvfmkh", + "ethereum_private_key": "0x25a9f9828cfb31b328731941004cdd12467aac1bb5281ae57ff8f8226317a8b5", + "ethereum_address": "0xCcf88580bc386e179071825638DB050A709b89F6" + }, + { + "mnemonic": "stick warrior answer coyote afford embody benefit vast tent rally intact price", + "kaspa_private_key": "9dfaebf200375132a863a186933de8fa9cea636da711dc7ffdb74402b3631ce2", + "kaspa_address": "kaspa:qzmpncadngcd8499p6nppjr72pzx29lud2uhkpklhj47wj5cqnvtwgsjqkays", + "ethereum_private_key": "0x26b7f9b88ef1b3112ec6c469b73c547e0921222f61d83bc17046008655426d82", + "ethereum_address": "0x43d81dB4C78BF84bCba58FF4Be1876993aaFFf03" + }, + { + "mnemonic": "nose produce page surge start fetch diary comic cause neither minor guide", + "kaspa_private_key": "eedb8163afe4183fe84a54a71b97e49f16d55587bb4f490373d4a30642cb011e", + "kaspa_address": "kaspa:qz5nyuzq6ek8xgkylhcy3pz3g2aasevarmaw4fqzxk8jxwyul3udwj7ak60u9", + "ethereum_private_key": "0x15218aec03328aad5584e1791d8176f31bc6bd4ae7bb2db3df0934673ed0de52", + "ethereum_address": "0x88205AF4F6d7F2Ffae30039b501892bCac4A3Ca7" + }, + { + "mnemonic": "equip rural island rice identify will crew dial eye van romance grocery", + "kaspa_private_key": "64b27b9a5564742c18ebf5d6cefe510c364d221c82861834fc9f75b985af73fd", + "kaspa_address": "kaspa:qrdfu4r7cld0qs7h8qh0qkgnl2w8rf6th3j5j73uxpx3mk9mpd6qvm45zwd0e", + "ethereum_private_key": "0x4e6dfb5f82c6c1b693d25f9395d9034d9307e39f706357b11bab719ddb22f061", + "ethereum_address": "0xfCE825eB414A43195f42a9D2C3b9931aFf191280" + }, + { + "mnemonic": "carpet valve clutch romance luggage rich stick prevent junk youth spider hospital", + "kaspa_private_key": "cd82d1fdd5b31d5c29b02c2b07b49ac27c226f02c49bb26ec31918b14f81baa1", + "kaspa_address": "kaspa:qzqhc5lq37qgl39lugh3n0529pulsex35xe8y2nfh3hg7z7k0pgqq0npcyn0e", + "ethereum_private_key": "0xe7b095443a33dcb3cb7741ab970b8173cd6acdbb3f4733854fd9dd154a86c137", + "ethereum_address": "0x3fa49c17abd791F392aB64A39659C28714161cC8" + }, + { + "mnemonic": "layer skirt loan pear what dog bring series rug trend kitchen admit", + "kaspa_private_key": "7845ae9225fb7f9e072a9e94790762d070d73c3f2b7b7ba8b5144924a50ffde7", + "kaspa_address": "kaspa:qz96wudgt9k690n7zpnzql3t3jnvejxfx89kefrgkcp0nrfxnjv7k7668c2tf", + "ethereum_private_key": "0x4628401df90da6c8c272b698f589619ac2cc3c70bde17e64cd0bb27a27e3f41c", + "ethereum_address": "0xb71Ae31e07fB8AFd51595C7AAEc3448b948e1434" + }, + { + "mnemonic": "same stadium sustain tomorrow benefit result air pair clerk slice female can", + "kaspa_private_key": "53d4c25d7132b85567734e18cf02223038ff080cb05b1ea281d31e503afefbcb", + "kaspa_address": "kaspa:qpaa9xntukw9r65um5t2f20yuvzwpms5fpgu83mqf2uqjvcwtxlhjacelgal5", + "ethereum_private_key": "0x2c9d7b6609ab86cf6ae73d6e418e9a65f1a316c9ab3658a0294de65c6149b171", + "ethereum_address": "0xDfC9E1e9951BF17bEB4E58cc8dA419F5e89d1249" + }, + { + "mnemonic": "century fly humble aware trial rather acquire ketchup sword city debate toss", + "kaspa_private_key": "623df91f3af9558569b9f8d35cab8a046a3831249072f538ac28e76ee1c4bc90", + "kaspa_address": "kaspa:qrgkxj7avr3svfm9clvst9ka2dg78j53x747xt0pjvev0t2z5hvhsrycqkq3h", + "ethereum_private_key": "0x09bd9cd2bb81dab40ad083ec42657551cf48cff69b27f1733264032864fe2782", + "ethereum_address": "0x1978D8093403c156b744d51a5a91e4A223716B14" + }, + { + "mnemonic": "river glimpse verb maximum clip stomach inspire lazy inside cabin alone seek", + "kaspa_private_key": "428f01c1388b74878c24233986f176cc53bd01eed4323e9e33158a798267da7d", + "kaspa_address": "kaspa:qqdu0gn47ytnrndf2r6c0xp54u3e7swgvkl52n2ljdz9wssyl2lhgatny467q", + "ethereum_private_key": "0x6db5f7c1bc13287cc5a403276f2caa36c4e11769529cfbea19aca8b1423d96c6", + "ethereum_address": "0xe2d1E4b75571C2231dd4A07edFdCd34b4C710aC5" + }, + { + "mnemonic": "lonely charge flag supply clock usual rural gauge legal hollow absent dance", + "kaspa_private_key": "0cef37551bf34c4b0bb60f043fdc1fa9f6a0e99a579f021e3f57e5bf3f0149f1", + "kaspa_address": "kaspa:qzj58vqfr254d75tfff93434e6vm68mpwjjv3ca5kqdwkafkpyxnsw3m86ytk", + "ethereum_private_key": "0x16ab68e3d5822340d82b0d85e46b4e2bde7de1b12e074db14502fd00a649deb4", + "ethereum_address": "0xDE6b6bbb0c1F637B9ac5Aa1A69375E92C8F3f681" + }, + { + "mnemonic": "badge pond fancy kid fuel enlist know weird soul false august snow", + "kaspa_private_key": "8898e48b48c9f6dbfc26afd1abcb78faaa737c678645c8fc10e886caad2471d1", + "kaspa_address": "kaspa:qqwjmq9y07zhyvyfsrz76hwmtxu8y537qwvs098pk86p6ynfgfezk65xdedds", + "ethereum_private_key": "0x82a010c3b0b4913f51a84257b7f1e2915cc85da1389699f6671530aea8bac76a", + "ethereum_address": "0xC75c814bbBc2d7e58bdA4841565D5619D035416F" + }, + { + "mnemonic": "become swap poem tunnel gentle blame style estate float alter suspect blame", + "kaspa_private_key": "efa1ba2bf4a823d988759e7cf6709a919be02d158b1a7ef01f3a5084cbb3cfce", + "kaspa_address": "kaspa:qztzt25v7dd8skcgpr55577mrkyq53cvuw9309jfly4ac6jx7va353hzkqe7m", + "ethereum_private_key": "0x47109a5f4f14d76d8ffab14440c5a43c85a52ae05890603f36fc45b33569924f", + "ethereum_address": "0xCAa90b089b2796124bE31555382A93Ba4f47922A" + }, + { + "mnemonic": "march setup glue swarm liquid salad nasty can useful panel flame sun", + "kaspa_private_key": "09b7ae6db9c8bc6b4f8185c6271e0ddd7d92856bbbdfc9b1c5b1ef62b3ccff4e", + "kaspa_address": "kaspa:qrj3dvuh8pul79qclh54e0vg3httlklawqdwjl7umn9lnsvhhmhzvgjnvtzta", + "ethereum_private_key": "0x4bb7de81940be632f55f0a7db9ed693dd2015b2396f6b67de4254fa518d5b208", + "ethereum_address": "0xb7891Dc34Ff4236338dF8B8aB8CeB6EB420B73e8" + }, + { + "mnemonic": "craft denial timber chase robot butter crane forest able raven absurd sentence", + "kaspa_private_key": "c142d15b73b8a4e7437a344d5d3387c7ec3d9fc1d72b560f2170ab595a36fd4e", + "kaspa_address": "kaspa:qpsc85suh9h3z765cfq7qjeruzh3eykc9payl4ujntz6p2hy0racw4wm5lkqg", + "ethereum_private_key": "0xc35c32a2d5c8347df97e7795ee44905c94ea945c0d80b9131d794609b5c41e7d", + "ethereum_address": "0x41F9a668430AB1318177305d645926854DaF5783" + }, + { + "mnemonic": "tiny this material praise decorate crazy click brown gas music since lyrics", + "kaspa_private_key": "2dbc8d6b47ecf41428af853db0911fc58d2d7b5f9c1feee8288d70b9f4e59dea", + "kaspa_address": "kaspa:qqn2f9w7yvp42qga6lhmz5nvggcct3xetdm626utnxanmx5znxwps32tzsrje", + "ethereum_private_key": "0x1aeba3f1bbf891df376f35943517f904896b89993394a313372cb75f635c3d47", + "ethereum_address": "0x1206389482F35a0fB98E554A4Beceb3f6928d928" + }, + { + "mnemonic": "column legal nerve web series speed addict lobster flower angle airport apart", + "kaspa_private_key": "fc048472ef6c7dbe0c92dee7e69955c5d1893651857beb8e2d7c3e0609d4970a", + "kaspa_address": "kaspa:qzep6rqjj7suw0wgt973p9tem632e5lxwr5jslxqf07yls7qqzhkyc44cye4y", + "ethereum_private_key": "0xeaee60e4af3298c4c89084676c3fcedba55c7be357212b1e11ea3cac55ec2f03", + "ethereum_address": "0x8B2d7c2230699dD3a51433B8172ED9e7bfE0b3DC" + }, + { + "mnemonic": "target seat tell iron will direct surprise theme occur march elbow valve", + "kaspa_private_key": "2c7d4f5df45c8f5060609b209084c183ee04977716a66773718568b34d5de90e", + "kaspa_address": "kaspa:qzs9wzgul5qjtqrcds629s4hu5v5ajuwretyjyuwjkkc6frkyd0tzva7d0axm", + "ethereum_private_key": "0x2a73ed8aaffb95e478df893e48536bdc4f3eaa7ca2daaed28a3562a0ab0ab342", + "ethereum_address": "0x0349aB3D2637784214c33A064EA736cc0188fF3C" + }, + { + "mnemonic": "marble force divert below junior text rack avoid virus fish buyer crumble", + "kaspa_private_key": "0f29fe412b22c2231a9a1159b4b6376bf89fea1a7557c39378edb697029843a3", + "kaspa_address": "kaspa:qzf88c62muxhgxmzfrq6usxrk3l296yj9hyc3p4lk5ufk74yjg9xgn609z03v", + "ethereum_private_key": "0x7bf5accfb73054118d7b98209a3359c85ae37c3565ba3dcda9683f8cee88b46e", + "ethereum_address": "0x8A975e1682612b08B8e6752D21d651B81Bf690A8" + }, + { + "mnemonic": "source face artefact tunnel tiger door lawsuit flush spider boat knee pattern", + "kaspa_private_key": "7556799ad236bfcc9120724e011cd6c8b8217b0d45a38c0621327b2d04788b44", + "kaspa_address": "kaspa:qqyl54rhqn2y9c9n56dqmx7jssqxkrkp4g82rnac52nsh6h5e849x8vte7ule", + "ethereum_private_key": "0xcae40a44f602f1f57971d1056c6d1db87fcc18f873a6e6209ca41bb2d2c374e0", + "ethereum_address": "0x0acCCEf0f7e6b39F1D80480184078c9c47383543" + }, + { + "mnemonic": "endorse skirt daughter episode cool desert clutch old true siren damage minor", + "kaspa_private_key": "97a0fd851a035fc23d202ae6c1cd0a555660ceae12f55d7a6f83fde026ea6756", + "kaspa_address": "kaspa:qq7zt5j2cex5ss34prqagk6yd520pnwf32mxtdq3v3zetj8xfsu460hc47ak0", + "ethereum_private_key": "0x43c8fba9b3b59f9c3bcc0b9b5c233087b1e4548f0dd53a7da247031201f47cb1", + "ethereum_address": "0x6Fe258d6DE902e76EDbB750627cDd15AE7102363" + }, + { + "mnemonic": "celery spoil possible install suffer belt rug retire silver spray anxiety uncle", + "kaspa_private_key": "5cbad50ccfe14d48559216527e1cd5c46169e482be2cf9f73bbfc214911db173", + "kaspa_address": "kaspa:qzavpyry2n4g0cc9q53lfj2ckrctzn5y80w6m0r899dwa8rz4rs7ueh88resu", + "ethereum_private_key": "0x8eb8517d6d5e9d86e22b3e15f432e00745e0656f8656b18e95f19894537669dc", + "ethereum_address": "0x3D0B5dAF10BD26e80701D6790Da5A5dA2947CC87" + }, + { + "mnemonic": "capable unhappy evidence gasp museum weekend flag speak lounge hospital oak essay", + "kaspa_private_key": "38b6d851c0138aafa6c5afb160dea33ef7c1e11abf3a6a3207bdec2ef5ebc03c", + "kaspa_address": "kaspa:qzz3ydyfd89ud57frqa0g2sw5f8l3tgs8924djjkhemyz50za0esus66sdqwv", + "ethereum_private_key": "0x6718591c8edf60b5f9a89515fd03ced6125b82f02820cff986d3476edfa61062", + "ethereum_address": "0x29faacf333Db0A8F641B7E6d24EE2FE62ebbe986" + }, + { + "mnemonic": "useful joke outer service amused shrimp pond speed observe tilt solution asthma", + "kaspa_private_key": "6460a174c3a8d00bd9b454f48d0286fc226872b9e95f165eb05af6018b965ba0", + "kaspa_address": "kaspa:qq762v9q2c5hmsrsl5492dgr00eks6v5qrgwwtys0ycq5x57hrhlq4lqscdr5", + "ethereum_private_key": "0xa14e4c03213dc632efd0c3283d688611d3ceeed3159b91bf95869dd784205866", + "ethereum_address": "0xfabd50d30e16a8B42DFb1F83C971fF87E59d22a9" + }, + { + "mnemonic": "drift admit siren expect endorse come sign crack transfer brown robot river", + "kaspa_private_key": "5a35da36d54bdb35b9dbbcb4ad666937edd81634e43a832d01d76825b181413e", + "kaspa_address": "kaspa:qpajvsgg50k4x6jcrsr3e3vqda99yd5wrey8kgegusjjp6c3jqxcz47x378mc", + "ethereum_private_key": "0x5335be4bd29882de73cab684d10370e162d6896907bc3ef0f64a4c9564852f71", + "ethereum_address": "0x5A11553b7D53A32296Fe0a638D2978076b1D2E3A" + }, + { + "mnemonic": "short romance bulb gossip web pledge pelican science athlete winner crush arrive", + "kaspa_private_key": "ccfea3ba4573c0d88daf9d75d732488d729dc4a2122f12eff58121f6d46e60d3", + "kaspa_address": "kaspa:qz09pw25m2pmnwf4l98aryv4vkwpcmr03rje0yzm0n27zud3q6lau9wq6zzux", + "ethereum_private_key": "0x6d67d07d7c553ba68729374334b92c75e29dbc72c2abb8fa0beb56fe8d86a2c9", + "ethereum_address": "0xf9D20F7aFA172b1730AfFBf3a01d18F58B979b7E" + }, + { + "mnemonic": "process depend violin exile badge art casual brush wait crouch series glass", + "kaspa_private_key": "da8a4a345b09deb988b76071b58f9fa33d4580a605e89313c79e1d8dc1febcba", + "kaspa_address": "kaspa:qpvtq9e60juw4zqe0tw9whrc3k93hpugmec0gunt6pd4z0f3s9u26zst7sljd", + "ethereum_private_key": "0xeeb64cc27168cd7ae3ecc9c6e8cf2efda18e63d7110f8f3977dd3f9820792531", + "ethereum_address": "0x93Ad2A002f6DBc1B9C7D7Fd287f7462407F6B207" + }, + { + "mnemonic": "they denial thrive together fix fragile turkey regular wool good token wire", + "kaspa_private_key": "e708e0f79394333eb199c794c6813c80478866349308ccd78b7c40c8544fc819", + "kaspa_address": "kaspa:qqfczg9gqlc80jj5a6mltcw4d0lpcc62a5s6500kur8dzdqx507zqazja9xyx", + "ethereum_private_key": "0x4bbdb154ea488e0e465aac1297847e4d79c11e3eaee210d89ceefc9fca1ee49a", + "ethereum_address": "0xdC70e95E059AEb927e2500670eAEE4fCf8E73EBB" + }, + { + "mnemonic": "utility vague inflict abuse mimic hat tumble velvet magnet fever later arena", + "kaspa_private_key": "8259b2f5606491ad24aa60755d7f27d2e079ffd9d13b9591aabcfa83982142ec", + "kaspa_address": "kaspa:qrdatcgknx2r2za9euqv7husu07ugr3wdxg2t0exas9fq84rc39d2hlujwsf2", + "ethereum_private_key": "0xc66e2dbdb4eeb1e631877d77f7ba76a773e1cdb53e973b4c36acabe975e80555", + "ethereum_address": "0x3dbF1e35dd6F2fFFc70E19a5DB7CB02B85B86165" + }, + { + "mnemonic": "mesh extend diet narrow clean anger just hundred file ecology census task", + "kaspa_private_key": "b0f1ef59602f02f729b8c9517bf29409065e7d5357a4aae8e506e9a07e643931", + "kaspa_address": "kaspa:qrx02qggqqc83q7xhyq808prcqdrwjk9lvysjspshc7vv5utxgvdk2cv7mq8g", + "ethereum_private_key": "0xa41c12b44a4064e947b4b27039395942a7a1fbba24978edc5b2d73b23c10b4e5", + "ethereum_address": "0x53B6BF89225aE01158560146C96FD7d19BaA6eb5" + }, + { + "mnemonic": "long orchard ill report laundry seminar hen inherit cash tunnel next more", + "kaspa_private_key": "d46a0ae9316bac084e0fc590b322468ec3c3beaf2a88acabc42221eebd99cc90", + "kaspa_address": "kaspa:qzzy0qkd5cgdp34p7czzmvq40sjs6k00tsgfxg5m85lwz0wp0hlkq3c6mfd4m", + "ethereum_private_key": "0xc89cc42871e6476232c1eae370635ff067f51573e99eda1e9b632139b63638ff", + "ethereum_address": "0x44Be8Bb18AcB5Cd66576A7C4D0791737800eFff7" + }, + { + "mnemonic": "lucky gallery cradle smart exclude rebuild south mixed enforce wrestle oak rice", + "kaspa_private_key": "011fc475e6bb832b5dda754b21d5e94dcb7908e4fd29f6526f791ce206b4dcda", + "kaspa_address": "kaspa:qz02gar2r2x6ekga0wpwrqfa9mgsua0gwdqrywl5veskkfyufx3x78elwesqq", + "ethereum_private_key": "0xc96db5509993cf67a741ee386bbf997acff6a75e1bba0ad2e7a2df41043b841e", + "ethereum_address": "0x7408673Cd8c50C3f3B49e66679EDf79881CD2997" + }, + { + "mnemonic": "love afford dilemma stick blue asset barely about whip between action bulk", + "kaspa_private_key": "6eec88f01751ea71de9eacf4141c50b8e282f7d7175ec62722a7c22c3edad9ea", + "kaspa_address": "kaspa:qp7hg4wvdu95c03cd6847tu5tv5g4ssrfg7ahqlr4uxwgpyk2nss22rgxkrzz", + "ethereum_private_key": "0xc8cf7bfd03cf70465d67bf9e850998449abc7d3b487f61db48140d30f371fb0b", + "ethereum_address": "0xe1bC8b877D2233979b4b9F5f82b186E6D57FbEC6" + }, + { + "mnemonic": "march endorse swallow chest outer any pupil primary transfer attitude indoor baby", + "kaspa_private_key": "5ac57caa6ec2181e716a7f8e4e7f4d63d90ffc3afc322564f349ec2bbbe34aa3", + "kaspa_address": "kaspa:qz7ncknenfm05xctn2h38p0dlvsd6he6ecx4rlzg6nvkk4etdxndsxk7xwnt5", + "ethereum_private_key": "0xd2adb69fb7ad7b91fe8013ba9c0700b590264111a3e073820312f0e042a7848b", + "ethereum_address": "0xd505b51626543f2Ad9fC45a6FD46b172960fEd86" + }, + { + "mnemonic": "cancel husband tone display giraffe team spoil tired then choose donate divide", + "kaspa_private_key": "ed6671ea30e40609fe457b3fc0e4b128c8405bb4c542a9743be5e9a15bdb0315", + "kaspa_address": "kaspa:qpjp2mnegvkn5j5tgq4my7f5j4w4tuv8xhyanv747npm9xrkzw2vchdtjn4hr", + "ethereum_private_key": "0x16dcb0565a4d6f526f6fd6fef8f79c612cd3ca4a75972c0cc048d0eebe60b939", + "ethereum_address": "0xd1d5F44E682D7862BB718eB4E58d5FBF195b7B30" + }, + { + "mnemonic": "logic such birth lawsuit drill naive style decrease path property place earn", + "kaspa_private_key": "5bc08a15aae0fc9e6853b28b20cb64a564f21aa4bd82f07d6889a144fc09e4e4", + "kaspa_address": "kaspa:qr5t7erk2whwgxh6p2cs58n6sd77tv27v4u56mrttg7aaz4wd7h6jhg3f90wa", + "ethereum_private_key": "0x13317620e38a14f4df8d1903ed173320e3ccd93afc1801fab4282c81a0251645", + "ethereum_address": "0x8E47c1d9c7551B026ae2Bbf474cF62834163aD03" + }, + { + "mnemonic": "idle duck pioneer ready state vapor grunt glove whisper inner emotion bread", + "kaspa_private_key": "dfe88c241832442588aa64e15efda1f819a51cfe2d33e48b45134eb13fd639e7", + "kaspa_address": "kaspa:qpg40styc7alzkfd2t6ptjycphydct9ccjznjxx3gsdjhjwx4j28x5nwedmky", + "ethereum_private_key": "0x25b34814f76d17ed85e35d6e1f71756fa648e78c0819bbf6990514c19c085780", + "ethereum_address": "0xa4C6F2d002D9B0c91Ba21B4964d3Fc4B00836D53" + }, + { + "mnemonic": "wasp parade gospel jazz charge timber depart flock used reflect else broom", + "kaspa_private_key": "57cd07429604e4cc0516e071304593a665343c61e5b8ac6115af581d0fad856e", + "kaspa_address": "kaspa:qp2vu0ahxn3h0jt2stq45hm0k3rjdj8ddrg98nh8p6prhr8ymrc2g5n0lvxt5", + "ethereum_private_key": "0x43224f0430442b3b9fbf2d5382190bd666f16a352b7f26574cf9280419120458", + "ethereum_address": "0xc301c300b90D79aC31269B1A2D5172332f97AE04" + }, + { + "mnemonic": "rifle foil until question juice middle control fragile top trial fossil ski", + "kaspa_private_key": "4549d7b3dae95ddf65f36f9bfd5600f7122fc66d78b8c5e0d78062f056f497f5", + "kaspa_address": "kaspa:qz0gl0rza9hndcuc3pdk5v9syfeqms33haxm7qy2wevl93hmweskxjcpneg0j", + "ethereum_private_key": "0x87d9567b0108ae0e5ac00a1ad7885e6c2d2dea8affcdc2cc1199d401a399f1cd", + "ethereum_address": "0xaAFf64E323237976184Bf5588dBaC1eE4d60A794" + }, + { + "mnemonic": "muscle throw foam cube sugar vivid ill spice trend hero effort aspect", + "kaspa_private_key": "c0cbb914ef7972f620f8245dd43b4e807508f4763733fc61885ae292e2b74cdc", + "kaspa_address": "kaspa:qzdyfpgwp34qfqyuyp6xa4xkaap4hdxqjfmzc08w9fkjp6wan5nhsjncjtjdl", + "ethereum_private_key": "0x516dd47a3d88f5b8a99c48e22d4ec04979dfab7be65a7a9319205d36de53d990", + "ethereum_address": "0xDC1daF72c0214d8489c50A4E4653e7CEd0324524" + }, + { + "mnemonic": "wagon veteran mercy response unknown shy action bitter mass tip seven trophy", + "kaspa_private_key": "2407e92ab4128b11879c3a717ed2fa0a420973e41032050bb9c14599d0341ad3", + "kaspa_address": "kaspa:qpdzhhu48lswhp8tm2tgp4hwl33q9dzd5glr4gsgysl6jxv0l3kvw9mkrnupm", + "ethereum_private_key": "0x7d1199f1ae1421256c4d43ce967a883fc649f1c822d8bf48daa7f2d36079d1cd", + "ethereum_address": "0x72fc34BfC174bFE0cbb05521A544B8580C329FEc" + }, + { + "mnemonic": "quote moon pencil brother hotel steel right pill into crowd sunset car", + "kaspa_private_key": "4639cacdc67caabd32de4f2e18d7bac6ff63f9ed69465fcaac50ca4add3c892b", + "kaspa_address": "kaspa:qpd4cvm82mc77s748m7dc7yx0pl0grz5jn5gjxptvhjlr80yrkxg5hkwdq9gz", + "ethereum_private_key": "0x8e1e5f1dabef74590d03688d39523007d2258c42f5196093d627107a96065d04", + "ethereum_address": "0x49A3cB3B6eCecF767f66B82FC2B58DFe2902745a" + }, + { + "mnemonic": "october energy soda flee move giraffe equip carbon rally screen cave beef", + "kaspa_private_key": "97589a7bbc166e47c01f3b989c3206e8d796fb40a1dae23030a492e961c6d09a", + "kaspa_address": "kaspa:qpcvl2dedjxxkjg787vlrl8nhemcc0298yq9u7n6yuf3hr6tpr7676sa9ckv6", + "ethereum_private_key": "0x298704966e3e26ff9fcd8478d46c792d7240e04a5556d8cc830f95f1ca087afd", + "ethereum_address": "0x1F2bD08F3B0476A3dE5311821FAcbEE2b3fdfA75" + }, + { + "mnemonic": "cheap transfer session collect exhaust law execute issue scatter wise gadget antenna", + "kaspa_private_key": "314272277d9df4ad53f7f8965c7c4abcf973cc58e95041e3a06d4d78459b8a2a", + "kaspa_address": "kaspa:qq8dxt6dj9a78vnr2js38qxwe7yrxva9vnwt3y0kejwary75fqmc7nqj38ffv", + "ethereum_private_key": "0x845f619d94acef72a2b7e66bfac7b206d2d86e244720ddda7a4ec60bbe25949d", + "ethereum_address": "0xaaDE78B0aF768320273eA1d5AA4F8805f3121B3d" + }, + { + "mnemonic": "door fragile volume describe drill pencil mask push faculty foil potato apart", + "kaspa_private_key": "d9a856247c65c16476e62943c6ebe24122ca2bc3dd61019eb8f76a603edbb750", + "kaspa_address": "kaspa:qz298pu7hwfxlp4rhzqxamqfkl2982z3sprnh38r6exu69ajel0lurjlqpcz6", + "ethereum_private_key": "0xc39bd212905acc6b9fc6182b0eb382236da7b74748fb111a90b18bdee1080ff1", + "ethereum_address": "0xE8883fB14715a046D550bD71B4a81A20540d5eE8" + }, + { + "mnemonic": "brand gift web payment cigar spider print will square spell park warfare", + "kaspa_private_key": "5358babfd0ce232c12ea219ecd5ade88e164f7907d7e08a89740ea46cff64643", + "kaspa_address": "kaspa:qp38c890u2l5xqe59c8jlm0sha69gj9vakasjj9gcyfrx6kmr0505mprjaf57", + "ethereum_private_key": "0x0b3f600461ef98b2911e38c7252ec9334d2a131adf177a89a94ad21847cac0f5", + "ethereum_address": "0xAde49A4e2F55A6Ac17586865A34881FBe0fDa30E" + }, + { + "mnemonic": "eternal twice under toilet noise dwarf congress aunt title among luxury believe", + "kaspa_private_key": "5aa7176abf3030f0362b3ef052dd533a4f30059067c73d84dca7b7d6c3b723f9", + "kaspa_address": "kaspa:qq87vc5cdhfx0qd7yfc3h4l2sr9yh23qgg9wwu3y42h2q7kwxxrqwqt6kcua5", + "ethereum_private_key": "0x3e98c290b315f9940ebfc3d37a83083a80100c76f1620d09213efcc7c78c6481", + "ethereum_address": "0xCeBA4C2f512Fc214B91f93d7df95AE49d2E11911" + }, + { + "mnemonic": "leave finger noble mother service journey mirror horror frost plate frame violin", + "kaspa_private_key": "a51fd3b5d6fa29e7e23220028f1fd0546e555b7ef4206d1f692e3646fbafb6aa", + "kaspa_address": "kaspa:qr2994l276xgppru9m4anv4rr4m28vsvzarampzm3qj3gu3npmdxufu883q60", + "ethereum_private_key": "0xc2b2bf63739ad537608081286eb3a49535282346a636f56dcb9cd6bb1f9243d7", + "ethereum_address": "0x5fDE1aE8D78c020EdDB41D70cfc3E91598268c74" + }, + { + "mnemonic": "odor urge room flame mirror help magnet favorite good current twin retreat", + "kaspa_private_key": "cf565dff2267e730aa4375eb2831d3a622087fdeea5764a50bd8fcdc29c3f38a", + "kaspa_address": "kaspa:qp0kz5fe20d3eu7lzzdx580v7jz2gghhxegvy2t6rhynac57lnr75z99uzc28", + "ethereum_private_key": "0x94183355357e9ac26e09f14a04a5ef1d8fd7adb0dab2ed7486061f559267172f", + "ethereum_address": "0x691ea17f6Da2D147C36017c7d6D3AC0A92ED4B25" + }, + { + "mnemonic": "flee cross lemon knife autumn dawn hamster amused huge attract palace month", + "kaspa_private_key": "dcf2f68d27ddabba89f3579fb3e50227b3c69cf0b456635a3cf38e9fa07175bf", + "kaspa_address": "kaspa:qpj8p5fsyl5lrl4ddr2nfs0q9xdrkufxcaagfyhluxvfd9vy2cmgu3vvl66wg", + "ethereum_private_key": "0x69a3d6d1a1c7facd1a6feeb2bf714e47f1564946a71553e9c532cf53a1657d8f", + "ethereum_address": "0x76a5E36De1848EAADcdd51F4345d669547f98A0F" + }, + { + "mnemonic": "sustain same road guide rival forest pluck must middle dizzy raven evidence", + "kaspa_private_key": "2db65db950654ff37cf3d628748903b5d2299b518e175d4096ebee4fe71b8c59", + "kaspa_address": "kaspa:qrjxptmmsfd5axsy3ylgqv4ls56ek84sfdwl6mpjzja8dlq3p9qt5sa953nmx", + "ethereum_private_key": "0x731ee9b41eeb090eb78b2b226567f9080d274726bc61044d7bd6d1e82e7e6611", + "ethereum_address": "0xdF3b1B4745cDF22a934A49808ACEdff4d30b7eA7" + }, + { + "mnemonic": "enable roof rich day helmet diagram ship gather noise mountain merit girl", + "kaspa_private_key": "0b339c34c03c10dff07d0e93c36997100d7b26831ceee9c7851e61c2ea561486", + "kaspa_address": "kaspa:qr0yl5fnsndt6v2787hydnjsst86ztjkuhfex68tjzd9lma0fmt47eh90cd7v", + "ethereum_private_key": "0x0f018e2e97d20d8741505466c749440f1548850c64ace4d147c6b5b79dbcfc14", + "ethereum_address": "0x25B1C974d0Fec87D875a5dEE28d94ABC123FD6c6" + }, + { + "mnemonic": "title certain super grunt quit burden ancient code cart other edge sauce", + "kaspa_private_key": "fe75bd51b510720ac9d11caf44448b5e4a629603387038fa10e8b826c57c15ca", + "kaspa_address": "kaspa:qr7mu7gehvqzc89r8v0f6f8ayzgu2fh80rahmc2tta0gm96srgmy6y7gks3qk", + "ethereum_private_key": "0xb281903e354e48624d2e4b8d20b498d5abf625685f33d9d3b3525d30d0f20c5b", + "ethereum_address": "0xf62BC2f2e2F8c57C47318934D2BDAFD514841868" + }, + { + "mnemonic": "right torch toddler crater actual rifle essay tissue tackle comic target layer", + "kaspa_private_key": "3c22de314546e26d28ee025db4d137383883a8fe0ab4e00d87720c5ee14468a6", + "kaspa_address": "kaspa:qrrd6ejetud8yxhyxnye4u6585mg8vwfr9yqaqcjnkp6gw75dwrzsnuelxgpp", + "ethereum_private_key": "0x6ac14319ab1e1c0bbfddaccc7e339f108e61d2c0efc992bed26c4348a57a2e1e", + "ethereum_address": "0xB287928ad13A9c8153C34F688C7692d90A10d468" + }, + { + "mnemonic": "search coral subject feature sand nominee label again pigeon begin leisure long", + "kaspa_private_key": "468734f0425c50caabd4a405370f7264ce0bf786d6573d00d14ee4f4d028d30b", + "kaspa_address": "kaspa:qqkkhkhnh8dzzmf4mypwf2lqj246xcju8qnhrx43f8jeym0vr9lny45jhdvhk", + "ethereum_private_key": "0x65d1aef43c0a92fb2c08947877b20f590fb2b4dbc82de57af32fcbc7f2b0809d", + "ethereum_address": "0x766E143A96C8CeF1B770501AB50F98BCE9ee7BF3" + }, + { + "mnemonic": "essay burger find rebuild breeze dilemma bleak horn crazy input wife waste", + "kaspa_private_key": "67269fd0673052c9fc78a2ee75f343156e0e83b98cdc20d9915f4a6c4268cd48", + "kaspa_address": "kaspa:qqj9dtym8f04eeu6kfy8ygyc9th0z2jasy6eumqhykvxeln9y2mn6fy6v4q6u", + "ethereum_private_key": "0x187a18c7d947061dd10b4c1c30ee084e47030f48d2c10e839ac562fcec8caa29", + "ethereum_address": "0x1aa00fbEbBCf0843fb1e1953E84176F85C874C4a" + }, + { + "mnemonic": "climb leader amused exercise van dry organ garlic stadium lonely rely hair", + "kaspa_private_key": "22d6f18abfa759e9fc3a9e42d6cef868927e6d30f0a1961aef45d975fa79d2fb", + "kaspa_address": "kaspa:qqhp5xf80ya442g6ked7tq80ru0ehec6hjz8df23algjzgux7f8uuh2n0gx4s", + "ethereum_private_key": "0x8b198c608456844597f4bab2c719a4ca3099e8a5adcaff546a0de3e72dfa2075", + "ethereum_address": "0xAb22e8A589BC683ef2324e888e996f1dd45387B0" + }, + { + "mnemonic": "chapter visa twice upper news attend crouch shove actor once banana soda", + "kaspa_private_key": "8ef698d5e177126668842452ffe25fc4e1072979407f7fdb5864f8519d684e86", + "kaspa_address": "kaspa:qp04l2kcv764sx6tu0r94suhmsakekz3n0scynkm564zax7yf0w0xyu3cfwmf", + "ethereum_private_key": "0x152d32b91336dbf1583712ee41775e0efef0d3cebfcdd731c952e440265512e0", + "ethereum_address": "0xeA1E0FEe9E02045377f6B80ec43962C575a6B5F6" + }, + { + "mnemonic": "social believe panther group elder myself bright jelly eager usage must upset", + "kaspa_private_key": "e33403948b393ecac7c2afab5ff2f0055640e67fbf90376bc1a5192dd504f3ed", + "kaspa_address": "kaspa:qrrrjqq7zh7ttgkkeg2s4ak8q5vcjsd5yycuf7kh8fjjp8x3cykg7e05wepz6", + "ethereum_private_key": "0x8d4a315d53bde2b61884afcadf6a2832803f301d71e57b9353dc8bb9d5b19080", + "ethereum_address": "0xcFFB1F7f279929aF8F1A112B267837BD95A96075" + }, + { + "mnemonic": "forget piece canvas route capital clump tell twist funny wonder hope joke", + "kaspa_private_key": "a7352bacf47c92a9251d9951f840aed2de6f18ace8a9f0f73ef8c3d3f8a7968e", + "kaspa_address": "kaspa:qzm6lpy56vjege8s2pzm850ulz4t9vnwgr5t8qkg7tx74ccmyee9s9nd662na", + "ethereum_private_key": "0xec4782db23afd94de9eac5f4784e370d9f0a98a0b144a1cd05f08db0c7f6cc5c", + "ethereum_address": "0x2FF3eBC4A30fd9e45725b6B5f2C59de5C64bFc13" + }, + { + "mnemonic": "swap tourist tag thank pudding damage expose stem rotate universe snake crawl", + "kaspa_private_key": "5ac705bebb2bcb8af02367db775331d0c62245b25dfb3f0cc3aa422707f3d89f", + "kaspa_address": "kaspa:qq68hcfyu0zr7fh6x3lk9cqe8t7j4njmsd7lmy0g9jqquc3ujksc6m8dlwl0f", + "ethereum_private_key": "0xc04cec6518a8206dc33b7432a4b0024741c111975e6865e2d8f9fbbe76444145", + "ethereum_address": "0x6158B72682B652E2CAF504763ed79855c40E33dE" + }, + { + "mnemonic": "curtain buzz anchor girl topic deputy army twist lobster horn hamster oyster", + "kaspa_private_key": "319ffde047d4ee4d43fb4a7c9b2f4de081666d9de0cacbc6f05c2e691210d648", + "kaspa_address": "kaspa:qzwqayppmux6ndj2xz6jc7hvfqwuq3k3jnx6y7at40ala6y2l90zc4rryuj59", + "ethereum_private_key": "0xb2903d87b316db7087474da991323226b9736bae50048f4afbcd588d9f6de9c3", + "ethereum_address": "0x16F1764c03c2105067F31e70cf06C39302EC5A4a" + }, + { + "mnemonic": "transfer satisfy carpet fee resist wrist problem theme island feel illness struggle", + "kaspa_private_key": "58effc52712078aa14c7a1c7ee3d2381b98081e3cc6a820ca3c35bb0ca61e5dd", + "kaspa_address": "kaspa:qqrswff7vvfq7nw8x0e3wfl6qp5uash7q96454vv8m3muvv4xvkm5dfn3uvc4", + "ethereum_private_key": "0x906ebc103029fedccece59df384ebfcf4f58fed49c489349d5a94b28e3974709", + "ethereum_address": "0xe9996B5600131D5F6D3c0B5e45Ee7BD543137Da5" + }, + { + "mnemonic": "budget cruel able stamp solar between economy position goat that float expire", + "kaspa_private_key": "ea4c37828cbb4785f766f8b3e84e1f056f4d81f8366cf1dda0fc89ee109664ed", + "kaspa_address": "kaspa:qquet557m6xrq2rkpkae9ywqur0vems07z6t53yf9qlpap56r4fmy32dffdvf", + "ethereum_private_key": "0x85fb885b2822507835648487e13ca89a55eb113fb429de74c29d7a50efc81d8e", + "ethereum_address": "0x22cb787cf6E9c64F4611cD09EEBC3a368e36B1dc" + }, + { + "mnemonic": "lawn shiver radio assist drive ginger nose head sleep update pass trip", + "kaspa_private_key": "68629c317cb176d60a0f5b7dba3b307d3beea0123d3725ea10d92fac04f614da", + "kaspa_address": "kaspa:qzmr09a5rctjdrhwtdx922vquyh8pfrhmwrmvp6chgaaklc75t5vx7666aqfa", + "ethereum_private_key": "0x8a6229e754cfc6494eb099d78e53eff612a59fbfd02bbb27eafac2d6a155a7c5", + "ethereum_address": "0xEf472908e91eFB58EDc3Fe4a8244E6FC47C1eF1E" + }, + { + "mnemonic": "capital weekend eagle ready link veteran tape punch chicken apart normal moment", + "kaspa_private_key": "5df06434aad401caa114e66556a4620dd9108de8773aa4a9f8b37e9021cc990c", + "kaspa_address": "kaspa:qzl6wffedqmuk04xde0cuu505ge2s9ds4ukuap37z28ppltyrzaz2f6d3flx8", + "ethereum_private_key": "0xdcdf36e85385d7cb856649f6845af1e0b44bf1e57e91a2bd83fccac2f7e7dade", + "ethereum_address": "0xA09bdF8f93c489e374071c0B0049Fd83A738a6bf" + }, + { + "mnemonic": "nose mass festival yellow exercise evoke penalty sand lens bullet deny science", + "kaspa_private_key": "c2c5737889f28a2a2cb2e313f811c3ff5d49862e6671cc87ea9fbeafee97080c", + "kaspa_address": "kaspa:qr80alm3v0dpn0u0snfqdes824yhp2lcz3xhg0yxz9dwvp06u30fy04w903sd", + "ethereum_private_key": "0x671d01a411901b535f914e5627b3c3fd0e32f1db8ea5ac2fd99d2ac6767f3cc9", + "ethereum_address": "0xDdBBF38C9812295294EF0BC651450a5F75916a3b" + }, + { + "mnemonic": "slim kit cushion best problem cliff absent valve borrow host idea large", + "kaspa_private_key": "d614a14d4867bf161d1426cb13b4aeafeab298d14b7751c80b3d8b0620b3a58a", + "kaspa_address": "kaspa:qz8yqe32ea2yktjvvhx85rxzjzsg3my07m34ce0jkvua03ljkhkds5gdlkawe", + "ethereum_private_key": "0x9c928d1e429df25eeb7385fa423df339ff6cee2e68a3661e93a2bdfe0abf1ca9", + "ethereum_address": "0x15aC761bf009af361Cb41A591C1619d64f9bBac8" + }, + { + "mnemonic": "rigid differ wisdom congress benefit inch post lobster tornado hard blue pledge", + "kaspa_private_key": "6266e31794584b2ff296ac442a479fbd135626a2fe8682bfb5fba4ca9806cc1e", + "kaspa_address": "kaspa:qz8dkttduxnm4x9rera760ulus5pae4unsdscvrgpyrpw0l5m5gnsy26xuw0x", + "ethereum_private_key": "0x3de6b2a08a7e9ece6338929d0e20e55797cce54f7019954246dcb7017c820d84", + "ethereum_address": "0xf03dc49141d765490098AD22676a492871aB6666" + }, + { + "mnemonic": "mechanic guitar repair crucial eagle scare grocery idle celery cotton girl genius", + "kaspa_private_key": "8c673a97ae9afb3313f0a859563554813ebc1cc01fa0240894ce2967dd712008", + "kaspa_address": "kaspa:qptuzlnllzwv6hy02jjkwlv87svg4r7kjzmrmtz5kj49vdywe76mwsxnrt8ar", + "ethereum_private_key": "0xd5f83b6dabe4e01bde89aa8b46b55ae4f12b458d2c70e744ecf93b1d54037800", + "ethereum_address": "0x58F7bc15a9802f64B48Cc0baBB19A324Eb8c49cA" + }, + { + "mnemonic": "heart cool avocado endorse fresh phrase improve arrive tent indicate snake ocean", + "kaspa_private_key": "23a678f3b051796ede5dc10511cc92ea8ce56b8e68c3c148c760fc05f212853a", + "kaspa_address": "kaspa:qr2sv9qggvwugwhkchkcqplruu448zd3dh65jp60h9xup0j6tg63v30cep73q", + "ethereum_private_key": "0xe76119868b73c1c63a838572291084d8ae920da345cb3bf9a23b2c962bdd571c", + "ethereum_address": "0xa2529B68483eFA17695671F3472D004Eb93448aC" + }, + { + "mnemonic": "risk grief craft coast behave margin struggle year keep churn menu salt", + "kaspa_private_key": "19c667474f9770ead0887b74cdd739e778a683924b31759e4e57b80bdd5e42c9", + "kaspa_address": "kaspa:qrjkp6sxv05fkukfa7e0f0yv7fph24nna7u4qqs7z2mjmtpm4d0l5fhtyfm8g", + "ethereum_private_key": "0xfe4516331e4afedc8ae21e95b646c003a992edce8e1fe64e5c0f97c6e45914df", + "ethereum_address": "0xa262b1dA34c0b3698Ad4F7333E75F1270Be4e4f0" + }, + { + "mnemonic": "raven marine slab silly slush ice convince south lazy purpose lucky share", + "kaspa_private_key": "5d3b9be1e7833c5d364974a3d485c10340955cc8336b857de8ce9eed13d81b63", + "kaspa_address": "kaspa:qznsqsetyw6s5uhk3qqnwdcck3aw853h6aj22fnc4l9vw37nn9syk6h8xm5ft", + "ethereum_private_key": "0x254c0700c3f8884fe80919d168afc7ed130731cd4af5892e5544b71a464aeb7d", + "ethereum_address": "0x0B9421CA5C8024bdC66d40cd0a16275c36Ce1965" + }, + { + "mnemonic": "master task output planet camp govern domain change satoshi spend genius measure", + "kaspa_private_key": "5abdafadbf04870345f015b6e029649dfd4f8d62984ba62ec7f48788e593f2dd", + "kaspa_address": "kaspa:qrpd0t56v0d4ctl8g8w6tnfzhez65exmwqngr7y0gptr3gzw2crjw2kwkre83", + "ethereum_private_key": "0x3fa3c39ab6ffd6a3500abc2e2d10d55c55f4caa98b8c89d74a1a60d32c5a4f43", + "ethereum_address": "0xb069378f78D1D9F09aaB47e56Ac18fE8b0e85D8E" + }, + { + "mnemonic": "need achieve quote use pottery topple ghost torch pulse sister quit unique", + "kaspa_private_key": "e51bc55c544e00337759f006e410d272d6a473a14afcb55ef09a968ec6b55210", + "kaspa_address": "kaspa:qrvwtdlzu06uu2p20flfxcuudx8qeatjey9273e49ysj4arwazp2ycgea6hn7", + "ethereum_private_key": "0x9e12e469c2a9cbd46a6b9693dcb973adbe5bddc48e14e70db24bb26dd30a2516", + "ethereum_address": "0xf8aca4E69a6a8aFbcfc3f22E6391c725461253f7" + }, + { + "mnemonic": "viable town border nice resource guess garbage wonder trade patient team company", + "kaspa_private_key": "50af6bb45a71f9fb04d723679c93a71203c15921c766839d5f95605cda49eb48", + "kaspa_address": "kaspa:qq4mdxx9c7f34297hzmvd7eg3uxuf00yfzgjxq9k5hk0n5xfdrd5kd5nmgwkh", + "ethereum_private_key": "0xdf58b2b6f0f132cee50858b786abe76715425daed314b278e1a2ba65b0e77ce1", + "ethereum_address": "0xA3885AB83a70613C1Fc2EaFFa9a2A239b977F1b7" + }, + { + "mnemonic": "torch auction kick drive prison lawsuit jewel battle fringe helmet orient domain", + "kaspa_private_key": "18b7d5ff482c6f52ac6c02acd4285315b69f4b6af79233762bbfb6481dea05d4", + "kaspa_address": "kaspa:qz99g27wazjn4vhv596ldpq3dxh5f2qequet0gv2gfchhq8hec52j3k9rrkwk", + "ethereum_private_key": "0xce531b84d21d620e49df457761782d61f124864ff993f2b3537808eb867f7723", + "ethereum_address": "0xf66B40b0de50754Ad3c903109CB7ef203745869c" + }, + { + "mnemonic": "neither banana act sail label language miracle transfer demise rail soft cry", + "kaspa_private_key": "0b06dab8dabb911cb4497051178eed7a2babce97d298dc99a0757ab86294e5c6", + "kaspa_address": "kaspa:qz9yqxpwtxnsczzh44aew2lmr34kzwt25rz5y6udz9kafpz4890c7ghke7tuu", + "ethereum_private_key": "0xc00020726dcd723f61feeeb14e5137541938c14479806fd4b698b658a4fc706f", + "ethereum_address": "0x489e4c45fE495a712149962B9AA73aCE984A5c3A" + }, + { + "mnemonic": "sight know laugh thought exclude civil build tower cement subway viable kick", + "kaspa_private_key": "a2f8b08eb7a3b009a3ba0b447f9b465d2856c8a84994b0edb3a080c671590336", + "kaspa_address": "kaspa:qp92p705uyeh3756emdytj0vze0k0xgq9wejenm7wn4e5a05hfy3293sq6ykg", + "ethereum_private_key": "0xfa99e236e5e28901aa334af0465d17c59ba7248dd8d03ccbaf2f69de4a854c3b", + "ethereum_address": "0x7Ce150c9665b64b368d952585ae9009c9c59DFc6" + }, + { + "mnemonic": "recycle impose valve tip urban lab else relax unfold private drop grunt", + "kaspa_private_key": "704d4e3cbfea1dd1af888c6200523c0e5e32d272227616cc9cfa0ec92fa14032", + "kaspa_address": "kaspa:qrqmex0fzunnuxxv07kc8tg8c6xxlrgxquayddp5lqqlzuwkf98gzd0yxt2p9", + "ethereum_private_key": "0x9d8243fd29fb3f621b4d2ae6031235419ddb0b63cc08d409de88dae69fa5e622", + "ethereum_address": "0x537F7a11d563a5Cce03E857f563F7e31f3984665" + }, + { + "mnemonic": "ordinary tornado plug noise grocery prison use ill pizza hat profit disagree", + "kaspa_private_key": "537baf97f137eac6364b494be33c37c03f6896c0659bdbc49421d1d865b13962", + "kaspa_address": "kaspa:qzlhk6vxuqzkw2ysap7vsmpqkuzfpkm73r03c8y0t56kmdy32t5cxgsvfhw30", + "ethereum_private_key": "0x37441ce2e8a12b08081e814a72bd0291f04f4a50dc064f61647db434676885be", + "ethereum_address": "0xE88b2D966D0BC77226f59BA2eE446531a505bCa6" + }, + { + "mnemonic": "physical tornado trade total shaft razor slow priority monkey journey pizza bonus", + "kaspa_private_key": "b1b3c9035aa641add191a9465b68fa60c65285f20c7bddfd175e011817505d8b", + "kaspa_address": "kaspa:qzaxds4pasphmq7wev6vlc02dpjec3ev86uvcarsvl9cfaru83chs57nanded", + "ethereum_private_key": "0x1b511c467130193ddb994463c5d520b0aa94b35b0434c08cd45e89bfce340f65", + "ethereum_address": "0x184CAE8ef91a63Ae2eA3AaDbd8dB9437f890d813" + }, + { + "mnemonic": "clump toddler genuine observe retreat forum taste evolve group smile fox empty", + "kaspa_private_key": "ea7a06aa763e3ec152dd57723d3c45b1f9ec6d5cf5f3eb76e905be2f0da0f5ee", + "kaspa_address": "kaspa:qpj92d4r47z74xz69e2ssh2cpj9txrlv4nj8nj2vd3mxl9vyrnwj6nwrrr4p0", + "ethereum_private_key": "0x2be8aca0e9102c9f618c38210d348a172d1962f177b08bf8ea93edb5242205f0", + "ethereum_address": "0xDA42D2121ad5Ca7B0e7669537815a97833FC9fC1" + }, + { + "mnemonic": "tongue unable upon abstract vivid ready grass drive wasp bike fatigue nothing", + "kaspa_private_key": "369761346c48ab7246a567a48370adb5763f5c7541269d25d756c667a16feb44", + "kaspa_address": "kaspa:qpvs49uph9dsxs2yy8rl95n2l0dwjs9s9asl8za54mm0gd69fcsn20sl5h3ze", + "ethereum_private_key": "0x640239cef2eb677735fc3be6bcc294007dab26b4ceb5290da05c9fb7dcd79cd9", + "ethereum_address": "0x9f77032482cBeF91db4a0900CF32582Be4BD60dC" + }, + { + "mnemonic": "arrive behave say shrug strong decline palace move debate marriage defy catalog", + "kaspa_private_key": "315ec8ca501127c621b9055c8ad2e5022c30c7e1e1e11b35c16b9895ca5591dc", + "kaspa_address": "kaspa:qp30egjyy7qjq5g0ycahe74qveg50t6qw30jzamkh22rdqtqz5upqttttlw6n", + "ethereum_private_key": "0x05741f8919e91bb9778c1d66f393ed63f586c2ade90c36fb8f66aef28aa684f8", + "ethereum_address": "0xE134aE34e5030b2D5264A3A0E7f0E98A06641401" + }, + { + "mnemonic": "error into witness truly fold chicken impact work whip opera mango deny", + "kaspa_private_key": "f5a3cc60ab6aabae981d6004bc35f09c1f128c795e3de247d409664d97cbf180", + "kaspa_address": "kaspa:qq3f8g2dd45ek3fw44crjgjrx6ue6mypjcvunsdga00ygtkeu97yv4856ur6c", + "ethereum_private_key": "0x1ff8430a218eac008f4cdea8eec82c3583634581047f34fef38f2f64103911e5", + "ethereum_address": "0x65f53eCEB983723525fFeb59F76306ed75AEC7ae" + }, + { + "mnemonic": "hospital rebel dinosaur hold absent lumber police dwarf hobby bike ten cactus", + "kaspa_private_key": "72d403101f89d0aabcbab56e2cd00e60d25915b68543fc15c398d7374867d312", + "kaspa_address": "kaspa:qp0trwfut3kqksyv4zgvjfvhhlv9vkm0vltk0p0dqc0thl4ka2ykjmtmny6wa", + "ethereum_private_key": "0x222f6788a0d6026a94219c2275986cf22a6d2ec5f82f17c2183b1a2a4da2d850", + "ethereum_address": "0xF2F717f7B96A1bdEF0519ABC85B2d541768EcFFb" + }, + { + "mnemonic": "iron inch below canvas grain february column cable sunny distance fury hurt", + "kaspa_private_key": "88a153c23672d4fc737ecf7479f80f1abb4cc431465bec92eb4a6dad815c5bc3", + "kaspa_address": "kaspa:qzwxe64urejff8h7d3z9dpck3gp6hx4uwd4xtpfk4xt07csxp7cp5msdp7we6", + "ethereum_private_key": "0x87bf244766b03810f632345faa08655bda34a672deea9be6062874816c71a15d", + "ethereum_address": "0x9259555209A0D0790d51003d5BA96c80464a41F3" + }, + { + "mnemonic": "clinic smoke rubber vibrant rain cage seven divide equal cancel warm mouse", + "kaspa_private_key": "f23d8bdd7160d7ea1c5797a7b927227f25ea8a959ec2fd19a1d847b7df378298", + "kaspa_address": "kaspa:qrmjhmyz6jx8qjta5zcp5amjr7uzvpxflsafszqddgz3z2w9y3r7xv9fcx9lu", + "ethereum_private_key": "0x96dea1114d12b218ccee1ce5917f9ff1c892df283140548c21ce293beb7b7556", + "ethereum_address": "0x29928c65F5eDaE854766E22B02187d6B0361a048" + }, + { + "mnemonic": "pitch parent faith code vintage detect false cash reject swap secret dismiss", + "kaspa_private_key": "9155e72a1ccb258c6e098e228dc02bf181d71d8a892cc2b0e5a805994bc2e271", + "kaspa_address": "kaspa:qq5msp79w3x2g58en9p27z45mk5ul5vlq0s44mncz2m9azp4stcfsmy4stwpj", + "ethereum_private_key": "0xe87ad3f0003d005c8c2bc59db3443b39bf85f6dac38bc46c0f6b1812edc4c78c", + "ethereum_address": "0x695676F4b5ea2AFb32Af2182873Bb8032B7E3c25" + }, + { + "mnemonic": "denial normal bright grief health join rich fossil middle weather scare inhale", + "kaspa_private_key": "cfbea853ae5560582963b33e84e077b59afe279b4015920ced2518a550c20266", + "kaspa_address": "kaspa:qrx3weyjrsgv79l0xztxfc8h8mz34rr4rqzrc7eya672v4nzm8savfvpmd4jn", + "ethereum_private_key": "0x22099ae80847d4b6b32655d0a0ff91f50cebf4fa3fec10b1fafa2783a54e438a", + "ethereum_address": "0xfF2e707B12D2f9B1315E2963474Ed6f9D5b81707" + }, + { + "mnemonic": "polar edge opinion select action battle stick inspire furnace dynamic broom quarter", + "kaspa_private_key": "2e014bd16567e078f8c51134cee15a1711f88674ea0e63f2b2dbc1ad7f895803", + "kaspa_address": "kaspa:qp0px9kxa56ec0edfjqtxn6zhsdsgy34427kdmqukprzm6prq2ap6vfscge25", + "ethereum_private_key": "0x2afd0c988ef6a1d36f86d1f34a2b3792126b5fa0153740649e35be072f757579", + "ethereum_address": "0x5B402a7d458b641aa8ddaAF4aA547f3D125C7903" + }, + { + "mnemonic": "mystery kangaroo ocean glance clay fence wage fragile fold sadness cotton focus", + "kaspa_private_key": "6ec0d1fca78a642b9b739f5e7edd575a7646f117ccf51af1ea01741c2b57e080", + "kaspa_address": "kaspa:qzrzw95m0sfnyskw8m06fjavasa90jpeu45kmzu6e0srr7avm4jt6ccafg8zh", + "ethereum_private_key": "0x0fcdc27af324f0bb0452054bb7e4ac390977a6fb8e6950b8621c89581a6eea0e", + "ethereum_address": "0x352f39e82DA6f17E2c51Dd9c1dBa9FFCbf4390e6" + }, + { + "mnemonic": "keen skill match draft again away true young category matter craft stable", + "kaspa_private_key": "a0013e6e85d486b04014f72006f42a0f05b71a4a79d5cc1c93e30b6a91721e2d", + "kaspa_address": "kaspa:qpc9p4guhmx6fwa0twcnhnnuhu3rpmuaush3ese25xmg94wv4s2u58tlaspvz", + "ethereum_private_key": "0x832785deef350bc9f467210ab201b2340092cf723b30c446dba0a365e5456435", + "ethereum_address": "0x35b1588a787998D77AB73E3c9365C6C2056E17BE" + }, + { + "mnemonic": "poverty tomato aerobic evolve charge lift audit angry ginger pottery track differ", + "kaspa_private_key": "0b2190931cd0b33dccae00f4034476ec9c6a0e944122d5e0755f4ec5c9aa27bf", + "kaspa_address": "kaspa:qr2s5glp52f594ujskhs3spm8x9ldq9pxyxct2kw9ec29wh5jtz5qd3rmr5uh", + "ethereum_private_key": "0xb7d7b47db767933ead233cc61adc6dc6f84934d7d3bbe18358e157e18f4c346c", + "ethereum_address": "0xef553607b3375004604CF699243cFb53F3150517" + }, + { + "mnemonic": "scan obey famous gauge treat wonder jungle join vote discover wasp wedding", + "kaspa_private_key": "bfeec62f6cdbfc7bcce2b36ece35ca3764204b19e2e4ec974aa4f0f100e738ae", + "kaspa_address": "kaspa:qz6mw7t6kl5t55275cz3c0f3szqw8xan4ssp8sgmx4erzkjsnld3qjv2mt5fl", + "ethereum_private_key": "0x404f44e5c362ab8cd24a2155c391e8093e9eafc255783c20677c38fcc2d8d5b3", + "ethereum_address": "0xE305b66B6Ac931C0dEE2259a233782399c5d9c5D" + }, + { + "mnemonic": "arch trouble pupil cancel turtle voyage bridge submit subway basic damp fit", + "kaspa_private_key": "5f59112b5b7f428532a69c0daa98072395982b1017f878d5fb0991db0f0fb276", + "kaspa_address": "kaspa:qqmkrcc4c0hmzzdgp49gjftq24m3g046hgzlwk9x0nkz4jevd9s0zz2zxqham", + "ethereum_private_key": "0x0eb955194613f860aa4da8ff9542d24ece8c138c86398f114438d15aedb1e03e", + "ethereum_address": "0x0d854bC5e200c3a2Ff2D92A91BB54beaF12402Cf" + }, + { + "mnemonic": "buddy road patch parent chicken tobacco symptom eye charge ability profit caution", + "kaspa_private_key": "a510882e033be11943ebb5f1842c75ddb293b4d2dd2c094c965d2347d691bbf8", + "kaspa_address": "kaspa:qzeswt8jjf6mc0xlfjkvnlznuyrpu3eqdsq0va5g03adyyacvjg955she3gd0", + "ethereum_private_key": "0x1ef8eb36cc53fd91bd88ac00690fd407a1cf30891eeec4124b5913249254c9f1", + "ethereum_address": "0x15A105358AcD9389EfAE33196ac079F5cf4F520F" + }, + { + "mnemonic": "average absent casual glad lab medal boil expand tumble trap butter eyebrow", + "kaspa_private_key": "4690ca41e65c100ddcb9889d77ad11c325af97f37c33c1faebced057b880c2f0", + "kaspa_address": "kaspa:qpm02uxany8lsutervggr5kumu8nhasss39mnetewwq9d2zmd3ktgeaqmkfs3", + "ethereum_private_key": "0x4e5fa3c7dfe44a86dc0fe330a2960fbacffea55237648462a1d3cc48408cd6a9", + "ethereum_address": "0x7380A4E76B595718034910BD95390fC439F406c8" + }, + { + "mnemonic": "word skill soft identify segment program okay pretty crawl wall penalty tenant", + "kaspa_private_key": "eda9631c3fdc7a45daadb90ba8d2c5aec65ccca8fe8b364443303930918daf22", + "kaspa_address": "kaspa:qptlqgkh6ka442w2svgck6u0qw7aqt0mm0urpmhnryy584hh9gzmvta6wfwyc", + "ethereum_private_key": "0xae458867e04e777d7e8f8e2588098e6bd20004258121f991bbb2dbf182f7e68c", + "ethereum_address": "0x53b1a5B27757c87aD8b13608B1A6F26Abae188a6" + }, + { + "mnemonic": "route obtain lawsuit screen assist slice library avoid neck injury dust robot", + "kaspa_private_key": "9246204aed990bd64cc6c68a901f6a3cdc070d72cb6a6a21acfc9e9d6a811990", + "kaspa_address": "kaspa:qp2zq9hwsez9r25wj66lnw6p5yugrq7ewpnt7cwlyllvh8p43akx57ggvz6qm", + "ethereum_private_key": "0xa68c89dadc269c93a0f21bdb4f483b9fe829aebe6c69367f16f223b03d5ca1f8", + "ethereum_address": "0x37bD07e381F037689bD80e39e3F115a401D892B3" + }, + { + "mnemonic": "vehicle page forward bundle payment great enter possible domain fence liar casino", + "kaspa_private_key": "dc26ed2efbf41fed6b7cf08d3397747e3284ad45f2c8147a070bb535f4909e8e", + "kaspa_address": "kaspa:qzrpvcgq4cy6wyx8ls9pfughukefnqptkxqaqt9znedawnm4w2d0qqke5jcfl", + "ethereum_private_key": "0xe222ffd27f7bcd5e53ffa602b76864f04653335922cbddb9b80899d1f557f5e5", + "ethereum_address": "0x493e69B80BBeB5641BAfc8178c57a6f4b899bD4b" + }, + { + "mnemonic": "copper run furnace arrow exist chicken normal engage illegal together ahead dirt", + "kaspa_private_key": "791d1e8d5873242c98d2b1f74c5b5b4367db1725a789946b4ef65765d157887a", + "kaspa_address": "kaspa:qp4ahn94v4324r746te4gyqhx9s0hq6x476ghrg3jkhyk960qcl2574wwpz5d", + "ethereum_private_key": "0xc48c91e4ef32ac43f175c56ca85f6d74710aebb916f565a12935271fa6e2045d", + "ethereum_address": "0xcCB05683bf921660C79E4E665CaC90c24A8cd10c" + }, + { + "mnemonic": "engage pioneer between flame object parrot dilemma rebel inhale void drum unusual", + "kaspa_private_key": "385028301d56a993dde58d2d1d9320b50eb19a38407bb075c3918081183f7eb0", + "kaspa_address": "kaspa:qrm5nt3wtgw835qejtztnkp8x7es92tjcz40m5wckm5sjdyhvz24zwqc2gwra", + "ethereum_private_key": "0xbef34654e5a61247a4f6f838a2b6401e5556b804e0684b685cd72e31a75b1501", + "ethereum_address": "0x53640Ec04408F04Dad5df570aC93c695D0FabeaF" + }, + { + "mnemonic": "elbow process divide brave boil involve gold couple sight mutual come inside", + "kaspa_private_key": "85e6c9efde0d0a23b4d806d6204b5869457c4371c422eb156fa281f6a4197a4d", + "kaspa_address": "kaspa:qzyf9nyv4jacexmqqu8zl79sdu6hrcc6d5dxe5hujvcqgca5v4tnznce3lywn", + "ethereum_private_key": "0x24397f47399993058f09c6d5eab9c5a7949f18b184a3ce2b1750e3a0eb32b21b", + "ethereum_address": "0xA0C8fb6626DCbf36bFEaAFA070393383f1EFcC48" + }, + { + "mnemonic": "release faculty pepper forest doctor field auto elevator quantum wool human portion", + "kaspa_private_key": "4648d011038c2875b9aa62c8deb09f2fde7bad46860a5591413580f6f24f0927", + "kaspa_address": "kaspa:qrsh7l0qx0rullwl0c29r62aphqc2jqn0nf2gsdzuk3kl6phajdxy7ec95gtw", + "ethereum_private_key": "0x10b2a0a786f46da39f58f6b63e9f370c6f79868cbc821b506c577e36e8109729", + "ethereum_address": "0x279Dd5ea05242acF03E0b48A0fe9a3061d9B1Af4" + }, + { + "mnemonic": "angry text obtain celery crime spider silly office egg pear sock expect", + "kaspa_private_key": "1dc3a63a51db6354aedce234400acf334343bef7e4ffe515efb59382b20da8af", + "kaspa_address": "kaspa:qrz6kf23a7n6affh4a0kyq4f7h9k27er0p87m70zu2suzeqfy927wfvsx6aw3", + "ethereum_private_key": "0xdd34c072b98b852fafdfb4ed88e0ee0a48e0c1c32acaf71e59a50f67c07ba542", + "ethereum_address": "0x2342525952cF3DC0a8d3fBaBe51b59689000E514" + }, + { + "mnemonic": "laundry lake until pepper render hospital ripple hazard bless glass permit puzzle", + "kaspa_private_key": "5545082d16df9729df1ddcf4750208044d993b4c2d4bc7ac3ca5a659ef16b2e4", + "kaspa_address": "kaspa:qzmttu08c594arp23tu68nexvr380eke4q84erxxqc270fuz9qhxqpfdsxzua", + "ethereum_private_key": "0xa0e37c21e0dad96c599622869ee8e480384cebc13178eed1c5496cb65d91cfac", + "ethereum_address": "0x873B83879a33289953fBBc266B1a2800a5ff1dA7" + }, + { + "mnemonic": "switch worth dress inflict strategy soft quarter taste curious pioneer road future", + "kaspa_private_key": "54d109c8ba79dc485dfdd13bf6ee067cbbd84e3461cae560b0c28d180afff70e", + "kaspa_address": "kaspa:qzpq3ytvtrzd4rqtm478scq3pjjlcv8hf34vcqak543wp0v80zunkrjes44eg", + "ethereum_private_key": "0x25d02e9ffeb8e79d5d4c63b19759fac6f91e54f2706450a6f9595a80b4782b1d", + "ethereum_address": "0xc4eA742175Cd101907A06873a2ccFfb4DBCB3F38" + }, + { + "mnemonic": "whisper weekend token quality news fatigue figure valley labor window axis calm", + "kaspa_private_key": "32a8bdcd68220b40100983880ae5e605c71bf96257fca916eb42aaf123609fde", + "kaspa_address": "kaspa:qrc3c64vjjes2wzdrf42kanvcfuznqmuden665yqs78p57luj3gzqvaty8fzg", + "ethereum_private_key": "0x92d3c3ce556d08f5426e647a5d297e18c44abbbd58742856b2f06c2cfbe85b1c", + "ethereum_address": "0xe8b71A985fD596B257085AAA31613388E3b75DDf" + }, + { + "mnemonic": "raccoon leader episode hungry advice network tool still problem globe fresh entire", + "kaspa_private_key": "59f0c57291874f077bb213e01aa1689e9870b5d88459f9df23dc29b2b30dbba0", + "kaspa_address": "kaspa:qrc7awgjv2cd8cvphm38fm7gc792gxmehprn7e3st3fdn767m9h6cnhav3elj", + "ethereum_private_key": "0x660d3388c21e6fb5f5a28dc5580fedb6e4402659e66c1c55e3ef966f23da193e", + "ethereum_address": "0x3e3D6679aA2BE15F5cF1c9B4053Fb8bD7c87B6D4" + }, + { + "mnemonic": "trend divorce home trophy recipe innocent above frame damp cycle size news", + "kaspa_private_key": "3b824784e8c928b06217267180e63f1b8dcd14fab4ddded0d72b6ed3336ef75b", + "kaspa_address": "kaspa:qrweud7nudndexl2trl97v58l0up6lpmlwkqvwc7gchnqj60ctvtxdvxne2zj", + "ethereum_private_key": "0xa5bbddb3ff5977afd119a2b78b3e97e9093e5951b8aaa56d127d8f4926cbab12", + "ethereum_address": "0x8376119346f8BF29D2933bC5ecF68fbd1d450e11" + }, + { + "mnemonic": "return embark frown wool true check next day neck coconut rail clutch", + "kaspa_private_key": "4441754984af82fb0533a8ba4ad143ceaafdd09dbb1c30d765c13d152d26ff03", + "kaspa_address": "kaspa:qrn6kk6nuqvxz8v5ddgsfj2523y4gt5692ymevndhwpr4epu7hg6wan24lgru", + "ethereum_private_key": "0xfeb8655029b8569b77be38db4888912bb6f3c65fdc1f27107d8a5c3468854b7f", + "ethereum_address": "0x99244313EaA8De1B78596F3DC61E69Fa3c22dCfD" + }, + { + "mnemonic": "quote polar daring flat any seminar allow ostrich absorb coast alert assist", + "kaspa_private_key": "1997fdcb65282531a4819de87bd613c08146423c727f326c8c6fb7bf6d7ee529", + "kaspa_address": "kaspa:qp3chdme54hpw7g5y58p5k2w9phat6wvvpnvrkwrn9kwpxx4s65c2k5fx545d", + "ethereum_private_key": "0x161bb3a7f0e0a7714cafa583102351d0008afe10781f8aa7e144768a8681ac3c", + "ethereum_address": "0xE2757B325F15D165cb28400bCdbA29e7D0Ce843b" + }, + { + "mnemonic": "rule metal wheat advice duty suit city sad monkey plug into phrase", + "kaspa_private_key": "b002e2a1dda830223a5731f96bcc134acbb197a7a98285e897c0e164191932a5", + "kaspa_address": "kaspa:qr2uh0w3maxlx0hf9gqq8gaz5j42ezpztckeg3vcfaspe67pta9wvdp8jda4s", + "ethereum_private_key": "0x1ed12117ad76b0834d7b802321afda460eb20b6ca4e046f3c8b511b27664881f", + "ethereum_address": "0x59EbAEB8c20560bf7FE9Bf177E7D81dC12641e4a" + }, + { + "mnemonic": "end boost swallow blur fold mirror electric borrow fatigue bacon nature raw", + "kaspa_private_key": "7bdba235a800e64cb1ab5682f4b892656cc548c4abdb91b97ff216cc5c80a039", + "kaspa_address": "kaspa:qrh8m45ep47nk2tac47u5assqgl0wekp5alfyj9202ewtcq6cdvsu0x46cwsh", + "ethereum_private_key": "0x94e2e90848a9d8332172bbd674552a47242e84faa16e2b8a964c18f6ec978984", + "ethereum_address": "0xCcEAdF14769939d9479Ba4bB526C08e92D6FAad4" + }, + { + "mnemonic": "sleep close domain imitate cheese cattle trend weasel inside snack skate curious", + "kaspa_private_key": "bbfc3889b73a3723658d7482ea70350fcde203ce8445c10e5689c16c3c1b7fdc", + "kaspa_address": "kaspa:qz0vrjsdlxfdahsy889aad32vc8c7za9qgx380efy4l238jkvh2us92j7hd6z", + "ethereum_private_key": "0xf24f8499f6957dbff3a47d2caf975e5b81b5e6e66bb176fd27dff0c2b5dd4ffc", + "ethereum_address": "0x32e9aE4D1A1BaFeAC7e9f9107Fe7cB536D21F44f" + }, + { + "mnemonic": "rent desert sand expect grocery juice industry abuse slab someone deal stem", + "kaspa_private_key": "b2bf2ef9d6a5dcc4a847061a78f7ec05abbfe7e7398eafc1d68287034f3c4494", + "kaspa_address": "kaspa:qqjtxsjz6j5ltlluaxm58gn2evtjf9g33mnnq7x4ftzwmthc7qc4xys3dcp57", + "ethereum_private_key": "0xe6cd2bc40bcb82383e3f49e0dec5e463751a5690ae54ca6cba044f1e3cc81f71", + "ethereum_address": "0x5fa24eEdE06485aC1b1F99cf65ebA9B1419B0876" + }, + { + "mnemonic": "ride profit crucial clap broccoli limit gift mean about upper air number", + "kaspa_private_key": "d9fdb77d83229ab2de390d11aa1c0f0eba10d4e1b7e27ab640957ad564e79cf4", + "kaspa_address": "kaspa:qzt9p9r8kl9hcmzaycsn3nnp68ye2wesr4sx3t25rwn30v33gjgp6c7vq3xxl", + "ethereum_private_key": "0xad85c05ffb5f6673e19fd0f5e5935ec5a73acbc2941db2085cc5f73894f13488", + "ethereum_address": "0xb5108B7B0D793D4766AF6aA88E2061dFe2600593" + }, + { + "mnemonic": "denial gravity helmet midnight number tomorrow feed isolate young egg right company", + "kaspa_private_key": "c3004cc136b3fbb72fbc77dfb68beb8625cc150f32f8e1c5e3cffd5d0db9055b", + "kaspa_address": "kaspa:qrckp8jdupted4e6akyzlkatyyhkpr486na9dmnky9sej7md7a2f2tdh4z2e2", + "ethereum_private_key": "0x7c5395344d3b8dca5069d16afc7fcb53e08ccd320db14a3122ad2bbfe47ec82f", + "ethereum_address": "0x4D642728559D71930C7Be5c032F6f6a8EAa9A356" + }, + { + "mnemonic": "daring frame verb bird imitate teach van suffer silent render vague inner", + "kaspa_private_key": "de1a1a3058928abcb8fc518f56b13af8574b1970ed071499dd217d130178fb64", + "kaspa_address": "kaspa:qpysc76j8qyhm2qcuw0dh9kc32dntza8hhpmmpwvatf3tygsfg9y5njz2yct4", + "ethereum_private_key": "0xdc09257b83e7eea78f6d03ae77ad45fe0e85b5b42d91b583e36a2cc75e9b090b", + "ethereum_address": "0xD4DB7B2c0FCF5463273C9EeCB1Bc2Ca672521F6E" + }, + { + "mnemonic": "swarm when acoustic polar position unfold capital thing ladder erosion topic swing", + "kaspa_private_key": "8120cacb256c6a58634183abfa39d05acc3de246df2ac010ef311d30849758d6", + "kaspa_address": "kaspa:qr0fg5zhgyagu99mcg7t3taqedjzmynpygy72vwflzxwv2ddszdtw2apyl47f", + "ethereum_private_key": "0x4bcde65b64a406b29f48aba348ce96207616e51c1a9bbfe9ca7f434263a02c3e", + "ethereum_address": "0x48296587Ef9Af4514245b7fD161989f1AFce13f4" + }, + { + "mnemonic": "garlic open battle course high giggle crunch mammal margin phrase flush message", + "kaspa_private_key": "a715383046b5509b613693a029d860b977b5dc54c490dcc44dcbfa02f6677c5c", + "kaspa_address": "kaspa:qpd8pr5uwptfl0rdlzh0hy8tcgue53wzxy9wjhw6knfg4xf97tyhg35tdul6k", + "ethereum_private_key": "0x5dfe63e9e725148d97d7c65d015a4488db1dfe4eeb1ef7686253ed426b2fa478", + "ethereum_address": "0xf0ed4075fCFDA1a1EB1eF240160D9401DF9EBaAE" + }, + { + "mnemonic": "rate easy harsh danger mirror absent athlete toss believe extend garbage monkey", + "kaspa_private_key": "f011bfc8d37a779c4dec59a2d24afad8a6d25fc32cff75555cc3344d7abf1eea", + "kaspa_address": "kaspa:qrxhe5t7u9xvxv2tshnkvjk2pr208vr0szl4yatkcwf96nct0zrugplyvrky0", + "ethereum_private_key": "0x5880740ac595a7e3ab2844ccdd1dbb896b72e714164f4a5c46e4b3c5a9f7ffe1", + "ethereum_address": "0x097E934E6d5156C1d9a403a94CfBeE872FBe5542" + }, + { + "mnemonic": "bullet input relief diet steak cotton ordinary flush strategy addict odor wagon", + "kaspa_private_key": "9244c0bb1a4e3d6d3bb2da77398fa147ad7fab348d41d87d8b2038d8f4211062", + "kaspa_address": "kaspa:qp09qd584hfukwaxassjk70e5uz4wlkyuz4nvh3vhewjdra3ajxfg6h62zcxg", + "ethereum_private_key": "0x304a0380ed172266b520df4befd1efff4bb36d5d2531020a016c34ced5de9c90", + "ethereum_address": "0xa6efA1E972312881346D8F4162772D4df9c604d1" + }, + { + "mnemonic": "average guilt gate mistake embody pond initial divorce feed cross pill drop", + "kaspa_private_key": "4d4f11cdead0682d978b743d15d4df54155a17ac735b92a765e3a7df3b20e718", + "kaspa_address": "kaspa:qpeyzrvuhgm0vwsnc6m837dcnve3yhzcws9cv2f8apw36hvgynsjk4l8a9z3l", + "ethereum_private_key": "0x84e96c2de201d43ebc93a514ae4b1e16c2c6d999e53d334ba3e049cd02212e5d", + "ethereum_address": "0xF324Af3fa738A2360c170AAA0F4189f15585b308" + }, + { + "mnemonic": "jealous cloud dutch blossom shove vintage alarm bitter wet motion old struggle", + "kaspa_private_key": "d5a4fdbcee8270ced302e65ba1e0eac138142e143f9adaafb2305ab509fd6127", + "kaspa_address": "kaspa:qrypgxlddx6y900p4fpa989a9rjey04mthffumjawvuqms9g4e96qgckuqpya", + "ethereum_private_key": "0x306227bbd8e51fbc7328857ff46c4676d7714983e034e23107fc20fa00b918ee", + "ethereum_address": "0x286B520B85B39c89a623602D44C07c237c9111b2" + }, + { + "mnemonic": "suffer fault response warm bright scheme year onion hotel sugar nature adjust", + "kaspa_private_key": "5f294892ab5dc0697274ebbbb4175a881dfce4465216d3a63202ae11c0011394", + "kaspa_address": "kaspa:qqh9zmfcd8mqrkw7hvgf2p7xyahgucuqklg2mm3kgefrfuhnqrrf54v5p9e2q", + "ethereum_private_key": "0x0e2bbba6c34fffc2a700bb26cc77bafeb9b376859bbd32b5271954ddda742b11", + "ethereum_address": "0xdE0dD78Ed1904C1838833e1e2Eac198974dEC662" + }, + { + "mnemonic": "arm trust aunt until strike liquid spawn fruit unit layer know trim", + "kaspa_private_key": "17f25ed8cf34117eea7a6b42d86a1000772042333830b42dd4cebb98751b7f90", + "kaspa_address": "kaspa:qqdzl723s0l765pt2v6wfs5vwkp62fjyp0jfnn8yspd5wvmwquacwh6z9sruq", + "ethereum_private_key": "0x6f7cedd17b5a9c6f694c09979894034385def87e4a99a71bc297694a6b4ec96c", + "ethereum_address": "0x25fC3d1E55247637B1833c197e0332e9EAC0AEAb" + }, + { + "mnemonic": "dust shoe seat equip have bone exile strong grid bright pave armor", + "kaspa_private_key": "9009ae723eb95e7d2c0a94ddf5457ebd64e40bb72b9b64d781f6dcf4b2faaf7a", + "kaspa_address": "kaspa:qp9hgf3e8h5reynwdt9qxw3zggswehs8hk5qmk3u0sdj5c2qxhuy592jm5k6f", + "ethereum_private_key": "0x8789fb04fc902de68f0b00153b52d9e31d5dc8ede832e2ea4ba69ac401f141c5", + "ethereum_address": "0x526402C127A5172b4A6CB2bC7638468f9A9c5444" + }, + { + "mnemonic": "forum muscle fog until sorry increase sunny undo beauty conduct type electric", + "kaspa_private_key": "08efc53aac96e2198e90f7be3708cf8f5950f33b58651229e02f556339e51485", + "kaspa_address": "kaspa:qrzuuq7dqkn2sqttcjzg7vj3r05h60ha7sadhku2eeralsh50tn9za8t6lag6", + "ethereum_private_key": "0xf6b8a1478af6a2e9ab3ca2038927bd3ef0ca92d80d69c2f96bd53566ff483375", + "ethereum_address": "0x909aA3F6f37a43306B2059Dc97e56FA4e27912D0" + }, + { + "mnemonic": "sorry retreat thank furnace toy cargo spin slight answer category park fence", + "kaspa_private_key": "9cfc236e031e0fd4c1d9aba6431cec682081a89e803ba2bcf9b22a3496273a18", + "kaspa_address": "kaspa:qqpqrcgqycg9f5ydprly5ws85mlj00zqjgggdgfpy6nhr68n8xrpwh3ajjant", + "ethereum_private_key": "0x24572d107bfa09b76b208bd9f114d868137ddc2fc2d59889d04982d8d70c5ed3", + "ethereum_address": "0xfa60Edeb4FBbd18DA822F5E23370f433c017B326" + }, + { + "mnemonic": "save vehicle august neck record element wheel seven absorb deputy cruise denial", + "kaspa_private_key": "b2a1ce9970c76333fd0e5dc104c942c26645b0d83d1adea1ad4c0218aa1a3f74", + "kaspa_address": "kaspa:qpagfvgrj6zm0n4y966hdmnrtsmn4j8v8ezvmrut707luw6vtpr9us0lxgndf", + "ethereum_private_key": "0xa1e658a0b42f6939e31e558d5e117798bf0034a9165c8ca5be72f90c80d907b8", + "ethereum_address": "0x3202AcDe1703d2c81Cc9F2877c9C65197f5E6B96" + }, + { + "mnemonic": "tank toward clay item renew found spy flock need clarify suggest ice", + "kaspa_private_key": "1964526a0d463a8910e4b793fa471f6dad9d0e86b64c85aa70e55386b2efd472", + "kaspa_address": "kaspa:qqg6svv36vzlggy6j3ugmq6xhhd0csxwx4sz5zuwxtw8ptkp27qdzmwcfk45j", + "ethereum_private_key": "0x0e937b3297a5cb8fd867021d4f13097577dde93c97d2eea60fd9b75e6640e4bc", + "ethereum_address": "0xE6B7cfb9862aF48D19bBeeBB55c59A72Eddf2396" + }, + { + "mnemonic": "priority girl ostrich gossip merge coach fetch hill monster solve column kidney", + "kaspa_private_key": "a6a768d7d8f3c7bc4bb68e45c1785e1b3b031f51c422d7e4b2a149668ccc3d7e", + "kaspa_address": "kaspa:qqrxractde07lxaf72yh9h9nyeykxek5mv9c4u3azlrxz3t4ty5t7xzkl5642", + "ethereum_private_key": "0x681a76053079fee6ef4c7b13e85c31dec8562708d6b0f34c988100047d924ffe", + "ethereum_address": "0xAd88A8AbaD62827443e8e268654f5bCD658F8298" + }, + { + "mnemonic": "shine cake clown offer rocket swallow flower endorse expect jelly make round", + "kaspa_private_key": "42f82dbb47d6184afe4a9478426dc00c26fdb56220ebb01514cb755305bc86ba", + "kaspa_address": "kaspa:qrcuuxe4vesseldf9lmehkdaul8wwgql3vm9ujgu40nvqmdpzf26cl6rz6zdy", + "ethereum_private_key": "0xe1e5529b85ebadb8c1667428bb5d76c16ac542879af9e02237cf93fbabfa9e26", + "ethereum_address": "0x194aa351D9bbAF7668DB73478CB913Ae3389288d" + }, + { + "mnemonic": "web response assist fox detect sand this speak virtual seat action entire", + "kaspa_private_key": "7e9687d07cf8688e5af015f1f992b1f320fa07db4a30209188d836b1b964c464", + "kaspa_address": "kaspa:qpvc72ucwhsmxqx7gs42ew77q9aqzuxf5ed3wu5k3wr8un5ul457xa7rqnkw7", + "ethereum_private_key": "0x7b93cfb03d021782c2242098bf27f33af6feebe64dd7ccea296490c40e0d6f19", + "ethereum_address": "0x1E9Fb5588567726aC67684deCB540637CabF68B2" + }, + { + "mnemonic": "attitude hire fitness flush spoon almost unlock bundle window strategy exhibit carry", + "kaspa_private_key": "b6cf08399fd1bf39e842997f7add905f08192e769604dfccc258beedda2e8734", + "kaspa_address": "kaspa:qrfxeydu78ynp577fq2p8aw78nkkuq6vhstuvjpmp79ygcqhamcnyhtug9exz", + "ethereum_private_key": "0x18e81c3854eb6f2625404b60a216899cdb428b993f7c8b79e72adb6393cb1e3d", + "ethereum_address": "0xcB203A9cA0E66dd6D427a2c8E3bcc3a729ddc41C" + }, + { + "mnemonic": "side sing roof release cup celery slight thought desert funny choice purse", + "kaspa_private_key": "ba0594c5d6c3488f8fd89cd61ec6cde26a360b80e16b3c7fb4581f61a69a9939", + "kaspa_address": "kaspa:qz4ylfpkqh3p83xptg974k432suq0ahhwdz62cr574twzd8a5386x92vk6h46", + "ethereum_private_key": "0x2ca9401d9849387753e2a07cb9245f616332b82a542720b4e75ed5d18c873fcb", + "ethereum_address": "0x576A3Bc621e17fF789643d0F55cA29D7F1fe54A3" + }, + { + "mnemonic": "truly dutch movie card gallery erase history stick coin dragon aisle country", + "kaspa_private_key": "95f62cdff7a2c6f438c1b5cb6516328bf6f5ce24bb2e1c14ba386766856c4b68", + "kaspa_address": "kaspa:qzy7uau9wtp3r3hg02d2j2fdt5fe4llcehk2t8q9n43qxwzp79wj7dcntgkle", + "ethereum_private_key": "0x13b41cf267f2eec3b6c3fe8a39fe008a225579805aaae62ccb6ab3b1aca7e66e", + "ethereum_address": "0x89A6B1Dd76a0b2B5F1504346C4cE4F4074673C9b" + }, + { + "mnemonic": "interest spring amateur million bullet horror flock degree text can forum elder", + "kaspa_private_key": "382f5658d53b413d7c2bc8928e1fb5de36ac90f8a394a29ff64b3ab1168d2144", + "kaspa_address": "kaspa:qz70089zlhnxpj6jhhpue2ul9mga2he55kkyqtg0a8r63rn8w7xaqfn47amsl", + "ethereum_private_key": "0x34116b05446504a8c62dd7d487bdeee146587322c14af557ffeaa386d10b47b6", + "ethereum_address": "0x564a1C1040fbaed9277AfCD5779667EeeaeE72d2" + }, + { + "mnemonic": "jar cook bachelor frost drum intact viable soft crime involve sure barely", + "kaspa_private_key": "fa473c4b5505cb597d06ce2963fc5e869d48b85981770313a93dcd2157eba028", + "kaspa_address": "kaspa:qzursgtv0urnhlv0z2amfs5sv8netq8rxzqq05j4njrfm6ehs8ae6me38pq5v", + "ethereum_private_key": "0xf2852f701abcb613a18a7b94f8e9cae0a4b8e03cf4123aafa1e77f5e31e3c0a1", + "ethereum_address": "0x0eAAAA726C2ceF5711ebEc4b88b7c287670467C2" + }, + { + "mnemonic": "fix auction captain coast glue toy warfare cactus degree warfare brick enter", + "kaspa_private_key": "e08d0fe23dcca808f89f8785f6a6e9b88103fbdb26d6a60487fbee19449b5a75", + "kaspa_address": "kaspa:qzxt2uurjw4y3t9d8zrudx7v9qfn0nlxdmzm7hkq73w7dmylz9ysqdmemvj0m", + "ethereum_private_key": "0xed76f164664848f824d9aeefb39db71f4a5e0021e5f97a0a969fa72e61f942df", + "ethereum_address": "0xa2b2cC985901D49d38E57fA208608e604d8Ca0CA" + }, + { + "mnemonic": "pink legend expand above shift topple kid rival until brief scrap dawn", + "kaspa_private_key": "598b1adb81b1e540f23081242f534d65346f2c6021581cd6d421e7762884c91f", + "kaspa_address": "kaspa:qr0h9uyww72c0vj7k5v4vjr6xpstent3n26800x74ha6uepq6cqwswnxwpzku", + "ethereum_private_key": "0x8fd45809954962b53465d346a4d57536519ac4cfe5360d4657c48bf2f8fafd3d", + "ethereum_address": "0x9141bFBB23ed32838A5015aaAAB5d8b56ABe9751" + }, + { + "mnemonic": "exact round enable meadow seat canoe web obvious this bus fit height", + "kaspa_private_key": "db83db7afede17c284f76640d7b7d628bef93c285f7773890e9d751087cd1454", + "kaspa_address": "kaspa:qray2tj7sdmns20sxg9zdvptx55tpspua86kzpzv82kw8stf4qzdqd4k6s80d", + "ethereum_private_key": "0x91f05dcb9dbc4c5fed8baa8e2ddc102f2ecec07a25960ee7566d103be1c7bab2", + "ethereum_address": "0x4C0950b8C1d11380C190EdE819Afe20Cf0ac0D23" + }, + { + "mnemonic": "ozone give fix obscure icon swear deal junior easy stock world meadow", + "kaspa_private_key": "65e2659ae421f02e67f36fd1fb6e4e44fc1632a5b6d9cff640c4a14ac4c8c844", + "kaspa_address": "kaspa:qzm7u8h9js0lf0ty66skkprhryfzf550nzwmeq7kdf7jr3zwams5qjw8yf7gs", + "ethereum_private_key": "0x8a6db014b36f9c718090f2053e08ae734a52d6ee59a3a6a95af3f0d4e12e83f3", + "ethereum_address": "0xD81f96655aB90DB6cD33875BC3613064EC7b2817" + }, + { + "mnemonic": "age nice disagree elegant raven bamboo slight minute false escape fox engine", + "kaspa_private_key": "b5b201e64193236607177b6f6b7e81f90dc713622a72489d444d439068596401", + "kaspa_address": "kaspa:qrmp939gcpx208fsehkut4sfra8h7kjw8eqqwjzyys4umgd6wxe2ge7d2wstx", + "ethereum_private_key": "0x4694d0eb0a3a6c7f505426ade2642c44dfbda7cd18eacd7440e22a1b0b95b9ac", + "ethereum_address": "0x871DB957CBDD4F4cb51fc202aC33e6702FBCE4C7" + }, + { + "mnemonic": "nothing combine reject title woman measure library leg ostrich stem jump rain", + "kaspa_private_key": "21c5d22466f17f4e4648a0f8d625b30a0bf8c9870ae488149c72065337bc3e8d", + "kaspa_address": "kaspa:qq22f4rgh4sw220tqw50ylpa8rx5g7rr6z0r7vpvv9lx8mhev8r2jgz5tf6dc", + "ethereum_private_key": "0xa57d3869f2aa4fcc720fc16e81ca0738955d08906c4b6b1f37d3cc4dba0e87c9", + "ethereum_address": "0x8122c2595af059eBF48870F4e37eA810eCB3515f" + }, + { + "mnemonic": "mechanic trick crime remove veteran predict trap lunch spin property tent exile", + "kaspa_private_key": "ee958a8ccb299e769156cf7b2326cdb4af5e5223c61b273a3173b7eb687101e5", + "kaspa_address": "kaspa:qzy4ptrs467vlfkp7pad5sj2qf23upaa3wh2wjxsskgfj63qkr4x2p8vps3ng", + "ethereum_private_key": "0xf44da7802556fd0159dbd89fa273e9ad2e6fe5055c990ebfb38c26f5a432d7cf", + "ethereum_address": "0xB691Fe7e9E8938c9c81f7D9f9aaaAC51BC17bd94" + }, + { + "mnemonic": "flock range excess provide genius trip rocket fiction wink fox slab coffee", + "kaspa_private_key": "04c1f1ee58eea05c45dca020a33e88229dceb9739fa69604d238586e5a275a5c", + "kaspa_address": "kaspa:qzqfy7ytax4zh8au3n72uaxcm8qs5zflyfeaa0zra2vm972vth2p6q83fn0tu", + "ethereum_private_key": "0x660c6d2d5afa8913dc276d6e8a731e6ace0b522c47e7043c5c06868ba8678c12", + "ethereum_address": "0x7E99fdeF705F2CF0b2C622871FEaFF663A255771" + }, + { + "mnemonic": "moon chalk husband sister poet bird energy zebra dolphin chest reveal rookie", + "kaspa_private_key": "ffdc14b5f917ff9f6a8db0e320b56c52300b02a2d04f01473251c5fb58c86379", + "kaspa_address": "kaspa:qr94hrzw4njvcma06rrz5wdh0e6plr0cqhlj3gm0wmduae5faa7qufeqj8xjs", + "ethereum_private_key": "0x3ee4820ffe0c9d4354a9eeae5482b3d3f96a90467d8413b2eece7bf0d6fdca90", + "ethereum_address": "0x592A2110cFc8CcC77eF1a5F03bA0E916307f9401" + }, + { + "mnemonic": "hip left fit push unfair decline session other order cram process maid", + "kaspa_private_key": "652944a77ce875d84b5c138b01776540be302080390e598a7e1a7038abe11562", + "kaspa_address": "kaspa:qz72s7saqdexnz2f2x4gzu0hjr9hthj94ndkhmaqmah67vg2g4hw2w54s3d6a", + "ethereum_private_key": "0xc12ebfb359b8c21961057181653ae957aa7b68d4b29807a0768d87d71b859a28", + "ethereum_address": "0x22d554850F2229868183f7C97E06E3a6aBC12Ff8" + }, + { + "mnemonic": "raw novel grass law wise write dish napkin claim adapt right minimum", + "kaspa_private_key": "a0585af9721420d53f01c011acb69dafa8669108e9bee33d14fdcf7d7a85e0e6", + "kaspa_address": "kaspa:qr33awgtp2dqdzunlsnwew7aheprr4ach5p0melygz0x758mdqjxuvqzt8she", + "ethereum_private_key": "0x286be9190c86b10210919e95d084f149d369bbb6a436955c4775eac03714cf5b", + "ethereum_address": "0x7D3f7D4d1B51451B4e8751Df239396a3dd55DB01" + }, + { + "mnemonic": "crunch recycle cave ribbon account upper scout ill admit burst raccoon empty", + "kaspa_private_key": "5bf9d324e8c78dcc11f0a2bc01454f73d65fc294ec204180f352a1a7c279a9e9", + "kaspa_address": "kaspa:qzpu5gw7xxwj6xcad8fx87mypweqxhd2g9u23n9ny3c7pyr74gvxu3g7xaeas", + "ethereum_private_key": "0xbf7bcfeec53052a95e264a89200710cb5843cc14b7331fd313e28e011bfbe1a1", + "ethereum_address": "0x791425C65Fa1Fa8a5bA83eDFe956675d115B6e3b" + }, + { + "mnemonic": "basket place check often invest immune cross neck fury draft weather peasant", + "kaspa_private_key": "1246579ad28a7a6c0b4c80534dbd20215bb519d88b6e10263a788417abb807eb", + "kaspa_address": "kaspa:qr43ased0rsqcz5m0kn7fxppdf25aj2qyu70ksz4zmyu96xr6zku5706m7zv4", + "ethereum_private_key": "0xfa00aede0739c5beb3ca66c7bdc6ec48a04cd6b328397f498ad23f9d68c62ca5", + "ethereum_address": "0x350863E9b23CB2041b2B4Bc32EFaf8a8e1e0D58B" + }, + { + "mnemonic": "put smile grain tumble chunk oblige script joke lion online spy unable", + "kaspa_private_key": "dcb8d4f489926229e62b4c65a84135349d7f1d6829a7bd3451bbff08d756aa3d", + "kaspa_address": "kaspa:qrlpmk49kxg9zlzkdnufm2h28vwjllvcfly59r27re7kar576ysd67xy6jfwr", + "ethereum_private_key": "0x006bdbc34bc646a0d520eea4b2504d9a62fc0799ae9c2d3a0ebe2b08c7a55101", + "ethereum_address": "0x3823307c33a34c3135Cac46df0E3F1a65689209C" + }, + { + "mnemonic": "void monkey exhaust health snow mechanic avocado start toe dinosaur dutch divorce", + "kaspa_private_key": "9493167826d14104b932488857652b31898a17f3176605af5e93a6f779c43ff5", + "kaspa_address": "kaspa:qq730m94gwe4dmgk7j679qq03krjv2r2zsupznagzutx405tq03y2tqlypj6e", + "ethereum_private_key": "0x1f9228af9b3942755ba21fa15dce55d4dbd99e4a501c4331955b5111b5104c3b", + "ethereum_address": "0xaF7240522f5046FBae7CF3cdBb8b70E2f0321288" + }, + { + "mnemonic": "torch swing rack afraid boss surface spray cannon essay swing bachelor jealous", + "kaspa_private_key": "1b66a7fe50231973c3a363cb4ea2f7a0e7cfb7e47dadc6529eb5d12311790f60", + "kaspa_address": "kaspa:qr3hrrt78prfmnydrqrhprgfkyxpdhc2tlpdv3zxcnr9uuzhx8w7gnt7rjzdm", + "ethereum_private_key": "0x7d6da4c1c53c9f2351b20436e4cfc2e8d029ef6d419dfed72cdacc2c69ff2fd3", + "ethereum_address": "0x9B9A2c90660473067310c06920434Da30f06aCca" + }, + { + "mnemonic": "royal scorpion dwarf cash inch check rare mosquito above turn captain draft", + "kaspa_private_key": "20db2c34e7b489950c22d51e98763fcd4ae768dc5fc6ebb07eb405c968441006", + "kaspa_address": "kaspa:qraxtfcyth4cx4ynlmvhzr5xvefa7q9hegf823qc537gpv6wgluaglufppfk4", + "ethereum_private_key": "0x71e651c1ad72ab4668640ea5b2e83459c60eded6daaaaa5bb017d5734ce7681e", + "ethereum_address": "0xAAE9e43EdfaDd3a4C8da64cFBDFC4ECDA6131537" + }, + { + "mnemonic": "victory cave mandate demise verify card mixed captain twin crowd clump present", + "kaspa_private_key": "0c6dc6a436ad07d034c88a940eac64920f949e10c55a612d070489611659a7a0", + "kaspa_address": "kaspa:qrwdh9zanvzhrwap20958a9r85r8h5xn9gpg9y4kkvwgn73nuk5ac60qf8r28", + "ethereum_private_key": "0xff86c945123685a9dc88e5eb2108e99c2890d7d08210d6b21cea012ffb4a774b", + "ethereum_address": "0x27b79603271B818425aaf0940D8Cb73eB5201b01" + }, + { + "mnemonic": "skirt run example wine siren rent model tomorrow candy garbage box misery", + "kaspa_private_key": "4805c370552c3c2dd4d91a51d2e9e35f3f3eac79b57857371c5bc9d56668815b", + "kaspa_address": "kaspa:qrkhdlqfdca5sa7yq49spq6qqkscfyx25q8qshc89tux5dxa0qph6agjyn64u", + "ethereum_private_key": "0xa246c1e6b5e4ec34ab70c6f15101ca000942a13b76e3819ef80dcacc8e87d3fc", + "ethereum_address": "0x1a70d83ed3F5eD88A1a40dEc87F6c854D153E423" + }, + { + "mnemonic": "girl beef glad coil scissors fame broken stick tell horn cinnamon pupil", + "kaspa_private_key": "32195400ad0bee251fa8fe95d08b218ebeb466621d62dcb2402a5027a104e12c", + "kaspa_address": "kaspa:qzeqyauyrfjdek0n7kx7pj3cjyg7pqy64ght8p3h2ewqejk262v7qkpact3v9", + "ethereum_private_key": "0x4a446984c2a6104ae0f4df4a344ad570266b99073558cf3499f114e52ab3e832", + "ethereum_address": "0x5BDFB90B8A9Bb13F2C8A42393a7c6FE742E89A4B" + }, + { + "mnemonic": "paper hobby float swing album boring wrist result hawk lizard toast virus", + "kaspa_private_key": "ec98f7c455e120bc93d1668a2f5872db4a6d140e2036fe74c62bf70a6e8956e6", + "kaspa_address": "kaspa:qzp0yadk0cy2awwy7882ae5gfx58y0my97fk5vdrmpakjdgcvzwu7nwjz5ucj", + "ethereum_private_key": "0x404e68c0a5c2dfd89a3c8a93bc82ea661219e36a9176382252d6a3caf845eeef", + "ethereum_address": "0x07c33725C7407998D37E11a279074739AC652541" + }, + { + "mnemonic": "elbow scare mango blood snap three cactus fire under type wolf stool", + "kaspa_private_key": "ce8bb876e1542c06664c46f18bc5491df55e37b397364a6bff35587e9624d594", + "kaspa_address": "kaspa:qqx4lha3a98x2rkzhf3lx7zl6wv8nam63nlcws0y39zsx7w304e7y75nr29av", + "ethereum_private_key": "0x9899aea4d7270c286163e5396cc7ac2a2841981adba7934626410ffb5d9c2f9b", + "ethereum_address": "0x246259F917070900f17B4bC65C6eA0427D3DD145" + }, + { + "mnemonic": "bone credit possible excess soldier little adult april pull earn cost across", + "kaspa_private_key": "12ced3e22a76a5f3778b31ad473e461da005ad0dca9c4ab85826fcb2924f20c3", + "kaspa_address": "kaspa:qz9v7y8r7vje4glul7d9pvzyez3zecwyp8lnwh36xy6k8t37ex07w0usdrygy", + "ethereum_private_key": "0x1dd9c86b0d2eaa3152a2e6be35fed7c63cefb8b86787f2e0be040b52bc60aef5", + "ethereum_address": "0x44af16510664152cC0EeC1320f7f9EB66789289f" + }, + { + "mnemonic": "slender pass silver river try still train prefer property dinner arrow swamp", + "kaspa_private_key": "5878298aa546c6129b8ab960e2572ccb0a3a128ebb3a04e77f023e6fc24bcfe3", + "kaspa_address": "kaspa:qrtrzmhwh5x383qfvyzd4kc2jk23j7ezt7n49g5zz6065tlgvlg8wxlxa86xd", + "ethereum_private_key": "0xfb483d9db77f4c697bfd1bf6b6ece9e5c29927d1922dd4b3a385adb2bf5c83a3", + "ethereum_address": "0xD4F5d386bCAc9C7739e2a0AC99c01fcb62a0Ec57" + }, + { + "mnemonic": "zone music spring satoshi high lion awkward focus famous keen original erase", + "kaspa_private_key": "5135be19a84a11127c9c638430bb887e3dc988d8b49a4f602d51712e40eeb5cf", + "kaspa_address": "kaspa:qq40fsg342kyeujwhkwcajfn8kwls5wn3zu2t2vc0y3lpxw6n4hewke8jnmkg", + "ethereum_private_key": "0x7aae9f156ad3cba0aa5a752c085124eab2430aa024cd4df84357adca3697fa22", + "ethereum_address": "0xFFd68D3E815201d3D0F2Ebf021921E6d2C4A0739" + }, + { + "mnemonic": "yard knee imitate pattern require valve doctor minor cycle wonder flash mail", + "kaspa_private_key": "98eaea5376894cf30d0abb475fc69ff3a02d9c1540635ab7dff2f3f9ab25b447", + "kaspa_address": "kaspa:qpkrvpk4ajh3caltmfvjj6p5e5c9hhtzf7k3v4ehhel9kc27thjhj2zdmd522", + "ethereum_private_key": "0xe73f820e869c0ff85a8bec0ccad4674b4ba3ab7efbd5ac241a7e2b5c72cd7e2d", + "ethereum_address": "0x799e38176A1f822D7660Fdb147B466B36EB1a456" + }, + { + "mnemonic": "chief mistake tube wasp maid april also best mechanic need couch curve", + "kaspa_private_key": "82d493fc8efe7972d2e0d670e7afb4dc2a8f6cd4155a4e9c88d68a35fbee1aae", + "kaspa_address": "kaspa:qzjdh85csjmyrj6cg2twhhrc7hzxgh2wtv86c6cyx2gcn2rfylxsv6xfp6umx", + "ethereum_private_key": "0x0415a6b7bbb6690444eed4312c3206253b1594d9ba00da924af6089c440849f5", + "ethereum_address": "0x451c2779Dd05df73c294B12eeD3ad09760a44f65" + }, + { + "mnemonic": "salon friend key wash apart machine sample enact grain little welcome pretty", + "kaspa_private_key": "8f313145216010cfbd696c83c9511dc814fff493f2e76c8e9db103e1eec4b389", + "kaspa_address": "kaspa:qpj8yzmefmuflhj3put367kvkkjaxaq0whr970c3dcnvhn04s5rdwhx7rp8e4", + "ethereum_private_key": "0x4ba9492073b924c98fd993bf075e997c7c434886506409cfa68a3b0707f0766d", + "ethereum_address": "0x395204C2f61a04f0cA515dE24EA8f30ce06E9B88" + }, + { + "mnemonic": "engage illegal enable immune zebra jelly matrix cousin language note canvas enact", + "kaspa_private_key": "d4aa2c96cfb3486e84544237f70e8262bcd60e830a19dc4c22ebda3b5034bc27", + "kaspa_address": "kaspa:qr779sl8m0kzq99tqqs3swl93tp4gksd7fnj6czaszdhqtlst8yv7xaq4a26f", + "ethereum_private_key": "0x3a2a39e5d123f9ad56200002cd785fc74a8657c40735d5949e76f8e0eaebab8c", + "ethereum_address": "0xe9FB257dE4851e53837051A2d4089E1e07DdBd8d" + }, + { + "mnemonic": "reopen smile void slow cabin sail because cliff lady dress tourist need", + "kaspa_private_key": "c5403c1c9e02a5ea9b613820fd9e4318443f46e542a90fcfe9b267f2c6131bbf", + "kaspa_address": "kaspa:qqmcgckgk7wxtjsj0evllyhhvzvs7nkmswwl3efzsk3r0trvh22vy0vt5hma4", + "ethereum_private_key": "0xf19763de6cc4afe2644d5ae0d19bdc2feda6a752864cfe8117c0544f8e653c05", + "ethereum_address": "0xE843186faaf445311aD50E84D063eD6E8ac3061F" + }, + { + "mnemonic": "assume later mutual slush total regular safe volume depart update gift ostrich", + "kaspa_private_key": "e5737cea6d3a1648cb2469cd751dd1b5cc393d16a0fdd87d30afdc5808a57538", + "kaspa_address": "kaspa:qzuz65rmujt9xtrfvj08wdxr22dkmpydrhk0ltnuf2uxpx36gjsrgcdlassfw", + "ethereum_private_key": "0x8bb9f6b0d718d12285089570bd530b72a7402ad79a2da4646241d5a6182c78e1", + "ethereum_address": "0xa31D7E7147397f6E3a60eF1cb8706aeD699AEBB5" + }, + { + "mnemonic": "scorpion planet key gloom myth hollow page wedding post arrive swarm space", + "kaspa_private_key": "41c41eafe0ac4723307910763bc4b27be688583c020f89b20353db4e4329e973", + "kaspa_address": "kaspa:qzfhq72g3f2ed256gnq8xdquwv64etc78y5mwpj8ce3sk5cjw5wayy8y7tqh9", + "ethereum_private_key": "0x4b700b65455fa084fcd4ff43f5f47c48193974a4d0333b2d9b25a0271045f1bf", + "ethereum_address": "0xfbA49CE71841886D67f03264Be7b779E1e0a9047" + }, + { + "mnemonic": "outdoor segment balance critic shaft glance laptop enforce arena chapter assume isolate", + "kaspa_private_key": "cd0ad3654a5e470975f9465ddc0aa1f10e61097f36e90041db8e299f28f2e1a0", + "kaspa_address": "kaspa:qq0xwtzs5z9q7aufyw6n8s6q8zewfcs7rvfmyj2cptlhrehqgpzqcxp27rshy", + "ethereum_private_key": "0xea84ac66b4fcfafd14e424d3b07da4275ac2f8a339d44603cd5f0808bb385909", + "ethereum_address": "0xa8fEDe7B23A8B58B8035E15BE06C92b3c9430643" + }, + { + "mnemonic": "tell admit sound level crouch behave member arena plastic cruise media milk", + "kaspa_private_key": "5fd1072b59a4e96495a4eafc777bfd8c4cc7316ac98d0bd6c21d9cb229373c96", + "kaspa_address": "kaspa:qr9t8g9yt2l25jp2g6recr8uyyh0xnt7fygkfglage4aflkfta22uce9r8545", + "ethereum_private_key": "0xaee7c476d0e0c3979605446fc0904fc07d8a30bdcdc4dbb10813b07a2c529ea7", + "ethereum_address": "0x9F00C203F334ed8c2E83AcCC62217af5C7634fEE" + }, + { + "mnemonic": "deliver easily favorite hockey subway ticket heavy enemy learn permit swarm warm", + "kaspa_private_key": "0ab0d869fa575487e40fd40412717addbbe2ac9178e9ad248d42c25b41376d12", + "kaspa_address": "kaspa:qrvs6c3sclxkduhwd2gyz5p5ysy6fcr9ewuxcclzm9v8q7guzkx4sdmgkhlx9", + "ethereum_private_key": "0x9b5c64826370843e9fe18a83e1c789395ae628ee455bd75ff5596e9d3acc97c3", + "ethereum_address": "0x7DaF01449c9Bd0790d0172914802bBb0D1f86889" + }, + { + "mnemonic": "border drill jewel lift age hand message lab piece jealous fluid vital", + "kaspa_private_key": "6311a5f7340a92bdd828bfc8410b01ea95a098ca07c62835d44fe6473e9e7d0b", + "kaspa_address": "kaspa:qrmrm7prey8wt9n8kehzmjt2xgsnltu02tddg3pfq70vxurdscqpkk05k2sxr", + "ethereum_private_key": "0x7bb295f90276d4962337202133d0c96cf92448d89d98fa7aa5705b62e315b3a2", + "ethereum_address": "0xBE4E52227BbDA6dbbfC420fD15c1FCf7B49c002f" + }, + { + "mnemonic": "gorilla pipe door process code erode market extend friend pink uncover reform", + "kaspa_private_key": "a55023fb4e6e233c25bda7393a43ef86812f3cebb5f8c89c0e99103977b2f0ab", + "kaspa_address": "kaspa:qqhzxrn9umwdl06660kvjts295w6u76r507t3hjstcyy9g783uxejepukfux6", + "ethereum_private_key": "0x6ffce6e007dbda358e9cfbe6fc90a96e92c2e7560d6483aed595b5be03002c4f", + "ethereum_address": "0xCdBb6a9f44469b44366Ec3FeD840fC4c0E6Cce7e" + }, + { + "mnemonic": "need present swear build foil suit evoke invest suspect pizza bounce foster", + "kaspa_private_key": "7c37166a22b2f7105ecb0dda72f67c4eb6d8194ddb8cd8ef016e9f2072af1626", + "kaspa_address": "kaspa:qz7xs87htn52nxzfu2c8mw392gesp6jrxgspxp5c4secfx2z9nyczg66wplzx", + "ethereum_private_key": "0x57fb99f71bbeee6af863ca9fd3242c33906d0672c156951c293b862cdeef120b", + "ethereum_address": "0x14c1e61C1C88Db001465a6da8cA15FF444d53867" + }, + { + "mnemonic": "diary uncle become define forget humor ask peanut comfort gold spy salmon", + "kaspa_private_key": "0e728ff70b47d1064bae8cf9eb51fdf3d8c331ea37c01e8ad83885e1e70cfce0", + "kaspa_address": "kaspa:qqwqk8y5uj9j7xsqpjkvfqws2k640svjk8hl5hkwthqlml22cv0kjpr62vq27", + "ethereum_private_key": "0x19ebd89490102740cab1b5c475d11390c276c14f76838398ef5d2d77313037bb", + "ethereum_address": "0x7bC352b4A0A770B4b581A890798d96102928c27B" + }, + { + "mnemonic": "vault toilet habit abandon cannon ring describe consider dust tissue large honey", + "kaspa_private_key": "8ebb1e9a7e6146af74c992a9753365b3e072a0a5d2a8d59b9892d723a9de9d77", + "kaspa_address": "kaspa:qznz5mc8ns0ynkpmhpzsc32tqn4sjpnq377h8pvwgs0eymufglegulryjfrf8", + "ethereum_private_key": "0x3b7cb2e18dfbeb437c2f48f5ae45271073a0e4f0fbe84d2b17ab378b8b02bfd0", + "ethereum_address": "0x1c4a351BcdEA292e72807a5d7CD953b29Dca4b9C" + }, + { + "mnemonic": "acquire outer path pupil smoke divide vessel heavy this sunset soft loud", + "kaspa_private_key": "bb0ba2d20796804792ee70cb85ab96fef8321868f36d0911c8350fbdb952e1b6", + "kaspa_address": "kaspa:qz0u5sqe25c7lul0dugcup0n9xpxw5aq3j6593vrex7tkqhdln9hxww96n3k4", + "ethereum_private_key": "0x3bc252e8d07fb428dd86cbd96ff40d31b0079e0167b25cbe319d7175ed4b4182", + "ethereum_address": "0xEd138A117783a406AC2Cf1aCfCB84d4dfe3940E8" + }, + { + "mnemonic": "dune wreck faculty multiply tunnel antique become move few they depart uphold", + "kaspa_private_key": "d428c0f59029145aef47e0d4d0eedae4b53aacc180839c2b52b9ec6526ce15c6", + "kaspa_address": "kaspa:qpmmqn3ukzumxd0uzkh5ws8uxjp009f58gl0r9p3qyktt6reatqkjmt2j5qtu", + "ethereum_private_key": "0x222491ae1e48db3a6b70abf20d0700603fdbaca556d62f6eb5ad370f822ad92b", + "ethereum_address": "0xD73EF2C709A9481eB4c6cE70EEe99FD52D76736a" + }, + { + "mnemonic": "reflect diesel expect draft novel airport maid glimpse evidence choice copy trumpet", + "kaspa_private_key": "d3accf8815a124be5508c6039b67ac69979f9334615657d79d6665fd2f48b656", + "kaspa_address": "kaspa:qq0lxg8nsq0zurjdu30h6j4gkgmju2ww6qhe6egkrj5n75gtqmcv6jek4nzap", + "ethereum_private_key": "0x49615b80b1007d0b13ed9fcde13930609e8f4302ed4720ddf586b77f240f97bf", + "ethereum_address": "0x8C4c2638C6d6dDE1Bf9051fAF76b9367A85997C7" + }, + { + "mnemonic": "father wash lady alarm sea crew escape calm jar marine office candy", + "kaspa_private_key": "3f62e841ba4e72ced1df0b1ae18dd19fab644b625af4aed9771644c5f9989456", + "kaspa_address": "kaspa:qrak7cr6t0jm8xpnrtzrhx8smr00n8v4kf8dccd09x5ejmefc04egwmh74fz0", + "ethereum_private_key": "0x7276d4c8b56fe02e3633bd97734640e35e3791e80ae8f539da1d22b36c9c2fa4", + "ethereum_address": "0x64C2b1cd6644a4a2539b4A7Df0f8bE551467B08A" + }, + { + "mnemonic": "rug quiz gap style any all business verify kite trip sing census", + "kaspa_private_key": "14c62359df773e3eb96fbb7b48e2b2c3bce77423d748594ad1421d14e7093cdc", + "kaspa_address": "kaspa:qp7ktwtx0n6rtuj02pfcxhwh7tkp7ux3sejf8dwlqrpnalsgguvv5pmmzau57", + "ethereum_private_key": "0x72ab99d8f041b2201a86e8675de5a931c5df4707448a10d0ad6aa95e1a0658ba", + "ethereum_address": "0x739cE0dAAC761972CefdD71Ce21f8d09B98BE2Ed" + }, + { + "mnemonic": "awake fan stand alley tag veteran version boring olympic announce solid advance", + "kaspa_private_key": "b6d01bba2fbd4af873fd4acfc6002c0ac8da6c648871b67a22c64ff55e75fc6c", + "kaspa_address": "kaspa:qzpc7z7zx6kg7xqgxwtdds3j3jachl4ytsanzex37lwfn3u326x5wgyadgumk", + "ethereum_private_key": "0xd8d7a05491f7ac7187df5c9d7cc099324136addfd32c791b02b551c361998800", + "ethereum_address": "0x9f95e16cb4dE81cED5D513E1C1A29F6eBc71eE75" + }, + { + "mnemonic": "gadget cream cabin theme arrow scrub pupil convince apple gravity eagle hill", + "kaspa_private_key": "f4f8232c3c943f41f831c745464257579fbaa2e97bf63adbf7e5b63f269a533a", + "kaspa_address": "kaspa:qrzppgkw85nwh50y85nhytp8hja90sm22700acyupahzygx4ylujqcynprkrf", + "ethereum_private_key": "0xa57dfb71d3d3850c583915dce92efec2e2b1307c54e4ca95adb8600c682e2a62", + "ethereum_address": "0x2c8BAeBeeb87489a1c7dC81d9529158f90764144" + }, + { + "mnemonic": "laugh evidence chronic place dolphin borrow affair sunset oil virus cement crunch", + "kaspa_private_key": "e3d7168fafba38184794dd0ef5e7f25f075cd7400dda98d9eeac420a02ea02ba", + "kaspa_address": "kaspa:qrxhawqdwdfvqgasmtl4hmrs66pyaav0v4t2dmgvzrte0eee4xcqu8lckrwua", + "ethereum_private_key": "0x074f084b93bd3a68df252bee669b5fd06859a5202e025f9af99b9646c25b2022", + "ethereum_address": "0x155dC40e78b67d4BB50ad1ea365bb1372d374AbD" + }, + { + "mnemonic": "grit present sea drum adjust pluck often script crisp document leaf fold", + "kaspa_private_key": "2c00f3d9d60f3b6029894f63bc6985403d513d9ce2af373f56dbd7b57177ee6b", + "kaspa_address": "kaspa:qzkrj2pc2ccjm28cqzd90aqynne7l8utj8mqvwzhfp0awx3cxxs4v7ee0wjd2", + "ethereum_private_key": "0x5887b05be9329df367c5882353df7087982577d3ec56d96873137d16c0e777eb", + "ethereum_address": "0x05742A404f980a956B747EE5e3e2220160FE27eD" + }, + { + "mnemonic": "unaware liberty cloth rely deny oval toy rural panel cube regret vibrant", + "kaspa_private_key": "00e37ca01fcc9991b8d056b3bb2fcf286506fb0dd401d05511247397f4de1012", + "kaspa_address": "kaspa:qrff40vsuvdqacvgmn3tw7hhhw74cj9rx8v920sat53hxvz2zdl4vk23mslxz", + "ethereum_private_key": "0x2cf12ea90b5087661ae6c6bc329b6664c2d37d2c42a71ac9a6d0053dd643db77", + "ethereum_address": "0xDfB48825262004Eeed8267638e6a142AC59F97C1" + }, + { + "mnemonic": "cave rabbit giggle snake canal length fire later globe sketch session kit", + "kaspa_private_key": "688e3a85ce7c328f6c75f0df4e8c708ad3e465fde4bd37f9468a3a19d46a0bf8", + "kaspa_address": "kaspa:qqrp0uw449t27ldad885qyeyy2pxjhvsy9lczrc3elesr0tg6273gxqs7rkmm", + "ethereum_private_key": "0x8ffcedde09d17535ea57871c545995e6e75fb74b95232ba7cd999f5fa9292bc6", + "ethereum_address": "0xB0eBe36A618255Bd2C95EDFD02C12754C57B3EcD" + }, + { + "mnemonic": "depth empower digital slight save awake whale mention order beach pioneer auto", + "kaspa_private_key": "e2b2185e05ebf2cba133d90176462865f9e2d12410e350ca96d3a3f41cd7eba6", + "kaspa_address": "kaspa:qr5dldv905pf08kgwek5q8r4xm2j4svh9fagh5pr7nspszxylh7lcldy900rj", + "ethereum_private_key": "0x04c5c14e8f16a731ccbcd4dbd82218fd082b2d47b2e00fdc8a3d20213b03c660", + "ethereum_address": "0x8DEEA2b44A0B4051c594c53077A86D5d4AbfF7a0" + }, + { + "mnemonic": "celery goat notice swim lamp mind solution sleep carpet disease taste mention", + "kaspa_private_key": "26b84e312176cf66c0d5a868991d4b5b805a1f8e8f91c92327a67447a7e9da4c", + "kaspa_address": "kaspa:qpg98lllgjra69nsmwjccy202jnvk58y0760u68l5dy4zs80khlgzvl79s65w", + "ethereum_private_key": "0xfd5f6bac58018df1b63b565de09d4d3bef6ebc73c59b2b9525dd8a6c470b4548", + "ethereum_address": "0x58E543141124989b0344cE71ed48216BbFC0429E" + }, + { + "mnemonic": "reject human swarm luxury sock such rude egg track carpet holiday rescue", + "kaspa_private_key": "18835cd1693d9dfee20357b248e3624588a0b2a0a38c1fa061bac2c152117fed", + "kaspa_address": "kaspa:qzvj2xjhlx5zdha62emyne7r56fmc67kxtafn5gmpxx8jy908sqf2aw58kelu", + "ethereum_private_key": "0x6f262daafd2a4f21b9ee6176567525b008e2efd0967be0e0b00062cf5a2daf1b", + "ethereum_address": "0x3F421F1ba60621Da82CCbDCe6d3CDb496edDAe68" + }, + { + "mnemonic": "puzzle infant crawl cost develop solid crucial lesson clerk wonder change chicken", + "kaspa_private_key": "26ab4dd20b4e45d3727e42a6c03eb2bbd74f28f8e2c9971a3858590b8ad56343", + "kaspa_address": "kaspa:qzxc89k0tgjyx65f5plr4ywf7z4ysje4p304v48y56gpgyyswx2uxd02hg9mq", + "ethereum_private_key": "0xf5cdf00a106f0bed3a161d550a4e27dd25137be74d4c48e6ae1d0bec2e6e8b2b", + "ethereum_address": "0x2281821f9A2c9CE2A15A07B0a49897FdbaD038B8" + }, + { + "mnemonic": "sample today solution special remember pigeon discover ecology country melt portion ranch", + "kaspa_private_key": "29047a77946ba5e3e34a06f5e615af6f785ad1f045fe6fe20b91445aaadda713", + "kaspa_address": "kaspa:qqre0l652sx0fzg2t3758e3snknwnm6stfmwyaqj5gcnhzd5xuncq0rlm20qv", + "ethereum_private_key": "0x793f6463792adc529fd6adc0116daeb45f5905f2c64a43c4704d184fa3d46c14", + "ethereum_address": "0x8A18Eb9AfF3E6FA1b82b8fBfE16fDe5DE29E4d55" + }, + { + "mnemonic": "shed yellow surround movie ecology pull torch endless hollow balance acquire vacant", + "kaspa_private_key": "ab363de8e22d3b21ca685fb7ab39f11328a5167e949614c53f3472fe48e77774", + "kaspa_address": "kaspa:qp03jsnzvw0dm4rv9ug4v6pn3awg4jhzj4jjd8s8hjsv26hvxeefy2d2netm2", + "ethereum_private_key": "0xc0d4234e398937c21b0f0b268e943ced6fda44edbfccb45396965263259e7075", + "ethereum_address": "0xD32E072bf92c384b415f7934401e587FeF5e0821" + }, + { + "mnemonic": "bullet juice online able flee sport best require master million chef episode", + "kaspa_private_key": "371c87fece9c91b785cf35dd16023c60e2401bff4d62edf90ced85cf751bea74", + "kaspa_address": "kaspa:qr8t2ahpz5pe6f2y9ddjx9dd3tqa0h42gh376v3rrnkysjftpzwq5pgvh8gxm", + "ethereum_private_key": "0xf59dc6857d2971b293f95373a64c5eb21b59dbc5984d63fffb6bf4c3ef839067", + "ethereum_address": "0xC19B16dCFb87c6D7c914d35A8F8391ad72572062" + }, + { + "mnemonic": "finish detect pudding dinner false item risk ordinary cute element engage silent", + "kaspa_private_key": "b8016745e1abd68d70976921962c3280731e1472a08f19472c02360b89850177", + "kaspa_address": "kaspa:qz22snxtt9r6ynd5dha8z2s84ypazspvvnugpqn4n3cvyzxmwzjscunkd5la2", + "ethereum_private_key": "0x86ceb8f2946247b061ea9fbcd672e935fa3352e2feb22754da17040d2cf47b28", + "ethereum_address": "0x0a8AeddBc8b74536b60bB4B72C3442acd3D57Fa3" + }, + { + "mnemonic": "enemy girl crazy become judge swing torch brief tone empty room conduct", + "kaspa_private_key": "7919c61fcf45d907d8b0b8f9685a6f602d3fb3c8369648d342901b447e269045", + "kaspa_address": "kaspa:qzullucjdupmy66g2qwlscfgcj5xtk00nqxw9zvhen38u6tfdqfmvqpt393cf", + "ethereum_private_key": "0x5b482f6b9d338f92c4c3316c17c70853fe982206ef44a4ab9bee201a6e47e818", + "ethereum_address": "0xAF7E2154CD6F95A67da67D507B7177bC805Bffb5" + }, + { + "mnemonic": "oyster point hub oxygen undo clown milk patrol leaf cave must real", + "kaspa_private_key": "3c33728e741cc4a14bc2df04a8cf4233657936a345d9cbceaa5fd7c290bdc9f2", + "kaspa_address": "kaspa:qrg0n3s3u2pww6axgnr48t3r3yh4h72cyddke42d340fan3rlk83xr8jmcggj", + "ethereum_private_key": "0xb90ef4c4ab79fe14c9b866485034bd2ba8c7502f85827164b3ca3951f4a85d6f", + "ethereum_address": "0x96edd2D6218B162391177Cf7512826f69af010DE" + }, + { + "mnemonic": "section void answer wild disorder gentle diagram enlist weekend smart mother cricket", + "kaspa_private_key": "3644598ba3ec8b07e03cbfe2331b04171ea5fe700302423958b1697fad1759e4", + "kaspa_address": "kaspa:qzzffgsuee92pck79kr4jjru7trwggpt63avzsufxseu7t0agnrszcyhrx35w", + "ethereum_private_key": "0x403c7ba4767074992b62d20bb685dd8d805141886b52e526dec971ce6c3fa5d7", + "ethereum_address": "0x0772fC1d0B96CA9000F31ee7E4777927A851E403" + }, + { + "mnemonic": "praise traffic dutch material inflict obey jump list change spoon heavy method", + "kaspa_private_key": "9f2654e25c31e2ff5aa2d6a50e48b424f3545e55cc4677ef116454c8f4afab47", + "kaspa_address": "kaspa:qpz5gvk766kqk22q97azyz680gwxjqtn5rpf4ta2xqlpdge6tcamcymv85fd4", + "ethereum_private_key": "0x3cb044288da057e544ea205dd1349277b153109c2fc7b8ec73ae529a2ed0e883", + "ethereum_address": "0x901b62c41eB5a9EABC2339F0810B3D9A5f065Dd5" + }, + { + "mnemonic": "blade owner dinner bless knock illness someone awkward liar neutral kit banana", + "kaspa_private_key": "ec7e02ec903b80286039e26ca387bc5fef534eb36625f9058e83af1777c41b32", + "kaspa_address": "kaspa:qr3nlzre5rrvs7dcva0qh6rfs35qvqr6lp4m72d8m49z5tqlr0epq04lm83h9", + "ethereum_private_key": "0x3ed038c7a85b7210d3476cc882a2f1e5b3098fdc02b2bbf122f6325b5cef598e", + "ethereum_address": "0x73C8670780E6Fe1Ea0C1617F89507A11D8E0A812" + }, + { + "mnemonic": "fun teach harvest order stock social basket actor test fitness shock potato", + "kaspa_private_key": "9a049bc510be897c19cbb904deb353cdc04c354925759936fbb36fbf4c685061", + "kaspa_address": "kaspa:qzpdmg05kc9jc5nn6uxy7d767qq0x4zlhcqdsgv57n6el6l6g5a2qcttkda8k", + "ethereum_private_key": "0x179e86a1cfdbed39c23888c3946ebdee90f1662cac7aaeeef3a8ef082b4b251b", + "ethereum_address": "0x15c8Ed36bD8265E705874361d0Cbf79BadF463C0" + }, + { + "mnemonic": "rocket rib elephant pistol evil exclude unfair rescue raise enable best cereal", + "kaspa_private_key": "a8d64f82c2e4f42d7fcf98e80a10fe97f7c1340efaf9fe571160180f0c37112c", + "kaspa_address": "kaspa:qqnxddh2daamlufc3d9q7h8xxtlgjaukp2qfm8ujrfkafa4nsdzgwgrwth3p9", + "ethereum_private_key": "0xdd9e6b2c4451d70c3f994a600c7802ad4fb9d7a4d23eaa08ea839ac3f78fc91e", + "ethereum_address": "0x1e66a4831af6ec26B702F344b9934EA3dbDDA95F" + }, + { + "mnemonic": "first thought quality rose unfold feed fade know cream potato wrap advice", + "kaspa_private_key": "4ddcfb729f8b8cc6d5c878e1851ae01fed28f8bc58336039dce3a055dbb88f3b", + "kaspa_address": "kaspa:qzwv7v2llqmkrt0rcq7nl6fvrv68dp8fv7pk3uuhq2dl02ws8nk9k2cq63e50", + "ethereum_private_key": "0x73e65260363b70c174d015863509266ee39c7acc7f714a087347a07e6a03cc8f", + "ethereum_address": "0xfBef97270065ad631d84567683563c21903E2caa" + }, + { + "mnemonic": "ethics rebuild pass use post season west coil knock young blur robust", + "kaspa_private_key": "31c6f5b911c2073d5b15515625708537f90f7ad0c1954b5f9cbf7b5e9f497a13", + "kaspa_address": "kaspa:qrav3r6gnxklflag6hn4l8ef3nk0vlx6ah65x4gz4jep87f8k3g0z264rzge4", + "ethereum_private_key": "0xe20958e0cf4e6b1754a14719d610f297954447f89412431f58fd206edaca864f", + "ethereum_address": "0xE20143437e023db5a73f4Ca26d6846Bf7E506453" + }, + { + "mnemonic": "focus avocado square enable exhaust render state room shiver whisper fox phone", + "kaspa_private_key": "0b3be7a17c0cfc23cd94700a1ab9947fa5f576cdc4be55c1e8d922633f90e652", + "kaspa_address": "kaspa:qzfqjfsqxd5kvum9986pynkumjdru5lc4j450j3kpug5fa587q7ggy4q556ks", + "ethereum_private_key": "0x9d5492bba96478320bbf7867d6df6309797387eecc26d291f550b005fce03d35", + "ethereum_address": "0x01Cab7873dA1e920CdC5E50B13189fB540e716f2" + }, + { + "mnemonic": "motor track share leisure daughter venue exchange uphold bus ten able tissue", + "kaspa_private_key": "7a310fe787bf63e195f06e1cd6846e2789c1914946bfc73d741b9a5e85fba6fb", + "kaspa_address": "kaspa:qzyqp0zlaf8xv5xk5sx5nfrpjlzdt2cw6cczvl6w0fwcxpujvs3nzw6ywy2ks", + "ethereum_private_key": "0x6ffb00ec03dac95329527e44701c36be69821fc040f0ccd8c48c08c7bbf7f157", + "ethereum_address": "0xa5C9dD901703B84DEED6947d24c1d1fEf029E42C" + }, + { + "mnemonic": "era have over enroll clean pink obtain sing rather awkward junior ride", + "kaspa_private_key": "a740237d42371c18ef5369f0d8900a8836cac4867a7204b551c0e7ace949d459", + "kaspa_address": "kaspa:qp8qxwvac5q4gtc9kw9eyxr0xfgetex3k4rsx2hhmzlrd4xj3rrtc8ltj7p56", + "ethereum_private_key": "0x8b32671d1c1a35ce07647bc9b597a9564bca6f15ea2381e78e6eb98571753a0b", + "ethereum_address": "0x65536d8B10B65c534c64Ca96fB1e1A2bf7b58486" + }, + { + "mnemonic": "wine damage seek above clump perfect slogan review scale merit rain true", + "kaspa_private_key": "49b153c2c337c5823c06540ae3975f3c44a4fcddb1c364da0913817f9d529737", + "kaspa_address": "kaspa:qr32kpfxuknlk988tmj6thc0xqlzgdw3ejl9ungx6fx7jh0w36emsxe55mgh5", + "ethereum_private_key": "0x5e9c203ab70457359dbb942f7358502dd014a0dfe3bc0c91b3aa36c012a98ccb", + "ethereum_address": "0x2B0B6886f990774ba8c3DE5038bb3214Cd350e26" + }, + { + "mnemonic": "divide bone salute end sea wall thunder wall conduct symbol extend turtle", + "kaspa_private_key": "02fbba3335d3467ebff4f6a2e442aad80c822f098a024de35b4740b9db3a9574", + "kaspa_address": "kaspa:qz3kcx43u37j7tx0ntp3jdmjhuf9unhtruzff97mejcluw6v6alqkdmkzwvpg", + "ethereum_private_key": "0xcd7ce153f172f4ab468ff5588c19d5de20caf28ab0e42894741b53f46268241d", + "ethereum_address": "0x44b072a861d0f1FA6d68604E9AA14Cc3E4575eF0" + }, + { + "mnemonic": "meat faint road live grow surface east undo hungry nation draw toast", + "kaspa_private_key": "97a988718fc98ab680a84b38f0c5523c1aee750e85dec8f926ba28fed91c4179", + "kaspa_address": "kaspa:qqushswj03eql0pr8m2tcfrnvfeclccjqxw99flmewq8xs2ezj05y0y78m6mw", + "ethereum_private_key": "0xc9a008c916e6d8aaa58a0922cafa17a2a3cdb7fa78957fcebfcc43174031ae49", + "ethereum_address": "0xaC15B3AD2298122aB2f06Ead09a315a52acEBa05" + }, + { + "mnemonic": "meadow pool prevent roast use mad grab sing owner burden rather salad", + "kaspa_private_key": "213ebe6408d1dc6ee85ec8dd2519b1dab80b7de9a10327f9d241eb4144e89625", + "kaspa_address": "kaspa:qpvchq3nagfgzc3ecl69zrzmj7vvryr5e3y9ccse9svv7pfp4wa4z545zlp52", + "ethereum_private_key": "0x483d010ddf4eb6d7a4399a8ea14c1c29900923daad850754140b0b4322cb3e68", + "ethereum_address": "0x18232135CBfA62aa1F8DedBbafa82801692b5602" + }, + { + "mnemonic": "cabin squirrel degree switch word ahead runway skate hundred wrist motor equip", + "kaspa_private_key": "339f5e92de7c6c8bb92541afd4947992598f4c46e33b082508c170074998a3ba", + "kaspa_address": "kaspa:qpd8fjp974wa3mapfp53paqvrvl8ypn4s6pv2wy2w5hegc4e3k04wd6lv02tk", + "ethereum_private_key": "0x390e06551028c53a4cb6a3439f814d3804d82ec994ed89436c1436e3beb1fb80", + "ethereum_address": "0x5188E27FBF40245300Adb2DFD25E72C314d1b8C1" + }, + { + "mnemonic": "resource zone license merry expect evil cute injury burger december stuff invest", + "kaspa_private_key": "6b74110da4dba46abf66dfe5c275173ab49a0c4180b3dc94f401179aaddb7260", + "kaspa_address": "kaspa:qq3h0tnd4s47ylg9chskwqnx3928khhl554dshmjdpk64nm7mp3xxsfpgcpfc", + "ethereum_private_key": "0x15239653e00b635a14b4dcf38c10548cfcb1bc1398ae9a18df87ad2c702e8fc4", + "ethereum_address": "0x3A913107FFf20Aa9A74b870C98c9F1a45CE2410e" + }, + { + "mnemonic": "dune legend cage diet clip injury pottery you dentist tail slush firm", + "kaspa_private_key": "7fa2566b7e206594a6c13f3b45616a7de86a0dedf01690720b3afea45512ff03", + "kaspa_address": "kaspa:qzg306dxxrmxmagkgadehtrpnd0my5gw6cm8ga854x84pekwqk9k6z49wggt6", + "ethereum_private_key": "0xe32396df4fb13df967e23b788660b230416011a9ffab9a3d0caa03c67d573547", + "ethereum_address": "0x458091B355E0BC8EfC3a51558e31F1CC0AB3fFF2" + }, + { + "mnemonic": "boost wood sausage eye ginger basket multiply cushion clay hobby buzz elegant", + "kaspa_private_key": "458a4123e0301ec71fafdb3c3dcc4cdce746f95d911aec65f133ec28bfe381f5", + "kaspa_address": "kaspa:qzxxcw2h8eymkfx6y6grqgcj9cmd8gzf6r9nhaavsed5t69kc70p5wsm6pt36", + "ethereum_private_key": "0x3eee9549cc9dfadf8127208f0c616d9f50838039940c40c3b40525cf40ae6cf6", + "ethereum_address": "0x327EaD2c4E232c095cA238306F735594F34d254c" + }, + { + "mnemonic": "increase fiber trip pact price mushroom flat lazy narrow pelican wrap raise", + "kaspa_private_key": "908effcc7e2747c7119d7c52ffdee81f15dfb160b3407912f3ed7efb1c36b022", + "kaspa_address": "kaspa:qp2vyn8dzdu3ywk67k0t7kzmsjr2h7m29rfladlec844ea2s9zpdk2vmnh0lw", + "ethereum_private_key": "0x1199481a6fee17c8c6bf5448894e571224c8ff93c49ef2c1bc6617a627f1e894", + "ethereum_address": "0x35BB0e0578239C847c892dFb6e7cd486caA8CDBf" + }, + { + "mnemonic": "crop advice yellow sample ostrich nurse utility season talk casino naive stick", + "kaspa_private_key": "acf90893e0178dd4803e019777aa4bd8ff804aac9648c50fb9c12e424045a378", + "kaspa_address": "kaspa:qp2kjt38kcjd2576vkp4ke5cm9uyljnltfguu3gv0wl29y64v8syu78p8gk9e", + "ethereum_private_key": "0xbc5d66e6b50b6fa39c086f43058d1cfa545fb6f34ef15daed4a2dd5802dd3b87", + "ethereum_address": "0x4496D263f233C93C2f095deb4B20edF952A12Ee9" + }, + { + "mnemonic": "priority walk situate manual survey have vibrant animal enrich mystery pink true", + "kaspa_private_key": "06b57ae0928598ca7cb61b4e97224dc94c8530043b718ffb9f71b8ac66d3904d", + "kaspa_address": "kaspa:qq0nh9gdyymjtaqseqk2jhq542xlccva4nr7tlsc26vhkf5g05y3uuw8e6nwy", + "ethereum_private_key": "0x09a43a0f63dcf9f012c4324be24186e0f676160d4b8a23e28373a50cd1eb7e2b", + "ethereum_address": "0x02F4A52875170d052A8CA657f636509451E42FEE" + }, + { + "mnemonic": "crazy addict almost rich globe vehicle flock undo session toast civil vehicle", + "kaspa_private_key": "1ce013764ace598918b0bb7796a86eb5d9cc5fb7f4bd13a966cb4a3922873934", + "kaspa_address": "kaspa:qppaa3vr09qz65c0xwlmk75lxx6jj9pnwaqjfd78hwvv40gr7nlvcjwx8c0mp", + "ethereum_private_key": "0x011ee8425a44c41fb0a9a64a9ec21f75a401fc568cca1617e3e17ae609b19c97", + "ethereum_address": "0x496Cf52Ed6a00Ac0a22C2B83DA37A20c3078885a" + }, + { + "mnemonic": "vault almost measure connect runway addict unfold actual tool unusual bitter visual", + "kaspa_private_key": "7d34f21407e0f5b7639da5f160c60f7731cdaf09fcf465d3a429082661e96e33", + "kaspa_address": "kaspa:qrsntvgvlurl3lrhqgss4xhjnvjc40yaj2qkkckyaym0gjzw69wggytx73e5x", + "ethereum_private_key": "0x680c0f55e68d5f12ccecb086d9d5891b2e2a12868f7acae74d5e4898e8cf0ebe", + "ethereum_address": "0xdd1C91C66703b26B8914Da05793CBDF8fcD8c72E" + }, + { + "mnemonic": "pet increase east inhale tomato range bacon outer shaft material myth imitate", + "kaspa_private_key": "fd81728045a29b3e5d9fbf5fd73aaa96cb4ea6ddb9a79ec655245fb5b967e09b", + "kaspa_address": "kaspa:qzqs76ewkpnd5qzwt4le55edgv70xhp2hk2c4c2zg04mcnplpq4d6jgzlcfpg", + "ethereum_private_key": "0xa70bc11470cd31f70fccf4175631f7aecd67b5198afa68fee645201993498a05", + "ethereum_address": "0x8f6BB9460c4F0B3d137472082a0B835015b3C4B4" + }, + { + "mnemonic": "tackle pet tube scheme engage undo leave dentist immune dog prepare head", + "kaspa_private_key": "0a4306717fa8405afd2ef78ba8ee0b1da2a92a3faf64b683bf9f705dee50585d", + "kaspa_address": "kaspa:qpvj4jp584rjgq4sc352ghv2tqggacd27ftmw7ptydx5ujumd4qrczwzr9qgn", + "ethereum_private_key": "0x7deafa09c195e4e06ec6aee754827354b26fa2c4743f154bff693baa4fcb2505", + "ethereum_address": "0x492d7A8863210b6Da6B95A3ef14E0dc188bdb937" + }, + { + "mnemonic": "text hunt silly radio pole tobacco enjoy valid correct poem awkward egg", + "kaspa_private_key": "b8d854144cfd23646b035accd5decb14c407dcd17c0ad23135f48dc854400b96", + "kaspa_address": "kaspa:qqlca2qcest578fe2j0z37t7ghmz9x07jusy7ckzt0gvaapqrv8m74funwkf7", + "ethereum_private_key": "0x1efde416147983946645b24c6a8a993cb326a03d826f7f9d10e7fc2eb860965d", + "ethereum_address": "0x24f8fbfA87300e3D5138864Ee30198D6f3feDC50" + }, + { + "mnemonic": "shoulder firm outdoor swing naive unit rebel model educate gesture table brief", + "kaspa_private_key": "9292aa00bfd3d1fcd61f30a2e4cd8c4e3c7865c19c7c3589296d9a52bcd6e297", + "kaspa_address": "kaspa:qp9u97vs9ekylkr3k3xsxrat6zartnfz63aej6ez8cp9p7xkelkw52jd8ksgg", + "ethereum_private_key": "0xec9302b8b3877c0264340a2ee886395c4b14f4943b032f6bbdb40c28d3493a24", + "ethereum_address": "0x72932E7230D950f66F104b79D37B8FB3b0545872" + }, + { + "mnemonic": "spring raise tuition joke one indicate ordinary thing amount winner universe range", + "kaspa_private_key": "0c8425533705a25aee0b931394f7dee0d31b77d9c505eec24fcbfab052b486e5", + "kaspa_address": "kaspa:qquu723htuzh7wvxm89mjk98zm3n9xuejtv5flkzw8rf8plgsn9u2c6cmgcde", + "ethereum_private_key": "0x10e69462051bb578505017038e12fff6af9825a3943f4a02bd6ac5f82edece7d", + "ethereum_address": "0x2a45ee761377d0f69bD849Ce804ee11bE4F51359" + }, + { + "mnemonic": "skin output book atom flush dry snake thumb member dilemma van ignore", + "kaspa_private_key": "9c9efc1298752f92d636a0deb0c6afe426a3f7b9b619f58cc4bc2265e85a3592", + "kaspa_address": "kaspa:qpperjjmjefktkcf9ugcqjujtc4tc6hl60fyrf2shn2jjgj2gut326ymq2hme", + "ethereum_private_key": "0x4732ee40a72e120d4e41ceb3e65507929cd4cfa25372625a4d2bce1676e98b31", + "ethereum_address": "0x7783416D47E28FE1906d517c22475F08b2A0d1Cb" + }, + { + "mnemonic": "sentence write helmet ring one trade neck hamster lawsuit juice metal seek", + "kaspa_private_key": "4672dbebbc9eae4709559cd3b3d6a8b583affcc76364d457b2e9e90f6af4f861", + "kaspa_address": "kaspa:qztgjjdr2rpghe63m4lpg0ypezrvmm9zs09dasf96f5nf5gktkgf78030yxpl", + "ethereum_private_key": "0x2b2b166e5841cb4f148d76eb992233e66fe6a7f543c02057132521c31baaa053", + "ethereum_address": "0x5a5630198b03Ec4dc04F24FB25D68eA7E50205d9" + }, + { + "mnemonic": "private orphan couch insane foot club movie multiply unfair shoe there example", + "kaspa_private_key": "58aa796d52c29c8e86b3d9888fe4faf7d6263f585a5ceac8c72fe08481a51bec", + "kaspa_address": "kaspa:qqx47xhvdfp3x0xra5fhqxct8asdw5f8valdrm6ljse7vx4qquf3kxc9yvwn9", + "ethereum_private_key": "0x84e80f25d05c6ec90c65d73c95b24da9d61981c5144f4c657a692aca5e30a6f1", + "ethereum_address": "0xDcc697d383D4F2242c180163733AC3873B05CfFb" + }, + { + "mnemonic": "approve visit state crucial shield minimum pill hollow glory believe track smooth", + "kaspa_private_key": "93eb1a91b126f2228ab221efbc999afb058370423263d0144a6a794ec22474ae", + "kaspa_address": "kaspa:qz4k46wg5nf34cnxtk329s5n7hyt6h95tdcpvtumm40n894nl3teql068fk2l", + "ethereum_private_key": "0x68f1e73d768fa6c5603a97dba0b80585a82b8e503c4328a0268941422c284c11", + "ethereum_address": "0x386cB7913C84d88bd668A9C8524d84F7D55cB687" + }, + { + "mnemonic": "scorpion idea quantum agent basket gown whip yellow refuse dance choice daring", + "kaspa_private_key": "b66f76d6e24c5869f40cdb79f06778b2734854d29f4e27a2774a7aac407bc0ec", + "kaspa_address": "kaspa:qr2264zejt2fukmz8qy0344ffn5yp4tetfnvc86ytftp5wxlx5w37f7wg0f38", + "ethereum_private_key": "0x68c5a4813b378e6ad3bac5f9465b49d102d5cfe4b33dc0ba17a7f659a347bea6", + "ethereum_address": "0x2B3670275f8B2898daAC959739F382314524a254" + }, + { + "mnemonic": "water transfer pottery dismiss assume exhaust away ocean ankle hair perfect club", + "kaspa_private_key": "739ae8612bcc957a26c7e10d22305b6401102045a8b0c8af78acb058fffb15dc", + "kaspa_address": "kaspa:qq0z2vkcc2wqqf43wqzskds5lfvzuuexnycsmylkvypfxaxwrmllukphypnc8", + "ethereum_private_key": "0x4f9b36d567647a8f118b2bf8392fb788c2f5fb0edfcdb407a45ee5b4d83d71fe", + "ethereum_address": "0x5CeDda10721b293b9653B57eFb3966402ea36506" + }, + { + "mnemonic": "mom broom swear rebuild tray flower mail weekend ignore measure music tree", + "kaspa_private_key": "a1b3a25b88cf1623a288797cea85463b00824362df8da32de6730f021b763907", + "kaspa_address": "kaspa:qzwfvk8qzt0zwm6d0n832q6ak8tseaev5hgw26pn9gkjrnjq8mwaz6x88ctew", + "ethereum_private_key": "0x1b6b808bdc117dd08bdf0aedf90718f62b9760788af6f755d7d6a5d9da4fd102", + "ethereum_address": "0x79691E192Bf9365CF85d1e47f16e46ba1D761fAB" + }, + { + "mnemonic": "caught east ensure move floor enlist rescue later shop victory sell budget", + "kaspa_private_key": "21efa1924ddcb6c217ebbee5c918f67a0acba25ba92fb989a25852f75440be0c", + "kaspa_address": "kaspa:qz9ck5hwwzv5r9t57ggqhqx0sg0uq4zsmuvw42qkr6qjln3849zyzqhdup263", + "ethereum_private_key": "0x51622196d04f28835bced3010f52cca734f1822c7262ba0877469abe8a7c6e31", + "ethereum_address": "0x0ebc3aC1F62340c1cFF0C7bDBbD34210b36c11fb" + }, + { + "mnemonic": "claw fortune rich fortune frequent repair skill ivory plug icon fit wool", + "kaspa_private_key": "2c4805c86a8fca74b95782950c1b1f4a80737fbb1f9686329d8fc568aa4109bb", + "kaspa_address": "kaspa:qqa2dvj5lggtjlztw26h0rn7n2sjyjgsnsgtaudv9fe3zqz8g2dawlqjdh9hw", + "ethereum_private_key": "0x12fe5257d676910483c5d32c35832d130013c43a3199bb8ff183d704c2f92687", + "ethereum_address": "0xCd57595D8686C77Eaa23b5A1A4d00D0DE5806BE9" + }, + { + "mnemonic": "hedgehog require crystal satoshi tube mule job keen fringe ring jeans code", + "kaspa_private_key": "8151f3a9b0f7a9d35335fd6ff1f3d19bb2497efd1f46df305684eb7403375c04", + "kaspa_address": "kaspa:qquzr9lf3g6udhv9dcd857rfedtfvnecdhrrlqz2j8e4s0kz7nk46qd8wsyms", + "ethereum_private_key": "0x3ca9f3fa44e067b003b2183cc84cac68ba7bbbf3a09c5b7ee4aafed2aed74383", + "ethereum_address": "0x54C25791573Aae4e0999a5548E3F69B68B52c68A" + }, + { + "mnemonic": "famous favorite shaft salute coral soup spring rally plug demand lemon member", + "kaspa_private_key": "6a9fee7af03a1c7a13ae3bd043c37bd04fa5521114614a3f61b20aafc5391a7b", + "kaspa_address": "kaspa:qzazkxh3ut8608skcamfd9d3w4g3u9tha86zxazfra28uk243hcn53tdtu47s", + "ethereum_private_key": "0xf20237325e4d0ad5c1f02f091de48198a84c796c85fc44e78bd5961a88d306eb", + "ethereum_address": "0x14fD65bE8b64711ccF754F57ee4A07547Ef0776e" + }, + { + "mnemonic": "click exotic emerge brain arctic beauty laundry custom aerobic guilt place soda", + "kaspa_private_key": "7ef6e194e140878aea5c65afa157e31a328cb60cc97293be25a529baa6b91af1", + "kaspa_address": "kaspa:qq5mj8hu0w25hwk6rpzjlkruylj0y39yvt5z3zyekjl3zz2fp9jq6erl9ewx4", + "ethereum_private_key": "0xfe199c7091a671142f4c1361d297805aa4cd02125d37869dac69bd52332cc7dc", + "ethereum_address": "0xEE277D518757748A74120A5b4f73DAf2728b2834" + }, + { + "mnemonic": "steak mutual general wealth identify okay candy source tank rose arm cube", + "kaspa_private_key": "ca4c88b3babe0e56c8638c819210d6cce3d5c6d2f681a833074d9e6a2d7ba488", + "kaspa_address": "kaspa:qzmt6ewmn94g233nn79m3atwxwgn494eaetpzfkvmmkrtykq64d3xmnrpgkaj", + "ethereum_private_key": "0xbc1d1793051a59932f237414eabdf18408b9045f419c98232826b2ef81f0e728", + "ethereum_address": "0xF68078a1FbAb3104FF853a9E6e82c9A37c20095A" + }, + { + "mnemonic": "another swamp proud argue asthma dynamic panic gaze nerve debris tent radio", + "kaspa_private_key": "397f84a4343ab3f3313c2e1e3a3af79c3da49a0487b9d6be42d26860dde0041d", + "kaspa_address": "kaspa:qqzctpnhxncjuv932uuwjv6dw46r9wpsnaq6grud5wwy94au9rh0604m60sg7", + "ethereum_private_key": "0x5ef9c70b2af392911c3d7df0bd6b895aed0364ad9224c53bc1141b66b88fbfd2", + "ethereum_address": "0xf5857E9a0076D45601150287Eb9Cb86568Dc6970" + }, + { + "mnemonic": "rookie donor stand buffalo misery begin panel kiwi mean reunion into fuel", + "kaspa_private_key": "8d7690570fc04e42a4c04dc29505db7624ab8394fde4c1902d0bbf7b49522be8", + "kaspa_address": "kaspa:qq44rhc38xuh45vj2jnx0ajsx53us844qnkwyp3drqclq969j9jksn9clgrdh", + "ethereum_private_key": "0x2aa0ff6bf972297734033a624be69ad8e849e87a4fb0963f00883abc8049028c", + "ethereum_address": "0x39Ca674db645438034f8f37f84b4e2ecd1810dF4" + }, + { + "mnemonic": "waste bag crouch insane wild lemon hint arrange shaft head super frequent", + "kaspa_private_key": "dbcf4fded61d5435376342a0ef7c4890f086548aaf13542bf51ae17e946ee779", + "kaspa_address": "kaspa:qp8k8mt3q6amdjkvxsrd6npz0n5hlwzmhx3c3lpe8e7gz3scxrjmqqz99xmu3", + "ethereum_private_key": "0x0b23e4e968a59a13cc2b178332ee299813b537098bce25a38f3b8f264a7db4b6", + "ethereum_address": "0x4622410d1C8910E2F3da6fDaFbCbeEf20725a5d6" + }, + { + "mnemonic": "upset cradle brush supreme scissors search kitchen ensure gentle between weird fluid", + "kaspa_private_key": "c02189935af2117f4d8e9fd3f4b8b8b6a5891e7e7303c7ef212efe00890a0f96", + "kaspa_address": "kaspa:qrwej5pzhs864snp4gqsaeu4k3pz785f3773nggsjs63p9uhntxcu7k0yrx90", + "ethereum_private_key": "0x70003d53cc49808887734b0d555500db92b2e00ea4f5cea87a4882030cb3f276", + "ethereum_address": "0x33AAEefc78cc8eB771a7f87c7fF4184867ad71b4" + }, + { + "mnemonic": "pulse inside brown cart live hunt crash roof network near poem paddle", + "kaspa_private_key": "b4a1d17f2a9a5bff2d41b29dce2d6aae0a6b89fa4baeeecb8024807c0f0926f1", + "kaspa_address": "kaspa:qquqdkgmr733zxlkzy373hn7mcvzktfuh3evekxfh8a0cxuejr5f7z2jrvw67", + "ethereum_private_key": "0x9e0de7e2c954ab6d74d80c2a10e29717dbb7188d0da877f7b30af7aaf7633304", + "ethereum_address": "0xB8D107eDA31051F758422e5091b66ADBefAF09D2" + }, + { + "mnemonic": "myself affair prefer anger high cat decrease sudden nose sleep captain behind", + "kaspa_private_key": "5d0315347c0df41a81d59ea497175bdd1f50428a74450656ff6c2564be10730b", + "kaspa_address": "kaspa:qpn2upsteky6376863n5ljvgzcz8clpuzjg70kfqzxhl4ejnr2fty8gseeavj", + "ethereum_private_key": "0xb8837c8450dbb39ba9be8ab7e6943064fe5b268c401d5d8629e2bb2ac9220386", + "ethereum_address": "0xDBf4abECa1d96065b5cE1CD41B731f7Ae111B7c6" + }, + { + "mnemonic": "indoor once title lift card age plastic suffer another depth dragon shoulder", + "kaspa_private_key": "91698d797db6e02a7ae245d414ca2f1266733c4da250fa7038efab7628ea2d2a", + "kaspa_address": "kaspa:qqk5xf5py7x92ujgw8nfttz5fw8pank5tl02u4ksz2804qe7cd82x82z5leqm", + "ethereum_private_key": "0x233100e48ca77aa2e40440a618b0da3c868df6194ca31f0d29ed8b0d1ed9ab9a", + "ethereum_address": "0x6B8869BBaE8DE517e133d8e70484B9396dDCadB6" + }, + { + "mnemonic": "stereo host idea jaguar artist quantum provide chase federal bachelor bird engine", + "kaspa_private_key": "50705a45ca451fc23939e0ce0f4dc993e413d43fa5b1799eed06f209a2f224f9", + "kaspa_address": "kaspa:qz6f5xyh4h6spw5q9nfruynyey8fj4j56r4nwx3ucpz2c48wwvjzykqn5taue", + "ethereum_private_key": "0xd43647f4a69999f472a75dee246d589814b2aa2aef6e3a7eb488faf865d7f3b8", + "ethereum_address": "0x6319110Fb5be3BD950770C4b6cDbdDF24f17A31C" + }, + { + "mnemonic": "obscure dentist title example stable punch decline divorce tongue assist approve wall", + "kaspa_private_key": "ebacea6bdc33f7a5259dc75f4c0cd34412946e2257f340125e0b61cd38a70572", + "kaspa_address": "kaspa:qrqja0x4wq6nhw23qwwlhh8c0r2k7l9z48yzy2f7wf09ewglsk9px3dnq6366", + "ethereum_private_key": "0x33e50b4e66bde516c4f5bd4f58713e37994d5fa677bfdcbb0d1e737e1bbab24b", + "ethereum_address": "0x9B1f04eAbC55bfC4245B7fe0de2a1598106846Bf" + }, + { + "mnemonic": "ocean example excuse neither spoon limb donate amused talent seven mother write", + "kaspa_private_key": "67d5062cfd514ad59fd80368091dd7c36462af6559c643e9acea2441c18555e7", + "kaspa_address": "kaspa:qzv0xrnesun0nhvclmdxrd0rdhzpkcu6p2atapfnm27wrfmlmvnx2rvtxp5ld", + "ethereum_private_key": "0x8f44489baf0b912fc0ff7be92555b6373e149c203484895c0f1a6c35eaf35b41", + "ethereum_address": "0xec4c400af8017cdA6dF53C7B27F6DeA010d684D3" + }, + { + "mnemonic": "critic warrior coil street grape misery rice magic palace rubber raise theory", + "kaspa_private_key": "02358b83ef8706663a4a05d95a88ddc47576f001eeaca612442549c128cb345c", + "kaspa_address": "kaspa:qz7rtpsnlt73uy3rvfs68u9jrrr9yax4h5runvz4hlm8x3gw583zc0sgt4kpk", + "ethereum_private_key": "0xf8eb5d7684b5f7ecfc802897cf72c4ab82ab5edee546c6dffcbc64209101a594", + "ethereum_address": "0x4925ACe13De82E57B7578a894384a1e6D4DE3D18" + }, + { + "mnemonic": "ten spoil glad engage spike this seven animal very salad crumble pipe", + "kaspa_private_key": "15f4ca8f114e9b42c9795c1925593d09ecf1ab142315e7c1141e1c84cf53f296", + "kaspa_address": "kaspa:qz7pw3q0m2ywllmzzatj2sd2adgf9tz332h7xwlnvy4k9wrrzauvkad6sg7q9", + "ethereum_private_key": "0x034f7348b1ad3c52032b3b7193cd302b221e62c6268be98563f30cc6448f7c77", + "ethereum_address": "0xE59839f8102b061830E2B9D813538151aA868A93" + }, + { + "mnemonic": "lens speed erase pulp digital pluck foam heart unveil spot mosquito boil", + "kaspa_private_key": "9032da5cb2798087f549a1c1ecb0c4c6c9978aa2afc8cd9cef75fdcd5b145b3b", + "kaspa_address": "kaspa:qpzjunmdd4ckz0qwe4cx9z85ya7mth59emx4nu3wdfprqxs9r5ulxdymta55p", + "ethereum_private_key": "0xea5dfce8114117ac49f1a57ea25192c012c1b0a44377d6b1c94db1c3a0d02c27", + "ethereum_address": "0x2B8631f6BCf538349F56d55771D33fb296646ae0" + }, + { + "mnemonic": "law drip turtle prosper sorry toward scout paper connect slight clinic prevent", + "kaspa_private_key": "fe910b218338b95167cc6fc8e7324d6383ae729197133e3047377bdb4ef618b6", + "kaspa_address": "kaspa:qzf2650e8q9t6synq3xjsf5dkuyy738uyuqgwe3kfd9d65c5kzlr2msgd7562", + "ethereum_private_key": "0x469bc5fa38431bb10285af36f05e25f692ccd8a36473f1947915e12683b1b583", + "ethereum_address": "0x00756cD9C01c1E5DC581221DF003fbA4a5BC0B65" + }, + { + "mnemonic": "know around gadget rhythm tiger barrel giraffe motion enroll sick cry oppose", + "kaspa_private_key": "0a6306d7a673b7fe1964b571ec0e599b7604c33b67ca47dcbefe7d488a5998a6", + "kaspa_address": "kaspa:qrguc40g6qzwjye0f44qjrky4cen2f4ky39q7y8cpq9ulfzwa24ksgnamxf44", + "ethereum_private_key": "0xfd3eb47b1662e612e17212af23faa6e72a3cbe4a72a42b1de25e09e9a154ee9d", + "ethereum_address": "0x49FB26E3020409Bc4d6A581091C6551914548524" + }, + { + "mnemonic": "joke tired economy tool home pitch early fortune learn crush walnut day", + "kaspa_private_key": "e7bb1fcea477cef07be907cc130567e72e690652d1e1f93edae550bf492dc559", + "kaspa_address": "kaspa:qzqqq6c70kd2qkv8qll22dk8f8qgyzu3prt839c5m55k8pe3c589jjd9z2nuf", + "ethereum_private_key": "0x1376c376b8238590f93c3f7fe1355884bfd3f097293e19031444365a96e68472", + "ethereum_address": "0xD6254508DaDaEa4b4Eb41D54b931f55b4125B2EB" + }, + { + "mnemonic": "peasant define negative liar mimic helmet fruit digital property arrange fish forest", + "kaspa_private_key": "d05aa865229d5bb351e57dda7f607abee5dc9c428a201985670e2531b9a8d506", + "kaspa_address": "kaspa:qpy9g7tplxax62qcma70qt380qz4pfyeysa2cj4cj2kuhzxygx6x7aqna9a2r", + "ethereum_private_key": "0xd526ac5c938c64e5500665cef492430f1d2a00b22227601ebb12cf520cc9296d", + "ethereum_address": "0xFD0EB06Cd27B74daf8bf86DDfE2ed4e3dC1C2Ef9" + }, + { + "mnemonic": "elbow often tragic name stadium south equip state alarm sketch bundle order", + "kaspa_private_key": "8f993eeafd8770ee451d324a91b5626cf3374b7e34af2cdbf24b301be5b34766", + "kaspa_address": "kaspa:qz3l79x5eq2y6lejg02p0kt29w822pt33h8utrdad8s4ag3xdm50vfzp5yuzs", + "ethereum_private_key": "0xf013b125473a63a99fa1bbc44c195c5f31b10853c4f1675efad7b587932e1a9f", + "ethereum_address": "0x2C6faf4bD2ae25C1772d2cBfA15ADf062B792D0f" + }, + { + "mnemonic": "visual end twice suit mask mule mask castle enhance stay bacon silly", + "kaspa_private_key": "de5b3558d744fe8a8a27f4035d45de76a785f5502b4f28a1735b83fc14ffbaed", + "kaspa_address": "kaspa:qq67ljvy08vfv6uy8eakclllvxz8lc9karn27wq4er2yvtkg9nm3x0rwqvjy7", + "ethereum_private_key": "0x444f9fa5dd7d539f8549960f6486f2fd322bb5d933548ad784e66e26ff048ed8", + "ethereum_address": "0x7167FbD3d17420c8d2440d18c16df6Fff3E853fd" + }, + { + "mnemonic": "relief animal position oxygen kingdom idea find disorder ivory crunch bachelor bike", + "kaspa_private_key": "b2da89ea7ddd0344753a7399ccdd4b5bc742fe934ce3b1e638db5e3b0ea0b1b7", + "kaspa_address": "kaspa:qpqv20vxepurtsfw7pjvgxsj8xry0x6006jqldlettm5kyr4qpw2k2ld8uyhq", + "ethereum_private_key": "0xed4666f8d984bb1b0a107973698e4b028c12d8987d1d2f2c508e7fb09c6a1e85", + "ethereum_address": "0x76372b7Ce31D5D865cf17C6dC3b290F6AaAb252f" + }, + { + "mnemonic": "forest circle drop garbage young other online trophy mixed hello recycle divert", + "kaspa_private_key": "3fccecf8e6d0a25798c0268f06ae1264633ae4702476c1e2d58de5c98e6415c6", + "kaspa_address": "kaspa:qqu5ehdmnxvknp2qp5fvexzg4wxrqndf2m4ecy7rp7dqslyesnvjvvlexnsl9", + "ethereum_private_key": "0xc1d6f0bf83c1cc9f183ac771cba4b2b78a22dc66f4068ed58052f63560ed9a9d", + "ethereum_address": "0xA63Bb01B364A18aEeB4A3E8F1339eECd58165353" + }, + { + "mnemonic": "cluster skirt spray student into ten carpet scissors city grid confirm voice", + "kaspa_private_key": "b6e4e66762c78d1776a3cf4d365aab4e3cdd1351939d5c85c1b7e92cf22dbf2c", + "kaspa_address": "kaspa:qpgxdapz089s2ksnykvkvcftls02gzc30wrzqtnmmztvgzf78uyr7zlh5tyu6", + "ethereum_private_key": "0x875b0cb3c5a5f0e94a8eb721b88603477a19c07f299dbfe14abe085f64979119", + "ethereum_address": "0x9054AA970A27e0C79a4a0addFec320967b1FFbFc" + }, + { + "mnemonic": "addict alpha swim neither genius wet author aisle super fox point rescue", + "kaspa_private_key": "458e8619efc0181dcacfdbc3a26644fdee66dba8023f109be6567967d368d8a5", + "kaspa_address": "kaspa:qr9vvs7t52tgfqk4j20njew8mhma9xyttw8322mjuds7znwesecpw7de2rdy5", + "ethereum_private_key": "0xdc259232038a2affb90654ec7f7cc7c4d43db2922d35184fb59f97f6e07e0129", + "ethereum_address": "0xe1DF75C3A2E7a0Baf134703db14c89D71eB52cFa" + }, + { + "mnemonic": "jeans valid possible alcohol two fresh conduct business relax autumn combine amused", + "kaspa_private_key": "c8883b2e83d335f4c189881d570cc59603add097e1d506d08ca4457b004e9536", + "kaspa_address": "kaspa:qz9zaqt8svt48j4tutcckw4xgu2x8u48j9mkshntpm26zz5dg4wgvnytxxguk", + "ethereum_private_key": "0x7238db28ee033bc62bdc6661462cb130f067435ede56130bb0723a640e88b857", + "ethereum_address": "0x5f2662a0Eed532446bEd886bF31E1e09a50f5c1B" + }, + { + "mnemonic": "mango good fan toast thumb exact much swim grit help spatial jungle", + "kaspa_private_key": "4d8cc6fd8fe8206d795fd6371a71ec6edb794170947e6d8e216d1b1021de5f69", + "kaspa_address": "kaspa:qzhckxhym6g3zp7gy3t00yv6ktfgpftmkwfr3n6gjcsvvtcsg0d5ckn9apma2", + "ethereum_private_key": "0xafff8a10c5186ce0c8f336077b3fb02f0fac32be9c7d907f7baa9510b35f19df", + "ethereum_address": "0xc3a36Ea554501DddD91Bd4ac8ECdb0372192ADcA" + }, + { + "mnemonic": "convince help deputy enrich front life discover lesson tourist snake utility biology", + "kaspa_private_key": "4715b5dec1a846f1d6107eec2588385ea0f607bc4fe6bc3d1a7cfa307f338f82", + "kaspa_address": "kaspa:qz3hrune83m70jclzd96c7sf9elgu70lg6lxc7eunmq7w8ualnesyktgveum4", + "ethereum_private_key": "0x646f6a6813f26a211895024dec96c1fc2565005f9817abd8f84315e9468f351f", + "ethereum_address": "0x7A5Af52146c63788cF9DbF5134aecD9A336543A4" + }, + { + "mnemonic": "logic sibling blame ivory like slot boss miss disorder demise fresh beach", + "kaspa_private_key": "4340756414cd0c64e1734c77f9d01a601c47baebaf135ce5d41ca784df8b277c", + "kaspa_address": "kaspa:qqpsktql89zeqxm6dst9tvv8lrs28srn3tu82v42r9cz8k9yw6kp545cjz7j3", + "ethereum_private_key": "0x1998db04754b85800319c02dc06fbc4da42a2c8bc746a04020681e9212584b37", + "ethereum_address": "0x5AB3F56Ef1DAD52997a92Ec0E0209E051922B22A" + }, + { + "mnemonic": "picnic travel remind bunker flee text canoe tail sign use shop memory", + "kaspa_private_key": "e0c094b543f30bc026f4761bdef5bc4767bd263b68a424daefec9a7402acbe8b", + "kaspa_address": "kaspa:qzxrhp642xtf4c5unhdpxfg9z2hypglvhxu82nkh7sq0xty4ehdvgqv4e6f96", + "ethereum_private_key": "0xaea068a181b59a0a338fb82d56904eb29fa02486e0dc4aa5d649a6739714ecbb", + "ethereum_address": "0x5f9384084a5A7864977A88ccEFCc53CfE4296221" + }, + { + "mnemonic": "across frost palm alien circle perfect rent cupboard cluster recycle trophy involve", + "kaspa_private_key": "cba1c2995950846bc9b953c1b63960c4859ddb88ae6e24d3d0836381b102a59f", + "kaspa_address": "kaspa:qrhh85t6vd7u54x8t9j07nv85yh0k3799y66g7x55qr2kc052j4juh4shkw9y", + "ethereum_private_key": "0x4df479cf0753354a3cb59248f64ade1448e74fac64ef3fb594a177307b11809f", + "ethereum_address": "0xd1F26297b4846E16Bcb4D67614e683227Ee40583" + }, + { + "mnemonic": "drink rubber situate swing exotic mixed senior swamp fox core cash actual", + "kaspa_private_key": "1d63b6e319efaf25eb21b9708d89ddf76dc0db1443ceac62cdce8b5d6ca88259", + "kaspa_address": "kaspa:qqz0ezmy5jjc755dwjdlgtfasn4sdc32rx4nm4ffa0z58wprjhz6chrt66f0d", + "ethereum_private_key": "0x7c794fa314f2b80fdb9791244939f92aefe28091f64c77b02a95119e2a1bdde3", + "ethereum_address": "0x9F7C40791ff9FB6B545338dF9BbA86F823DC67d3" + }, + { + "mnemonic": "peace duty word few right ginger mad segment hint omit present bubble", + "kaspa_private_key": "95c9357641d3cba8ad770860f673047ccd66f6f78f2a171635dfa28caac1b2be", + "kaspa_address": "kaspa:qzgfvju2z23zml7vgfl0rpdalaryftvpumvej593tdf2t2fua8d0ge3w2hkg5", + "ethereum_private_key": "0x32cf00aba020e933f77f968a1ac6ad546a124a3847bc38cf99b22d1e551f32d3", + "ethereum_address": "0xE59A3C6Dc9434b7d34fD25b05fdEd25d727Cff73" + }, + { + "mnemonic": "erode forward convince rifle recycle obey angry hero nest thunder cricket winner", + "kaspa_private_key": "764fb72bcaf58861fb1e2d96e193d4b179955617bd1f0197909a584e56efabe2", + "kaspa_address": "kaspa:qzlq85dax2lp0g2t9cduexfrpyc0e2u8czhg4qr7aek6s89jpqcxuf7k3cphh", + "ethereum_private_key": "0x75f924db497fea357d1a230057d96e35279e81c90638e47d32507a04484a1466", + "ethereum_address": "0x404df3B33f4b0b106Dc828702c6975AFDDF04401" + }, + { + "mnemonic": "pact fee settle blue quit average caution pioneer cloth olive venture moon", + "kaspa_private_key": "a9f7cb0aacd9c3a272a5599a472857edeccedfa3cf01662f89a158e03e6fc0d2", + "kaspa_address": "kaspa:qr7ucsea8x5ktxg0q9l97l85kkl00y4cwtvvflu3ja53k03f62s6u8hzhgzhu", + "ethereum_private_key": "0x1544602188628b182385745f9e2d310b6384b2cdb8ba5de28410a07c35165e1b", + "ethereum_address": "0xC7cD4cb40227206F1Db0A8e282Ac05Ee836138DC" + }, + { + "mnemonic": "gauge runway marble stamp liberty lens cycle put idea plastic special seek", + "kaspa_private_key": "d1c5876dc7f63ebe7b041c4eb483707394fa8d491cac90dc0f6865525aab485a", + "kaspa_address": "kaspa:qreewls9xxqav0z7u3gryc9wh56nv8ja2v6hp68lq0xewgtze65nxlgdmp0yt", + "ethereum_private_key": "0xc66302ed61912bd32e837d6da7b613751a405cd7c1b15fa2c2d9ea6f8cd37cf4", + "ethereum_address": "0x4A1A0015d475bA6Af3B74Ce5442Ee207dA38BbB7" + }, + { + "mnemonic": "region educate plug prosper math laugh topic slogan real hawk muscle couch", + "kaspa_private_key": "b418dbc5d4d6fe86aa111bfd065be87ef70687ffa3d7f4af5b474c6405360e8b", + "kaspa_address": "kaspa:qqz28t2tfv37d2ls3pqg595hxwsc87c8pr2svv4qkmcwfdmcjx3rj2kqjvfhx", + "ethereum_private_key": "0x9d35f0b1f67fded7a0cce3d4f86ff29cc12ba99a2a69729e14fd593c1a28c6fb", + "ethereum_address": "0x5a203549EeEeDA4E1F810D09831e9676B0683DA6" + }, + { + "mnemonic": "fish theory online monitor access suggest comic master faculty friend jazz bottom", + "kaspa_private_key": "87b82b86337ea9b47864afd2f9956dd27fb95123bdf427e96f5f57ad2d71d397", + "kaspa_address": "kaspa:qz2skq5yf4wngr0q9qvtktkyjy4u0h9qmgtve84lnuu8lm7tagvuzjvuqe9jv", + "ethereum_private_key": "0xa3966b58ef376d0cdb53e97bd762debbd84dcc54134d69031f62101623ee4f66", + "ethereum_address": "0x83291D5d2d2EBBA763da85af25fdD405a54a2909" + }, + { + "mnemonic": "twenty cram off cement upgrade liberty drink swallow lend index lazy decorate", + "kaspa_private_key": "10aa6ce4c103f4c1557a8959c02852e107356509661ce3d0c8ea12c068c0efb2", + "kaspa_address": "kaspa:qztlxelnz6ltclmzmt5shpn80wg8z05h38rqvc0tpwsftuk9l8nesw269t7xg", + "ethereum_private_key": "0xdf9a7e539e5a78d0d3eabd7dcd5cf0f10ab3968bd0092f488369fe6b7918b0b5", + "ethereum_address": "0x7df1D926e460a9A77a53E7aC4C8aB76ef0D0CF2E" + }, + { + "mnemonic": "key use tip view month rescue twin december basic school what juice", + "kaspa_private_key": "832ecf5a755d1e42891bb349a7f5fe50dfb33c097ea2f02870f3f9eb284e06c3", + "kaspa_address": "kaspa:qrqgk5sqavcs9yz8jkfkh7kv94fr850xcexepr9svm68ch9esg8k7w0hjlfct", + "ethereum_private_key": "0x4f0eff5ba3167cf468eceba9d4bee264275ebcb3bc09bad591fd32baec886ef4", + "ethereum_address": "0x9Bd4060C916D9FF9B0b7133cAbCbEe8F5aA5b8f2" + }, + { + "mnemonic": "company stadium wall auto behind pepper exclude morning place unfair onion unfold", + "kaspa_private_key": "2d0cc26af9de220357ec792cc29652e8985359bb45a1604587df6ae4e76347d8", + "kaspa_address": "kaspa:qrjmxa8cd3wluj6n0a0knmv9sw65yh52mng8navn9gkql3jht6dkw90peyyr7", + "ethereum_private_key": "0x21eb0d7725bfd3403b23124849819cca3f5dacb4d56bfc9ecd661902a824a119", + "ethereum_address": "0x9159BBf36edc422Cb0c4181Dc72765E55e12ED95" + }, + { + "mnemonic": "since ski naive dice brown much symbol judge silver embody item share", + "kaspa_private_key": "e8fb6c67b3e73fa1cf753a99b379d8982432c1bbf268c0cd8083ba6a0a946c36", + "kaspa_address": "kaspa:qrktcq4q02gvqqzqwy6k33wnqqcaxcfcp9vnd4gecs7kh5ze8ewecnmlvqend", + "ethereum_private_key": "0xee7ab613e27d2f46c7e22bda56e21764dc38d09c9c5627c59325a93a1c3f95f7", + "ethereum_address": "0xF84A170335CC26A24475E705d54589eD76eA882a" + }, + { + "mnemonic": "usage nut collect clerk hotel shallow angle race fruit setup dust exit", + "kaspa_private_key": "94ee7337748c3c4b49109946a1484c62d72e78fe8924217a692dfd5906c9f772", + "kaspa_address": "kaspa:qpmffth0dkh6m5urndle0uhg3kk79a7tqu0uwvq6j2uys4cdxmjgusqjmj2aq", + "ethereum_private_key": "0xd98ae0acf3122695eca171ea09971ff0e75b2ff941a1989699964a5690304f79", + "ethereum_address": "0x3dEbBBD53BE5f339e39B23051f0c0016FF89090B" + }, + { + "mnemonic": "shallow suffer quit open swamp sail match body weapon again refuse friend", + "kaspa_private_key": "884808535fdf4c944ff1cecb37af32884b7b2255e616fd70309f53e355de3db9", + "kaspa_address": "kaspa:qqpv4knnjwcvz44mphzt4f6de8e3dtzsx25lmkz6ra8jxmaja5e77vu43p4y2", + "ethereum_private_key": "0xe71497b4b1160f4104f580dbd7f334ff5af956bcbff134c32aa75ba0e1902f76", + "ethereum_address": "0x894595bbe90C74BE53963a71865536207A99E4bd" + }, + { + "mnemonic": "found chest fire traffic east solve marine family immense zone snake insect", + "kaspa_private_key": "95f812ef8bc9e13e6c748f1e2bfcffdbd59f6c405526e13ba4eaf7db6d8cf257", + "kaspa_address": "kaspa:qzrfgt4qsa7rc0ts5fv7dw0zt6vq8n9qewy5xg3375spadvfmc8vvspxkrce6", + "ethereum_private_key": "0x62de5efa85216274206c2c4497f2cff29c4da466ed5be7425d647362ed62dc2f", + "ethereum_address": "0x2AF655a16EAD73Df7B347306a8120f3F96184E3A" + }, + { + "mnemonic": "demise intact provide olive cube giant pipe home material already window girl", + "kaspa_private_key": "6394ecaa70a8b52e9e08929affa2da1665b82fa0dd9b549c56d91aef5c955550", + "kaspa_address": "kaspa:qqm8lj359fqqud9l5a6vktxe20stumlshteqhrrmkjvf2xrqcjzeqpazqrmd4", + "ethereum_private_key": "0x528074b817fec3eee276b5a53fd3b74c1fe8cad7256a1bc5a793b974e557378d", + "ethereum_address": "0x49178b86c5F034e015a3534144414da3170009Cf" + }, + { + "mnemonic": "multiply draft neglect owner already cotton sudden owner gown hurry glove goddess", + "kaspa_private_key": "01116c59e3bcba750e6e044ba3250b101b798807b08e2230c160da012e2b82bf", + "kaspa_address": "kaspa:qq0xu79res6ytrtr8v9dl8fm256gdradx568cs3a0s9whtpz5fcyyg8cl6r4c", + "ethereum_private_key": "0x1a5895931f95d75eaaddc47176a82c164f64311d06365ff94de3c0c3ccd27cf2", + "ethereum_address": "0x4DadD9d897AC8f4746d80285Ef3B20AD223DFD3A" + }, + { + "mnemonic": "vault forward tent napkin miracle myth kitchen lonely raccoon cement congress wrong", + "kaspa_private_key": "6b842eff6f8e3d7a0eb7e49ac0886cc3915ba83603ecebdc18bf014b9f70cb78", + "kaspa_address": "kaspa:qphelw7t4f97fyy57ud97dgvu7lpa0rges0tcc4h0e3k20t7pd3qvl5234dva", + "ethereum_private_key": "0x2fee2d43c20453146cacfeec08d64ebb918d7caf348367a29afb43f06d646dd6", + "ethereum_address": "0x1ebE72d5406dc1bd771e0f4D262d0c85f665d8C3" + }, + { + "mnemonic": "puppy six father maximum buzz degree repeat bulk shoulder dune engage toss", + "kaspa_private_key": "c656908014671514e60d748092fc12716f4c10c960bfb59bb9d9fc5cea1405ee", + "kaspa_address": "kaspa:qqjmja97kflnkw7yf0yhm5aksl2jzl0klsveeyknurpyg6t9su0tqxelhajvs", + "ethereum_private_key": "0xbb3c8a29358f16d0ca18f6699d55c1e7fd4b6dda24181f1d5731e76e8f620e78", + "ethereum_address": "0xEeE2ed635ff8cbaDf12718c2D4E51712B8048B11" + }, + { + "mnemonic": "afford twin audit lesson gown stay over hero come fun keen make", + "kaspa_private_key": "65ba787d8a11a52eb7f66f066c70d586469dbfbb3b4946adc44f0e1000fc0adf", + "kaspa_address": "kaspa:qqz0268z0afag5jpea0ev7hhfa9englme2vqpdlkfcf9z6mlhlar7z3fpaxer", + "ethereum_private_key": "0x542c9fe0a639c34592cbeefc0e3a99b2485ff2773ca63add6077a1241a03dbb8", + "ethereum_address": "0xd54C1D5Ecf41f822C0E432A8495b9fa0deE65b78" + }, + { + "mnemonic": "thing icon once glove orchard citizen thought owner scheme buyer blind duck", + "kaspa_private_key": "3962dded0a11ebf07bd226b27fe3041d211595570f4d4dbb05e81ac34f4a10a4", + "kaspa_address": "kaspa:qqtqsuplwnck3gv4w49grmq23fjxwqmfsgh6aseegwejw6nguwzjxhjjr0wvc", + "ethereum_private_key": "0x097ac7d216f695eda8218ce1afc371116bc9e37f9026811da48d3481df0dd257", + "ethereum_address": "0x266749d96e6F9330187B8715E0b6Cc116DEDeAFe" + }, + { + "mnemonic": "attract normal daughter genius immense tomato toss wedding keep crowd arctic perfect", + "kaspa_private_key": "aeba8960b937a098472e56bc72746fb9134fc8ef2d24559f0baf700fe5a733de", + "kaspa_address": "kaspa:qzx7j3v82qn29lh3kk7d68xdppg3hyycne0gvehacl5ppgae5mpr6a5pztzhu", + "ethereum_private_key": "0xb627a338148e6f7fcb10140877b41dfe31ca539247b3d2c6f2d8932939bb9ced", + "ethereum_address": "0xd632b57D0210F2279fdf68B03EfdC8546945aF0B" + }, + { + "mnemonic": "lyrics welcome shallow above ship proud never setup garment machine leader pigeon", + "kaspa_private_key": "b7dcade6dedb75146e9cb105844cbc1792db80ec8b805e3eb37fe1658dbb022d", + "kaspa_address": "kaspa:qr8k9534mvljs3qmehjndw328yeef2vyyuv8evwjlzl560x7mam6jvl3sjsjn", + "ethereum_private_key": "0x6bbbfccdcc5827e9bac86193c02daf08f28b40da127cb827afef836a15bc7d5a", + "ethereum_address": "0xF0aC2a95aCC4cDeD32380E3b933335DfEcF8F3F1" + }, + { + "mnemonic": "moment couch tourist journey twin rude brief erupt shove vague response absurd", + "kaspa_private_key": "0629c325b7296316e3521cbe59f63bb26019ec2b37c70eca098a1baeb6c27193", + "kaspa_address": "kaspa:qrq3mlfzt0mz69t3wwswt8kgaxscw6fyyfmgyafsptf74y2z6s9xqnly2altd", + "ethereum_private_key": "0x5b9337bd31dff603e03137285e7c99887dc873e5fa18713211cc20fca3d36c39", + "ethereum_address": "0x90B9a3cd492519C13dD713E728F8DA55CF1502c2" + }, + { + "mnemonic": "normal crime balance edge august ahead post now banana machine soda rabbit", + "kaspa_private_key": "f8d0a20b39538937eeaa82cc9a9f812fd26da0de6445c910d8d4e7fda18321f9", + "kaspa_address": "kaspa:qqsem3ms7d6tjkg0jsdxjc8jrrn69lt34hgfxkwrdzfthwf2x2nt5ltdq0g32", + "ethereum_private_key": "0x4dfc9e0a718901ca59c28149914553dede69c6db4a66328b4b37453f4a9e3d5c", + "ethereum_address": "0xCa9BDbAdd06bdcd3fC5FAd3754F9f2e40072FcA8" + }, + { + "mnemonic": "game help review alarm rather parrot universe hunt prison amateur hobby educate", + "kaspa_private_key": "0bf4f89a65167810b39969164a0b50dbfad08540a83c78eba7956db08f456c2c", + "kaspa_address": "kaspa:qpzdgqstne5sgj59l7xujmqxf8hfzjn7swpa4w7rx796chph3h6mqn2sd39f7", + "ethereum_private_key": "0x928cc2459083114a5e26f1c9483384be1475928416a327e3c36a680648896565", + "ethereum_address": "0xEfFa0DB1F89A40cd31CD18ae25557Ad4499E8068" + }, + { + "mnemonic": "alpha club bachelor wolf drastic fade usual stool worth immune volcano heavy", + "kaspa_private_key": "d92f7f87a31b1de99e610929838e406b1e5f45acb14d415c267dd201daf1ede4", + "kaspa_address": "kaspa:qzueklqmmhfcrac7y2qlvd0lddjvdpkjmelr6wpqk0uuu6h7fpz7svyc69lyc", + "ethereum_private_key": "0x3ebf6bdda22cddc83b0f53e7ed880f078068192dce6d1c34c66ae57925dd01a0", + "ethereum_address": "0x2Be768804C3018A18E35330401316F5f2885e1fD" + }, + { + "mnemonic": "river expect minimum bargain grit wine young knee prosper fun orchard upper", + "kaspa_private_key": "54fd03656cb1bfca12bc1867b61988af50cca1c00529349ad8a9b4323fb09f94", + "kaspa_address": "kaspa:qqlh7ytjga6eqjxjd4hwddtpaqk8fwcm43xdumlfmpjkx69c26lw5yng4z2hy", + "ethereum_private_key": "0xfd9b445c147865dbd0ffaa970883608910af0be106b4a7727385acd03b005744", + "ethereum_address": "0x6bB5D270244519AaC04F93D739726ca930343E38" + }, + { + "mnemonic": "amount novel cousin trade flower shove inside only champion size rail exit", + "kaspa_private_key": "f8be20b6b0e47d58704fe0a6623845328daec2910a437a50e9ecd5380a4f11da", + "kaspa_address": "kaspa:qqfhlc8hkc30wmy4cwcl2fr8henf7qy0aw223eamktmdwp0z5xxq57nru9kz6", + "ethereum_private_key": "0x061a92ed3235d4aac370b1313e4b6eac7aa9778985b066706f6b10072d4e256f", + "ethereum_address": "0x024153f35ce4AfD75a49c25F6Fd34AE9B5BEAe2a" + }, + { + "mnemonic": "glad gloom shield this educate filter option include hybrid surge attack today", + "kaspa_private_key": "5f90bca10362197f50916e45145ffb945f02126b8789e9ff6da92fcc94b29e83", + "kaspa_address": "kaspa:qzwfhv7sphszc4f2xqzp3dh0e6pyewunxlkkegegqaft0n9ugxygc9zun6agt", + "ethereum_private_key": "0xf2aa77ac14f8136d99d228c29ab0594b6367ea5405292577e0ee2f9e4f5c3180", + "ethereum_address": "0xaca60723439F0EFF543dF9398B3BDC7eB21616Cc" + }, + { + "mnemonic": "nose nice shoulder wink thumb limb trap inch off prepare board slogan", + "kaspa_private_key": "39fcfd6e9b1416f5e66e692c8422ebd6caefa23271d1870dc74b6e70dfd0054b", + "kaspa_address": "kaspa:qz0ezrmhmyzr03m6qzegxyvt5ftjtyqaqa37g2e2p4gedmz70n56j8a2uf4gm", + "ethereum_private_key": "0xac0748fa0675aed42b530aa108adbdb9ee89d39ceedd9108032b605d10f1f344", + "ethereum_address": "0x39F867cC1185D89B33Ec1fc63c2472DC27f17564" + }, + { + "mnemonic": "ridge misery outer subway maze upper funny tennis blanket scheme enforce horror", + "kaspa_private_key": "60d92102edcc2787d808bfef3f39b706c830c86c1f190c1039112c6a06489d87", + "kaspa_address": "kaspa:qr349dv2mdrzh4uf4nade02dzycjnpewg4j04cpqn57tdrlpcafckysc9yqn2", + "ethereum_private_key": "0x0b87d8cb66481da4464a72ee4d2c470204adb3f338447e05a189826118605027", + "ethereum_address": "0x902FAC7377EAaB2f0A52C8C7524282561310246b" + }, + { + "mnemonic": "slim breeze account casual boring tornado repair tribe genius glue return damp", + "kaspa_private_key": "af3b827f5b536501594d43460d16db3ab413d71bf5d83ad8a3b027244c9d3966", + "kaspa_address": "kaspa:qq4wp8mf43vt9xpgerknmfqutwrhyt7r9qjvq5830h26m2xrp0xr7ll5xkc7y", + "ethereum_private_key": "0x0573abad284ddcde48e44ca80f19324d87223af3091c06167db132992c387196", + "ethereum_address": "0x3FD9AA56caE4BF489D072dA526e5dCEF16a75AE2" + }, + { + "mnemonic": "toddler race fish defy ramp require debate dutch ranch about ill one", + "kaspa_private_key": "f000abd6a373b5a5be1f23512a4f359fca4799662c3cbd1b2cb039c258276f61", + "kaspa_address": "kaspa:qpmdl9ma9xd90ccjmu4040maesyjesw5ngc76c0rppmldw4yfdw8k9u7m34t8", + "ethereum_private_key": "0x9b8745344438e50de46461a4c3b4a73b384441517495bcb3e7069e1d65a88e80", + "ethereum_address": "0xf226BDbAe8a259f256E5258330E1Fb95b86BD915" + }, + { + "mnemonic": "floor audit believe winner faculty squeeze awesome speak trap sorry palm flight", + "kaspa_private_key": "fd55614cef326f10c81120d566ae5bcc0294529f80eb07bc701430bf433a2d2f", + "kaspa_address": "kaspa:qq57r4k0l7z3f4xgrhh3zdzn3nx6e2jlwnplvwtwr56fd4kdxq47ux8w32mfe", + "ethereum_private_key": "0xc18f208a4c350f83d685fe84f6a50d1537362e54368f43f72ec7ef6763da444c", + "ethereum_address": "0xd9fE75c9779dA2F69834b51C04B0EfEA5D4c8B18" + }, + { + "mnemonic": "clump wrist come helmet verify winter nature crime enlist edge crime gesture", + "kaspa_private_key": "6cdd9c00b4022b2b038061e29d2291142ef41add19612c027dc5276f34bebc51", + "kaspa_address": "kaspa:qz5nzt2wyywzmrwezqazjswl6cf73rtztzychln7s4xg4d3ggyclygyz5jade", + "ethereum_private_key": "0x3639a3613fca24029784142d399620c17a7ea905b257d90e7ea55f48c5be3076", + "ethereum_address": "0x8Dd15960c9549A3B953bf5E8cf7a38Cd694004C5" + }, + { + "mnemonic": "great trick black orange focus pistol mango action ridge essay patch burden", + "kaspa_private_key": "6fe203e1a457801a1fbf858ec970cd50fff3f81bca04f65b4c550f08beb907f3", + "kaspa_address": "kaspa:qznpplqa2njtgf4s87x3vrlx59a6euhvxknl0w205h6u66u0s7se5yhwvn3c0", + "ethereum_private_key": "0xa0988b272a7fc3ba9c320592efa8b7a854e485df4312245cd9b09bcc7c0706e3", + "ethereum_address": "0x83fF7DFE46A9C0fd3288616b9e82277DdCDe6cC2" + }, + { + "mnemonic": "lesson reveal again large brain quote fitness dilemma weasel yard sponsor throw", + "kaspa_private_key": "6859087a1e206aa5a237b1a9e6eb69bbca2a0011f153aa3f85ecff374423e3f5", + "kaspa_address": "kaspa:qp7x74mvtup3vny2jr32gn8ht30vgnsrmjduzmlayh8xetrdp3ceqnu8rfnp3", + "ethereum_private_key": "0xaa5f54f67277840c03269080779c6506ac6297b80c043ac845ae202401761777", + "ethereum_address": "0xdC5D1B6cCD19E59Cb1C3D8eCe7D417a76Ac58329" + }, + { + "mnemonic": "allow jacket bright load girl summer ridge rebuild blanket gate axis always", + "kaspa_private_key": "31f5cd145ac9b54bfe3a1e2758bbe4945f8b83f5c498def27af45cfb41ed4ae5", + "kaspa_address": "kaspa:qr7k38ptxx68fy78sy37k086gwenlpa36fm9hw8u48htzz62p6pajnmkhef02", + "ethereum_private_key": "0x09bddd281892d9f1586b305e4026a0612650ff20a4201a6562fe96665e1a2955", + "ethereum_address": "0x4914A98CB085F7f8cB1f67c7d4b7D0DEE2F603b6" + }, + { + "mnemonic": "circle deal indicate lady steel panda bitter swamp film manage insane mail", + "kaspa_private_key": "7674fe54fab565c418bbd28f5c3e4574d7be826f9b068024254d7cdbaa84b3fc", + "kaspa_address": "kaspa:qqeejlgt2w7a45ygm4ac04p6adh7pnj5kgmclylvj3fkcy8rlfcevupdqtfuv", + "ethereum_private_key": "0x77aaefd6452149eda8a6d832b6c55f308cce98d6ddcb6d93ec4e10c8d3c6eef8", + "ethereum_address": "0xb3C5e1e1f60dbCDe9f1D17Ad224e050F76503E58" + }, + { + "mnemonic": "chair chase dolphin taxi grocery gasp habit strike urban avoid eager fossil", + "kaspa_private_key": "463a3a79185f2b9d48a8a01de87138d560e47191859dc3137e0da3fab4f4ec6a", + "kaspa_address": "kaspa:qr53ck7q8k8y057f3pqnpdgdghzde02muj5u7ha8pytn0d8wamspujwa2857f", + "ethereum_private_key": "0x7f4c90be12d3dd9d9e62f328557fa4e54650bdd213ff92ba273cc54f6065edd7", + "ethereum_address": "0xF2a980f0Ef5B2d7572899ad5cB7114BBEE0676F1" + }, + { + "mnemonic": "approve flame fiber caught smile allow symptom polar aim world grid toy", + "kaspa_private_key": "c5d9ad9b911e3d94f88f9ced7653957330f5c61af011109b689b962f7bc6cef2", + "kaspa_address": "kaspa:qzwj9zlv34nvde07ymup6yeyfjdx3p46nkvsauv8m4rvda99pu6wv0tw7v9gq", + "ethereum_private_key": "0xc450f6545a5145d32b8ccc970706b93bf2e75dcad8ccf159b263619c810cd6a6", + "ethereum_address": "0x0f123F977e8f72886852A621a9492A48AC733639" + }, + { + "mnemonic": "reopen group strike alarm puppy rocket misery captain core wedding case flame", + "kaspa_private_key": "d021cc6a6ce520faf49106689c2114ba9f966fda2774b90a74a2954788ca6dcb", + "kaspa_address": "kaspa:qq0xvwzx8fvg4ywh3qr7yphv062ykk76evtkjv6apd0ht409w05f7amz6tqqa", + "ethereum_private_key": "0x12286f6991388cb3fb311c4f57144f561cb282440c995c9284ac22e34f60c34b", + "ethereum_address": "0x3972AA96d97a0E7f4AABbDd87d5A01d43A190664" + }, + { + "mnemonic": "carry idle park shoe more steak crop involve gorilla naive stable replace", + "kaspa_private_key": "bf9fb8a8e7d5bce0a00c11faca3152052f08e28cb69494b41855869bbd7de11f", + "kaspa_address": "kaspa:qpr97clfnxn0y8zdvdugmujlpq4f5st0m4t6j9fhuu69n2pp30n5xp79fa0xv", + "ethereum_private_key": "0x3eadadc12ba5313dbddcbf71fc09344939d1667f624a4cfdd2218992eaa47327", + "ethereum_address": "0xbc6004696c54025D8A0eACb127fCDAfFB6121616" + }, + { + "mnemonic": "lonely basic range garment share jacket keen dignity potato credit toast blanket", + "kaspa_private_key": "8c83dd82b3202d13c5ba7f13727c1b94ad7d997ca49bfad5ff80b930a77c6744", + "kaspa_address": "kaspa:qr3rg478fpghflp5th97mtv00h6ertqxjs96p80tkwauxwmplgs96hu5lwt36", + "ethereum_private_key": "0x23e39aa47e1934472800dec9f0fb19c6b222c82d50be27a056781743059ab042", + "ethereum_address": "0xe45b821bBeb3F2FF7F4D7B8962063c261084db8e" + }, + { + "mnemonic": "wisdom behave foam alcohol sock ocean track thrive purse kitten idle else", + "kaspa_private_key": "1d4e9050c49cde44b445d321e447fcc0d0cd197441c1adbbedb40252d71d8861", + "kaspa_address": "kaspa:qqx64vkzdkar26vnc93lfnrapl9dv4nqzwcxl9uucav3un4383xs2c3vj7h9s", + "ethereum_private_key": "0xed7c3692094702916232044190dc04ef93ef5351825b1f009fbd8b3413545b38", + "ethereum_address": "0x5d0A979cFDc6C9498Be9f4C563Ac726E28ADCc73" + }, + { + "mnemonic": "float defy vague much shove blur lottery badge exercise knee damp damage", + "kaspa_private_key": "33da71d3f424bec4d13072e5ec5b6898fb01a6e3b0ecaf443e43d651d21f4c5d", + "kaspa_address": "kaspa:qrlfh0zscgx45ajcdvh88cyxwmez9t07a57ka8z74htl8trlcdynkra36fj25", + "ethereum_private_key": "0x82db032bcc856845224c978a6c05fee90d77efe7d564e5a55fe71b551a0b0f54", + "ethereum_address": "0x7b4A703804F762AB6A9d441d287fB3A4DbEF1FD3" + }, + { + "mnemonic": "shuffle release february tiny feature gloom lazy baby give winner forest razor", + "kaspa_private_key": "a6d498456d00ea9b0207253d10548aac8c014dc01fdd632937ecc260204c95f8", + "kaspa_address": "kaspa:qruxmn3mgjx5egwrfhmt8nu05npvc26uprym20kv5q7r8v0xn0uq7k2wwuqum", + "ethereum_private_key": "0x55ed8cc07e3e54b6e3af0d1f3d3888da40ab03d997ca25989075e9c784a22abf", + "ethereum_address": "0x3D0E0cBdfa890Bc1e590291B649EA0BB249fB3Ef" + }, + { + "mnemonic": "base camera clock aerobic route bronze device check enemy brief gauge name", + "kaspa_private_key": "e5bba0b1b67a284d95e6f52a20aaa1d716e969bb8114aa2d4ffcf957c7299c57", + "kaspa_address": "kaspa:qp39zanap0fr2uak0xx75pa62g4k7f4667teqhz6u6tsakr3s6ldcu7wwpac5", + "ethereum_private_key": "0x4175b6c1f8714458ebe816ad038ae1fbb766819c3723a80eaee0bf5b62134f1d", + "ethereum_address": "0xc71d617c57053d21450a9cF1Fda90D4E8a188186" + }, + { + "mnemonic": "labor lake mystery scan enemy wall canyon away prefer velvet menu grunt", + "kaspa_private_key": "1ac27b0b407c449b0f15300009d92cd857c013af053e94f295341fb140240272", + "kaspa_address": "kaspa:qzrjhqsdwutrxvsxgp4a2phjphtqw0qjjgaqzt79q5yt7gccrrfy54rz2s7ap", + "ethereum_private_key": "0x508c296675670111c731b96f500ef32a43f5dd261d3ea6be629097ecebcceff6", + "ethereum_address": "0xa8Ba77b6d421d9412062d1ba7684f6Ce65E854A8" + }, + { + "mnemonic": "enroll valley history surge visit absent lesson lizard wait during mushroom acid", + "kaspa_private_key": "fe805e14e1a8c940e957e1f99956fef8a67d6587f8660f39264e61fc4fac2bf7", + "kaspa_address": "kaspa:qp4ytd08790p0tp3983z5cdwk4mfl7f80npf7suknveqfz8ysrt5zr0h0m8jd", + "ethereum_private_key": "0x659c7b211f604b4f17b738280535e9bd60308cb6a53f1229155fd0b30fbde60f", + "ethereum_address": "0xaD99a5D1e3b1B49f02A5a917F8B88459Fa562AB2" + }, + { + "mnemonic": "cruise walnut gun airport pole middle crystal credit section bridge maximum wash", + "kaspa_private_key": "1fe4106284d29884f6665413a3f8bdaffbd1fd4bd977fdac2fe15c980a93883b", + "kaspa_address": "kaspa:qqr9m33p9g2c4p0kp5kvg8rqlfqs8yrrxgc9pu8phxnhdpvt6l9ks3mc0x22j", + "ethereum_private_key": "0xcfd917a8596beaaaab93a9d2a071bb9edefa5e06107deb8efb6f1fb1cd9714d3", + "ethereum_address": "0x0f02388812A99210D716bEF32Cc907c8FaFc7f87" + }, + { + "mnemonic": "apple wine argue trial report spread price alpha shy same spell theme", + "kaspa_private_key": "22319216c35a0ef331f2324349761f490afd91c29b8ba29acbe83adfb206513c", + "kaspa_address": "kaspa:qq5xyph0zqrzzhcgk6w4p2prcquxc5y49mjwznta9xtz5n0cssvrsmmft6m6a", + "ethereum_private_key": "0xa8612627f3129439ed5e5a2b0d734c6ed60c14a68e992b3dedc622ddd60b810d", + "ethereum_address": "0x21015eb086b319B754A0250d226195A3892BBB32" + }, + { + "mnemonic": "december differ wife beauty lawn satisfy dinner stand thing ankle lens novel", + "kaspa_private_key": "663210f188ccb20ddec5bd74b42f43ca283bc989536ae2295b3cd70289314452", + "kaspa_address": "kaspa:qqk7tasmy5cesx6p7naddjrsdt865sqp736yhjxpqzfhtl9hugwtxzy2ua7wq", + "ethereum_private_key": "0x7772bbce670771ecd35a1166c4969c6bb9af2e1ac49ffc96bab7647f2f8488dd", + "ethereum_address": "0x221C7f72640e89C0Dc431EA8cB63a5B397B41257" + }, + { + "mnemonic": "average solve few crystal swear monster icon decline scissors duty party burger", + "kaspa_private_key": "d9c05cacd47a178631a253b2e65e1ce419e002337b3bf4de1d25fed74690031f", + "kaspa_address": "kaspa:qqr7jylsezst2hqeyjkle3gwvgyz7kssekcumu2625ehhkrqxf7gw5n8zfg0h", + "ethereum_private_key": "0x7c86ab59bd9408e107ae945942ff77728104b173999694d17b164a2ab8ac6920", + "ethereum_address": "0xC4E811270CFe4286e9B293F35E9F67ca1939B03F" + }, + { + "mnemonic": "draft aisle common series clay charge advance park rent sniff demand when", + "kaspa_private_key": "3875bc0616947c3b9c0bba54dee6a2060f5d6c221af61ca1ee9a02a4fabf18ea", + "kaspa_address": "kaspa:qz6z6tggpzw0cy6gfr29n26axzulrw9fu0xu8a5e4vx8d7wekdr72qr2ke4n8", + "ethereum_private_key": "0xd3d6c30ffbc1fb59146d0f01f37e836f6b6dc2a316ec3fce8d222d7c10281f7a", + "ethereum_address": "0x687e73dAf0B4CdE071eC87A752C5C69d7d06C65d" + }, + { + "mnemonic": "best level couch brush south poverty whisper enrich car point river afraid", + "kaspa_private_key": "dc9ebd8cdf750b3ebd781f691bff8a0d6d783bbec08d48de0a8eee9c94e1770a", + "kaspa_address": "kaspa:qzdkeqapazk99540yqfaptfanmr3dw5r5u5vp958nnygm5rlesvnyxc6g85x4", + "ethereum_private_key": "0x7348716084f2970079cbe8d7d2af06a58f81ffc7df4a451cbad57dc5379ee09d", + "ethereum_address": "0x376417bdaFA8aa769EB34359ec3deFF5fD4854EF" + }, + { + "mnemonic": "taste claim solar dad refuse hill review fit solution grass palm cereal", + "kaspa_private_key": "6d6efc590abc4ee06b32068df95a7ef526c57495fbe5e9123b59ddff65334d85", + "kaspa_address": "kaspa:qr6qxjmyrcj2vgwj3yz39gp07r57eq7vznypty42crl7zpy48xsfydpsv7af3", + "ethereum_private_key": "0x6b0023456a5e662d62293aad075ce9c13fdd9b67bbfaca6f515a1ef917fac8d3", + "ethereum_address": "0x5F8A90ff2E44c3f4Eb2087A6A11E497e73d7D114" + }, + { + "mnemonic": "direct taxi donkey sentence hobby phrase juice shuffle seat bird element refuse", + "kaspa_private_key": "a49a27ff252909138a0483e6b5f0fdcf8f322c43e7b1e7284cee85873254e72f", + "kaspa_address": "kaspa:qrqv6x089442qeuq4tqsjxkz74pr9v85wr8h2rvmtq9phvmhsuq6was8ag94v", + "ethereum_private_key": "0x8c556513bb5efed72f599cdcf7e45d7a2a45527198a2f00c1f230e0415c23863", + "ethereum_address": "0xBEcaCfb8D7554d8126C51DE270123b06BcDC6Afc" + }, + { + "mnemonic": "beach pilot glimpse gain goat draw tilt normal security wealth economy liar", + "kaspa_private_key": "e72c68d179aec87a332281d6f4d38644b3768972754097303cd7ba47229633c2", + "kaspa_address": "kaspa:qp2m7dm4d84q93gk3rnqyhq09xd5vt7fv8x2qwr9f5v2nkuqtmjhc4kkt4h9g", + "ethereum_private_key": "0x5eaec5bd3fce6b89e82b685ad1b26b58d874cd51acab56947a9cfa44129cd472", + "ethereum_address": "0x22Dd119cd252d7878eE5493C80C881468e18c328" + }, + { + "mnemonic": "material motor uphold evidence language document festival label quiz dentist grant eager", + "kaspa_private_key": "8a966ede07fc29e3f89c70cbb0fbc92124816231b4999b36a055a7469414649f", + "kaspa_address": "kaspa:qzqf7q7cnjy3zvgpac0xv3yrknegq5thp56rgrr9p0vwd3rvmpfhjnrn2cjwk", + "ethereum_private_key": "0x3ec35c3b96fa640641b0e9e3049ec51469cf0ed8de145849988d1e7c1f6287e4", + "ethereum_address": "0x529e1FeB5FF39531A298C1B6ba87Ce6DF4EFDfE9" + }, + { + "mnemonic": "century surprise envelope sibling insane sad carry purse jazz cook rice fruit", + "kaspa_private_key": "2e528f89cc50e1bfb6278828e305aa0f869358ba765b7e139569cf1dbf05d5cf", + "kaspa_address": "kaspa:qp9vl0k08vmnyw28elz4ach7cay2qegqer3l05nm99j2xajdlxrq5vm8xkj2e", + "ethereum_private_key": "0x9dcf21a492aeea096e59b0270580739cfb14e48e70c77e300b091958d4de444f", + "ethereum_address": "0x45e0377Bc26d63Cd400F5Ad510161C5de75F98dB" + }, + { + "mnemonic": "member shed tank coyote like caution rotate blue mouse build method flush", + "kaspa_private_key": "6adb80d1414f893df56db08f901d9256dd6fa5dea3f13974df83f5961b5ce3df", + "kaspa_address": "kaspa:qqzgclwvhxp0r5p03tkacctmzlu38csjdygdxmhkx9vk9h3p7zezsxsqxz8y4", + "ethereum_private_key": "0xb462ddbbc86d0793afcc003dc2a44f268fc547076b44044af2da6c1da41e1e98", + "ethereum_address": "0x1eEc185b72072d552c98cC9886Ef98531a3B439b" + }, + { + "mnemonic": "fall inch swear dinosaur quantum guide indicate vacant dirt congress coil exist", + "kaspa_private_key": "447f884f6008098b9c7149b3a7136c2b01c23858c70d7a6ac7e42c892109a70f", + "kaspa_address": "kaspa:qp3ylkajvy878pp3acg56x8hhvldeu2qfrvgcvjs2hgvh79g7u267zp84ntv7", + "ethereum_private_key": "0x0f9a9ba64f7bc1b3872da428874b3937431ccc1b03e9e81e9ac8abf9ec4be01c", + "ethereum_address": "0xe46c1d9eC51f483646142Bc9A7F9Ae9e5e877Ca7" + }, + { + "mnemonic": "tiny planet diet rabbit debate country silver track live link modify protect", + "kaspa_private_key": "568b879024e79bbad0245cefc8734553ba0a21fa354cbb76df8a396c869d1f01", + "kaspa_address": "kaspa:qp3fj536nnscemf03vjnqfccnmt8j5386jzg25ctwurlxvttdx82y2qpszndq", + "ethereum_private_key": "0x2fe6c7f94a01ce56765b90ecaf30751fcd0afa79efde8b73f0ab39e504911a0f", + "ethereum_address": "0xFc564C73a8B594f7c1B926aE0575AD95e482F6E7" + }, + { + "mnemonic": "guess fatal conduct fossil chunk security raw all identify deposit stable cube", + "kaspa_private_key": "c67a7c4425de8593df95a8115e6410f0ffa32cc6a5e1dfb6ae8f3cf576031390", + "kaspa_address": "kaspa:qp3vd5k0gj90sg2zkyjfs5ncsn567lavx8843ktue3m8rdhvh9utwddsg97uu", + "ethereum_private_key": "0xd57a234b70670a637d178d18d871fc3f1ae1b7d16375b7154c99e0806bbc00c7", + "ethereum_address": "0x9C144055D373848F5478528de126b71751A28Dd4" + }, + { + "mnemonic": "inside dignity swamp endless rapid vacant avoid water air expand age brief", + "kaspa_private_key": "182471e309aa2f7242006a246dac91aa1c85837e0cd857e9fe409dc8919d1b03", + "kaspa_address": "kaspa:qr9xdpqacsfh6g2kk6qqvu29tvt6grlhuen3unl2cu0jgmn90drs2te637sm3", + "ethereum_private_key": "0x61778168c3ae01e1bf3cba1f576b4a4a446b3d7a33f3a4075428fef924e2edcf", + "ethereum_address": "0x832cb569e044b35534ADCC846AAf2f89A356A9dA" + }, + { + "mnemonic": "enrich polar together vivid city vivid attract feature refuse couple glove hair", + "kaspa_private_key": "1287e39ed7abae9d014edddb294d2456e54f0754f56f70eb280749775f1a2823", + "kaspa_address": "kaspa:qrlgcsngr7qz6k7s8ssl9s7r0lgfz4287xyyzqyyztsr87q0th2vc5gmzvcv2", + "ethereum_private_key": "0xa544802e15ae538cad3faedf24f79ed456fa9d372c40dd8c2fab0358dbdb24dc", + "ethereum_address": "0x794add653D68F9869b1C6c3A0B4875A5a48A86a0" + }, + { + "mnemonic": "account impose neglect card room fringe process shuffle cute tone chunk identify", + "kaspa_private_key": "0cc75d771b15f286fad986c3bd0ad5875b5000de2d706f119c53f7b28c7f4155", + "kaspa_address": "kaspa:qpfy7fxsc0umkz4jxp5d48g8ga274f92p7rzhgau45f5werpeukccuwqj5ehn", + "ethereum_private_key": "0x95efc6ecc8f021c64eeba93936bef540b06a3c7f65f09b2cf03bf8eeed088ecb", + "ethereum_address": "0xE8f6f0Fd083bF3a2648df88ad0f0690Afb1E584C" + }, + { + "mnemonic": "lunar blade stock flag retreat awful motor congress long potato often myth", + "kaspa_private_key": "c945f947a7d720a834dc3cf418f3f587c1cc93cd854b2a85c6e15e51dea5eea8", + "kaspa_address": "kaspa:qpscc55hzz58zp0k2w8tjymxmv7ynv0xk64eev64vzhrak9kghetgl0d877gc", + "ethereum_private_key": "0x8f0c8c5d52421efab9621ddee19bc273925c5a33a0b9c282dac113c96afdc161", + "ethereum_address": "0x5d52Bf1f92F96BE28b51E166901acFcc7B0513CB" + }, + { + "mnemonic": "mosquito leader anchor labor woman stay bag glow outdoor forget replace essence", + "kaspa_private_key": "4e3fa9a59dea2d5f2776475e5b724d375460a6dac8d5ebe6e78ab7897b250e76", + "kaspa_address": "kaspa:qp30tqw6rwjmgcg482d9ntcwk27pj7krr3p8ak4eqfc86kd68kzjx8fm9ut9l", + "ethereum_private_key": "0x86fe9548f4e3a1303c9ecc2bebe355b29b58985242007f17b83f09fed57e5337", + "ethereum_address": "0xf77DbFBA7f4B996FA0eB4c3f6B3F5424DCE8ED20" + }, + { + "mnemonic": "pledge wise narrow evolve harbor badge heavy utility camp law brave collect", + "kaspa_private_key": "576f547cd40781178890a7139dfc4bad1bb64efcd9bf8864aa82af93267c92b8", + "kaspa_address": "kaspa:qrqy3f2pd09dt56qm0ywzwlp0fjdanzrv5meg635ewrp0gvq5kwm2myavptsj", + "ethereum_private_key": "0xa97e1528c8dc7e01c74043eb0bf8619cac744a7a81001403de6a7aa5d0934b30", + "ethereum_address": "0x13eBF7C037ee6B4c72C53c3AC2C2cBD2250A8e89" + }, + { + "mnemonic": "hundred ostrich island iron gain giant area nephew wear quality there chief", + "kaspa_private_key": "5df175c1799d77b95ddb3b951ce7366f17b389b88afd544874a4e318d6bd3ed7", + "kaspa_address": "kaspa:qqf5j8jmf7ewr3w7s2ene9tfadwwn9547szhj0vw2pw845scyafvg97q8k5q0", + "ethereum_private_key": "0x51e5cad4f7781faf3a35cae91160988304af6aedd763789c95e1d291cedebc9b", + "ethereum_address": "0x24945556BC97fe586AD866e1Ee515329882465c7" + }, + { + "mnemonic": "dutch stove fragile laundry fuel task runway length critic crystal flush write", + "kaspa_private_key": "f70cc7d03ed6846d290aa2d85cb1f2ed26c361c6e24f693270fb08e867b40141", + "kaspa_address": "kaspa:qzst9cywsm7cpdjpsf82c6us8n94ufxlq3dz953ep099dsdxcz45g6d74lvxk", + "ethereum_private_key": "0xdf42c5fb58a19c37aca698e7f1df5f462d289b11a8f5c3b6adcf0d01b1d83d22", + "ethereum_address": "0x41b6C82f8A5A801a5CD30EEC68dc18d1118b08A9" + }, + { + "mnemonic": "olive impact casino access learn dress color ability puzzle six feed gather", + "kaspa_private_key": "b93c7c48de00b12b4c7c184f66d6d235d2e85bdf65bc0efdb12d169964edba56", + "kaspa_address": "kaspa:qpfh5pyg6xre8qwngy5atgwh3kqs42vypuf8csuyhh3ewempl9rlgujzlgqlm", + "ethereum_private_key": "0xdb40851d64bbe69462254e4be689b91499b78a0b2dffbe134645718e7b58563e", + "ethereum_address": "0xEbBff56200C0e45dd4E4c8Bb7485Fa32868f6d05" + }, + { + "mnemonic": "zebra advance cause story place sudden unique cover clerk stem awake prison", + "kaspa_private_key": "1655b9dcdb6d2f5205a566303a556f340a41fd22f78641a82383b7fa31a80cb3", + "kaspa_address": "kaspa:qrapu0l4rf00c0vqtqc7w60cm52yml7lnylrk43gdr939209vxmpkzchlulvc", + "ethereum_private_key": "0x8bc413ea49b443ba14bc0e876b96b2f9b4626b8bc4488ec43bb48af7c4ffff47", + "ethereum_address": "0xA9CC19448Bfb0b93D65CD1Ea248070Af388246b3" + }, + { + "mnemonic": "scorpion acoustic light actor cart frame lumber kick turkey system predict tooth", + "kaspa_private_key": "5f27c77729aeb454ad65d61cb492830a5c624a4fdc149959c86ddd3f6c17fb84", + "kaspa_address": "kaspa:qpzs2rp9hyvanlrj6ppzxr9lfp7g8y4k7n3fzgvefw362l8fjgs0jsmqfkf67", + "ethereum_private_key": "0xc4318af1427c692ac3367ee5f0751ec1ba911e23f441be032bd1dad03cd3575c", + "ethereum_address": "0x4f43fe4Ab18e4808B21e233bE165E859fAb7bE04" + }, + { + "mnemonic": "grunt beyond fine actress broom degree gasp pride wagon fossil inherit ivory", + "kaspa_private_key": "d30472c3e3404e5fb4bcd4000ba542c4fda69131c6b147c9e3ced2cc83e2322a", + "kaspa_address": "kaspa:qrsqn9q4uc0n03z9e00v0tnkhf0d6uz69kwkm7taqswecjxptsj62llk2wxq2", + "ethereum_private_key": "0x84a1d325776f4e35958c8fa3191a184cc8042df0ed16e2aaaff72b3b10be9185", + "ethereum_address": "0xF6Bea045cE958ad0526093b9323Fba4656Ef581C" + }, + { + "mnemonic": "bone ozone endorse usual pet sword play embrace impose this bracket obscure", + "kaspa_private_key": "055ed69dbfe2bef32cf594394bf708803a7ddd03263f461782d71dac687af743", + "kaspa_address": "kaspa:qpguweuenawyhuyjd5dqvjq2wd973wwmcn9vmv95lu4yhg4srtd0vvyxptr4l", + "ethereum_private_key": "0x9be478db39923f308dccf19bd53fd3e9b8e6ed405ba67eb03879fd601a886992", + "ethereum_address": "0x21AA7AD88d371447afD7203FB7EBA362EF399A9F" + }, + { + "mnemonic": "gesture casino analyst laundry acquire effort citizen ability guard blade spring plunge", + "kaspa_private_key": "d0cf7e49d922a44a0716d810e61a71e86c73ffd159246269d3d6d14165c1cc93", + "kaspa_address": "kaspa:qq9mfz8x39fyj0kdx55m9x75wmaw56nxuxhye0tymxyru6x9jw2lkhnykz7gh", + "ethereum_private_key": "0x091c2847a60b6e0b39fea445e116202512bf384c881c28e3c07fac7ae4e45fd1", + "ethereum_address": "0x2250249c75B61396b675bFF9711B305E92d0C9F4" + }, + { + "mnemonic": "polar sniff humor puppy term turkey stage gate world filter leg maze", + "kaspa_private_key": "390e2c5630b3daffafceca254570de3b3e900e735083f55f5d080ce9eb9437d2", + "kaspa_address": "kaspa:qrnue6v9g5j4uezw6nfweht7w4cmgz3zz5dtl24ac098tv4r4thnvamf77630", + "ethereum_private_key": "0x209610be652e81ff6648c2e24d8683fdca2ec94d9c6d5d9c3c21f33afce9cd31", + "ethereum_address": "0xA2a791327065F426cA8902CE94Fef4c12928F989" + }, + { + "mnemonic": "science major canvas sunny mail later damp true risk profit empower feel", + "kaspa_private_key": "d283c906ba474202c5b26d30718b84ebe6a3c6330f169445011a5f16d4375db9", + "kaspa_address": "kaspa:qpymy03y86nxhytc0cx6xz34592e3w4p75j3gcvq2rye5tmkt2gqqvn4tptee", + "ethereum_private_key": "0x4bab556133f7398f47171825c02d92429fb26f6c0f65714fa59e57e0e6de8040", + "ethereum_address": "0xFc8A756C495172d0C5eaDb0de900B14De21e9609" + }, + { + "mnemonic": "barrel soccer tiny simple layer arrange path brain blur flat organ match", + "kaspa_private_key": "057ae3d8b8e24f467452332d0e3895de71a1befc7f0eaab8a13482c27d35bc51", + "kaspa_address": "kaspa:qrjjc9lladsts06vnjcjh2dylmhk4xfqj3h3x4a45wkx7za2qjhpsxy380xag", + "ethereum_private_key": "0x2204646f55dfacebcecd78ac53e2baafc2ab3f69540e60070c8b5005eaa85bcf", + "ethereum_address": "0x72F82DDaB824BdaC7d5117BC676Ea28faeAa192a" + }, + { + "mnemonic": "sock donkey book day spray work hand luggage judge ozone blanket upgrade", + "kaspa_private_key": "056a978f55cb1c8a84a8a60cdb278027088af0a3559f7d8140497e4b14bb6f86", + "kaspa_address": "kaspa:qq78y0fnxghgt5t2zss9dytg0ss4u5wrmulp76qmrgwc2p47z7xzg99slgsex", + "ethereum_private_key": "0xbae7346e99b20ca7eac8ee65008660d413e81d9b024b790d6ddda31a60be6136", + "ethereum_address": "0x4B8C63B0A79E881EAD711bf44CaAA8dd623AD024" + }, + { + "mnemonic": "stereo mansion note rhythm say palm exist gas steel retire over sand", + "kaspa_private_key": "c4eba4c601c7eca5dbb0f98fe620b6eb703762f94b0e808cd88133c6f45a7d51", + "kaspa_address": "kaspa:qqlwm6xh436phj2gedz8aj6k39u2lf635d8fyx9fc3fvhxftgnlsq07y7w7rv", + "ethereum_private_key": "0x586cbf54b2119b34f444e6f96370362b315aa44a2d952dc6a63e8f6f87b5e37d", + "ethereum_address": "0x42E988E32787D9B02c848B7459b32784b1E6a6Cf" + }, + { + "mnemonic": "antique dream weasel robust holiday confirm basic thing beef fade welcome mix", + "kaspa_private_key": "d5d0bf3493f8752feb9caf62f213026c94c2b45dc2e1367321d99793642e8b18", + "kaspa_address": "kaspa:qqqp4305nd0r5e2hel4cj9dlr0ws8xngjzlwsltm2cw307me7v73yhzr3k2m5", + "ethereum_private_key": "0xbb632bd86af996bd08c649b6ece4b93798cf023a4ed081e026900e7208fad1f6", + "ethereum_address": "0x4b69fbdcaB6b6A377a1d748499979a3b5BE5a389" + }, + { + "mnemonic": "tomorrow arch remain worth inspire adjust antique sleep battle alien resource vicious", + "kaspa_private_key": "1601e2424d6ba980d7a9d06d1b5d3ddd6a39e1401d16d775910ec95c8ad719d5", + "kaspa_address": "kaspa:qzk97q3ngxxmnkw8snfz7u8ptyp4qt3h2cy0y4j0lyy29vvz5qgxuvpzf6xs7", + "ethereum_private_key": "0xa332cce25c5007c6dbc3fd2bc79607a292275c0c2233adb8ddc3d10723f0e31f", + "ethereum_address": "0xB443cf6c01A25e437341198E593305e8EdfFf1E0" + }, + { + "mnemonic": "plug answer add snap rural meadow paddle urge love arrive glimpse ring", + "kaspa_private_key": "ed13714aa99a86024b761d3ac833527e00fe02b84e906fcd6e9d0d0b00682ddb", + "kaspa_address": "kaspa:qrsuy4c2pyuy6dfyyppsvmszx4e72spu4mdvslpkwj6ylvr0p0j2kf6xr6th4", + "ethereum_private_key": "0x8e48018a4d1ff27fdb24d52f5f7095c7c91da4f072a401948432c4a4a69760c7", + "ethereum_address": "0x43E90d15f4938B36D2Eb0e01b0f9A30c9b18Cebf" + }, + { + "mnemonic": "range fun clog admit curve poet actor final radio bundle copper guide", + "kaspa_private_key": "20445acf757b692ed7f8cfbc3155322a6480c9a27afc6ef2fafa5ff8719a90c1", + "kaspa_address": "kaspa:qz4kc3g0ux6l2f0tl6ysdzvtszyhahm22ewyxt892dv4h3pa86092jza3gz43", + "ethereum_private_key": "0x934605494c657a59814b404d05dfbfe1ef432a4f20bf46c0038012e778e68798", + "ethereum_address": "0xE8a33C1c58759e51312CF673d86c13F7d99ae906" + }, + { + "mnemonic": "measure vintage suffer nominee stadium clock wage icon link sea alarm idea", + "kaspa_private_key": "5490c915dbb8f427773966b8cae547474a39ab5cccce8a5c170c4e907a25ae52", + "kaspa_address": "kaspa:qz3yket9a6hfc34xy4ksdn6rdualxslp454nvsrvvmplp9qf4jlqcnu4lv0w5", + "ethereum_private_key": "0x045ff5d992405312c4d514098bb50a22b45a320ca255677dcadcc57dd4b43ad7", + "ethereum_address": "0x9Ecf573f3e5B93E40b066825c5EF0c998b4e18db" + }, + { + "mnemonic": "six frown fruit budget mystery accuse multiply off tennis pelican awake together", + "kaspa_private_key": "e7cf88afee748f27b36f90754415dfc8875c8c8ffafc11cbd4a3159ee72275bc", + "kaspa_address": "kaspa:qq4djewf5fanleppledmfkh6x0qudjcvtcgd9xgn2auw3e57twrtu56shdpy4", + "ethereum_private_key": "0x39791a48901a96d3c68922155c9ad15969e90bafee304f647f2c087be7f2a43e", + "ethereum_address": "0x5573693EDC1De48304d8000fb4341fF415cD8b98" + }, + { + "mnemonic": "old bid key hour stuff ridge jump extra extend order sponsor base", + "kaspa_private_key": "5a2cc5f99355e69656e6b80bf25a58303149681511ad6637858cbb2a4b9b5bdc", + "kaspa_address": "kaspa:qrd5q4ghfcytwk98dsuj6pzwawj84fvftgjxcvsaqak8984hcz0h6xkccv35u", + "ethereum_private_key": "0x226011753416ad096710ff4eb8012945e26144be669ce8306f0778f79762e4ce", + "ethereum_address": "0x9B9cE2F43a8BD66A6dcFd87bB018b5639C12F37C" + }, + { + "mnemonic": "drink among hint stand receive tube buzz dance earn audit amazing dinosaur", + "kaspa_private_key": "14577dadfb6866eca26d49abce4b255204cd6471f8b4d4fcfecc506e703564ca", + "kaspa_address": "kaspa:qrgenwqwu7sxkftrfn78kjh7em9feaupd8wmp5exzeztuy3ncyp9qr7qwtq8x", + "ethereum_private_key": "0x8e1a015ed89cdef87f75cc4d7583aff2227e56da2cae0b293f096cad04bb10b5", + "ethereum_address": "0x51A56420E8D9bCCBFF3fC503c5896F717153C4d9" + }, + { + "mnemonic": "under merge rich leisure web tip chapter field sentence turn access cause", + "kaspa_private_key": "98f232ab2762a6630e781998f19d0c847fe4473ce4ca187228e283154437edcf", + "kaspa_address": "kaspa:qp8tl7ymxzuxlr3vkfq27rs92ks5kqrm2gdxuly99rrp50g048ea2mfvmdw3q", + "ethereum_private_key": "0x4d5aa2b3ec854ee9d3dad07df2509db5080d048b07ebca5d339c892e43f3a7f0", + "ethereum_address": "0xD42C56c0Fad5BA4026f37Ba22BF0c95b67daE5bf" + }, + { + "mnemonic": "crane object fatigue shield strategy labor inherit become route region season reopen", + "kaspa_private_key": "6b1b0b3989b6871a96bd9caabbc6804d9a4c097d96983d5e7c7066e54ed483fe", + "kaspa_address": "kaspa:qzsa754f8g30f4wn2ppf5vhk9nq2tmdfmf64ds68jtwyckx7gguz7pmyhqd57", + "ethereum_private_key": "0x69562f588b34008c6611a2d0a4b431341cb6de1818f43f832424d089bb6751aa", + "ethereum_address": "0x5eF9A8867202A25ecDe500b9aeABdBa2aeC58ca2" + }, + { + "mnemonic": "what raven shoulder aisle seek mention film omit car runway erode census", + "kaspa_private_key": "9ca9a8f33f35defc6a89c7b592e63c5ba665e54f4ff05d3275e16fe61c70f598", + "kaspa_address": "kaspa:qrammxd5ddhwcd62z0ultlxst4u28v4zwk6agcuefq079gl040trj66u3tg0p", + "ethereum_private_key": "0xa9f2f7c673becdb3efb4bce8637068eebba4c9597855d2345f26c6b28e543c7c", + "ethereum_address": "0x7ef5E8110Aa3B89EE6341DcAfb6447d894a0058F" + }, + { + "mnemonic": "argue injury coin glide claim nuclear bacon seed museum scheme slice legend", + "kaspa_private_key": "50205b85b12c121acffb373997f053964938b6fb2939b41f058d9109595036fb", + "kaspa_address": "kaspa:qqtyszz2d4v8qlekuas3ufxnrr797ddhg6dp74ave2y07yt4ws35sgtyvgvv2", + "ethereum_private_key": "0x3feb49848ba31ad2580ffb1709de7196d9bd9c01219fe115820955ed59f0c422", + "ethereum_address": "0xeE49F70c0725e1e6a6F0C4943d05690211259AC9" + }, + { + "mnemonic": "soft phone observe dust appear hedgehog coin fix renew novel trap circle", + "kaspa_private_key": "63528e16d4237495b72a4dab3797c2dd5d5a4ee4d7e1ec48c46fe0f3eae6cedf", + "kaspa_address": "kaspa:qry9rp3p2y9jwama22mafls2dfta8pf0sfn7uw4543uc47qads4q5xe0pf7em", + "ethereum_private_key": "0x4460067c4370a22fa208b0d84f4f0740a4878068a5191c4e5c853dfffc95052a", + "ethereum_address": "0x3Ba585571F95DDf91319a91C78305Fc061D4f908" + }, + { + "mnemonic": "sponsor flock cute gold know logic service broken oak old dream sell", + "kaspa_private_key": "072106a4606478f2e3fe095659320c51afb6883f5ace40f303bbc474e8f2ac3b", + "kaspa_address": "kaspa:qqck8apl79ckudnw5vzgrr3gj5rwyc4g6ggs9n6cau3xjlvck62my0rq8q4m2", + "ethereum_private_key": "0xebcee29ef2eb812742c7720ef605ca82528941a0e558bfe658017613a0772b90", + "ethereum_address": "0xcc94185c02e4842Ca43Fea0E6ed2AbCeAA86cEcE" + }, + { + "mnemonic": "smoke dragon gaze swim beyond torch junk cheap orchard vault couple ahead", + "kaspa_private_key": "56bf68495bf1d87821eae4be193f3ab07ad92603ae126f5cfc56b2b59504105a", + "kaspa_address": "kaspa:qpaendtzy3cfvwux8mkdhpwz0as2f8y8yd7mvewnzv6ax9crlzatg2cgxchay", + "ethereum_private_key": "0x476db0526e299c12bfe4a7b2c6debf871754ec91ca723427099dd7fb6afce469", + "ethereum_address": "0x9B3E57832C80088b627A1690cfDbf9437cF5631e" + }, + { + "mnemonic": "similar mesh dolphin cheap trap comic minute decline lemon galaxy summer hollow", + "kaspa_private_key": "cc23fc7488f7ae3e312d5037b7df495fb7cbaa223ec84640813d26e7c7fe1be8", + "kaspa_address": "kaspa:qqg4dfuwayj482tvchzjew4mpuk2mfpkhm57g7ejqve48ewdv58cwe0c4a85g", + "ethereum_private_key": "0xb2357e17ebee6486f731449fc03dad0c576b834f9a5d0ef85807ca24aa864a9a", + "ethereum_address": "0x7177C282FbF758815C59CAE12bC3644764452c74" + }, + { + "mnemonic": "range reason team goddess sugar hamster oblige result inch lunch artwork action", + "kaspa_private_key": "da08004c6706e0fa485220db6d74b4af669fde52509c4a0e4a56b77bb851172b", + "kaspa_address": "kaspa:qqxv07wpqq2g0tzxeryeda676f4av7mcdxt4rgnwp4qss08zx688u44wfzcan", + "ethereum_private_key": "0xab4e22b410cfe2f5be636335af21305148195cf994be058a0c7b6f0849d04b50", + "ethereum_address": "0x7046721C10D827f7C468d3Dc7456acF819F0668F" + }, + { + "mnemonic": "version fitness market aspect dwarf move skirt pink slogan heavy island type", + "kaspa_private_key": "4d6349cdffb56ea273658cf803b454502b53c307cb4018a1963bab481e44f32f", + "kaspa_address": "kaspa:qqsxjx94n3hesp52y8u2zetkcyq9fdludlyrdq6aq0ed6etf6rcfgshf05y7m", + "ethereum_private_key": "0x36eceebdde7c8c902ad538a9fa8be777a4ba6c8aea9c978dddcb60f6fa57bb91", + "ethereum_address": "0x19767c5F3bEefE4C0c7de6027Cb60C6896fdaF90" + }, + { + "mnemonic": "foot core onion vacuum series avoid journey piece type badge planet display", + "kaspa_private_key": "a92311bccbf246e68b6d77efe2e3bfc0267f5ab27fc870f7ce3491f1827e1155", + "kaspa_address": "kaspa:qzzymatejyd2wl6yp93tmhj4dc0neyqnhrp9kruv4qpjunf9fdhpgq6q3n320", + "ethereum_private_key": "0xd4adb08c01efba04c62dfa416d05fbe135c89e8ae226ef1921d9aaa6b4ab8f55", + "ethereum_address": "0xB978a8aa50275c8bf4C4c3A8dC5123171D0db789" + }, + { + "mnemonic": "slab around night unique praise forget gesture body buffalo survey office grab", + "kaspa_private_key": "300e0a019f7bb64ddb40090b9605c44920257ee4d8f69cd5e8d2b02f3ced9c27", + "kaspa_address": "kaspa:qzvc95whvwf99ktpkvevtg4w3jgmln3t7k2jdk0mjkvc5tzhqz9hgyjzxmnml", + "ethereum_private_key": "0x89e860386cc3c096b31f388384ed0a6fa96ebcc69cbde1d73805cf91fce7e134", + "ethereum_address": "0x865E413DD6CcA055d14E64fA09942403fCdf2Af0" + }, + { + "mnemonic": "firm success broom merit panda clean track dawn foam army stand vendor", + "kaspa_private_key": "f4e4f2400f0770acc15e470736f677368bf56dbf5a249f6545f0bc7240040d48", + "kaspa_address": "kaspa:qz35nnvkcjrc2yqpcavs8axmxk58m29aqk3dpry4sww8w7p50pny284a584wu", + "ethereum_private_key": "0x8ea8b5a8a7097721697c7e610c99a918e6a3967ebf29ca71087e4b1bbb9daee9", + "ethereum_address": "0xC12AA26F0DDB8a5CaD18aF1B9b8f00d9c84a3097" + }, + { + "mnemonic": "grape dinosaur light amused frozen salon festival burger discover speed lava science", + "kaspa_private_key": "b762faba4d90edfe87bfdaf56a4f8afed5bef53241f043ae1bd1df0e0fa5d669", + "kaspa_address": "kaspa:qzgzg7cutq2myphmsmlma4ge2ndws8mzl2zatdpcxprtw8q48nt8wh5mknpkr", + "ethereum_private_key": "0xbc9cda86e80f3619df593f8c16ce86142629408819f2ba21ede6be643c5bf9ec", + "ethereum_address": "0x04B06d5932f5b74a029E0C9C6548a56A6Da1C2A6" + }, + { + "mnemonic": "laundry lemon ceiling ordinary wool argue grit bulk rookie tray trick coconut", + "kaspa_private_key": "a8707eeee967031f5d80052a3a0f4e2ba3e1bf8dcaa2830a4f187c1aae9287cd", + "kaspa_address": "kaspa:qrh3n7lf9m60xa8r3lfzxzang9uqjeqq689len0uutqashg8jh0mkyw7gqc0t", + "ethereum_private_key": "0xe13f3be0b883c5fdfbdc08a70975874ec40a59a62ad1038b68a4d57458259343", + "ethereum_address": "0x4461D5cA2e9dcF3e4cfB3b6E4DEf893dbcA149b5" + }, + { + "mnemonic": "pipe adjust brisk pottery nation employ setup nose such canvas exit marble", + "kaspa_private_key": "d11ba2e6bfe525ec13f8f97097cf6c381353c8fc240c30d19de70ddefe88252f", + "kaspa_address": "kaspa:qrc3cvudu3hex9dac8mtm42pj4y5ha53qq5r3t7t2ux2lx9m4v4fc80tn32ys", + "ethereum_private_key": "0x586865e53a13b7bf6c56b2fd61e6a53584f1eee7343faa861f0ae2cec91ba89d", + "ethereum_address": "0x015fD0bD41f098c8a2e9B7A5c1B1494A2C79Df44" + }, + { + "mnemonic": "chief camera excite fall round economy merge december income sort tone book", + "kaspa_private_key": "17534a067b98d8cc1f2bd14b4424c7b2bacb17d7ca6cf3f50af53a9edf99da3d", + "kaspa_address": "kaspa:qqx39jw3luvakrsj5du77tyzkfalxy9dfgsmzyjy43lxxtz9qq76j5ss5ejx8", + "ethereum_private_key": "0xc1cbca2877e8e760340da388ef5905e7a74313f0e261ee5428fa7492be26e9dc", + "ethereum_address": "0xCA58303CD5fD40f6460005837CCdf119411dA170" + }, + { + "mnemonic": "old penalty main elevator goose emerge soul mouse discover tonight unable boss", + "kaspa_private_key": "e4ef34e5b52a9b7f35277743dea7f0b26735ad3232ecfffa9295609836682e6e", + "kaspa_address": "kaspa:qzy2lgckd525xey3hrlfr44eh0y0w4tl3afddzhwyss0wdzwj32qqjl39k3js", + "ethereum_private_key": "0x5a729bdc785c280b08cac777da9cfcec2c13ebae1d76e14db5b0f6f3a3203518", + "ethereum_address": "0x82AA0dfEd7D48D66172675DB6e183bd871216863" + }, + { + "mnemonic": "wild soda shoot brown brass urban comic nephew chicken december net license", + "kaspa_private_key": "3266520b9f255d807a275eaa126917267c235545eb44639c8077f7c4b4b3650b", + "kaspa_address": "kaspa:qrv6qnkwqlr8vda2x0dtkng6lly2xq09jvxm5zu9tssl2rgsun02qe5mz7eq7", + "ethereum_private_key": "0x2ef1831c8fc86829a9c8acdf57fc9255f243402b345ec5313f6a27b5e747745d", + "ethereum_address": "0x10Ce586D5775c2E618A6Dc38df0fd120eCEC4df8" + }, + { + "mnemonic": "tonight jungle million tent regular box glass fatal miracle over bird squeeze", + "kaspa_private_key": "42c37c3b24685cd4c942483ab72135a44c3e3c4e0f21cf5032dd61434f1a064f", + "kaspa_address": "kaspa:qzz6fnp36nlwwftcug2hcthrgq3vrhu8zcjjkg3ppp3kzqz2h9c7kqjgmalv4", + "ethereum_private_key": "0x40f23c7fff87f10eb6ecd830a74aebb3ac6e87111ddfbb1b9d92bf4b14f2881d", + "ethereum_address": "0xE888440325EEA6c6ad8D3f8b77ea1418a2C91cB0" + }, + { + "mnemonic": "romance kangaroo shell lyrics ocean clown child morning pig page limb cross", + "kaspa_private_key": "ebb8d32bf411d93ec14cb5db73cc83ef7ed09d663543bef589ec028f0e6ee433", + "kaspa_address": "kaspa:qq75p4vflvrq0ltrsnf6rw4hwcftf4e49wm6z98cdcewxdcdn5wwzrs64rr2z", + "ethereum_private_key": "0x760879ea13862a5790419a6256c1f6b3ca405983b4621eb5fe2a11388d63d3ec", + "ethereum_address": "0x1bB25D5afbC69F7b76Ef1A9FE8498c63e52473Be" + }, + { + "mnemonic": "reward hurdle cruel appear purity quick truck sound scissors trouble nurse visa", + "kaspa_private_key": "3080380289adaab0ad38f068feda52cf3f9bf0a0faf15ce17b8d93bcc3a96dc6", + "kaspa_address": "kaspa:qzld0g68xa9flx6wl9scm62s0prffxt8qwtr7l0crlnjs4gf3x0zc8s8z4n64", + "ethereum_private_key": "0x5666c8a9e51c0066e0a70b9bee396315bf89da2b5aca1108503d9e34148b31e8", + "ethereum_address": "0x99c88b62737cD9bfbAA84a79115003c40eC73c4e" + }, + { + "mnemonic": "version motor rocket security glance olympic slender desk machine nerve garden sword", + "kaspa_private_key": "d2d60521d328a33434bb359e5b08952c825120578b0faf520ef65bfb904949a1", + "kaspa_address": "kaspa:qqpeu222a84yrp3a7lqg072tt4mnwezx308hq6dwq5y2x4qv0u2l75sse28zh", + "ethereum_private_key": "0xe57b04e7799822bd96f664dd454f31b309636b4cf357764a9a7a896ccc6cdca4", + "ethereum_address": "0x5470e0f45019909b4ab59900589CF4404b74c55B" + }, + { + "mnemonic": "jump wish milk tape lazy ranch jelly just alert energy sphere fuel", + "kaspa_private_key": "593720ddd7cb94c5f99b4e47f6850ec18f1bedabbae4e19d61b21d3fcf10a3e0", + "kaspa_address": "kaspa:qrdewy38a3uyn8euwv3gjq44s4daaujmhd9lw96ye92z7hf8tlvnq9t9nvma7", + "ethereum_private_key": "0x22fafc1ebf1066bec074424398b3850c643f93c188296d5d63e0d0a34d6e9512", + "ethereum_address": "0x6FDF1ED5d448d49c2bb8D24E44B5A3E43F42739a" + }, + { + "mnemonic": "satisfy valid novel light razor outer recall escape fault jaguar twin join", + "kaspa_private_key": "85e23105a192abec19ee1ef9ac744667d563c506c5f36e17b59740dd16d722e7", + "kaspa_address": "kaspa:qr0d6vjdtwakz4uh7yg7vspx385galx96hhhvdg628wfdvtl6durx3lhljzp9", + "ethereum_private_key": "0x22991c191bc464493ffa5534ce288bcdcaddff826a7b70101d2ae033e1067944", + "ethereum_address": "0xcB77Db885290F968631A7a2e48a0F3B7f3f62cEE" + }, + { + "mnemonic": "brave sudden diet benefit stuff differ entry toss green dice wise buddy", + "kaspa_private_key": "1ec222f354e20ca28de8fe46789c78315e19be8433f082a482ae3f2cc83ace55", + "kaspa_address": "kaspa:qq4nfyx42l5x9hehntl99387va4avuqg4zptq002prwxwwtxvxpy7yev0ykzv", + "ethereum_private_key": "0xf806cc2169a0e9c4bbc336ef4b9fb0e640cec37686387090684aa1f94bac3a8a", + "ethereum_address": "0x83444E3247cfEAf95b4eF8d28b9B8C3b8373C5a3" + }, + { + "mnemonic": "cigar worry remind actress crater dumb hammer better spray rebel reform cousin", + "kaspa_private_key": "5a41dccf896e0b865f6265fb2224d69ab0e9fe464db2a6acfc3cfb82511a1496", + "kaspa_address": "kaspa:qz2ke3yx8c3fw0d74wfa0c7vz2z2l726meqv80etwm4ze9njfnl8cdarrwgky", + "ethereum_private_key": "0xcee836b491eeadbe13f7ac01e2c9641678afa620c6db7719da75850ff5ff2977", + "ethereum_address": "0x916F2D32b5f50798cdAdbff015444CC3Fac59424" + }, + { + "mnemonic": "same sand name tortoise trash matter mechanic antique kitten annual grunt spring", + "kaspa_private_key": "5452779efde9df856ed36b66a1490cbab021d961da40d87566b76c89f500e47e", + "kaspa_address": "kaspa:qztc28h2ywcj2uheeadc2m770kd9pjzc4pdxcvzcemma6tggcsqxjfckzlecm", + "ethereum_private_key": "0xb5a20c5a8eb18964a6bde42003785cc39b31c486c6901ace9e745cee667ee37d", + "ethereum_address": "0x551DC09957a94C735fE118DCEE22823f9c223607" + }, + { + "mnemonic": "distance alien rely rebel cushion item grow chaos access shoot forest squeeze", + "kaspa_private_key": "50ab9634942ea89ff590ff759420146f8d47c0fbc0bb9df58b7f5587027d1966", + "kaspa_address": "kaspa:qrs9j0yj0rrcmuxkzrmszh9lj3ug6h53nw3u2txtngs9tljqlqa378ddnf3l6", + "ethereum_private_key": "0x8a5c1b88e9e4c183bfaafb84cf66104f4682b3f806894ec6a4380dce810e105e", + "ethereum_address": "0xd00f5F46113950e5f15B042e0FEACCbd98ed9451" + }, + { + "mnemonic": "breeze grief gaze ridge vacuum broom above speak walnut salt coconut mean", + "kaspa_private_key": "2078d4c133cdfc5754a8e6a47378d5b63308faef29d6fe5ed250523770f0ddc1", + "kaspa_address": "kaspa:qr9cuh8cyq2s7f9wqq7xnj4tmmvs8fx3evd9826a9kf5qwmshrafg43aj6x3p", + "ethereum_private_key": "0x7b545f34c09c3e92e3af031295cc4eef484d400cee756cd04860040ba6ccafe7", + "ethereum_address": "0x1Dbdf17A351C3b1118aBeBAD78ef1b92D9C2D10B" + }, + { + "mnemonic": "nose enemy certain waste initial ride win swap feel point pyramid strategy", + "kaspa_private_key": "1d7c77363e1329d5ca7f9a2d7ede46c49c5b3c755453cb0f5938283245dc2c2a", + "kaspa_address": "kaspa:qpa0nz92eh8df9prw8r3yj6a0xzdq0exjkufz004trqy2gdedm6fxl9rp5szc", + "ethereum_private_key": "0xeeb8198c1b533e3ef206a2638437eef191fe408cc8da71947e7c48689d53edac", + "ethereum_address": "0x71D5DE853bF74D7A87032b3Ca4Bee43719F3F662" + }, + { + "mnemonic": "pencil large entire erosion vicious develop tuition laundry domain sound fox green", + "kaspa_private_key": "47bdacd847ac679ddfe26d45a311011fc99d07a89027e013d3a897af58e8a4b5", + "kaspa_address": "kaspa:qr3zvpgpcthgg3vm9f6lref75agzapepydu8zc49650apd7snnxeg69ypv2v3", + "ethereum_private_key": "0x785756cba84a23d90129c988bcb7c27762f70957805b7ff31bb11c220c0bcc34", + "ethereum_address": "0xABFcD5FFFc54bc380e826a5D6d4429BD062C8326" + }, + { + "mnemonic": "group speak enable across west dinosaur guide logic order shrug message army", + "kaspa_private_key": "3d968f06c18269687ee98fed787d57742801fddf4e98e5b9a79dcacde3604aae", + "kaspa_address": "kaspa:qq60uh32wx6dw06kq2r6y5gv4f5jg2e3xnetvdrte20yac5pvl366txw7w2tm", + "ethereum_private_key": "0x8efebc3a99fb84f736be36c0cccb713512e584326e75d2b32fa8937ec004adf5", + "ethereum_address": "0x4E0aceb50EB60D6C74380c13dea09d16942dbCb2" + }, + { + "mnemonic": "print fat embody dial rifle hair mimic festival kid correct search peace", + "kaspa_private_key": "fdf4ecefd2363777b15a0e0d5310426793bae1a2a653c0a7792316c97b80a06b", + "kaspa_address": "kaspa:qrx2j4ruv205alfm9r6rw5xaht7ac57038y486cmyt6rl9034dya26htw7q2j", + "ethereum_private_key": "0xf1d32870db2d93e3e05c838f136b5ab9a653536eb19b1539fc4d995e3467fc95", + "ethereum_address": "0x0948a8347763d5980962fcA0386DbD7bC13fdd9e" + }, + { + "mnemonic": "bind dumb gun raw loud silly immense other million sister visual setup", + "kaspa_private_key": "bc548e874adcf287190a4f608b3b49b21cdd1d3d386c9ca198b316cd2a248266", + "kaspa_address": "kaspa:qrfn04kgzvzyv2lden4nt96452henkk254zqcp7t63lrvm7q95fgxd2vqqqz0", + "ethereum_private_key": "0x5cdb3ce401b41083888fe998b5b98be1c035f7f0a88220ccf8d13b43b9b2cb2f", + "ethereum_address": "0x88D1B6caC49544B115eC50D0eaf39BEE1f0c49Dd" + }, + { + "mnemonic": "feel cool dinner cruel peace maze grocery bless duty design mirror distance", + "kaspa_private_key": "17301c3b96316f90079a841609f23a97d699e71ad596b9012c73ca20c2741f6a", + "kaspa_address": "kaspa:qrzx5lacwjdehjj3p4vstrj95et3a5k8xh0e6ykhcnm47n9qa8ypqv9zlzlr7", + "ethereum_private_key": "0x7cc38d534d49540543bf4fe398a8ff28aa10bc1a45bf903f71a8a1fae476070c", + "ethereum_address": "0xE618910D512Dd37C7b39b16A5021ac3619b51882" + }, + { + "mnemonic": "spell imitate panic just scrub path piano tongue robot scout lamp slab", + "kaspa_private_key": "81070998eb6a7c0bf7fb27c56e6db4b11638924fe01c3d5cec2534e797cdda39", + "kaspa_address": "kaspa:qzlk24sj8ad7tuz7jy96hyyccc0v3x5wdlcj0gwmux6fzlm3uv8fjmaxaekqy", + "ethereum_private_key": "0x270ab08e70c1dc1a6ad95e619582f62b377e80c5b06ff204c64711d579b863d9", + "ethereum_address": "0x18c11810177CF1cE614CD47821abE697DC02bd76" + }, + { + "mnemonic": "olive auto render fall chase crucial six business permit memory eager cause", + "kaspa_private_key": "7cb6bdec9b2ad4c3e1899f235f43f4bf85c70c249762f1f54ed845b673360326", + "kaspa_address": "kaspa:qr6dflrxjvlne6hlw2lksemhy9zldnxvdgp2a7q3h8xze7rw3nvdqr29l3v8n", + "ethereum_private_key": "0x25d83811cdbff39016b3d06045931a7be4c6a47462ea8d486b923dd9193ef3ae", + "ethereum_address": "0x310842a7a9fC70eFCFF04542eb1c8d28B1C0c2Cb" + }, + { + "mnemonic": "jacket business price thunder magnet denial notable cruise report push execute error", + "kaspa_private_key": "556936e52eb93a5f2f2ac69e8b3c3f6a8bfc59d75195f15ff1b925a0b19d3f81", + "kaspa_address": "kaspa:qrdnjfrkm5g6xp0uprlzvnrhx26a229qsne3vn5jf7mspl8z5ahpzdpmgg8se", + "ethereum_private_key": "0xc741125ebf3414ecac5a2487720e761aa0d1443d7f3344c17c692d1144f37975", + "ethereum_address": "0x56D49611bD2D69D664de9d6EA0962097843bb075" + }, + { + "mnemonic": "clock sibling visa misery rely can fire brother shield rent old pill", + "kaspa_private_key": "a304fafbf52986af96d9c0edfae9ef1465ca5aaecdafa50b40f5045b52e24612", + "kaspa_address": "kaspa:qpjd0cn3u3zj76nkf3pygkvnmpf9aa4qrkk4kvw2z7aw9u2d6evry89wyvuew", + "ethereum_private_key": "0x52dfb92bfbdeb229271717220f7d6d3c0c74db90d57ee069ad91e882f35f457b", + "ethereum_address": "0x3091a649da27f458a4C3D0f1E73B60477512E9f8" + }, + { + "mnemonic": "elegant wink people olympic jelly pen track goddess ethics lab tired trim", + "kaspa_private_key": "bfec8ed76aab9837512e0d20fd823c7460d8366ceb481edb38f0d1f31eacf42c", + "kaspa_address": "kaspa:qpkmpaskkq2wqg6gctdvvuty5pxnwva4sfumpk5ljgcqretnuy5dsxrjs596x", + "ethereum_private_key": "0xa693c520068f6992c59b10aac91dc1d264cf73c1e455c7e587f1256e0bdafbb5", + "ethereum_address": "0x5121A79ee3c0C1033FEBf8fD599478d5a60184Ba" + }, + { + "mnemonic": "excite delay only winner cube about derive hurdle visa pencil bar flip", + "kaspa_private_key": "87a177b91ac54bee86594c9b5b6f01d992fc6cc1d35501c944f99717d870da58", + "kaspa_address": "kaspa:qrpayhkyh0q6kkggzu437e88y52v2uv8mpt4t6e5fay9wsnfv78xgswvrsv2z", + "ethereum_private_key": "0x5151b6073d5cf1242f5722e43f65a5e9d0ba21d9898d3097067a9dbcb972c40b", + "ethereum_address": "0x03B31c2732cC788FE06b1Aa5B7481825A74Cad5A" + }, + { + "mnemonic": "provide cram mixed noble cheese hard basket lava tourist zero initial obey", + "kaspa_private_key": "4202753dfa4957ea20884e512e8e83ca57e987f7e9d64b58114410a6c6e4aefd", + "kaspa_address": "kaspa:qpamg266e2yw63ynhqzny9adwz8salredyf2g3m8gx5yla0ux5vawd020ldp6", + "ethereum_private_key": "0xf1e2083943a24c32d0f72f9d6210ba5fb57148daa109f4107e1b0c4b2ae1fb62", + "ethereum_address": "0x271712c9dad2B654b247Bf3C62E47169e14D123F" + }, + { + "mnemonic": "tail tooth inner sibling dial puppy boil angry midnight exact lonely miss", + "kaspa_private_key": "f3b97e31e953971fc81c4f339e41489cbfdf751cbdb4e2f8c2ec523ce7e594b6", + "kaspa_address": "kaspa:qz0zw38s7q0e0upzv4t4706xsy3hdxtyykyrr2fvv8cgc33x0yny6y8zpuece", + "ethereum_private_key": "0x1a66581c2ceadce8b728abc7ea06f9da98e342b97c1932dea23b4357c999ccea", + "ethereum_address": "0x33dd384B9510AD2458283D8d56698441A5D4AFe4" + }, + { + "mnemonic": "glare vessel lemon lift rubber deal oyster umbrella surprise purpose because panther", + "kaspa_private_key": "a0e534be3aa9c6fe0510277b6d29c04f3e0789707d6b0e615c6bed412c9bec32", + "kaspa_address": "kaspa:qz9pvl2qe3528df62q7lsnh520769ejvngg52dk95r2yu4gmjt5l6hen2l7c8", + "ethereum_private_key": "0x678373a6f464c90f46345ccbf81654ff81b92e15b49d0e8489b17a01835629ec", + "ethereum_address": "0x7FF2D78DD289b2b1C55A56B8a7ddf9113D72952D" + }, + { + "mnemonic": "message crystal width thrive shock refuse raccoon pumpkin pyramid rubber gun hidden", + "kaspa_private_key": "ab6a70c7dba0b4e387b55cd0790345a9421774cf3b0d7cbbdd38bfb1213199f8", + "kaspa_address": "kaspa:qz3mvdmyk7xvmxtrxqrcjlzjrncatqj6enma23zyz7v4c0d3r87fxqwvxaxwu", + "ethereum_private_key": "0xdfa6641e966efe3ad950032ebbff67b66c04eca3bde41dbab91ee6d7463df9d3", + "ethereum_address": "0xeF6Ea0AfD40275693eA9546eE868FEBbE93E39A4" + }, + { + "mnemonic": "alter inside marine view guitar measure table before youth fetch little front", + "kaspa_private_key": "15075083d09ddd659b496f164185dedae8d244903e34ac00577cc1602a9ffde0", + "kaspa_address": "kaspa:qrxks89skjct8hhvkpkj6tdkvtc3panj0m7gfn2fqcgkldc4pjkqjqffmnrrr", + "ethereum_private_key": "0x499837a93f0bcb5035961d86f4d69aa00d80a87d13b9b37f0c92d3fcafd3aed2", + "ethereum_address": "0xFd55D053799A67527b9797A81197450C6Cbe1a56" + }, + { + "mnemonic": "final fragile hurry tobacco lecture lounge cereal mask impose behind tip buddy", + "kaspa_private_key": "6af2bbc3121cecd5185fcca8d68e4d4e510e35bd27ae69c0700138af84e50dfd", + "kaspa_address": "kaspa:qqawja9kfs6jqkd5eacqsumn88e26uvsmkqf9xenc9jnz4wnlrs2ucuyy7vvq", + "ethereum_private_key": "0x99f1b715c82b80be53b33becf6db013949b81c4f6487ee8833cbdb833814c8e0", + "ethereum_address": "0x11558aea2f13df30Ec91E1B4209647564c827907" + }, + { + "mnemonic": "cushion plastic venue soda hundred setup master need toast arena mosquito pause", + "kaspa_private_key": "50a35752662208a27ed4b22c00877786a5395d14389c339bcce6533cd72ff2a4", + "kaspa_address": "kaspa:qrlk6gctj3jxd7asy0jnyy7c6s24nw6mu5e7g2jqlyjm0chwphv2xym8xn9c4", + "ethereum_private_key": "0x541f7f44b604b49ffa67d44b9af68dbab4acebb0393b5e642b0091008f0c35fb", + "ethereum_address": "0xE7d275A85316050Bb9901D20c6101382218aCCEF" + }, + { + "mnemonic": "uncover attack chuckle swing rule taxi window hard canvas nasty peasant stairs", + "kaspa_private_key": "ce5a2f7fee3ee9984858cd6fedfa60bd9790dd745eb22f13d9478101360fe266", + "kaspa_address": "kaspa:qznyx2jpymr56zmum9d42u49um0ec30cn2mf49kzzhyvhwm4prw9se53mxh9z", + "ethereum_private_key": "0x9018ff575c74a44e3e2c7166c7a9fddd3ca59624c18559dd5a2659507c0d958b", + "ethereum_address": "0xcA7F8E1ab30bE9d4873ca62022A7C48dE1B0a840" + }, + { + "mnemonic": "gown remember exclude decorate million method liquid gate panic knife glow couch", + "kaspa_private_key": "986ce04bbdbd949a70e22f9d25b9ae17d550a2d4a4feb20b0e2268c4cfbb67c0", + "kaspa_address": "kaspa:qpufyx9fp9q54rap9z995gyvg8f88ynwkgcl49tfv2lqrxh0j37jkd99g4urp", + "ethereum_private_key": "0x427d37bc43b083bdfbcac3b84df9fdf2795fe3d127a1c15fe3f454b6465ce683", + "ethereum_address": "0x4633fdA2bC5f6366F8d4c6673Ab78c5E122F6cC4" + }, + { + "mnemonic": "maple gift wear clock episode deliver gorilla lumber ankle item between tuition", + "kaspa_private_key": "9d9be84f6333b897b22067926efd8b2df34727ab76960076a3945f8a079a6272", + "kaspa_address": "kaspa:qrlx2cdl42kw8cwkzn0vdev0ev4v9ujjlq8h4uzzzwafuny0kt23kwu7jfd64", + "ethereum_private_key": "0x96019dd8c25fb2f854c77cca47c8cdf696a15c7ab4fde1f00aca98c3a1e799f2", + "ethereum_address": "0xb8C51Ec3D1edcb89E532135A7Fb602Ad39b7Dd07" + }, + { + "mnemonic": "first glow train neglect ignore artefact viable fame spatial marriage tribe life", + "kaspa_private_key": "7fa6a027865935e808197381f191096fcbbf594c24aea1fe9a1feff77ed84304", + "kaspa_address": "kaspa:qp2xqa8007hqdckyefelgrguse6y98a07u2fsuxy8lcar4ytyn49uwmz7dm46", + "ethereum_private_key": "0x9d9631d46f1210c65731ac9f146f5e4e5f6c7106baf239cfe8b994cc4dc725bc", + "ethereum_address": "0xC72B94EC52d50d56398f91De90437847c236Dd34" + }, + { + "mnemonic": "front crouch lobster valley finger frequent floor fold clutch wise body gauge", + "kaspa_private_key": "11a56d72c1e21a47e697f85080afc9908eec51bd9e2cd87f1437197d846a4c3f", + "kaspa_address": "kaspa:qrvkvm4p8f4508prffcgkp6s26etk8x20utucsxttz76yd3yqhvkjl0wyxkf2", + "ethereum_private_key": "0xf1f774ef3a8b56c725a660b01914e3ae001110a5c53a3be247ecac61c0111490", + "ethereum_address": "0xfF12CD3D963B044a08b02A875E15E4731D135aFa" + }, + { + "mnemonic": "motor gown ranch midnight girl object you exist maid edge smoke exotic", + "kaspa_private_key": "33aac25226e1e29f6d0e8acf831953d6afbe01e2a201d9d9c3b6f48907b0743a", + "kaspa_address": "kaspa:qzh8qlrlmcj2d69t5gm7t7hc23tjwmypjy0sd5qfjrwyj9e99puc6g95j5f69", + "ethereum_private_key": "0xc9eb083b65237feaadd6f79d2b19e724b160667f47ef9e2497e7fc07f3b8cb03", + "ethereum_address": "0x345D8bDf25Fd772822777B03a8DBf3082B8f0aF2" + }, + { + "mnemonic": "near aim grocery plastic tunnel loan junior eternal spare gun harsh almost", + "kaspa_private_key": "5fa3a20a958874cd8cadb3f6d594ca12b9b17fa4ee11adcfec243bf6771542d7", + "kaspa_address": "kaspa:qq7pp5va3eaupjreu2r2sdjxfyfsfv9w520ux37z5ft32z4h8j72xqqvhj8zs", + "ethereum_private_key": "0xab5dc745e871f02092edd674d4e9870cdc20c33ff4428a5b9d824246f2e96bcb", + "ethereum_address": "0x643D910192FD1AD06FABb31bB0c8afbf9a11f5f7" + }, + { + "mnemonic": "mountain aspect ten topic punch lazy powder scout album lift cry clap", + "kaspa_private_key": "b9561da12573ee70fd7c15aff34329f06743b005953bb86e5a6ffb524b961c80", + "kaspa_address": "kaspa:qqnxg8mfwysh3m0gtzhqfvltznt5mmrqskncap4uxx7puwqq0c3sscaeeez7a", + "ethereum_private_key": "0xb9195a893971da205f2f103d0ef5c0ce8d7251444b63fcff2c97e4a03abcb6df", + "ethereum_address": "0x9f842ADad32F0AbcaD01b26bA9fF49fe753DAe3c" + }, + { + "mnemonic": "involve month mad disease lizard horror bounce village fat expand cupboard load", + "kaspa_private_key": "33077cd2d6bd062ede3d61d5455eec584f24ea81cf058884560b04baca506fe5", + "kaspa_address": "kaspa:qzpjlff504zj73n275rvkd58n5tzdt4stj33xe4htm29r3zfh5u870dzd8pju", + "ethereum_private_key": "0xa58edb75709e93599c20d742e134b0e5e93f36ae1c865cd7be1ab40ea89667ad", + "ethereum_address": "0xE71D0499Ef393Ce10853B10ce3149D389505804c" + }, + { + "mnemonic": "boring acquire day siren nice planet tragic parrot clean dance recycle push", + "kaspa_private_key": "abf520b1adb1fc205b929f779714c4f6d63c72fd08fb487419b7c532d7003e77", + "kaspa_address": "kaspa:qznddq2v2lx593kg4sf08alrwmna7cmugpsx2q2kjrwylwnk8z7pxl3gzx63f", + "ethereum_private_key": "0xe15c2049e9b7f30b252d031f785bc46931d0ba4ea3fd1862bd45014280aeeceb", + "ethereum_address": "0x419250731C2672bC75410D4761A8C319ACEf0C1b" + }, + { + "mnemonic": "canvas enroll cream reason display spoon people want sight emerge vital jelly", + "kaspa_private_key": "8778f99c0c53d7328a848def490a77b893d909eb6194ce77efce9e1ddd920a15", + "kaspa_address": "kaspa:qqffj8utwl02rvhte926qv8656pkn6kxpuf30l2vs7c49q53hqqs65vxjnm9z", + "ethereum_private_key": "0xda280da33a7de91b7066af96f9368bfceb72ddb759dd725c3c7737afe3277b3b", + "ethereum_address": "0xC9B3F7AbBfff65db03D4209E6A377BA50CDe3392" + }, + { + "mnemonic": "table danger reduce upgrade achieve wisdom impulse paper where grab slot umbrella", + "kaspa_private_key": "790165172c41ea692b303f36c2ca6aeff0ad1594692c492e8a4d28d68edf0344", + "kaspa_address": "kaspa:qpcesy5qatfckh0gkshcmrp56cwjgs573vvqfd44pp86scwft3qs20d4u8vdn", + "ethereum_private_key": "0x6004ff593e1a140f237b37fdd171512f02e0f7913c9b7cc042b6e87264f1f586", + "ethereum_address": "0xE268E106fA830aE6f6036DcE62F2bd32640aA90e" + }, + { + "mnemonic": "flower process father wild finish van camp quiz result shrimp chef alter", + "kaspa_private_key": "41104e2ca9de6ff9d0f941ce71844f37b025d8cf752d288dae0145bece5b67e3", + "kaspa_address": "kaspa:qrrug4h2uxz9vtnkhck84c9qgncjs8l4sgsjzcya0t93g6numc602y97tdy45", + "ethereum_private_key": "0x2d76a228289268373ef820e32910382d81a5f9742ead91668f35fe9aa777ba77", + "ethereum_address": "0x2D5987d6aDBfB5075272721f4Df13daB7facdD14" + }, + { + "mnemonic": "life borrow rely prize planet tuna actor reduce tuition outside modify sock", + "kaspa_private_key": "df6fffe6069228dcc30d1980f49bc2caadf94c94d47ec3f2a0844baa03007ff1", + "kaspa_address": "kaspa:qzm3h3fr8p59ga20aqxtsdf4r9kz3xfqaysph86e2g83ke07fhqnu3uq3fw5a", + "ethereum_private_key": "0x2fc6be42dbf860678afd61fe3ae1224f21097795f47155eef457118e7719c84c", + "ethereum_address": "0xA29c76A5F1110361Aa599aE63B224e62426eD423" + }, + { + "mnemonic": "morning install risk pond select sail gesture chef pyramid era chuckle unfold", + "kaspa_private_key": "e502a44c43a73cb2cb5abfea4fe4781b72ee2565e137399e175952eb47e590e9", + "kaspa_address": "kaspa:qqsranlmfcwvt697huz80yvy86xp3cy4dn8u4jy5rksphns8fgsn6dk9y7lc9", + "ethereum_private_key": "0x77cb6b95276b6db09979208b348e12bf78f5bb2efc79218bafb00fcb0dc5fb4c", + "ethereum_address": "0x420136302262654b11B82E935988Bfb82F46868C" + }, + { + "mnemonic": "fitness task point argue suggest survey leisure shallow peasant need decline jar", + "kaspa_private_key": "5cf78344db7f4c02ad2a90c61d9319794fa41b718b68e90a6e4c57cf4d3e4c56", + "kaspa_address": "kaspa:qr6n9qpnax5z6cfxdqxxwa7rez9f5euwm5kgnqtnl2ujs6zf0nzc760a8ve2l", + "ethereum_private_key": "0x5bf995714800e218b5b62e43dfe2a135b0c6d5143f828e3f2666fc4a809e8a2e", + "ethereum_address": "0x3418336996b42C6D9Be1F6A1e57CeB03392f3498" + }, + { + "mnemonic": "enlist hawk magic gloom private reject roof cliff goddess rail become sort", + "kaspa_private_key": "8c9ebb34e3eb010d830a34b2c1b835a3b3f70036e94ddecdeb60be73cc09cfb7", + "kaspa_address": "kaspa:qz6qyum8mnh9vgt26kyfp32az60w85d5y0tad6mulj96vfsar7lcqdqjqqh8e", + "ethereum_private_key": "0x6a3aa186f236dc7591269796edaa2ca03690e148d40075dd0c79b1330af6b7ac", + "ethereum_address": "0xF8c5b52B090d466453F01A5Ef441129e287961a2" + }, + { + "mnemonic": "slab metal mirror cage carpet noodle audit shoulder solar summer company actress", + "kaspa_private_key": "8aae2559510b4be73535d37e8aa658f61d6fcca36b0a9813fb7822e9c33de5ca", + "kaspa_address": "kaspa:qpwn3729j5atlal0ppkfwvtnvlu9q4zh9hxlaaz8a5sfspt476kfsz3re5jxc", + "ethereum_private_key": "0x5d361e68ead4c679d3ea74662f63d20f87413bc30b127dfba4bd101832f6c490", + "ethereum_address": "0xcbF7b5611bFd7b7fb7AaD9a028Cb48208DD2afE3" + }, + { + "mnemonic": "obey common iron duty double wage gun extra crumble attend profit decorate", + "kaspa_private_key": "450875b9030215a5730937852c88b01337d28ee5fadb0711ea39106d95548ae8", + "kaspa_address": "kaspa:qpalfdqnyzn9zux6fm5xyng4te5ef293m9wcvue05pqw79la5v28sxpzatyhk", + "ethereum_private_key": "0xce46f48ada545762b4862ec8d6672e983adc56f76711287333a75528e48119a2", + "ethereum_address": "0x60aA1EBA9c1FC7Adbda6b01547A725bCc8c7c219" + }, + { + "mnemonic": "select vicious trend base frown success shy raven enough craft various frog", + "kaspa_private_key": "76fcd0591fd73972834fd46a7e7c8b2b10ed7a39d98baf750e05a46ea833baee", + "kaspa_address": "kaspa:qp3rlumpxr4zajel52zxvsmp5pe7jvt4he3wytwl5kftsr5rpsusc6apy9atl", + "ethereum_private_key": "0x981c33a4383bc20df38fc1159a65e66367cefcef1f57e449840fade9b9b64005", + "ethereum_address": "0x2c36F7488a86e6c609528BaFadd39EEA704F8038" + }, + { + "mnemonic": "magnet keep banner live sail giggle blossom duty super void feature stem", + "kaspa_private_key": "a7f904497f2266124826047ab6a931944c4f54e05ec328eb4a118543f6783374", + "kaspa_address": "kaspa:qpkvgv0nnkj04henn3dnjgeq855q0fs2gwvam8yn5q9vlnr76zl5slmskmmch", + "ethereum_private_key": "0x96a35e04b9989fb5d93521b5f96b68bd0a18cebf9c6ab4015bff2ea8bb0aabd7", + "ethereum_address": "0x31886BA647883c92F9Ecf643621d6ca37C140f01" + }, + { + "mnemonic": "birth script kit tape sense way market canyon wisdom dentist coyote govern", + "kaspa_private_key": "de2044e403aa99cea19df0b3595cd948aa4d37f70f542aaceacf03fc251733a9", + "kaspa_address": "kaspa:qp2t5wpl5ut755r2e7zdwrtyf7hskgc9h7msguv5pe35rpewk7wgq632705ew", + "ethereum_private_key": "0xe8f507b9e75fda77ecdd09e4210668b57c1dcf468cf7f3bd6da89baf7e0c75df", + "ethereum_address": "0x381b25F88Ce9f92A4bdA2A4c2d5E9BAF28e829E2" + }, + { + "mnemonic": "birth surface field banana dinosaur sleep marriage remember danger adjust embark depend", + "kaspa_private_key": "028943c07a0eaaadfa0a823dc0f6eea39ec7ab9771b3c7c9e8ae863e7a04e9d8", + "kaspa_address": "kaspa:qrp0hg46n3ppaxnesg6j9w8nm5mlauxmwke4qghjn4z9vrasc43s7v44xvrsl", + "ethereum_private_key": "0xc42c399ab9050d92af4302d8243e9b0fba4527f864ec79b40c9253cf04ab1d29", + "ethereum_address": "0xb3c94DBDB9776F324c9892F4086e3092b4F69136" + }, + { + "mnemonic": "dinner cradle fossil jeans behave anchor rail earn produce scene damp naive", + "kaspa_private_key": "e9484e88559c51d9010a212de81428cd95725ad4559f7b20486bdf6d35fbbfa7", + "kaspa_address": "kaspa:qzs39hl9e3s2ar576zwcrm32zfsf2t5xdh40uu7tz97kjhgyg4rx2aydk7xef", + "ethereum_private_key": "0x539d5880b1943112a2d2b184aba36fb1d2993d4f9699dce89e3c4b36382d7209", + "ethereum_address": "0xCF680190662ef870Ab8A064E7F10d04C2aA9d903" + }, + { + "mnemonic": "zoo near point primary dune once where inform odor safe liquid address", + "kaspa_private_key": "073e291ecf2a07f117d5642928ff8876105b49273385c3589b7b91b238d6f23e", + "kaspa_address": "kaspa:qp2afv4rre4lper8468f59ffujde9e8x32wtrjrmuhfe80zvthn5cjq6nkzdw", + "ethereum_private_key": "0xaf94639527b7c15000b3f8d0efb56d46221adf40eeb32dd2363f2beef5424506", + "ethereum_address": "0x9e57020473656375f2633C1Ae11cDCBdA83B7D16" + }, + { + "mnemonic": "window erode open clutch amused plastic beyond hungry segment forum hold notable", + "kaspa_private_key": "de26a17be320ba92350cbff97060972197a16bb187d837247fb8d4b2a8040f60", + "kaspa_address": "kaspa:qrx6gxxnhkh2suzszm0864ecchdly35jezexm7cjclfc4528mmkhyhqjdfx0t", + "ethereum_private_key": "0x952c9ec528c2848d74c696328d454d24b083c8c3a102c64905dfc766d3c3fdc4", + "ethereum_address": "0xF7df2dbAaBD4b08E5b2097Cb64A74Aa868684394" + }, + { + "mnemonic": "adapt coconut decrease select clump torch dog supply throw admit female source", + "kaspa_private_key": "f68d2a7ffba1c8ec8fd17ab5b16e9abb93255f3a127dd96edc274759dc75d2d4", + "kaspa_address": "kaspa:qqamlzz6mmpqv7s2sd6vqlfngqhzyq8j0el8latwjc7amdqgvlrpsn0vckwex", + "ethereum_private_key": "0xfeb5cbdefd9501be68a706db7cf2b878980c5b3bde7cc045f134e21fff2d6ea4", + "ethereum_address": "0x426694a5A2f9a3a0972299a314fB68354b1C5113" + }, + { + "mnemonic": "exclude rack sea note strategy picture portion junior inhale nominee degree dawn", + "kaspa_private_key": "197bf4710ea059babfb4af3827a9e757815d1b0808476559debc4e0fbb2c3141", + "kaspa_address": "kaspa:qqst700nah2cva7k0vvgekz0ys4ay9lyemy34qyt6tdfg9lrz3wj53uwx5xad", + "ethereum_private_key": "0x3f9fda242bca04a65154379f522607c7f0546d97326d284fb3ae1e2b8cfe765a", + "ethereum_address": "0x78c3468508A980fCC9f5BfB16a6337826D9906f3" + }, + { + "mnemonic": "knee digital curve absorb announce ensure large apart banana solve smart guard", + "kaspa_private_key": "0b4a402d7a6474856befacc8744e32c3a7d00b9f5d66d255a1f3b8203c17821b", + "kaspa_address": "kaspa:qr2tzhxgzq6x2vxrs968nn7fnxlmcks6rfnzs9hndgt208tdxwsr649c0njfn", + "ethereum_private_key": "0xf015966c63da5732326ac569845409847eaf4a61df1404e19b4f9a595b13a94f", + "ethereum_address": "0x33079682325CEb5163f233d057cA022568ab7DE9" + }, + { + "mnemonic": "jungle degree science diet secret cross original brass knee erupt yellow orient", + "kaspa_private_key": "00389e33da4e52b3ba430c5a6ab91ea607b59df028bd1406359e310f071a0e6a", + "kaspa_address": "kaspa:qp2fjqemeayej452jdy8purshkd3kgs7wft02msw2wcsnh28mxnvg3edm2avx", + "ethereum_private_key": "0x40afcb6e2e7ae1017b82843c613a21ff9d98cd9a7be264e08fbdcda025398f9b", + "ethereum_address": "0xD3a5A61f4e55b64f07C4cEfD563FF88FFB49B1Fa" + }, + { + "mnemonic": "daughter shy elite tilt rally icon gossip kangaroo vibrant borrow smoke track", + "kaspa_private_key": "f18c69e8a334bd834ff0d185e293966065f166e25242703af1e7ec5a28918e9e", + "kaspa_address": "kaspa:qpxw95hfs6eyrfvz5s5ue297g3fl0q2qsna34gkr9m4q0478t8s32y5lh3nd6", + "ethereum_private_key": "0xaeef86961e22f0fb0d7f7f75d36fae2a59a889e516f48892a38b8212645dc960", + "ethereum_address": "0x7D19Be211E5635aB24A69Bd31b7410E934625EE4" + }, + { + "mnemonic": "okay size orphan screen vehicle next evidence shock motion boss profit flame", + "kaspa_private_key": "4a3c783085ef07be3fa1c1dc9fd8d8197adc7063252d5809943a09e50926d8e9", + "kaspa_address": "kaspa:qr0yfygm5dzw3xnh39zda6mydh9d0pkpqfweecqw8s3v77fks6j2qucwhtmaq", + "ethereum_private_key": "0x163345203a0ca10fd8f6e92cfba72361248bed1132311aa914f785de2db654ac", + "ethereum_address": "0xa89F1F0864ba148E38fE62683d5337d5B3f12a02" + }, + { + "mnemonic": "bunker poem tuna ethics grit reward release scene write enjoy regular above", + "kaspa_private_key": "d39b871a9dfe71032c9d43befb1aaf26cedbbc6761942ba08b3c6d4d4302da49", + "kaspa_address": "kaspa:qrcq255qd5gwu5ma9053zke6ayu30234h7pxxy9uly946t4wf2jpc8t8ynyt5", + "ethereum_private_key": "0x6a146d6b285379feb08640bf8877286769a8a638be748a9c6b2cdcb128bfdc3f", + "ethereum_address": "0xbA75AA1E6CAB41384298b6c0615D88f8363d4A5C" + }, + { + "mnemonic": "auto repeat erupt dish rate maze wage exhaust fantasy pitch liberty aim", + "kaspa_private_key": "a1a4b493051890acfc98f9c3e5c0cba10407569bbcd197fdc7041ceb0333fd3b", + "kaspa_address": "kaspa:qq9mvus02lhmmn3xs9r6llfqyq9pd76t78qlwyy8d934v9humacxvmgmad7um", + "ethereum_private_key": "0x2c671956c7e063c8169956898d370e58cff6680e5d70ca6d6f8892930c7fb6ac", + "ethereum_address": "0x6F73B3a466391d8faB42977cdf97d2312b0768a3" + }, + { + "mnemonic": "critic quiz public poet fat cool valve must smoke album pull welcome", + "kaspa_private_key": "3307ca5b2f36a43538e0f5bc6214ff23ebf2a195c0050d8619764343c58230de", + "kaspa_address": "kaspa:qrshehpr2830mj94n3cl5rq03cke657kxvayt0g20uvsszskh6jq5908c4jtu", + "ethereum_private_key": "0x28856dc650103f188d265732a46cc3240b70e139e75fb4232a2cc2b110b89a54", + "ethereum_address": "0xefd66a758954a1E9EdA760E8C3860D8D0b9f1e00" + }, + { + "mnemonic": "language always model pumpkin select narrow muffin promote yard until snap orange", + "kaspa_private_key": "066c9235d4cf74f6f10e6ac62dda909fab083810c4f0b7d42044c34903adadc0", + "kaspa_address": "kaspa:qpkrdwfm4n9mev5uqz0lxjh5sug36nlpaylqcvv29jgy0u4gm0nr7chtsknf9", + "ethereum_private_key": "0x97c5eec31a2be6544a67f1c1051e222375e0948c673316fc77a1ac3253790d66", + "ethereum_address": "0x608FE9c2Dc38F18a660484D6F37d1BAedA910FcF" + }, + { + "mnemonic": "pipe blind check obey release clump conduct away abuse dove engage nasty", + "kaspa_private_key": "3c29d0c97707bc1e4b52c13f89d2bbb38ef7493fa1bcd22d048d0714f311e233", + "kaspa_address": "kaspa:qqs8u6j9506znwf7tudmfg7jtltu2ynyazpwvz5kza9t9ffjsh27yym5dcfla", + "ethereum_private_key": "0x2462df1e4e4c097dfbe135e3d5f537a087c709abfdab53c9b008c4bba7ba7f85", + "ethereum_address": "0x3eb780f37814348657f054B36D1904b7a9750FE7" + }, + { + "mnemonic": "spell choice luxury general mystery leopard few hurt chief arrive electric romance", + "kaspa_private_key": "3adaf3fb9a9e14af9528eabac4214666077868dbc5cc0faa8f028054f55c709f", + "kaspa_address": "kaspa:qqg42zycydar6y9022s5vpqwwekya8y5k45al5thj7jaw3hsuzchzxppvunsu", + "ethereum_private_key": "0x90574234e8b16c58b037d1d29d0e0844ad14d0423624fc746d45a609f119fef1", + "ethereum_address": "0x07E32e9C56ef09A41f255E555B3F7F6E39345dfa" + }, + { + "mnemonic": "wrestle modify short focus timber desk demand visa sketch hood umbrella aisle", + "kaspa_private_key": "2719a94db04f286ae8a20ba072a7ca593241e007acd5273d7005389701abd343", + "kaspa_address": "kaspa:qrtajdyvsuyf5d8558kchz2mndmpf2zryu5gy5jx5jkxfmglg0532dk9da4fz", + "ethereum_private_key": "0x0744756293afb468273c51c57dff6b93157f8c6eb5af080c24ce898b749b05ed", + "ethereum_address": "0x9BD9b9EEB985fc143316f8Be049cd49DB5684B50" + }, + { + "mnemonic": "skirt math nothing chair lunch smart toast grocery river gold innocent flock", + "kaspa_private_key": "ad11662a64f482e066977980dd658e7de7baf0a2d058063cc4ca790676cc69cb", + "kaspa_address": "kaspa:qq4p0v4u9n4ve4hfvv8en5uzdn5czv8pgmdyt340ap8azajaaxy0x3s8xlrt8", + "ethereum_private_key": "0xf190d1113de3742e3d54fc46fe64bee4205af6a8dc6c28f0e1c9a2467d52d964", + "ethereum_address": "0xE32B821f74129E2AF38BBF017A41E7890b98C7c4" + }, + { + "mnemonic": "unhappy tomorrow way afford kit flame avocado boost danger maximum emerge bargain", + "kaspa_private_key": "6e56c778ae6d1e9a96c0a8a6278d5649c159d3774082729eb206a3a3e582f03a", + "kaspa_address": "kaspa:qpnyqmzemsl5u9c9zkcu35x83vlanmd86yv2zd7u3y2u7g2t2wcywngch7cem", + "ethereum_private_key": "0x7624d342587b731ca388d29cc4727a33a20461e48bdcb5bbc63be529bf30e11c", + "ethereum_address": "0xD889de36956e40E34d8D12D8Fe38862F9E454769" + }, + { + "mnemonic": "powder blast fragile cart erupt because service danger matter glove business egg", + "kaspa_private_key": "efaea6158aa9f9d86bfcfb0259185baecce5e771e462db0d0642aa031031fede", + "kaspa_address": "kaspa:qruntgefa88jtmndd89t965u5vncgg3q9pvuey9jk3nf934y5xccq7evljudr", + "ethereum_private_key": "0x0952130f6d9edcd1dbf751803a5aac2f29e362dd1728778ea5e06d10da2490f2", + "ethereum_address": "0x04Ceb99f70EAAB0E25EdE7E7f4d848d2ee8f44F8" + }, + { + "mnemonic": "lens august fly behave sick border doctor message enough figure solid subject", + "kaspa_private_key": "95e1a16a9a49766b00187ed05b88511abb9f6e97571098e63c02a2e7c3eee98c", + "kaspa_address": "kaspa:qpez9tzkgc9me5sw22vzpjkm9gc4u9elrtdnt0xmqzye5er77njkkkjyfetut", + "ethereum_private_key": "0x0efd75cc29ffb8f5324c88d6d6f02a0da1c6e5700f42a363c47366465323695a", + "ethereum_address": "0x5c8B92a084017e944d42bA694943C0b0c37cd068" + }, + { + "mnemonic": "yard body replace ecology hub essay dash nice outdoor salute flee east", + "kaspa_private_key": "2321e5daf3d39e43db54b4d422da4406a04921d5e13a627a0f1ff9626c99f624", + "kaspa_address": "kaspa:qr4uepc4psg2jkp6k04rgj6xsy9pahl2wdngpn3rc57lazvd5kh8u0c6nnzm6", + "ethereum_private_key": "0x5d3f39394ebd92475abbb731d1be066450d83ed438064bb795a5b58c707fd07f", + "ethereum_address": "0xaFB5Ad2Ef231993acd46f765421AEf6fdaFf7375" + }, + { + "mnemonic": "chuckle boat visual guide text help wrong pretty torch awful news main", + "kaspa_private_key": "6c64b0da99b3058d8db3adf0a6e09d4d1f1e8e3981d2e746155c4e98d503cc4d", + "kaspa_address": "kaspa:qr39awz8qjkqehus7auhcl6vwdmfe0hjmvqtzecrs3pn7laxguqcc76hduwg9", + "ethereum_private_key": "0x6ac875acdf508415c07123f706efdacb4333787c8b59f133040eb523baabc4cc", + "ethereum_address": "0xD0D68Da9700B8F5a471D802A3f05531Fcc7461e3" + }, + { + "mnemonic": "gate machine trouble dutch lesson quality entire sniff media surface chief love", + "kaspa_private_key": "7ee2995f76588af1cc07b90a1a708ea68dc5045c42cd7ab1077f305ce26b6e3c", + "kaspa_address": "kaspa:qpxks5unpj8kep2t9jpjlelqgnksp425rqtp7nut0ghyu5uvkgykzeyur0ekq", + "ethereum_private_key": "0xdc2a7d663797a1cbc62aa8d5c9ce4a6b99113421b901f89da3c371619557ebe0", + "ethereum_address": "0x87233F9DD91a8C26e3085Bd461d504CD77Bc4c19" + }, + { + "mnemonic": "already announce salad cruise state rude ghost analyst paper nose embark educate", + "kaspa_private_key": "c4058e2399c42c9ef29ae997e9f5cfb6773d0ad22a5b825301e18da8179604cf", + "kaspa_address": "kaspa:qqqs6wavepugez9pr5un2eenfv02v55pk5cfnakffgrlhm7kl99tjh6h0p4y9", + "ethereum_private_key": "0x5ddf745f73eb91fb41608a882c58267343a7e2881910e0b0d3ec0bee4feec0d0", + "ethereum_address": "0xF575cc0d25D5A248a557eeE9f18366c2Fd635498" + }, + { + "mnemonic": "melt couple arctic disagree forward rude tape climb cat invest invest story", + "kaspa_private_key": "db61c80bb023c7f0c432ce1882cd5771b12619db26929f52682c4e948fdf2a9e", + "kaspa_address": "kaspa:qqj98kglyss20qdz3m0jwx09ghv4rupnx7tjcucw2qjlnqnwhzzs5ll06kyzc", + "ethereum_private_key": "0x479b6f9a1bb1c1e36e59f271f09a219dd271e796d24e443f43ec08fe37eed786", + "ethereum_address": "0x8C835a18059c0df818DC206E03D0790183D9ddBc" + }, + { + "mnemonic": "pipe smart cute wisdom fit sort pull review glass praise soft quiz", + "kaspa_private_key": "67ed7bf64850fc4f426ed52024fd9ddfcd72ce5ac7489b2dc1a7de9ef4019101", + "kaspa_address": "kaspa:qp0cxm0s6zgnewaa647jya7mr80wxjccktntrf680009ghd0c7ukx7mvddzwz", + "ethereum_private_key": "0x66ddb1586da41be726c22bf5f4120a0d0ab0e0d7101eb50d594eacb1bf2ccfa9", + "ethereum_address": "0xDd193fe58d6ab098a3E8cF226d9d5CAE270C3C85" + }, + { + "mnemonic": "box mammal what vocal dismiss token atom seminar fan nasty language life", + "kaspa_private_key": "31d803851b75d81086da7c81ad818b9f6f03b080e685a20df522a400c891d1d2", + "kaspa_address": "kaspa:qr55rqpkm0sp0ad5r4v0vmqe3ae3xxf60qak0dxh8wvedaae7fpkz4c2je0qn", + "ethereum_private_key": "0x7defef9ef252def224245a017863f39389aef86827da7e1385881c50ccec0472", + "ethereum_address": "0xa77C9F267666F7743471855a1ABb2dB539316505" + }, + { + "mnemonic": "churn hospital cloud prosper until life learn pave quit light senior leader", + "kaspa_private_key": "a07a3d94476cc9aab54ecfd5b86577c37af3537df99bfbcdc27de4936e93c1fa", + "kaspa_address": "kaspa:qpxf5gwmzasppawmugwdzkpj2r8ay7qaeqh5zhw2g8gu0l2u33leyy90egemy", + "ethereum_private_key": "0x6f96b5c55ecd8b4b81929d2cb4cfea1008461a0c48add984f479247b18468659", + "ethereum_address": "0x3261e51352F932E4D6ea6f2ccAc3D870BFf47058" + }, + { + "mnemonic": "describe window begin raccoon legend vivid panther buzz monkey pond bubble diet", + "kaspa_private_key": "be599e738b2c2e8eaf143a520ffc1d63f12f3e132f9c7ef6a05471de73717f16", + "kaspa_address": "kaspa:qpeqydt5vv3q5atma4dsfznwj9lrvwe025zudaqlu8x5tzwrem36v4h7sx09k", + "ethereum_private_key": "0xf56f9c3ebff6f60b1f9d124a1017b8e2ed01fc1b424988f29d53c6dad22a5142", + "ethereum_address": "0x8e5a8B1e9C9d90790F4f5232039FC7a3178BF657" + }, + { + "mnemonic": "faith camera practice section pelican march runway excuse rare ginger pioneer cause", + "kaspa_private_key": "d175b58064166e4029f238232b5f3948429413eaf3748e684a9feb566fa0efe9", + "kaspa_address": "kaspa:qrkejfezkzmu93tqfcdwcq20xk3ujtwfnmtxzh4wf67g5nenlqa4kkaz3clm9", + "ethereum_private_key": "0x52772affa9d8d3ba5b0011595a82209ef2bcfd372d8863e18b0d0f39deb17108", + "ethereum_address": "0xb54b7bDF7c88fE84b932f8a34305a35dedC27aED" + }, + { + "mnemonic": "hero exchange loop manage grunt depart enable useless castle use budget truck", + "kaspa_private_key": "71709a59f6466d30527b094ac77d53c21a5df2a83a4c24df2adb742f7072aaf4", + "kaspa_address": "kaspa:qrqx0xrmz88eastzpfw94txmahctl6xy0umn7859v84yt7nq749ncfac3ul7a", + "ethereum_private_key": "0x2e533dbdab8e29f7cb7be389126d31dad0ca7ef9868110854d0648e478657636", + "ethereum_address": "0x807821E8eF2E2Bf8fE850AeDa26657Ad7753C046" + }, + { + "mnemonic": "sun smoke acoustic giraffe cheese breeze law infant among glory error fortune", + "kaspa_private_key": "11ee3336ee04a0abf1fafff66006fad013991b891598501a2ba13f77324e547b", + "kaspa_address": "kaspa:qpc09vkezmn2wjvwlvg3sx4xe5pyjwtjhjz9ayurgw925rfdajr0c04wlg5pz", + "ethereum_private_key": "0x7b0c9315005bb024ed982c0956368627409a18b30b3d578abd3a0b17062789b6", + "ethereum_address": "0x8B7e53f2Eb682BEE0B16b35940B8Fd81128a7BDa" + }, + { + "mnemonic": "kangaroo fiction trigger just again grid clerk tomato divide arena blossom icon", + "kaspa_private_key": "240a0d6088d65f54e1329aa149a08446c14909fab76119bffd5387adfb26d56c", + "kaspa_address": "kaspa:qzn9g8wd9lhjzws6mp6nx5fkskdpcrqluvmykj58x6pr25krjdcxxmc8n56zx", + "ethereum_private_key": "0xd18e80560b012e5552750bc2d4cef120bcba20bbfe2548dabce36ecb774e8a14", + "ethereum_address": "0x36c64F561346282eC6b194f3ba68BB1d7089Ad24" + }, + { + "mnemonic": "unfold carpet rocket delay detect canvas adjust drift idea evoke squeeze void", + "kaspa_private_key": "04d88e620c5f122632c17cd83d2679149979719836f4f51fde34311c8efa57a8", + "kaspa_address": "kaspa:qzmc9gm44demft0kejpak0ygh7y469dqdf8dhhm04h6n5afzmxyaqe3qjrlz6", + "ethereum_private_key": "0x9276bfecc09272f74fdf8d97eb22c404596766d56f3639c458812ddb61bed7be", + "ethereum_address": "0xCB368c4d4b80F08e8650d5fAff3BD0f6Fe33CC18" + }, + { + "mnemonic": "arctic social festival dash will betray area sea border scale boost group", + "kaspa_private_key": "f017d123582bdd9aeb0da17c578d5ccb0f3f3cc94d11cc9e16c435e52dd90a08", + "kaspa_address": "kaspa:qzhnuednk3v76e2u273a2f4rv5cjfkkv4cksdvzsz45t6rvyvkqgvlglg5lz9", + "ethereum_private_key": "0x3da124381f59049938fa5bb09aab98f5ce74cf1722449d1c7d200062030ceee3", + "ethereum_address": "0xE1792F0ad6e799233F1d3F4A8eFa2D41899817D2" + }, + { + "mnemonic": "host unaware swap have success light trigger peanut shift average broccoli skirt", + "kaspa_private_key": "00c1f0a6048114c7b8a925e4f8f5023428da137afae1ae6df60fa14bd081ffd8", + "kaspa_address": "kaspa:qz37ufwh32u0uk648vydtwad0zpk2ggdrstynz0jehkz300xzv4yzqkyhjk0m", + "ethereum_private_key": "0x4332f12080d38d896b9e0816d58c0f7374414c24a6bdaef31eabf6998fa2320a", + "ethereum_address": "0xD24A27d989b0CfEd77804040CD3f5057eAE66cDd" + }, + { + "mnemonic": "shop rude fashion birth square toast axis enhance blouse river almost city", + "kaspa_private_key": "10f17a0aef63d97378dae1040f338d6d9dcac3394e0e50efd8540e93593127f1", + "kaspa_address": "kaspa:qppjux2e6dz7ks30ahpzj637ysaeexjjdwde5h58curm8sjuyu8fk4pnc3f9p", + "ethereum_private_key": "0x1ee423a110d1725786b6cea11d00fdd787d87dc49c88fab862024fd868b2f7e2", + "ethereum_address": "0x194a47805C9A7b82d4690356FebA78B4DD11Dc38" + }, + { + "mnemonic": "card lawn fan silent toddler violin faint exist dry fossil broken large", + "kaspa_private_key": "82b46ebbfd95920efff210ea935ecff2a2dc16a6ba044046457113cd342323da", + "kaspa_address": "kaspa:qp224m7y2q5xz4f8ty3k4jhaz9rjcjkdekn5n78uqfx9ltaea6nxgu94nxd3a", + "ethereum_private_key": "0x857e504b0cd58a45d030b9e0e38a24d897625b87927355ba6f185898239197d3", + "ethereum_address": "0x442B19734fEd70f14ED2d7b1D00aAd3DBa9f1034" + }, + { + "mnemonic": "height remember bird hedgehog seven label awake lamp shaft coast chunk juice", + "kaspa_private_key": "fc7e3c38859042a4ab13c438cc8af4014f88124e741056d0547dd1b217c3badc", + "kaspa_address": "kaspa:qzwj4h8dxa20vxzuyffr2cqsf47z7wq5aylp9asz9sdvlh76c824zf0q742zu", + "ethereum_private_key": "0xe09bd29841f7d95431bf11ee04f5677ffaaf57aa92674072eb20f3bf8646b9b1", + "ethereum_address": "0x622d421d5cFB58821e6457a242B18BD65230FAe2" + }, + { + "mnemonic": "gasp talk exclude vault cannon expect behind cannon neither mom kidney that", + "kaspa_private_key": "a63247c3312487e74a36ca230164eefb290659d253465d14d91f34fc45b16c65", + "kaspa_address": "kaspa:qrah9xxz8w57xfzrm00dj59ryu8svrdj48h6fvntdavyv27e06lrga8xwd5mq", + "ethereum_private_key": "0xd1e9fbb2713a308c9250621835d2fb1ec481394215be45d7397eb90d07c60952", + "ethereum_address": "0x173326B238A0111a91c903Bfec19cA2bc2B75616" + }, + { + "mnemonic": "blossom text pledge treat crazy squirrel soldier theme tiny pretty clump mule", + "kaspa_private_key": "b5a7176a5dd39dc4296a9421147abe0c7dd60973b3d1520b9f5f3a0701167bfc", + "kaspa_address": "kaspa:qrdfxfra44a6gp8eml6y0xwwqwywz966yhp385zaxww6g3045429xx79zz00t", + "ethereum_private_key": "0x120471d3f0171dfe0341fb7609c12b8e63aeb831c04509a421798415b4552392", + "ethereum_address": "0x667FCb5627C50c70CF6150348b4e176DaF3C5E3F" + }, + { + "mnemonic": "fish surround hero seed mom buffalo leopard wash you main sphere pact", + "kaspa_private_key": "06656b1bfc04d6572fdf69ebd742067ceacf05b014b349c49d9eabd8f71ee43b", + "kaspa_address": "kaspa:qr5l6gdehv5g9tkvemxwq6ng452ag2ln25vw33q9hsfqm57dvl9yvmaukaax0", + "ethereum_private_key": "0x4500927982b6c0b2512fb8e2d13c02d4d58daedb2404d5878a0d1b2e1039b53f", + "ethereum_address": "0x05c07FA1a4e4867153FCB96736779F4bBA53BEA7" + }, + { + "mnemonic": "husband have dry van typical wear federal ethics smoke avoid advance puzzle", + "kaspa_private_key": "5ef0f34bd0c61c07b22847f6a7388969d20ed669e3be27bfcfae7435011d1a15", + "kaspa_address": "kaspa:qprz34vwu6trmh62etguztc6r74nsc2warfjetlw0phgsn3g2gzh7qha5jycf", + "ethereum_private_key": "0x228aa98705c565edecf85ce61be809171f6b9bbb966cb43c4f7c3641925f02b6", + "ethereum_address": "0x320930aac5B033C3793209E8EAca000FCA596965" + }, + { + "mnemonic": "goddess tilt keep base ginger local leaf hurt satoshi push gain kitchen", + "kaspa_private_key": "083d4a2d2d83620a61feaef4bf7f11e3067cfdb144e0eec6565a43d9d740b4e1", + "kaspa_address": "kaspa:qpav2arkzma2c06j2s8etaqxcvwhjgsz6cw6drvks25xw992xlsugr30xms5x", + "ethereum_private_key": "0x3df38ad131b5fe669c16e5c83b62be86bd8efac11bdec43995a3884bdcdb7843", + "ethereum_address": "0xADd87ffd8c5bA04cA465E359418BF4549F9496B5" + }, + { + "mnemonic": "panel mesh current fly barely pelican disagree dirt siege vocal pelican cute", + "kaspa_private_key": "e76be9592f4160d0a42ee9a2982863aa69d4e119732646669dc15b354575360b", + "kaspa_address": "kaspa:qz9hgw6tvtckjuzsvf54dxwrwauvd7ly0cy948arqwwkuyh0x6qwvu9yqxfd0", + "ethereum_private_key": "0x071545274282d0961863e6cb9341f1b60019b1ae3d18cc48026a32bb16f465bc", + "ethereum_address": "0x26096C66914cBb39C0aA67D448dE7cE194435921" + }, + { + "mnemonic": "able tree word invest indoor hospital raven jewel base ramp jealous glass", + "kaspa_private_key": "a49b5a5a286ea5d95697929880d03bfa4c69d76299b265f4081f8876a9f6d523", + "kaspa_address": "kaspa:qzpj79p40g2h532rc56nhuefr9c0d58mmkcxdnurj805r8qmegtej5ugm0n0m", + "ethereum_private_key": "0x9d355e2b6552ad45d587dd11baee8edc109f36e8aeee2715bff23722324f18d1", + "ethereum_address": "0x5d5004Abc417F97fb509269f321429feB3277857" + }, + { + "mnemonic": "trade million jump program say cement survey tiny bar outside rely situate", + "kaspa_private_key": "8302484a5382180edda367f7fe8d27ed851c0ae2f8bf52f0da488f23d06c4bc5", + "kaspa_address": "kaspa:qpr8qzqmvu6uxl28uytn7yktclu9kc774lg3zvwd75gugptgxlx95eee2eqar", + "ethereum_private_key": "0x954462108a5edd89a84652ab2ac0333d27a4b29c2c495700d100a6c625bbc768", + "ethereum_address": "0x4c74ec13F7F5a94F03b8831E070B442AF6f0550B" + }, + { + "mnemonic": "remain danger demise opera noodle twenty dawn school company vendor second canal", + "kaspa_private_key": "494f0ae2847b85a49252aba5548d62517425a37af738e86f067694ac98e0e37c", + "kaspa_address": "kaspa:qpy3mzmplydd27ajk05zrsfeyvns3522x4ddk7v493q5qa2ng9a267t47lk46", + "ethereum_private_key": "0xf6965ed0a928a21f08acef1bce1347c8cd445357cdcd3531d240d360da22ab9a", + "ethereum_address": "0xFD091c57700c821c2D11282148dB16765777442b" + }, + { + "mnemonic": "frog hood small wild film throw release square asset fit exercise monkey", + "kaspa_private_key": "2e80deaa1e9adbd5c8998e13bd59aff1e4dc3a5bfbd5f1fd8bc4cabd8967ea23", + "kaspa_address": "kaspa:qrwmuwwvw8gqwgz2muyqctjg6uwer86a05pynagledulmpn4qxyj6rutkdngt", + "ethereum_private_key": "0x4ae04ec878f9a184ae7d3c6435114097a2413dc83a154d2113342935901f93a4", + "ethereum_address": "0x3635F61e693beB645f3fD0Bb4Eb411F33493883E" + }, + { + "mnemonic": "cart system husband crop lyrics strike height title never column magic clap", + "kaspa_private_key": "ccccb21feb94f90977f5a4b8a5171bd60220ee6f96abcab70aeb43cbb9282772", + "kaspa_address": "kaspa:qzcq22ylusrwervmn7u6pdaljccwaaf5nq3tsmukacmg2ctu6erdzef7q875a", + "ethereum_private_key": "0x1dc9ca144955459c5636633f4010200e7ccb3d76246d0227f7554155e1eded7f", + "ethereum_address": "0x1d4602C11c3C33b1FdBF5b1DC25E356d60FA5CCE" + }, + { + "mnemonic": "canal easily flat suffer same spike barrel bunker frown huge letter fuel", + "kaspa_private_key": "882d2129f2a1ded1942d32ae85fdd7e1445141d68c99e57d57105cee1ebe82ba", + "kaspa_address": "kaspa:qra89cl4uvhuyw9jdru4ps9r5xguml2tehd3xgqrej50tm26wzwhjfcj2aydw", + "ethereum_private_key": "0xb7d1cb0c2d0b2653c9793fdb37a1f9e0e161af02928223df59fc610dbaf30823", + "ethereum_address": "0x1Fd6E59544c943470C0dE7d5C982bc7792B1A781" + }, + { + "mnemonic": "popular page camp right volume subway sauce harbor curtain belt burger little", + "kaspa_private_key": "7453dc4506ccd6650e555dfadbfa51238d0e7049b8192103b483af4365afc352", + "kaspa_address": "kaspa:qq0q3arhcf6unmtu7lz9ry9r7tudr46wj2n8us86n0xxaqzlue76vrqc2dej9", + "ethereum_private_key": "0xe0f6d18235c09b5c62cdeb96cbc9b73f0c0117096b49bd16cd38c26f4e88b9d4", + "ethereum_address": "0x625D60EFB26CC85433Ea3ACfC6dFA7F1CaF223C8" + }, + { + "mnemonic": "goddess travel coyote final mosquito knife manual spike crazy human craft increase", + "kaspa_private_key": "d8b22e04c2f5da480d328e4ea6e8aecf214b3b9c3823c634cc1d4a96770abfa1", + "kaspa_address": "kaspa:qqc0eurxej2zf532pua30gpwpclj789x3ar3ws0kx6hm846k2d5pq274sklfh", + "ethereum_private_key": "0x393707f10d9b9c40a677ee38bf65a81f6d29f33c7d7a109add30aabf014e778f", + "ethereum_address": "0x796D150e0A7024EEC61EFebE48E90CEedBfc6D43" + }, + { + "mnemonic": "season expect remind trip worth educate text bus catalog property fiber law", + "kaspa_private_key": "068bdc74e94708458c06b2b5d061be505f8723e42c989b941d1649caaeac8892", + "kaspa_address": "kaspa:qq6lghs9q55ss3e5pka40aps7quxur0x62gpyh5zlcx5dejj4useu2rdls9ja", + "ethereum_private_key": "0x2986ff875d65ccc7f8ad3ab34ea75f696528d1b5de755be047c0631d5652e76e", + "ethereum_address": "0x20092724ad1ffF8E31E2c49f100B05a855cAa6F9" + }, + { + "mnemonic": "smile father roof reason oven pave bicycle accuse gift baby surprise clinic", + "kaspa_private_key": "9643c4a04356e98db08e1f66a662a27d4e64cbf21a6a64ea1a1d7b4438c324de", + "kaspa_address": "kaspa:qz9t7mva0wz3lah2rle2szyv2202qj5dxq8a0cmcnnpqg7jzdypqsw7ujpcfm", + "ethereum_private_key": "0x4b79d86ef2e0ce7feeef7623869dbce32d57e2a4d5497596cbf5086b658a8115", + "ethereum_address": "0x70F857CFbe9F473880E0d7F5D10F24332a0Ae9F6" + }, + { + "mnemonic": "across oyster disagree caution bless chest monkey banana potato injury hammer another", + "kaspa_private_key": "d10e9fea8be94e49e94f97ed7c95c4fec3e5ceb06e6847cbe4e330c41f63d6a3", + "kaspa_address": "kaspa:qqmz2ktxvw3fq3u50n7lu9d0at35z2ex807tsju5x8vhuvmh2qfj6ddwl9k9n", + "ethereum_private_key": "0xb684f607be784c9775358d63059d866cc1bcc55b910c2bf13b99874a86c2518f", + "ethereum_address": "0x15aaFc70e2A74fFef28020868B6d8BD81ad03b54" + }, + { + "mnemonic": "make grit clock raise present among stuff grain twenty warrior civil impose", + "kaspa_private_key": "68d3088c50474b55d4d8389889f7f82442472b3fe58bc32b5e21b7b4a133addd", + "kaspa_address": "kaspa:qrffgjxuztyashtnty49sstlzsk5hdkdfm38k8l6xzs9lmzupkcsvlcqg0jvt", + "ethereum_private_key": "0x74ea03a49e2a3c954f04c797a9385c18e64a10a0dc0fb214e7f11ac36120b531", + "ethereum_address": "0x7c0720bbfc707F80E1F2F72c0E4e298c4F012399" + }, + { + "mnemonic": "exact purse boring large mixed smart current term cargo session since gym", + "kaspa_private_key": "1b19ace25e2a0b2f97ef9edde921c662b916c53cfa77ff31e7c2fbf6633a765f", + "kaspa_address": "kaspa:qql2nvhkw074vzhyfhc5q7qpt4l0mmkfd905s4qemeu475whkajkzsx643q73", + "ethereum_private_key": "0x1329e7fe90e09b45a6f12efa7cf4970d23d9a518cbb763355498429d1744e4a4", + "ethereum_address": "0x2c2AB978f5F01866f6950EFab5A6A047595c4270" + }, + { + "mnemonic": "crash adult throw vacant fault exit peanut peanut vibrant glow wrap notice", + "kaspa_private_key": "b7683d9f690c4fe2275e9edef37f10d5724944e8f39df6c95328d3a90315ec49", + "kaspa_address": "kaspa:qrmj36dkyhnncchpe4dmr5zn2m04kvprnhc86rqcn5e72h2kpkuhw6hgcfya8", + "ethereum_private_key": "0xdb7935cbdf2ecde724ced0cd71d7431241a6ab13576c2f6e0b67537ce0bd7a91", + "ethereum_address": "0x5F1a100139C727E3bD18ab3fb334a7c5C947CA89" + }, + { + "mnemonic": "obtain solar author negative cactus sunny tree brown ceiling assault umbrella hamster", + "kaspa_private_key": "7b6590b9eb2ea708aa551bc238aa787bc8e128f57e89d76c015c035103332dd2", + "kaspa_address": "kaspa:qr879jacnz0htf4x9z5ft6wacwk5ndpna7zzfhhenux7u5qudgwpc9dhq7z72", + "ethereum_private_key": "0xb7d4470f7fa0550e2c497eadc8d5b7ebc5b7b8121b5d7d6e9a07e3850a2f0633", + "ethereum_address": "0x8C45D103306144e68a95c00Be814c5a7311B8b7d" + }, + { + "mnemonic": "rack farm feed reopen december bacon subway gravity fold slogan crawl dial", + "kaspa_private_key": "e1716e3eed11a19e62f43b84c0b8a8482207b555d4302828f6271620a6a81b8d", + "kaspa_address": "kaspa:qqzuq6925fkymlx3hhcwad6jxma852jlsu9kexsugggpjwykkrylx9vaxh7h0", + "ethereum_private_key": "0xd39fac42cc0df6254a52749f7e7940c6a63fdfcc80477c1bc37ea65009fd7fbe", + "ethereum_address": "0xA5a8c53865124d30619ac1D2A1B6C1Bde295A77f" + }, + { + "mnemonic": "excess update seek festival business require learn circle risk despair stool ice", + "kaspa_private_key": "8737d442dd683203a7a08076f9009e2c06d54d8280b70d5934eb7a3d1c0a3163", + "kaspa_address": "kaspa:qpnjwde2ddaz64gme39ssx332mhq5frw90slf3guxxk9a0zehns6cyr0v60nv", + "ethereum_private_key": "0xe69d4e7e12391ba857b09407f810c75e1db8f8e26063898a8cfc56adafb7fb51", + "ethereum_address": "0x6591F9fbbAA0992cd35EDA1911cbc23937643b2a" + }, + { + "mnemonic": "this jar pink logic food harvest alone leopard just find enough stairs", + "kaspa_private_key": "ddbca0715fba17be75196349e07fb5b7d7946f5e6e038bcb42255d25c12b5650", + "kaspa_address": "kaspa:qqvye4usl2xjrpnpq2tfg76fcuyafn8v95d6m9z508spxfyujku6qnyk2j40r", + "ethereum_private_key": "0x5d512629f063f9ae50f65e3159a02790454385fc92ab01a5edf29a7aa5cb75d2", + "ethereum_address": "0xEDe9095786540622d1e270Bb6AE36505DED9C824" + }, + { + "mnemonic": "gap sample extend noise sorry rough build card now marine donor bind", + "kaspa_private_key": "98c9604bf17216a905ea4768ff88ea4e1021046def5e1c3819a99031531b142d", + "kaspa_address": "kaspa:qpdjc20kjf0a6w8h5vwfrl9th36ce48n6qmuv7k3ge722d4fpsyxjrss8t64c", + "ethereum_private_key": "0xcbafa0f9eb47743c8ffa1d2b5cfa67a93428a8b3be6b3d160e1c08737cd4c005", + "ethereum_address": "0x176d455C8f8A31605779F9c4d7924005708aC24A" + }, + { + "mnemonic": "emerge visa across now public prefer daughter spare monkey document neither bone", + "kaspa_private_key": "bc2bc2af21ad18a96234d5b650ea83203cba607313a643752c57a8c1a2ca9a59", + "kaspa_address": "kaspa:qpvdqlus70n7wfsmaxmahcfsa5kau2yf83ksedgj95knxrzuvtd3ue5x3xxw0", + "ethereum_private_key": "0x0339033d24dde38a9a7e852297f6662e85a03fa9c26c8010175c8294fafd27cb", + "ethereum_address": "0x57357b75BfB15288C06362f7433637C426298b49" + }, + { + "mnemonic": "uncle audit decrease corn harbor address hole display sausage tongue drip bird", + "kaspa_private_key": "131d0f9eb2974f9106c11f25cd38d98be9e611c015ec8f01d1052665e40bf8a3", + "kaspa_address": "kaspa:qqxpa42xwdgckuh68h407s3fzvtpr3yr4u4dc9w6kl2s2r3xwmcucrrke5g5e", + "ethereum_private_key": "0x2ec3eb1102ff93b8d543a4d655b1e5e2f18ec7c98460591812d10dec56da7239", + "ethereum_address": "0xCFEEe4291e292dAe3a5c5E5DDbA37fAefBe6a2DE" + }, + { + "mnemonic": "expand ability solar leave omit valley olive forward idle lion apple normal", + "kaspa_private_key": "255b6d001dd080f49805953ac7ae40d6428dff0cfa3b960a0baadc635d5c23a3", + "kaspa_address": "kaspa:qr4xfh9gvy6cwjz0vqx5f8lkpezgygs7rjtsn752e4xt6zvkxppyk79dw59qq", + "ethereum_private_key": "0x8391fbfd6aed887e68159f152ce2dc6e2b646c095e9aa6c003d1ef19b8a328f1", + "ethereum_address": "0xC22c2a57120B54f699BD6679530e36bB8e607A09" + }, + { + "mnemonic": "february grief army inch that planet scan harsh check nephew dress manual", + "kaspa_private_key": "9fd28c09c5351591c340ed9a77f63c2bf8d7ebe80aa09e76df5ab0e5ad592be0", + "kaspa_address": "kaspa:qznrzlfmvjn4k6u9643clmcw4tn76kx5cag2dm7ctpy88ada9fh7gqalrvl0s", + "ethereum_private_key": "0x737aa89581dc1ceabf163099e19c3fb63eca19a0c2b23366f98cb76ff74f0903", + "ethereum_address": "0x94B63eaAC8Ac77779e613Fd7B8cC54f4AEf43652" + }, + { + "mnemonic": "absurd thrive vague avoid female genuine gaze favorite rapid filter add smile", + "kaspa_private_key": "b4e1f4ccc7f58fb07b9cf88500eafadc86f4a9576337dd6143e9ffc67e967779", + "kaspa_address": "kaspa:qq0pw46w655c9ynx3f29fayewyan98x496kpruz8h3228w3dcfwdxqffxafvg", + "ethereum_private_key": "0xfc7001becf24b569e984c4efa49980aab1c24dde695b72e133f4b6b8fb0a53b8", + "ethereum_address": "0xd209B574be590AAbC82849aCD69895Deb1a2d03F" + }, + { + "mnemonic": "kidney taxi surround fee velvet fringe awful canyon option basic elephant flock", + "kaspa_private_key": "461a5187953d6d98d4f0b75e26a6733df8579b3efe5ddd7833873f7281519514", + "kaspa_address": "kaspa:qrvkzqyntgtqp27g4zp0efgmjd4epze4e24u4mcakggzfe9kyh0ty3y0mhp3c", + "ethereum_private_key": "0x66a803a8ba409899b4ce2725fb86480ad269e7411f59f7c023f8a0ec4051de55", + "ethereum_address": "0x8ad63450Bce5880AEf1460F5bae40784033B0a89" + }, + { + "mnemonic": "delay beach inquiry outer another very beyond pen angry magic close orphan", + "kaspa_private_key": "b77e4df729d663c6d7cc20cb663abf7861f889e824d90b3b72e4083228767e39", + "kaspa_address": "kaspa:qzh9krve4mw5y2zcs054v5fnsy3lket3ms0wndfqvp0vl8707ng5k4khrk2qt", + "ethereum_private_key": "0x073ff84fdea57e1862a013068d51bce0490970015a78acbee0a6e327b2fa9ce7", + "ethereum_address": "0x6AADa411235950889E02B3c5Dcff265023D5AA00" + }, + { + "mnemonic": "topic creek celery glue power element random leg pact nature ticket clay", + "kaspa_private_key": "bfbe09ec18d73a2de7a0db29cd5a9f68e477719aec43ad8628a4eba4c3a42514", + "kaspa_address": "kaspa:qzt76csfhx3q4eces26qr6fun2urjuprs94qv3nck3af4vj46ytuzxcgujrss", + "ethereum_private_key": "0x6768ea64cc7a76b288d9c74acc7d49eebe79a71541d251ba79d88a925dce30fd", + "ethereum_address": "0xd0A21ECCB13cd1F2D85914b6D80b6A742CA65548" + }, + { + "mnemonic": "sausage letter miss auto quit conduct roast mother casual large tent mirror", + "kaspa_private_key": "b88430fcccb161989a3e5e502d242ce14a522da621bcc699de0d83dbd61e344d", + "kaspa_address": "kaspa:qp6shlzfjugm3ggw3lyjp9yknmyk9h96dyjj5w0l9xnet2rfcz0fqcstpasp2", + "ethereum_private_key": "0x057aa3bda0ae8c1a7eb3deb813216e7d6fb681291521875bd4d27fa5bbc84c08", + "ethereum_address": "0xaE6F56b99a2528963E1A15E87D46504335b21089" + }, + { + "mnemonic": "rifle erode meadow calm select fade library jar suffer bike gadget ketchup", + "kaspa_private_key": "7c5f589ad63f2caf32153743c02be85994b80d419640af285d98b663234a87c6", + "kaspa_address": "kaspa:qqgdgjy660aj8cej8c2w7r9t5pmp56da4j7j8rzjuk79ewt9ysm7shwq6vlnd", + "ethereum_private_key": "0xcc5e30c4092a0bcbb8c39d848f1f6a0a873191719c16b98e665b97d1ad612e1c", + "ethereum_address": "0x9d327DBB9a3D6Fb7F45Bd01809a0e20fbf10E3b1" + }, + { + "mnemonic": "speed either expand valid festival dinner melt sadness lazy parade lift august", + "kaspa_private_key": "d29d9699ecd49dceda6eaf29f9f3be7c697630e21a53e5f80e08e7858bd30923", + "kaspa_address": "kaspa:qpalewy3x9c8k4qsetzk3mk6alk9ak53mchmn39crh3c68tzjwguv7ayzfde0", + "ethereum_private_key": "0xcd25f230c95fdeaceb8d89be93bdc92e514070d42764bc05f1b582e7548220e9", + "ethereum_address": "0x46b10BFB0317d2A0222b92A1E05EfB08aE31124a" + }, + { + "mnemonic": "apology kitten term glue leg hip blush foster first make gravity hawk", + "kaspa_private_key": "6bb41a851f00d3cb23ee62ff43f3f0eeab775f99eb2662ae3d1fabbb309d8c66", + "kaspa_address": "kaspa:qru868tw6z4dkq6s9qh8uzfvwxwwxvtfx3ptn7krwvejms4046xq7zv88pu4f", + "ethereum_private_key": "0xe1e6366d73018c36218dd1643dd95e8dc735a7a2da91d680d5d77eae2befc86f", + "ethereum_address": "0x0a9630684C90D7372e3eD813B337150778e3Fe6e" + }, + { + "mnemonic": "vivid cheese shock rescue nothing follow mention stadium toilet mouse planet waste", + "kaspa_private_key": "6f8cc76540b1f4fdd9c748c0449d85405f7a8ca86096f99c30de2b93201634c2", + "kaspa_address": "kaspa:qpatdxqn50rvfj26w0r6gnzfaf3cpm6lq2lejy6sl8amugdjma69capgzm88g", + "ethereum_private_key": "0x96c0342cc5f9ad9e2eed55a697748356c4b85497a3474bfa467e3513c326d51b", + "ethereum_address": "0x854d08C6D6dd74f463fcD2e7173094e55eA6F346" + }, + { + "mnemonic": "trophy blood broccoli cancel spider equip lock feed hub cave claw roast", + "kaspa_private_key": "ff6516878556ecf48721fd91c3dc459ce447a06ffe36dd237bb917931a694ea7", + "kaspa_address": "kaspa:qp0ns6mz9jmnhn8t3w0va4qxm8tnndf4sscyw2rsylmd3kah3d0yvzyhnjwa2", + "ethereum_private_key": "0xc77a7bb5bbdcc6cb60b34ca9882bf300f12d13c8a9c46887393872a507e93ca5", + "ethereum_address": "0x852f2E55374b42Db84dA52A1DE64804961909E80" + }, + { + "mnemonic": "chunk always emotion tattoo sand faith predict stock welcome gaze bus hill", + "kaspa_private_key": "0239a1c5db2c8208063608e0282a0b61b0662b8213a648c19adb1492582b4b34", + "kaspa_address": "kaspa:qzjdel9ypz0nv8hrhtskv4lxhlta5qjkpafya6rfnk5g4jeultpx50gel0gra", + "ethereum_private_key": "0xbcdc9a21845351306e0e1902173d913adbba523a0eee20f11456e5238eb56da3", + "ethereum_address": "0x9dd8b025d393932Bc1B7171b1b4AA151e1CFA938" + }, + { + "mnemonic": "powder improve bracket sauce citizen mixed tent female occur hawk dizzy tone", + "kaspa_private_key": "f128e546c2b19f9e994ee7be74f1705736ee2f48bd160247f409904fa312e74d", + "kaspa_address": "kaspa:qqsfjt6hzveqgfvxf7acdw8q0hr8kah5lk2ml9df07suvdkhwhxk2maelfrtq", + "ethereum_private_key": "0xc5b7b645a56856c0b2d307acaa5a9e25cd63401423b32456cb9ffbab4b4fb5df", + "ethereum_address": "0x1f1ebBc390Fe92Efe7e7f7b9b1Cd1C1e1F68BaB1" + }, + { + "mnemonic": "ticket essence coil stove doctor tape arch car surface ocean submit blame", + "kaspa_private_key": "69a1db366f72a39a8df1ae00b5e2938a2bdec52dc6bb540aef0d0628cafef615", + "kaspa_address": "kaspa:qzdwc78qq87vvk3g3pmvzewqlz77949y9ljxzg99vv5yll0q3m8e7uunrw80k", + "ethereum_private_key": "0x837417eee3d2b677c0d7815262eeb4c4ff0cef87c9543cb84af57ffa98db94ea", + "ethereum_address": "0x3537602812FF3df7f34072F7f52418F3B7e1Def7" + }, + { + "mnemonic": "meat crucial amount victory print team erosion voyage verify spring scale wrestle", + "kaspa_private_key": "315b497ffb1248d0fb73f1b820a8747075da08c0d7ae10351d0bba70f1b11e56", + "kaspa_address": "kaspa:qzyzvua7yag36xv70r9mec3c8r9uzfu5ajfmg279tk6y9z96aql47llmr27m3", + "ethereum_private_key": "0xb689dfe3cd90dbaa6ba36e26cec02340fdfe8e2acffa2c84e3e2a7f0d00fda34", + "ethereum_address": "0xD083306A8Fd3d2eaAC90825521dc2eb6FB5eB342" + }, + { + "mnemonic": "upgrade room usual damage drastic gospel rhythm nephew struggle input moral pink", + "kaspa_private_key": "6b4e3547b4ef5b93c173a90e24715dd9c8cba826a8203f91fb05c5cddc0bcafb", + "kaspa_address": "kaspa:qr2muqfc5vj39shdz0krq2yu8a22w6zz52u4a9935587yedkkfa7qsd0zn8n3", + "ethereum_private_key": "0x4cf2f6e171d04fd05bcfe8387e0741d365fd90facf63a0320651a7d2c65f2b7c", + "ethereum_address": "0xd0F1a39cD69D30a9e2cc6ac1Fe30685d6f431A09" + }, + { + "mnemonic": "can art poverty now road match sight apology genius anger acoustic trend", + "kaspa_private_key": "2dfc0c483799d5d6ab12ddc078265a860a6a7ef7a7969bb2f10cf226588124be", + "kaspa_address": "kaspa:qrfc7ugmyc5pxyggv3nyppxafu86t4ucaq7tjcrlvnhm9ul8xul3j72fwzx3n", + "ethereum_private_key": "0x637e2f71a52789558da7e681e1c42e80efc2bc92a22051429cf6cfb6a44358d3", + "ethereum_address": "0x00EF91D7FBe222966e6e6f9E337d2f88a7d023F1" + }, + { + "mnemonic": "gloom donate disorder rebel entire pause lobster above diesel treat minor swap", + "kaspa_private_key": "07513aee52525590bd26649c0c55cec4711f48b366d865fe704c6760c5b98e29", + "kaspa_address": "kaspa:qqsyjzdh66v0xxj435n0ez8er2hae0083g6zr00pmtec7m5jnzw5zrdrwan73", + "ethereum_private_key": "0x259bf792f73da429f5ebc538aaf1354513838c17791eab6673990b6342f6df33", + "ethereum_address": "0x3212D8929eEC3b379Bee7C42f5790fc86FE836ec" + }, + { + "mnemonic": "winter indoor pause warfare symbol phone other coyote random rude chimney snow", + "kaspa_private_key": "4694ad374223f5e6488a8e2920be0353434eb1d3f5749e85eae1d2633ce25b04", + "kaspa_address": "kaspa:qq57nmmq7rerfm52vdtxwjj4a8tdcmdp57hf65d43k98vscu4kqh7q33p8svr", + "ethereum_private_key": "0x7dd367dd8075d1b0c7737e562de8bd9bf1fbb9730703fdf1f0ea11ed81fb9773", + "ethereum_address": "0x7F0c159d64D1E4Fe84BCe5312383534D795A9dfe" + }, + { + "mnemonic": "mixed day rabbit still discover lumber tonight shrimp snap catalog game embody", + "kaspa_private_key": "c6a551a9721d5185d1f8ec00309f1fc112a0af8ca5090f96b557dbee9944c300", + "kaspa_address": "kaspa:qzmlspgcdhpwyfvrgfvcz832yrzqah0vhk4zuquzjk34drrzf67tsv584d03y", + "ethereum_private_key": "0xf51234f5c914fcf703fd0d39ddb9b8eca7777fc049554f365f5bbf8ba88bb8e2", + "ethereum_address": "0x810445a4E2f69e41E016db44192d32c92718A6F3" + }, + { + "mnemonic": "inquiry magic arrow brain deputy shadow first uniform act major leg ask", + "kaspa_private_key": "c5fdbd169d3af14633be5302d068d96c8ee8b9e18457974edfa7abe08f9dd631", + "kaspa_address": "kaspa:qq9458u5gptehj9ca9gwvrhzjtdn4rmkethep0v05rcfyelx6fzg5ywz658ql", + "ethereum_private_key": "0xfa7d172129516c264e6f08266e8c1bf666246cfade0de91a4596b5fc6c35e9c9", + "ethereum_address": "0x2770Ba357BFD6BA337a6854F7B113dd66Eb0c9d4" + }, + { + "mnemonic": "case juice head jazz unaware midnight ketchup attend virus mail crisp pink", + "kaspa_private_key": "0155d5efa416aba81a2681b546f57ec93a3ccbe4bc01a43e14a9bbf2179ca140", + "kaspa_address": "kaspa:qqlthdqfgl6qk6v0akhyqjjzqvnzwdcl7a77ngunssccz4la3c0ekgzmum6fk", + "ethereum_private_key": "0xf9783c267493fa9143d4ad309d9bc3922302c05c13403934dca0c28f3966238d", + "ethereum_address": "0x8793841b953F68a50186569835681b74A1c2ed41" + }, + { + "mnemonic": "minimum liar tower master proud depart trouble truth pluck oval brother volcano", + "kaspa_private_key": "22d267bd1220cef9c5e2405673cd5918e9c35405b741bb5b73163c9c12a79780", + "kaspa_address": "kaspa:qrr2g5mn4ul2pz5xxz4nwje542myu28uj4p7mfyumvktjl87wdajs5lnv7gph", + "ethereum_private_key": "0x5b49849db88282115e073ef34abc568ec599a5e52fb8f411be1a556a6b28126e", + "ethereum_address": "0x1eb6892EB676084F256d3fFD01182f26629Caf93" + }, + { + "mnemonic": "car desk gentle gun outdoor attract orphan core razor whisper argue crime", + "kaspa_private_key": "a033380ebd7242d833d5318bdcddca8a523b8ea3c6d7c1fa803ee34cd5f79b46", + "kaspa_address": "kaspa:qz89wg3xzrxqtcp9gvsusnpv65dr68wfrgyd0xw8g468ej3y9000vykf6rnp2", + "ethereum_private_key": "0xf7dba2fb86f193d7c12ec4ffd85b193cdd8702dc8ef2b2b26a5b9866580843f0", + "ethereum_address": "0x1Fa5599D15ECA170cF00408b0Da17077CD2e9d75" + }, + { + "mnemonic": "hunt monster pulse august silk century outdoor used become fault session symptom", + "kaspa_private_key": "81bbc1f25e680ba7398f6a8fb9200b0614c55e9813bc00744e2d74a5c90535ec", + "kaspa_address": "kaspa:qzq3sxhda50juvju9446k5raujc60qd368lj25gwkng4r4cke9fqjcej3j3hj", + "ethereum_private_key": "0x9edd585ce56754ccbe9a046ed0ceef2c18d0b2e9dce00c2e304c5698ea4231d7", + "ethereum_address": "0x4B81eb7E85D6b2CC081607Cf50876c8Bd1e1c0D1" + }, + { + "mnemonic": "fish upon place invite measure purse quit strike buffalo punch zebra wait", + "kaspa_private_key": "43f63e5f21b8eb481434a70eb3d26f05e565d9a73cc9de8031c52207d73b223e", + "kaspa_address": "kaspa:qpf3pkhq4fpwy93yqmj45aa4jzwkst9txv4h5u4y6n5p4n8rrrj36exwlf0u2", + "ethereum_private_key": "0x4118fbf3250358104c9185ee770eb59b0b0d380cbed0242b6a44a8c0f1385156", + "ethereum_address": "0x513c8633CE0c10e21C5b19d9911a3404d7CAc896" + }, + { + "mnemonic": "view collect impulse critic pretty crush miss toe expand velvet security vault", + "kaspa_private_key": "5b1051492c00072688c0abc96a7442adc0ef9b901ade015c8376c6328e89765e", + "kaspa_address": "kaspa:qr6hmuymhkrhl29kc80ag0qjs9hdnpj6dkuj0vwtft0txc43rgc6gpvshjhpn", + "ethereum_private_key": "0x2a412055d80abdedd3acf27b2647a8dea6b5a97ab5d097b59571fea35a32366d", + "ethereum_address": "0x475C33f4e008c5ab520b1E48DfCE5e5A64e91a04" + }, + { + "mnemonic": "syrup drastic educate number found lesson cheese whale blast spy account lunch", + "kaspa_private_key": "225a67707fbce6ddf153e3385aafd9ce3339691bde6638d3942dcdbf3a3d6e2e", + "kaspa_address": "kaspa:qzcdwunmnujxv8lk53lu5u7lnrxun5xueeqgd9um496y29gjla2k7hk89snue", + "ethereum_private_key": "0xbbfa1be9e652fe74a2a8fb8424f9cd1d003579ce027079a764209dfda78ade0d", + "ethereum_address": "0x992D61b36faCA9e318f6c5c09A4D7d09D057F6E8" + }, + { + "mnemonic": "lecture sustain century desert artefact car confirm produce canyon enlist spring curve", + "kaspa_private_key": "002c27d09d5ac53acea49bb377b1b7a43c7b5b63371c15d2443284a994e70160", + "kaspa_address": "kaspa:qqstme30nspzdkh67nf44aqn0d77nzk32f6hthenym3xz0p83c9d7h9q5r90u", + "ethereum_private_key": "0x88ee243a0956ecae70d56a0bef8435f016b182c75e6aee646062907b6b36085d", + "ethereum_address": "0x3BfE548b3b25A4DB1a7233cD81A37BCe40C4491f" + }, + { + "mnemonic": "fiscal wait subway clip narrow blast timber trigger control end you hotel", + "kaspa_private_key": "61b5588be1b62050c62b9821575c3c3ab20f92de538b5914493e532d4eede0d5", + "kaspa_address": "kaspa:qqqlt0tygsf0l4etadek7wx9wmhvmx4kxtqadzq7c6dxegrl5tcqvvzyhx6d6", + "ethereum_private_key": "0x7b66dada34de583bfaf046ce68114921c004f26138b40e9bde4b5d5bc70036ac", + "ethereum_address": "0xB22156fEfE5EB2A7027d5518138ecea253bFB707" + }, + { + "mnemonic": "suffer digital round south violin auto brain permit cigar agent rack sister", + "kaspa_private_key": "58dc2c73fb1abea86f33fd2a0e4d4d5fefe9d0b9c81ee5de57f1652003a8a314", + "kaspa_address": "kaspa:qpfv4nxnhkpdf036h66rja52080de3kszlw4080u0g83q2z4sz2gcnuuj4c6q", + "ethereum_private_key": "0xdb2956729329e428019a33eebbbd5dbec91a587161ab92885fac33b910d2aefd", + "ethereum_address": "0x988972Ada2f904bA5c511F139A289E6e115B9017" + }, + { + "mnemonic": "limb home own pair cube nation grow forum sibling flash bicycle crystal", + "kaspa_private_key": "abc2c4671665817e6123bdaa00799c65fc5603e0b86d575f750f1bc618172648", + "kaspa_address": "kaspa:qp9araj9hsftl7pcvvdtu3990zwes2n4lj30vrjvx0yh3jffk4uuk2wcwdez0", + "ethereum_private_key": "0x49584636278b5945eb4e017bb79f7d9330227747ac317eb26b7ee0ad03ed0006", + "ethereum_address": "0xc49A513e9EB01D5b63298b82E9D747Fe1687B0F9" + }, + { + "mnemonic": "supply mail festival quick mosquito syrup blur humor flush match sea cabbage", + "kaspa_private_key": "192f39652d7252e358e1f5f7c8650abbecc84f179b68fa1ab4fc17ee7b86c4ca", + "kaspa_address": "kaspa:qr4twuak3n9jwxcylv7auj7mq2fu9eprguwtz9rfpl094kw7w9ue5j569tyl2", + "ethereum_private_key": "0x119c57a3a02937e3d4eb92b794b0f4667f9e88783679afbe1bc303e603b00b4c", + "ethereum_address": "0x5Fac1DeBB46d885f2e3F69f582f08bBDf45c4F0D" + }, + { + "mnemonic": "wasp coral forest snow resist soda fish bullet flock situate month fabric", + "kaspa_private_key": "71f5bfdae6d361433de66aba41838171448baaffb9553d21264bc8c84b068715", + "kaspa_address": "kaspa:qze7vx5wmelq5rrhc05kjd2dasqx9m2zu4yv2039la53k5s500sj7y5mzd8vp", + "ethereum_private_key": "0x58a0a5b343ffe868fa0a82c6b6685299a4419a13192a6b2ec018ae5bdcea1175", + "ethereum_address": "0x1D84E21c9D57EA2a21dCe968399e570B19E62eC9" + }, + { + "mnemonic": "try room what true replace insane clerk blame hockey antenna trade walk", + "kaspa_private_key": "343ec9eec441e2657227ac008dffae4b4c42a046daf787569b8a46f281c90d45", + "kaspa_address": "kaspa:qp4renqfhsx8fvukf9eztx620cj629hm5tjsdu56zg5d4g5t58uxgr4vx25v2", + "ethereum_private_key": "0x18eacbc4daf85053d75557125aa03bbc88832d925e82283f16956936b32f50d5", + "ethereum_address": "0xD59Ac5aCF7Efb2869B27c40D2101c79aD6a90006" + }, + { + "mnemonic": "swarm tragic obey general company faith fantasy caution dwarf use scrub outside", + "kaspa_private_key": "95cab3035c861880880250bb28da72866ca7147467e372294030d0b20c4e634e", + "kaspa_address": "kaspa:qzzvjkeq63lpeu2calac2qqv56kj9yc0k4lnt7seh50agnd9j8rnv20yd92ns", + "ethereum_private_key": "0x7fce32fa3236a7c62d2dfb70fef221cbd1847efdc1180c8de0865b03626f3cc0", + "ethereum_address": "0xC13e523E7211A4f7C37346c5a72C7C3476097122" + }, + { + "mnemonic": "adjust tattoo actual abstract accident outside ankle helmet bar foster tube bridge", + "kaspa_private_key": "25880c7cc0ea11ef36439a36daab7dfeb8baf4b246d660f66bde7fca04a194c6", + "kaspa_address": "kaspa:qpgv6sd3559fu3rnezgscslwvzru9cx995e40uvh4wjfdc2zhhv6weq7wwfu4", + "ethereum_private_key": "0x484f14636bfcfe6de77d2b454f3e804e2b76559eda65bc2af3c1e8be099a6d33", + "ethereum_address": "0x6Ec0BF003f604EC43034FBb9D6bdF91305E115e5" + }, + { + "mnemonic": "island float build trust intact blue unfair resource timber never maze win", + "kaspa_private_key": "0e5bbc2650e3b48861decc0d1dc48914582d62e1d69251e2afb38671d327d84e", + "kaspa_address": "kaspa:qzlkescxjs3sqjfpjkjwg33l3lv5x8mpuxdkwtdxxzahkhem28e4qfjk7u0g0", + "ethereum_private_key": "0xe45a0bc75f5d9c325ec3e4cc96432ec2ee5e9de2688af6525501067fafc4f0b7", + "ethereum_address": "0xe2446A331AF034D8Ac0BC7eadeA61b4D5FC5F3FE" + }, + { + "mnemonic": "average idea habit laptop gallery combine dirt impact rural fatigue ceiling fantasy", + "kaspa_private_key": "836a3ee850fcb521a1bac3a12c015551e8491e80857367a77ed6770359fd9b71", + "kaspa_address": "kaspa:qrxhf9nxl7wp69595ywyagmmggw63z69jdgyxhaq7k3wp04ts3t0q7nj2l8gd", + "ethereum_private_key": "0x3215087b7192010ec6cfe2d0905e875989fb9d26677c701444d62cb66bb8ed27", + "ethereum_address": "0xCD2240c948A4f2351aDf1A45a913b78C581E592B" + }, + { + "mnemonic": "crisp dignity dune middle tree device ring riot smoke ecology differ wagon", + "kaspa_private_key": "ad82b23359f6f8ea330d654f7a3fc33fc57646f03aa47bd4c12fa7521783b115", + "kaspa_address": "kaspa:qp6l3xvzxcg5gwstgua3yam70wculpdhdme6ek8rryy3zyvslk6vwha8mhe6d", + "ethereum_private_key": "0xab461e00c75f66554920365a64dbf1c7fed51912d0732ad3549bfb45e415ee24", + "ethereum_address": "0xF44464fFC4aBCbc2E7203fC7843Fab9976122D01" + }, + { + "mnemonic": "submit seat odor now behind couple appear charge suit scene guard together", + "kaspa_private_key": "9c6cff2c80b2fb3faa744dbaff943a44cd86e7e7675ebe5cfc5a27b0df488b20", + "kaspa_address": "kaspa:qqa3xycm6mwqnmsdm3n29zvs5jglruc583p8ylj6g6k3vutaypugu8edd4znd", + "ethereum_private_key": "0x18f569f6df509324dc65633a7ab274cda509fd79e3b52895058899ab67b312bc", + "ethereum_address": "0xec25925B50aE31FEE9e6230E4407bA900cFA2F27" + }, + { + "mnemonic": "rare degree cousin victory fiction soft jaguar style all crash science test", + "kaspa_private_key": "b360331031a51694f63257843cc05a98df9fc6f9cc45a83f88a04ee8237ccd9a", + "kaspa_address": "kaspa:qz8wd5dm49lnughhs5w30ygcmpf20468pvv9tt9z7nwskcjytgsy64qfrrmj0", + "ethereum_private_key": "0x1dc800c1eac39fa90cd70473aa6581f3f89efe5e9e4d7fddd44c243bd9843e0d", + "ethereum_address": "0xe2077b262A2B22CA884de516a890b8b23341B412" + }, + { + "mnemonic": "payment scatter real wrap lunar fiber depart student legend vicious off phone", + "kaspa_private_key": "47587659262bc0bf3132a602da52d2fe0c80655f708112d10ed2cf9636462eb5", + "kaspa_address": "kaspa:qz8mnz2faymfn9mc0rmt99ua5wk5cdzqym0l0h66ffl4r7e6pv2ls7mjvvjm4", + "ethereum_private_key": "0x66c4ef329b4f61561dc94e69996e3d08ffba1356a0cee0abf1fa544ebafbcb26", + "ethereum_address": "0x997906Fc78a09558b865509Ab6B6Fe2E7Adb71D4" + }, + { + "mnemonic": "spider banner village improve run local grain father behave divide soup fly", + "kaspa_private_key": "7a0d92938d6737897e2ccefa842a591846563fe794b6154e2bdbf4c5f322dd8a", + "kaspa_address": "kaspa:qpxuc4fjmphv7jcjjvpht3g5qwm9qs0g3kvcl3fn22gs7f3gr3vvx902rn4fp", + "ethereum_private_key": "0xfee8012eaf7c068df2bf66bbf7a6433d1fbe1445863b22cb487a2a68c0344602", + "ethereum_address": "0x2a3A6b1bc094df66389F2fEF0b1acCB82781DFAd" + }, + { + "mnemonic": "shrug swift fox clip thunder liberty city assume rally cupboard exile escape", + "kaspa_private_key": "1142e187c0ae7252641ee2e507de6af825335bf9c24f5fac5503451083ca4abd", + "kaspa_address": "kaspa:qrzarl6jfjy03mqqrr69dffa6tkymlyp5vd768p52vkvn9elfkcrgn27fp4mz", + "ethereum_private_key": "0x79b1f61b2e43933a988ba5b1d24b9020e221457bd71aadf3e3dda00eaaa9f7e1", + "ethereum_address": "0x701BDC4f13cEdFf29127511866dE191372F3241B" + }, + { + "mnemonic": "spell vast elbow labor milk route assume can grief bread convince airport", + "kaspa_private_key": "9ee7a717b864ae32d0a4cfee7d1662464355d44c0d5f03707ce1b5c5921852f0", + "kaspa_address": "kaspa:qpgzl67rsy85y6yuzsqjjwjmegmur0t73yzfj4jppwhgl4t4l6jtu7lz6rzrc", + "ethereum_private_key": "0xc2fdeba5cd06536b8922ae6f3ef52599903452dbefc3a84eba7e0d0fb66088b3", + "ethereum_address": "0xB4373b682dFCf9947217b07140cdD05B5087a3fD" + }, + { + "mnemonic": "tissue glow photo left better squirrel crush gate record file nerve plunge", + "kaspa_private_key": "384ca226640e2641788a9a1d04d0c89961f5ed36adf9e91f0ce7d5938f22f1dc", + "kaspa_address": "kaspa:qrm0hksccethmes66px9ew70pkuz9ekfmht29zf006rhjnh2pkdzqarn2q06q", + "ethereum_private_key": "0x55d2deee6052d210e609cfa98bb15cedb3c18404f3c2ad5b13e8a5244a898bb1", + "ethereum_address": "0x259400647479A70A4e2915367fFB94c3D1Ef4f59" + }, + { + "mnemonic": "tilt write solid symbol decide winner near scene rotate task venue crystal", + "kaspa_private_key": "48c2cc77449ba573161ab148ba530abc1cb732796d7faec211c3f038718a2f18", + "kaspa_address": "kaspa:qzuhz7pknsytrlm333j64zma8xk0jfsec7fvsetqmy8sx7x2qvmtgaxd0ldwc", + "ethereum_private_key": "0x3f97d43b591a1ab4235e2412eac1a2e8fdfa9ae089d40bae4056252ed58cf33c", + "ethereum_address": "0x134EB5ea39a8a6b0B4A4C4a588c3c8cdF21F674D" + }, + { + "mnemonic": "deer drastic wild diamond box solar cart tribe code miss day impose", + "kaspa_private_key": "6b28dad354f7814ccecf56a0b081798ecdacec5f907b22f276abde818f07c8bd", + "kaspa_address": "kaspa:qzgw450sxh4r989y2wwlznffkmfw4s7tt4xgnrfvjz4zppazy7cqjp32fm64d", + "ethereum_private_key": "0x0207703eca177e0ff49c5b6a4661a6dc6c826117084e3051fd2472e54a3d78c3", + "ethereum_address": "0x4c93bCE3567Ec626F2cecCE150a70CbD2bC432Fc" + }, + { + "mnemonic": "sport hat hundred genre exotic whale antique spice stamp they share wash", + "kaspa_private_key": "fda39785bfa9c625fc27da1c2cf92ca0886f6cf99d183f6903b767b68a8e0e4d", + "kaspa_address": "kaspa:qrruh3qn9mmd4r3hhrcy52zyykvf0ck6ket8ulnn7cjsy42qjpsduk4xtws7a", + "ethereum_private_key": "0xfaf77cd02ce094c98f7d426d00aac23516a7a853211080c9625789b150c637e4", + "ethereum_address": "0x8412768FfabBcfd630176862B9365A6d98F4e071" + }, + { + "mnemonic": "embark fan pumpkin glide noise gauge essence mountain season travel size swear", + "kaspa_private_key": "e0c2c80fd00188fc3ce01eccb1fbfda2400d401e745a6ad8ab4f29b9f1869326", + "kaspa_address": "kaspa:qp4gs0nw99kg4gmzshyqkvdzs3ys8aq9yh4ev37qxfll0xzjk3tsj4lc6uwer", + "ethereum_private_key": "0xf942d17145608dfa72e08a53e02e55841bdcbe663ee543c405060d60ee4489a4", + "ethereum_address": "0x8856502b762CBa14d95CC3bE21b0dE23263B4cA7" + }, + { + "mnemonic": "turkey canvas swarm wall leave forward dentist foam joke this grunt swamp", + "kaspa_private_key": "ce1ebd827285cafd443026d3b283ca4b981d6f88b1033485cdb8d1c8656856a0", + "kaspa_address": "kaspa:qrgeh7q4cc4tegd0qgnf6wz5rxuy6ed8rv8hukdh0tyma6vrl49m7n0s97pre", + "ethereum_private_key": "0xbe148439823ce2ee71d3fcefc7b2d2fb0681e6578ba2fc1969a0ece8b44c17a6", + "ethereum_address": "0x809Ae7a627879D2903628b3B1a7f6B3D409D903c" + }, + { + "mnemonic": "magnet day hybrid come indoor narrow price celery hospital step vessel ski", + "kaspa_private_key": "e2128986c9caba569b1f392dc7469fb5aa6796fec44c15aeb329e2cd8ef0869a", + "kaspa_address": "kaspa:qqzd5ry8qmzwwenvuutm4t6ftj9hv0gpdjfx87s2xgfh3c2gmv7aqxafwfguz", + "ethereum_private_key": "0x6df296424096939628060124e7cca37f78eb58418df0e90289f6e5c33331e7fe", + "ethereum_address": "0x8bb6D081502f6273f33085D53675cF1ffBBff991" + }, + { + "mnemonic": "circle insect stone buffalo crunch double feel match hotel leopard basic enjoy", + "kaspa_private_key": "25ac11bfafe724aec0371b1b28e728e52542aa993df84807ec89c7ef962062c5", + "kaspa_address": "kaspa:qpq00qh7eskzk4e82x9fa87jq3umj8gm2kyed73jsau95fslfrtx7mkn2v234", + "ethereum_private_key": "0x730da9e56ce519dd1b20447ea5329eb7c4aa8778ee9ea9bf71b6ce080f9dac04", + "ethereum_address": "0xEaCEf48B3cB7Bee2c26aA76E08228d16451Baa4E" + }, + { + "mnemonic": "mountain apology hero fit error snack bone rice term receive void topple", + "kaspa_private_key": "9ec04e80cf2607ac52eacb7dacf4617e6a343c53e8710bea8f6401b9092338e2", + "kaspa_address": "kaspa:qr8ld2e8vqhgnd32p6cnsl6wglpqu6y6yq2ugr98gkgmddamexs8v6ge3g88h", + "ethereum_private_key": "0x46a7897bfee8b971620c3b7917b5bcc3e82f59fb1bb3cf6bc71933edf77ce64d", + "ethereum_address": "0x3720372d6c7B9E2977E215a0f008C9AcAE142A18" + }, + { + "mnemonic": "artwork clog traffic airport axis fashion insect success metal unlock veteran napkin", + "kaspa_private_key": "59bc2356785f05fb426a1f899cdb3dfda7059fb2651b9d9b2c255c0c3df27560", + "kaspa_address": "kaspa:qze69hqyz6jdggujnpekgadffvh9qv462mjuyj4rrt7pqgc30r8vjuvl8v0g2", + "ethereum_private_key": "0x873761acd9156e26d9fb238141875802472d97cc5694bbb0e67cbb67008eb507", + "ethereum_address": "0x9FDbc553d0A9Dc1945A2d63a3bc72279fc212781" + }, + { + "mnemonic": "paper exotic place burst educate evidence wisdom love lawn hidden erase gallery", + "kaspa_private_key": "0fdbe1f19f890df8a7a916f7f1013701743b61dd7a2ad1fece2d97919f9b59d5", + "kaspa_address": "kaspa:qrmht69k4kcx0tsds6a8ls5e42t392yt6zjmjx97c7jepg9udxt8xhcrucl2w", + "ethereum_private_key": "0xf7fd47fb303126f1d35a3ba125d02e7d01f6a19464ec3342c6e6165bc6927d5f", + "ethereum_address": "0x70d89735A2c3F8af6919dfDc467A1Df9dEEDe536" + }, + { + "mnemonic": "protect noble process hazard inch quiz rookie couch island fly history away", + "kaspa_private_key": "bf02b41562364bb5d1804ca53b0c8285582aad53332b3c4b629107d8eed6113d", + "kaspa_address": "kaspa:qqj34geytkjkwdt275wszaz4w5ksfye5m9c6nlmc5fy9wvjcaqaeqjcc2xs62", + "ethereum_private_key": "0xd434ffa064cfbfd22077bf3bd53c82f8fba8589737fe28d42371aed3a3519864", + "ethereum_address": "0x00047f43e6494E4f8537FeCA5FE442469F301B4B" + }, + { + "mnemonic": "badge copper timber run any fly tomorrow hidden train enter foster horn", + "kaspa_private_key": "9d23b65b9ab90ccd09743e45361eb7f6da4e4c246438adef18d126b04406597d", + "kaspa_address": "kaspa:qzwndjwk5d8f2pp8mmx2ksyg634etkp0dv6hj6g2dyevfus73gle5w7h88z6y", + "ethereum_private_key": "0xaf2435d178f2c59b15ef77f107d9fb19dc003722075edd3bc3636543e9b4c951", + "ethereum_address": "0xF9cC20b7a4B8A48aA41d500D767aDf779151FDEB" + }, + { + "mnemonic": "embark manual never host slab parent avocado devote stairs connect stomach praise", + "kaspa_private_key": "9cb4d8bb360768b8ea1b756bec271695506784a0b4ac691cf4f80688244cc1b8", + "kaspa_address": "kaspa:qzzlmf3jlwepe3n08c8y422xy6t9ts5u620pzxj0u6f44ua8xkf2w78phkgt2", + "ethereum_private_key": "0x64ab79235fa4555781de71e862094b5db759359a45526ee86b341ac75f488c73", + "ethereum_address": "0x6efD6F82Ff8b5F3F3A87D9fD12c4C1dA4f6563FF" + }, + { + "mnemonic": "chunk thumb music lazy problem sight cave grape trend boring orange suggest", + "kaspa_private_key": "f44fa96d1a8fa0cbe77a054785635841e038abdada35024d26720e25391d7c64", + "kaspa_address": "kaspa:qpr5w88eq0fp6e70s4e42vs8r38j8eacw0tnzeju3wx2smmq9es0swem7ltjs", + "ethereum_private_key": "0x9a42a1bc5847167c3dd3ab102865e5d989fc8fa82063c73db3e5872b6fa35053", + "ethereum_address": "0x327525D41F0A733BC774416D6D1Ec9629F993911" + }, + { + "mnemonic": "chief marriage liquid chase feature siege desert verify legend unfair loyal unhappy", + "kaspa_private_key": "12298cf7d39eb8794afee93f40b755b22f279f1bab60acc7fca28f9bb8c1b2fd", + "kaspa_address": "kaspa:qpzyadx2rmt5jndj7ssvtlx3hln2xkh478k2srt79drgru0qr45y5u7a4zs6y", + "ethereum_private_key": "0x51ba3bacfa5951fc0de7ee2bd9fc235be4306f2988316b8585da6376bcffea98", + "ethereum_address": "0xaC474abF9Ecd12f86747433852Fd9C098326CE63" + }, + { + "mnemonic": "grid bunker ramp bread orient solar castle indoor gravity used captain hill", + "kaspa_private_key": "17d5f7bea5f50eb28748a51f7e2e725ab29d2befa93a16718efde9d3452339c8", + "kaspa_address": "kaspa:qps0jnn5shgaxdygqsvekkczxxzw92smav007krukrfufkcqtx24w0m8ve7yq", + "ethereum_private_key": "0x50f9c6333031130bb75cad046f2a19b84b57b3f149a603edfebfac9c2b4fa73f", + "ethereum_address": "0x93D4DA5397f476c5f9A2B66955323e14087cb50E" + }, + { + "mnemonic": "ahead castle rate forum farm spell club pigeon scrub scare project strong", + "kaspa_private_key": "20928741d210d8a4cba8cb4d667f535b825294c20c5cb564af3beb33998f05c9", + "kaspa_address": "kaspa:qq5q6easkz8ku8nezm25hlwek4xkn5gtz60gvnngupdgz304hnlwcxdjgpjmy", + "ethereum_private_key": "0x2ea5ffa93bfb3224b5d7b9492fc06f5d67828fa774ff19d9207521ed590620c3", + "ethereum_address": "0xa8DC57F2B81c149E8D81B1FbCa4A9fd80d8F3953" + }, + { + "mnemonic": "member doll marine vehicle choose very recipe negative gas pull biology choose", + "kaspa_private_key": "28070709dc44698d4aa97075287c4f097ba9a0e1d89f969a9af7fafb3ed71563", + "kaspa_address": "kaspa:qpg53jw89f4h2rpaxk8ws9vh0j52u5lha78x4tquqlqxwa4rph455tlhrk4wj", + "ethereum_private_key": "0x6feabedc427f58423ddf66bebd442afee1e1f9f3eaf72cc82c444b2bd04c3588", + "ethereum_address": "0x19A1F8E17AE102ED548aD7f37161376ba9e1C274" + }, + { + "mnemonic": "garment uncle display level burst table absurd bronze girl ceiling address foster", + "kaspa_private_key": "f700e655da231de736ada99f69f85488bfa72611549eedda9ff5ea98e170e30f", + "kaspa_address": "kaspa:qp74rhpscnn0e6xyxelef4hgqdxxwsvvjh7g6sff30r50h9200p5je0nzvzlt", + "ethereum_private_key": "0x92fd07f420938b0296421b7bda5a60626f2d9479625d11564b27fbe355c71168", + "ethereum_address": "0xd23310249B5e1A3Cc832d810ebBe3CDddAc80ecd" + }, + { + "mnemonic": "slight dish local system game amount scorpion scorpion blade good then rural", + "kaspa_private_key": "d51c5819aacfe8b651be823a9d63d6cdcc858db704c84ae61014d4e15a8c0f37", + "kaspa_address": "kaspa:qruk9ggmspqjewtwexjd97manqrrh6v6wy3ks6lmt00v3kdukxhtj23zv0262", + "ethereum_private_key": "0x6506ffcbe04ba6f3620cabc6bd057b62773b1bba58d262f9580186e6ebcd6a5c", + "ethereum_address": "0xD035EE995AC69d558f9a82309150A955723839d0" + }, + { + "mnemonic": "crazy solid cage vibrant muscle cushion twin nominee double dawn loud destroy", + "kaspa_private_key": "5fd51d1a14f10719b3a05906299c7e54a955893c27eb3af67b920cc3bb8ff016", + "kaspa_address": "kaspa:qqqr3rght94z5g44vdvgkvrl74pemdhdxa97gsjrpel2xvpu4zvdvzmmnjjps", + "ethereum_private_key": "0x227a9a82d82aee318c31088cad865220f91a2d7f16e18a820ddbdbf86f89f4fb", + "ethereum_address": "0x90EE90B978b96fff93e0B9c5dfe84FdFA04A257b" + }, + { + "mnemonic": "young train oxygen rate film rhythm neglect rotate apart local vast vanish", + "kaspa_private_key": "357fcb0a527101a070668ed7e95e02327fe4a4cbd002df7d1057f0c04a7ad8bd", + "kaspa_address": "kaspa:qz8mmawv8jc22vhf88c34g9a5jtn3hpnfv49ft7p5l5gg9s4wy6t7x2lfyqr9", + "ethereum_private_key": "0x2b98033cf719cdc0e14203dd7cecc2e33822ed0be095184168fcbcf04d7b1e9a", + "ethereum_address": "0x59745D951261491D7d95E1ebf1DA02BAAa10434E" + }, + { + "mnemonic": "like picnic shell camera try topic little torch yellow hope prize ready", + "kaspa_private_key": "3d21505e81ba83f111b1561399e917aaf1126f1803e62fda9c73b004cc7db9d8", + "kaspa_address": "kaspa:qq6slx894ltd3t44ers4s4a0xfdfg966lc0t5d0wcvcgcl45vqvs6qs43ex68", + "ethereum_private_key": "0x0c3f18f6a4b8def65c8e048716fd4765b09c9ec0bda1bcb6bb1265c8fd0f7007", + "ethereum_address": "0xC21DC78eA9d35d27714E754F6181A5Db310970a2" + }, + { + "mnemonic": "fence crouch depend once describe frown powder bring goose symptom fossil great", + "kaspa_private_key": "2796344e503aabb6ddc0c36781d4d584a93dcac44b58aa2de9a19255ffbd4ad5", + "kaspa_address": "kaspa:qrecpvy75g9g4e2vh32srelnnnxtt2nqvx34v86q7nla93asuqy8j49s27luh", + "ethereum_private_key": "0x16063bceabf8ac324e06977f869467849d4bfebe951a04cb6c6b05cc0dcf1297", + "ethereum_address": "0x0587722D111AeA8A6eA068Ae00814573163CA902" + }, + { + "mnemonic": "wet gasp elephant excess voice devote drink business valid badge embark point", + "kaspa_private_key": "c0de7bf7f8a9afd32fbece8a54c01050814c063cdd407f21e53cc26fdc76029e", + "kaspa_address": "kaspa:qrm40a6h4s2g4527qp6swawdk28u4ndqj6z99p4z4qa46dypcp9y5phpv0jyv", + "ethereum_private_key": "0xdbf8228b445d2d3ea859d002ea09ab73b12b51178fa45147729f28c8aa4cb900", + "ethereum_address": "0xaf37a6d692Cc53947f49a77EC64bDdBc53b112eb" + }, + { + "mnemonic": "celery tomato coconut cement capital jump normal nerve arena spy useless wisdom", + "kaspa_private_key": "4435e26b6192fd294d075c31357bdcebc3a8e9a7c8ce032fd4048560fa8d263f", + "kaspa_address": "kaspa:qpcu0n56ylu0cxnlgqpfm94nu844msf0faj0tmaaqj2kf7txj5cfqt4t0q4wl", + "ethereum_private_key": "0xad68efabe6a3bfafad7bb61eb4602b370a1513c34689c31bdaeb79af2be064ac", + "ethereum_address": "0xc92634f37cDe48BE413D9eF1dFE8CeF240e263e8" + } +] diff --git a/scripts/igra/testnet-smoke.sh b/scripts/igra/testnet-smoke.sh index b5d08e7fe9b02..b0ddbac6b7b7a 100755 --- a/scripts/igra/testnet-smoke.sh +++ b/scripts/igra/testnet-smoke.sh @@ -31,7 +31,17 @@ IGRA_KASPA_RPC_URL="${IGRA_KASPA_RPC_URL:-grpc://stage-roman.igralabs.com:16210} IGRA_PRIVATE_KEY="${IGRA_PRIVATE_KEY:-0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80}" IGRA_PRIVATE_KEY_KASPA="${IGRA_PRIVATE_KEY_KASPA:-}" IGRA_MNEMONIC_KASPA="${IGRA_MNEMONIC_KASPA:-}" -IGRA_MNEMONIC_PASSPHRASE_KASPA="${IGRA_MNEMONIC_PASSPHRASE_KASPA:-}" +# Passphrase semantics: +# - default is empty passphrase (standard BIP39) +# - to use `passphrase == mnemonic`, set IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC=1 +# - to explicitly force empty passphrase, set IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY=1 +IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC="${IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC:-0}" +IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY="${IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY:-0}" +IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET=0 +if [[ -n "${IGRA_MNEMONIC_PASSPHRASE_KASPA+x}" ]]; then + IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET=1 +fi +IGRA_MNEMONIC_PASSPHRASE_KASPA="${IGRA_MNEMONIC_PASSPHRASE_KASPA-}" IGRA_MNEMONIC_DERIVATION_PATH_KASPA="${IGRA_MNEMONIC_DERIVATION_PATH_KASPA:-}" IGRA_MNEMONIC_INDEX_KASPA="${IGRA_MNEMONIC_INDEX_KASPA:-}" @@ -57,11 +67,14 @@ KEEP_TMP="${KEEP_TMP:-0}" SEND_ASYNC="${SEND_ASYNC:-1}" CAST_LEGACY="${CAST_LEGACY:-0}" -# Testnet harness convenience: -# If a Kaspa mnemonic is provided but no passphrase is set, default passphrase to mnemonic. -# This matches the user's funded testnet wallet setup (passphrase == mnemonic string). -if [[ -n "${IGRA_MNEMONIC_KASPA}" && -z "${IGRA_MNEMONIC_PASSPHRASE_KASPA}" ]]; then - IGRA_MNEMONIC_PASSPHRASE_KASPA="${IGRA_MNEMONIC_KASPA}" +MNEMONIC_PASSPHRASE_EFFECTIVE="" +if [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY}" == "1" ]]; then + IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET=1 + MNEMONIC_PASSPHRASE_EFFECTIVE="" +elif [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET}" == "1" ]]; then + MNEMONIC_PASSPHRASE_EFFECTIVE="${IGRA_MNEMONIC_PASSPHRASE_KASPA}" +elif [[ -n "${IGRA_MNEMONIC_KASPA}" && "${IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC}" == "1" ]]; then + MNEMONIC_PASSPHRASE_EFFECTIVE="${IGRA_MNEMONIC_KASPA}" fi TMP_DIR="" @@ -102,6 +115,13 @@ WORK_DIR="${TMP_DIR}/flow" mkdir -p "${WORK_DIR}" cd "${WORK_DIR}" +# Isolate Foundry cache per run so IGRA tx-map state (sender nonce tracking) doesn't +# leak across smoke runs and cause BLOCKED_NONCE_GAP errors. +# Note: foundry cache paths are derived from HOME, so we sandbox HOME to a temp dir. +HOME_DIR="${WORK_DIR}/home" +mkdir -p "${HOME_DIR}" +export HOME="${HOME_DIR}" + if [[ "${RUN_FORGE_SCRIPT}" == "1" ]]; then echo "[igra-smoke] initializing temporary forge project" "${FORGE_BIN}" init --force --no-git . >/dev/null @@ -135,8 +155,8 @@ if [[ -n "${IGRA_PRIVATE_KEY_KASPA}" || -n "${IGRA_MNEMONIC_KASPA}" || -n "${IGR if [[ -n "${IGRA_MNEMONIC_KASPA}" ]]; then echo "mnemonic = \"${IGRA_MNEMONIC_KASPA}\"" fi - if [[ -n "${IGRA_MNEMONIC_PASSPHRASE_KASPA}" ]]; then - echo "mnemonic_passphrase = \"${IGRA_MNEMONIC_PASSPHRASE_KASPA}\"" + if [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET}" == "1" || "${IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC}" == "1" || "${IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY}" == "1" ]]; then + echo "mnemonic_passphrase = \"${MNEMONIC_PASSPHRASE_EFFECTIVE}\"" fi if [[ -n "${IGRA_MNEMONIC_DERIVATION_PATH_KASPA}" ]]; then echo "mnemonic_derivation_path = \"${IGRA_MNEMONIC_DERIVATION_PATH_KASPA}\"" @@ -201,8 +221,8 @@ fi if [[ -n "${IGRA_MNEMONIC_KASPA}" ]]; then SEND_ARGS+=(--mnemonic-kaspa "${IGRA_MNEMONIC_KASPA}") fi -if [[ -n "${IGRA_MNEMONIC_PASSPHRASE_KASPA}" ]]; then - SEND_ARGS+=(--mnemonic-passphrase-kaspa "${IGRA_MNEMONIC_PASSPHRASE_KASPA}") +if [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET}" == "1" || "${IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC}" == "1" || "${IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY}" == "1" ]]; then + SEND_ARGS+=(--mnemonic-passphrase-kaspa "${MNEMONIC_PASSPHRASE_EFFECTIVE}") fi if [[ -n "${IGRA_MNEMONIC_DERIVATION_PATH_KASPA}" ]]; then SEND_ARGS+=(--mnemonic-derivation-path-kaspa "${IGRA_MNEMONIC_DERIVATION_PATH_KASPA}") @@ -321,7 +341,11 @@ if [[ "${RUN_FORGE_SCRIPT}" == "1" ]]; then if [[ -n "${IGRA_MNEMONIC_KASPA}" ]]; then FORGE_ARGS+=(--mnemonic-kaspa "${IGRA_MNEMONIC_KASPA}") fi - if [[ -n "${IGRA_MNEMONIC_PASSPHRASE_KASPA}" ]]; then + if [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC}" == "1" ]]; then + FORGE_ARGS+=(--mnemonic-passphrase-kaspa-as-mnemonic) + elif [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY}" == "1" ]]; then + FORGE_ARGS+=(--mnemonic-passphrase-kaspa-empty) + elif [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET}" == "1" ]]; then FORGE_ARGS+=(--mnemonic-passphrase-kaspa "${IGRA_MNEMONIC_PASSPHRASE_KASPA}") fi if [[ -n "${IGRA_MNEMONIC_DERIVATION_PATH_KASPA}" ]]; then diff --git a/scripts/igra/testnet-stress.sh b/scripts/igra/testnet-stress.sh new file mode 100755 index 0000000000000..3bf05b3100560 --- /dev/null +++ b/scripts/igra/testnet-stress.sh @@ -0,0 +1,336 @@ +#!/usr/bin/env bash +set -euo pipefail + +# IGRA testnet stress runner. +# +# Goals: +# - Generate many IGRA write-path submissions (eth_sendRawTransaction -> Kaspa payload tx). +# - Avoid cross-process SQLite contention by sandboxing each worker under its own HOME. +# - Keep knobs obvious so you can scale load without code changes. +# +# Notes on throughput limits (current implementation): +# - Kaspa txid-prefix mining is CPU-bound and scales ~linearly with cores and ~exponentially with +# prefix length (2 bytes => ~65k tries on average). +# - Parallelism needs enough Kaspa UTXOs per worker; sharing one Kaspa key across workers often +# results in UTXO contention/double-spend submission failures. + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +TARGET_DIR="${TARGET_DIR:-${ROOT_DIR}/target}" +CAST_BIN="${CAST_BIN:-${TARGET_DIR}/debug/cast}" + +export CARGO_TARGET_DIR="${TARGET_DIR}" +export RUSTC_WRAPPER= + +require_cmd() { + if ! command -v "$1" >/dev/null 2>&1; then + echo "[igra-stress] missing required command: $1" + exit 1 + fi +} + +for cmd in cargo jq mktemp python3; do + require_cmd "$cmd" +done + +if [[ "${SKIP_BUILD:-0}" != "1" ]]; then + echo "[igra-stress] building cast binary in ${TARGET_DIR}" + (cd "${ROOT_DIR}" && cargo build -p cast >/dev/null) +fi + +IGRA_EL_RPC_URL="${IGRA_EL_RPC_URL:-https://galleon-testnet.igralabs.com:8545}" +IGRA_KASPA_RPC_URL="${IGRA_KASPA_RPC_URL:-grpc://stage-roman.igralabs.com:16210}" +IGRA_KASPA_NETWORK="${IGRA_KASPA_NETWORK:-testnet-10}" +# Viaduct Transaction ID Prefix (network specific): +# - galleon-testnet (testnet-10): 97b4 +# - mainnet: 97b1 +IGRA_TX_ID_PREFIX="${IGRA_TX_ID_PREFIX:-97b4}" +IGRA_EL_RECEIPT_TIMEOUT_SECS="${IGRA_EL_RECEIPT_TIMEOUT_SECS:-300}" +IGRA_MINING_TIMEOUT_SECS="${IGRA_MINING_TIMEOUT_SECS:-120}" +IGRA_SENDER_LOCK_TIMEOUT_SECS="${IGRA_SENDER_LOCK_TIMEOUT_SECS:-60}" +IGRA_PAYLOAD_COMPRESSION="${IGRA_PAYLOAD_COMPRESSION:-none}" + +# Load knobs. +IGRA_STRESS_WORKERS="${IGRA_STRESS_WORKERS:-1}" +IGRA_STRESS_TXS_PER_WORKER="${IGRA_STRESS_TXS_PER_WORKER:-10}" +IGRA_STRESS_PROGRESS_EVERY="${IGRA_STRESS_PROGRESS_EVERY:-10}" + +# EVM keys: +# - If IGRA_STRESS_WORKERS=1, use IGRA_PRIVATE_KEY. +# - If IGRA_STRESS_WORKERS>1, set IGRA_STRESS_EVM_KEYS as comma-separated list. +IGRA_PRIVATE_KEY="${IGRA_PRIVATE_KEY:-}" +IGRA_STRESS_EVM_KEYS="${IGRA_STRESS_EVM_KEYS:-}" + +# Kaspa signer material (single-worker defaults). +IGRA_PRIVATE_KEY_KASPA="${IGRA_PRIVATE_KEY_KASPA:-}" +IGRA_MNEMONIC_KASPA="${IGRA_MNEMONIC_KASPA:-}" +# Passphrase semantics: +# - default is empty passphrase (standard BIP39) +# - to use `passphrase == mnemonic`, set IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC=1 +# - to explicitly force empty passphrase, set IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY=1 +IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC="${IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC:-0}" +IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY="${IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY:-0}" +IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET=0 +if [[ -n "${IGRA_MNEMONIC_PASSPHRASE_KASPA+x}" ]]; then + IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET=1 +fi +IGRA_MNEMONIC_PASSPHRASE_KASPA="${IGRA_MNEMONIC_PASSPHRASE_KASPA-}" +IGRA_MNEMONIC_DERIVATION_PATH_KASPA="${IGRA_MNEMONIC_DERIVATION_PATH_KASPA:-}" +IGRA_MNEMONIC_INDEX_KASPA="${IGRA_MNEMONIC_INDEX_KASPA:-}" + +MNEMONIC_PASSPHRASE_EFFECTIVE="" +if [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY}" == "1" ]]; then + IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET=1 + MNEMONIC_PASSPHRASE_EFFECTIVE="" +elif [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET}" == "1" ]]; then + MNEMONIC_PASSPHRASE_EFFECTIVE="${IGRA_MNEMONIC_PASSPHRASE_KASPA}" +elif [[ -n "${IGRA_MNEMONIC_KASPA}" && "${IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC}" == "1" ]]; then + MNEMONIC_PASSPHRASE_EFFECTIVE="${IGRA_MNEMONIC_KASPA}" +fi + +# Multi-worker Kaspa keys (recommended): comma-separated list matching IGRA_STRESS_WORKERS. +IGRA_STRESS_KASPA_PRIVATE_KEYS="${IGRA_STRESS_KASPA_PRIVATE_KEYS:-}" +ALLOW_SHARED_KASPA_KEY="${ALLOW_SHARED_KASPA_KEY:-0}" + +# Target tx (defaults match scripts/igra/testnet-smoke.sh). +STRESS_CONTRACT="${STRESS_CONTRACT:-0xB981f5B62d94285976C9Bdaea65193BBe906972E}" +STRESS_SIG="${STRESS_SIG:-mint(address,uint256)}" +STRESS_TO="${STRESS_TO:-}" +STRESS_AMOUNT="${STRESS_AMOUNT:-1}" +CAST_LEGACY="${CAST_LEGACY:-0}" + +py_ms() { + python3 -c 'import time; print(int(time.time_ns()//1_000_000))' +} + +split_csv() { + local input="${1:-}" + local out_var="$2" + local out_ref=() + if [[ -z "${input}" ]]; then + eval "${out_var}=()" + return 0 + fi + # No fancy CSV; we expect comma-separated tokens. + local IFS=, + read -r -a out_ref <<< "${input}" + eval "${out_var}=(\"\${out_ref[@]}\")" +} + +echo "[igra-stress] checking EL chain id via ${IGRA_EL_RPC_URL}" +CHAIN_ID="$("${CAST_BIN}" chain-id --rpc-url "${IGRA_EL_RPC_URL}")" +echo "[igra-stress] EL chain id: ${CHAIN_ID}" + +if [[ -z "${STRESS_TO}" ]]; then + if [[ -n "${IGRA_PRIVATE_KEY}" ]]; then + STRESS_TO="$("${CAST_BIN}" wallet address --private-key "${IGRA_PRIVATE_KEY}")" + else + # We'll compute per-worker when using IGRA_STRESS_EVM_KEYS. + STRESS_TO="" + fi +fi + +EVM_KEYS=() +split_csv "${IGRA_STRESS_EVM_KEYS}" EVM_KEYS +if [[ "${IGRA_STRESS_WORKERS}" -le 1 ]]; then + if [[ -z "${IGRA_PRIVATE_KEY}" && "${#EVM_KEYS[@]}" -eq 0 ]]; then + echo "[igra-stress] missing EVM signer: set IGRA_PRIVATE_KEY (or IGRA_STRESS_EVM_KEYS)" + exit 1 + fi + if [[ "${#EVM_KEYS[@]}" -eq 0 ]]; then + EVM_KEYS=("${IGRA_PRIVATE_KEY}") + fi +else + if [[ "${#EVM_KEYS[@]}" -lt "${IGRA_STRESS_WORKERS}" ]]; then + echo "[igra-stress] IGRA_STRESS_WORKERS=${IGRA_STRESS_WORKERS} requires IGRA_STRESS_EVM_KEYS with >= that many keys" + echo "[igra-stress] hint: IGRA_STRESS_EVM_KEYS=0x...,0x...,0x..." + exit 1 + fi +fi + +KASPA_KEYS=() +split_csv "${IGRA_STRESS_KASPA_PRIVATE_KEYS}" KASPA_KEYS +if [[ "${IGRA_STRESS_WORKERS}" -gt 1 ]]; then + if [[ "${#KASPA_KEYS[@]}" -lt "${IGRA_STRESS_WORKERS}" && "${ALLOW_SHARED_KASPA_KEY}" != "1" ]]; then + echo "[igra-stress] multi-worker run without per-worker Kaspa keys is likely to fail due to UTXO contention." + echo "[igra-stress] set IGRA_STRESS_KASPA_PRIVATE_KEYS with >= IGRA_STRESS_WORKERS keys, or set ALLOW_SHARED_KASPA_KEY=1 to proceed anyway." + exit 1 + fi +fi + +TMP_DIR="$(mktemp -d "/tmp/igra-testnet-stress.XXXXXX")" +cleanup() { + if [[ -d "${TMP_DIR}" && "${KEEP_TMP:-0}" != "1" ]]; then + rm -rf "${TMP_DIR}" + fi +} +trap cleanup EXIT + +echo "[igra-stress] tmp dir: ${TMP_DIR}" +echo "[igra-stress] workers=${IGRA_STRESS_WORKERS} txs_per_worker=${IGRA_STRESS_TXS_PER_WORKER}" + +run_worker() { + local idx="$1" + local evm_key="$2" + local kaspa_key="${3:-}" + + local worker_dir="${TMP_DIR}/w${idx}" + local home_dir="${worker_dir}/home" + local work_dir="${worker_dir}/work" + local log_dir="${worker_dir}/logs" + mkdir -p "${home_dir}" "${work_dir}" "${log_dir}" + + local worker_to="${STRESS_TO}" + if [[ -z "${worker_to}" ]]; then + worker_to="$("${CAST_BIN}" wallet address --private-key "${evm_key}")" + fi + + cat > "${work_dir}/foundry.toml" <> "${work_dir}/foundry.toml" + else + if [[ -n "${IGRA_PRIVATE_KEY_KASPA}" || -n "${IGRA_MNEMONIC_KASPA}" || -n "${IGRA_MNEMONIC_PASSPHRASE_KASPA}" || -n "${IGRA_MNEMONIC_DERIVATION_PATH_KASPA}" || -n "${IGRA_MNEMONIC_INDEX_KASPA}" ]]; then + { + echo "" + echo "[igra.kaspa_wallet]" + if [[ -n "${IGRA_PRIVATE_KEY_KASPA}" ]]; then + echo "private_key = \"${IGRA_PRIVATE_KEY_KASPA}\"" + fi + if [[ -n "${IGRA_MNEMONIC_KASPA}" ]]; then + echo "mnemonic = \"${IGRA_MNEMONIC_KASPA}\"" + fi + if [[ "${IGRA_MNEMONIC_PASSPHRASE_KASPA_IS_SET}" == "1" || "${IGRA_MNEMONIC_PASSPHRASE_KASPA_AS_MNEMONIC}" == "1" || "${IGRA_MNEMONIC_PASSPHRASE_KASPA_EMPTY}" == "1" ]]; then + echo "mnemonic_passphrase = \"${MNEMONIC_PASSPHRASE_EFFECTIVE}\"" + fi + if [[ -n "${IGRA_MNEMONIC_DERIVATION_PATH_KASPA}" ]]; then + echo "mnemonic_derivation_path = \"${IGRA_MNEMONIC_DERIVATION_PATH_KASPA}\"" + fi + if [[ -n "${IGRA_MNEMONIC_INDEX_KASPA}" ]]; then + echo "mnemonic_index = ${IGRA_MNEMONIC_INDEX_KASPA}" + fi + } >> "${work_dir}/foundry.toml" + fi + fi + + local ok=0 + local fail=0 + local start_ms + start_ms="$(py_ms)" + + local i=1 + while [[ "${i}" -le "${IGRA_STRESS_TXS_PER_WORKER}" ]]; do + local t0 + t0="$(py_ms)" + + local -a send_args=( + send "${STRESS_CONTRACT}" "${STRESS_SIG}" "${worker_to}" "${STRESS_AMOUNT}" + --rpc-url "${IGRA_EL_RPC_URL}" + --private-key "${evm_key}" + --async + ) + if [[ "${CAST_LEGACY}" == "1" ]]; then + send_args+=(--legacy) + fi + if [[ -n "${kaspa_key}" ]]; then + send_args+=(--private-key-kaspa "${kaspa_key}") + fi + + if (cd "${work_dir}" && HOME="${home_dir}" "${CAST_BIN}" "${send_args[@]}") \ + > "${log_dir}/send-${i}.out" 2> "${log_dir}/send-${i}.err" + then + ok=$((ok + 1)) + else + fail=$((fail + 1)) + fi + + local t1 + t1="$(py_ms)" + if [[ "${IGRA_STRESS_PROGRESS_EVERY}" -gt 0 && $((i % IGRA_STRESS_PROGRESS_EVERY)) -eq 0 ]]; then + echo "[igra-stress][w${idx}] progress i=${i}/${IGRA_STRESS_TXS_PER_WORKER} ok=${ok} fail=${fail} last_ms=$((t1 - t0))" + fi + + i=$((i + 1)) + done + + local end_ms + end_ms="$(py_ms)" + local elapsed_ms=$((end_ms - start_ms)) + local tps="0" + if [[ "${elapsed_ms}" -gt 0 ]]; then + tps="$(python3 -c "print(round(${ok} / (${elapsed_ms} / 1000.0), 4))")" + fi + + jq -n \ + --arg worker "w${idx}" \ + --arg evm_sender "$("${CAST_BIN}" wallet address --private-key "${evm_key}")" \ + --arg kaspa_key_used "${kaspa_key}" \ + --arg contract "${STRESS_CONTRACT}" \ + --arg sig "${STRESS_SIG}" \ + --arg to "${worker_to}" \ + --arg amount "${STRESS_AMOUNT}" \ + --arg el_rpc "${IGRA_EL_RPC_URL}" \ + --arg kaspa_rpc "${IGRA_KASPA_RPC_URL}" \ + --arg kaspa_network "${IGRA_KASPA_NETWORK}" \ + --arg prefix "${IGRA_TX_ID_PREFIX}" \ + --argjson ok "${ok}" \ + --argjson fail "${fail}" \ + --argjson elapsed_ms "${elapsed_ms}" \ + --argjson tps "${tps}" \ + '{worker: $worker, evm_sender: $evm_sender, kaspa_private_key: (if ($kaspa_key_used|length) > 0 then $kaspa_key_used else null end), target: {contract: $contract, sig: $sig, to: $to, amount: $amount}, endpoints: {el_rpc_url: $el_rpc, kaspa_rpc_url: $kaspa_rpc, kaspa_network: $kaspa_network, tx_id_prefix: $prefix}, results: {ok: $ok, fail: $fail, elapsed_ms: $elapsed_ms, ok_tps: $tps}}' \ + > "${worker_dir}/summary.json" +} + +pids=() +worker=1 +while [[ "${worker}" -le "${IGRA_STRESS_WORKERS}" ]]; do + evm_key="${EVM_KEYS[$((worker - 1))]}" + kaspa_key="" + if [[ "${#KASPA_KEYS[@]}" -ge "${worker}" ]]; then + kaspa_key="${KASPA_KEYS[$((worker - 1))]}" + elif [[ "${ALLOW_SHARED_KASPA_KEY}" == "1" ]]; then + kaspa_key="${KASPA_KEYS[0]:-}" + fi + + echo "[igra-stress] starting worker ${worker}" + run_worker "${worker}" "${evm_key}" "${kaspa_key}" & + pids+=("$!") + worker=$((worker + 1)) +done + +exit_code=0 +for pid in "${pids[@]}"; do + if ! wait "${pid}"; then + exit_code=1 + fi +done + +# Aggregate results. +if ls "${TMP_DIR}"/w*/summary.json >/dev/null 2>&1; then + jq -s '{workers: ., totals: {ok: (map(.results.ok // 0) | add), fail: (map(.results.fail // 0) | add), elapsed_ms: (map(.results.elapsed_ms // 0) | max), ok_tps: (if ((map(.results.elapsed_ms // 0) | max) > 0) then ((map(.results.ok // 0) | add) / ((map(.results.elapsed_ms // 0) | max) / 1000.0)) else 0 end)}}' \ + "${TMP_DIR}"/w*/summary.json \ + | tee "${TMP_DIR}/summary.json" >/dev/null + echo "[igra-stress] summary written: ${TMP_DIR}/summary.json" + echo "[igra-stress] logs under: ${TMP_DIR}/w*/logs/" +fi + +exit "${exit_code}"