use electrum_client_netagnostic::{Batch, Client, ElectrumApi, Param};
fn main() {
let server = std::env::var("ELECTRUM_SERVER")
.unwrap_or_else(|_| "wss://rostrum.riften.net:443".to_string());
println!("Connecting to {}...", server);
let client = match Client::new(&server) {
Ok(c) => c,
Err(e) => {
eprintln!("Connection failed: {:?}", e);
return;
}
};
println!("Connected! Testing ping...");
if let Err(e) = client.ping() {
eprintln!("Ping failed: {:?}", e);
return;
}
println!("Ping successful!");
let mut batch = Batch::default();
let heights = [0, 1, 2, 3, 4];
for height in &heights {
batch.raw(
"blockchain.block.header".to_string(),
vec![Param::Usize(*height)],
);
}
println!("\nBatch requesting {} headers...", heights.len());
match client.batch_call(&batch) {
Ok(results) => {
println!("Got {} results:", results.len());
for (i, (height, result)) in heights.iter().zip(results.iter()).enumerate() {
let header_hex = result.as_str().unwrap_or("<not a string>");
let preview = if header_hex.len() > 64 {
format!("{}...", &header_hex[..64])
} else {
header_hex.to_string()
};
println!(" [{}] Block {}: {}", i, height, preview);
}
}
Err(e) => {
eprintln!("Batch call failed: {:?}", e);
}
}
}