web3-proxy/web3_proxy_cli/examples/watch_blocks.rs

36 lines
981 B
Rust
Raw Normal View History

2022-05-05 22:07:09 +03:00
/// poll an http rpc
use std::{str::FromStr, time::Duration};
2023-08-03 10:16:54 +03:00
use web3_proxy::prelude::anyhow;
use web3_proxy::prelude::ethers::prelude::*;
use web3_proxy::prelude::fdlimit;
use web3_proxy::prelude::tokio;
2022-05-05 22:07:09 +03:00
#[tokio::main]
async fn main() -> anyhow::Result<()> {
2023-11-10 05:21:20 +03:00
fdlimit::raise_fd_limit()?;
2022-05-18 19:35:06 +03:00
2022-05-05 22:07:09 +03:00
// erigon does not support most filters
// let url = "http://10.11.12.16:8545";
// geth
2022-05-18 19:35:06 +03:00
let url = "http://10.11.12.16:8545";
2022-05-05 22:07:09 +03:00
println!("Watching blocks from {:?}", url);
let provider = Http::from_str(url)?;
let provider = Provider::new(provider).interval(Duration::from_secs(1));
2022-05-18 19:35:06 +03:00
let mut stream = provider.watch_blocks().await?;
2022-05-05 22:07:09 +03:00
while let Some(block_number) = stream.next().await {
let block = provider.get_block(block_number).await?.unwrap();
println!(
"{:?} = Ts: {:?}, block number: {}",
block.hash.unwrap(),
block.timestamp,
block.number.unwrap(),
);
}
Ok(())
}