dont subscribe to blocks on private rpcs
This commit is contained in:
parent
71ab993574
commit
927ec60183
@ -6,3 +6,20 @@
|
||||
url = "ws://127.0.0.1:8546"
|
||||
soft_limit = 200_000
|
||||
|
||||
[private_rpcs]
|
||||
|
||||
[private_rpcs.eden]
|
||||
url = "https://api.edennetwork.io/v1/"
|
||||
soft_limit = 1_805
|
||||
|
||||
[private_rpcs.eden_beta]
|
||||
url = "https://api.edennetwork.io/v1/beta"
|
||||
soft_limit = 5_861
|
||||
|
||||
[private_rpcs.ethermine]
|
||||
url = "https://rpc.ethermine.org"
|
||||
soft_limit = 5_861
|
||||
|
||||
[private_rpcs.flashbots]
|
||||
url = "https://rpc.flashbots.net"
|
||||
soft_limit = 7074
|
||||
|
@ -85,6 +85,7 @@ impl Web3ProxyApp {
|
||||
balanced_rpc_tier,
|
||||
Some(http_client.clone()),
|
||||
&clock,
|
||||
true,
|
||||
)
|
||||
}))
|
||||
.await
|
||||
@ -103,6 +104,7 @@ impl Web3ProxyApp {
|
||||
private_rpcs,
|
||||
Some(http_client),
|
||||
&clock,
|
||||
false,
|
||||
)
|
||||
.await?,
|
||||
)
|
||||
|
@ -65,6 +65,7 @@ impl Web3Connections {
|
||||
servers: Vec<Web3ConnectionConfig>,
|
||||
http_client: Option<reqwest::Client>,
|
||||
clock: &QuantaClock,
|
||||
subscribe_heads: bool,
|
||||
) -> anyhow::Result<Arc<Self>> {
|
||||
let mut connections = vec![];
|
||||
|
||||
@ -85,19 +86,21 @@ impl Web3Connections {
|
||||
synced_connections: RwLock::new(SyncedConnections::new(num_connections)),
|
||||
});
|
||||
|
||||
for connection in connections.inner.iter() {
|
||||
// subscribe to new heads in a spawned future
|
||||
// TODO: channel instead. then we can have one future with write access to a left-right?
|
||||
let connection = Arc::clone(connection);
|
||||
let connections = connections.clone();
|
||||
tokio::spawn(async move {
|
||||
let url = connection.url().to_string();
|
||||
if subscribe_heads {
|
||||
for connection in connections.inner.iter() {
|
||||
// subscribe to new heads in a spawned future
|
||||
// TODO: channel instead. then we can have one future with write access to a left-right?
|
||||
let connection = Arc::clone(connection);
|
||||
let connections = connections.clone();
|
||||
tokio::spawn(async move {
|
||||
let url = connection.url().to_string();
|
||||
|
||||
// TODO: instead of passing Some(connections), pass Some(channel_sender). Then listen on the receiver below to keep local heads up-to-date
|
||||
if let Err(e) = connection.new_heads(Some(connections)).await {
|
||||
warn!("new_heads error on {}: {:?}", url, e);
|
||||
}
|
||||
});
|
||||
// TODO: instead of passing Some(connections), pass Some(channel_sender). Then listen on the receiver below to keep local heads up-to-date
|
||||
if let Err(e) = connection.new_heads(Some(connections)).await {
|
||||
warn!("new_heads error on {}: {:?}", url, e);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Ok(connections)
|
||||
|
@ -62,7 +62,6 @@ impl<'de> Deserialize<'de> for JsonRpcRequestEnum {
|
||||
let mut batch: Vec<JsonRpcRequest> =
|
||||
Vec::with_capacity(seq.size_hint().unwrap_or(10));
|
||||
|
||||
// this was easier than expected
|
||||
while let Ok(Some(s)) = seq.next_element::<JsonRpcRequest>() {
|
||||
batch.push(s);
|
||||
}
|
||||
@ -107,6 +106,7 @@ impl<'de> Deserialize<'de> for JsonRpcRequestEnum {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let id = id.ok_or_else(|| de::Error::missing_field("id"))?;
|
||||
let method = method.ok_or_else(|| de::Error::missing_field("method"))?;
|
||||
let params = params.ok_or_else(|| de::Error::missing_field("params"))?;
|
||||
|
Loading…
Reference in New Issue
Block a user