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<()> {
|
2022-05-18 19:35:06 +03:00
|
|
|
fdlimit::raise_fd_limit();
|
|
|
|
|
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(())
|
|
|
|
}
|