38 lines
969 B
Rust
38 lines
969 B
Rust
/// subscribe to a websocket rpc
|
|
use ethers::prelude::*;
|
|
use std::time::Duration;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> anyhow::Result<()> {
|
|
// install global collector configured based on RUST_LOG env var.
|
|
tracing_subscriber::fmt()
|
|
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
|
|
.compact()
|
|
.init();
|
|
|
|
fdlimit::raise_fd_limit();
|
|
|
|
// erigon
|
|
let url = "ws://10.11.12.16:8548";
|
|
// geth
|
|
// let url = "ws://10.11.12.16:8546";
|
|
|
|
println!("Subscribing to blocks from {}", url);
|
|
|
|
let provider = Ws::connect(url).await?;
|
|
|
|
let provider = Provider::new(provider).interval(Duration::from_secs(1));
|
|
|
|
let mut stream = provider.subscribe_blocks().await?;
|
|
while let Some(block) = stream.next().await {
|
|
println!(
|
|
"{:?} = Ts: {:?}, block number: {}",
|
|
block.hash.unwrap(),
|
|
block.timestamp,
|
|
block.number.unwrap(),
|
|
);
|
|
}
|
|
|
|
Ok(())
|
|
}
|