batch_headers/
batch_headers.rs1use electrum_client_netagnostic::{Batch, Client, ElectrumApi, Param};
6
7fn main() {
8 let server = std::env::var("ELECTRUM_SERVER")
9 .unwrap_or_else(|_| "wss://rostrum.riften.net:443".to_string());
10
11 println!("Connecting to {}...", server);
12 let client = match Client::new(&server) {
13 Ok(c) => c,
14 Err(e) => {
15 eprintln!("Connection failed: {:?}", e);
16 return;
17 }
18 };
19
20 println!("Connected! Testing ping...");
21 if let Err(e) = client.ping() {
22 eprintln!("Ping failed: {:?}", e);
23 return;
24 }
25 println!("Ping successful!");
26
27 let mut batch = Batch::default();
29
30 let heights = [0, 1, 2, 3, 4];
32 for height in &heights {
33 batch.raw(
34 "blockchain.block.header".to_string(),
35 vec![Param::Usize(*height)],
36 );
37 }
38
39 println!("\nBatch requesting {} headers...", heights.len());
40
41 match client.batch_call(&batch) {
42 Ok(results) => {
43 println!("Got {} results:", results.len());
44 for (i, (height, result)) in heights.iter().zip(results.iter()).enumerate() {
45 let header_hex = result.as_str().unwrap_or("<not a string>");
46 let preview = if header_hex.len() > 64 {
48 format!("{}...", &header_hex[..64])
49 } else {
50 header_hex.to_string()
51 };
52 println!(" [{}] Block {}: {}", i, height, preview);
53 }
54 }
55 Err(e) => {
56 eprintln!("Batch call failed: {:?}", e);
57 }
58 }
59}