web3-proxy/web3_proxy/examples/subscribe_blocks.rs

38 lines
969 B
Rust
Raw Normal View History

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