different polling for different chains
This commit is contained in:
parent
5be5128c93
commit
1aefcf166d
@ -71,13 +71,30 @@ impl Web3Connections {
|
||||
let (pending_tx_id_sender, pending_tx_id_receiver) = flume::unbounded();
|
||||
let (block_sender, block_receiver) = flume::unbounded::<BlockAndRpc>();
|
||||
|
||||
// TODO: query the rpc to get the actual expected block time, or get from config?
|
||||
let expected_block_time_ms = match chain_id {
|
||||
// ethereum
|
||||
1 => 12_000,
|
||||
// polygon
|
||||
137 => 2_000,
|
||||
// fantom
|
||||
250 => 1_000,
|
||||
// arbitrum
|
||||
42161 => 0_500,
|
||||
// anything else
|
||||
_ => {
|
||||
warn!("unexpected chain_id. polling every {} seconds", 10);
|
||||
10_000
|
||||
}
|
||||
};
|
||||
|
||||
let http_interval_sender = if http_client.is_some() {
|
||||
let (sender, receiver) = broadcast::channel(1);
|
||||
|
||||
drop(receiver);
|
||||
|
||||
// TODO: what interval? follow a websocket also? maybe by watching synced connections with a timeout. will need debounce
|
||||
let mut interval = interval(Duration::from_secs(13));
|
||||
let mut interval = interval(Duration::from_millis(expected_block_time_ms));
|
||||
interval.set_missed_tick_behavior(MissedTickBehavior::Delay);
|
||||
|
||||
let sender = Arc::new(sender);
|
||||
|
@ -35,7 +35,7 @@ impl Web3Provider {
|
||||
// TODO: dry this up (needs https://github.com/gakonst/ethers-rs/issues/592)
|
||||
// TODO: i don't think this interval matters for our uses, but we should probably set it to like `block time / 2`
|
||||
ethers::providers::Provider::new(provider)
|
||||
.interval(Duration::from_secs(13))
|
||||
.interval(Duration::from_secs(12))
|
||||
.into()
|
||||
} else if url_str.starts_with("ws") {
|
||||
let provider = ethers::providers::Ws::connect(url_str).await?;
|
||||
|
Loading…
Reference in New Issue
Block a user