if protected rpcs, only use protected rpcs
This commit is contained in:
parent
8916533a2a
commit
c2e3d71080
|
@ -1217,46 +1217,9 @@ impl Web3ProxyApp {
|
||||||
request: &JsonRpcRequest,
|
request: &JsonRpcRequest,
|
||||||
request_metadata: Arc<RequestMetadata>,
|
request_metadata: Arc<RequestMetadata>,
|
||||||
num_public_rpcs: Option<usize>,
|
num_public_rpcs: Option<usize>,
|
||||||
head_block_num: Option<U64>,
|
|
||||||
) -> Web3ProxyResult<JsonRpcForwardedResponse> {
|
) -> Web3ProxyResult<JsonRpcForwardedResponse> {
|
||||||
// TODO: error/wait if no head block?
|
|
||||||
// TODO: configurable lag
|
|
||||||
let min_block_needed = head_block_num
|
|
||||||
.or(self.balanced_rpcs.head_block_num())
|
|
||||||
.ok_or_else(|| Web3ProxyError::NoServersSynced)?
|
|
||||||
.saturating_sub(3.into());
|
|
||||||
|
|
||||||
if let Some(protected_rpcs) = self.private_rpcs.as_ref() {
|
if let Some(protected_rpcs) = self.private_rpcs.as_ref() {
|
||||||
if !protected_rpcs.is_empty() {
|
if !protected_rpcs.is_empty() {
|
||||||
// send to protected and public rpcs at the same time
|
|
||||||
// TODO: send to tier 0 of private, wait a block, ..., tier N of private, wait a block, public
|
|
||||||
// TODO: allow premium users to choose specifically where they want transactions to go
|
|
||||||
let public_f = {
|
|
||||||
let authorization = authorization.clone();
|
|
||||||
let clone = self.clone();
|
|
||||||
// TODO: should request be in an arc? inside the request metadata?
|
|
||||||
let request = request.clone();
|
|
||||||
let request_metadata = Some(request_metadata.clone());
|
|
||||||
|
|
||||||
async move {
|
|
||||||
clone
|
|
||||||
.balanced_rpcs
|
|
||||||
.try_send_all_synced_connections(
|
|
||||||
&authorization,
|
|
||||||
&request,
|
|
||||||
request_metadata,
|
|
||||||
Some(&min_block_needed),
|
|
||||||
None,
|
|
||||||
Level::Trace,
|
|
||||||
num_public_rpcs,
|
|
||||||
true,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let public_handle = tokio::spawn(public_f);
|
|
||||||
|
|
||||||
let protected_response = protected_rpcs
|
let protected_response = protected_rpcs
|
||||||
.try_send_all_synced_connections(
|
.try_send_all_synced_connections(
|
||||||
authorization,
|
authorization,
|
||||||
|
@ -1270,10 +1233,6 @@ impl Web3ProxyApp {
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
// wait for sending to the public rpcs to finish
|
|
||||||
// TODO: let this run in the background instead?
|
|
||||||
public_handle.await??;
|
|
||||||
|
|
||||||
return Ok(protected_response);
|
return Ok(protected_response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1285,7 +1244,7 @@ impl Web3ProxyApp {
|
||||||
authorization,
|
authorization,
|
||||||
request,
|
request,
|
||||||
Some(request_metadata),
|
Some(request_metadata),
|
||||||
Some(&min_block_needed),
|
None,
|
||||||
None,
|
None,
|
||||||
Level::Trace,
|
Level::Trace,
|
||||||
num_public_rpcs,
|
num_public_rpcs,
|
||||||
|
@ -1624,7 +1583,6 @@ impl Web3ProxyApp {
|
||||||
&request,
|
&request,
|
||||||
request_metadata.clone(),
|
request_metadata.clone(),
|
||||||
num_public_rpcs,
|
num_public_rpcs,
|
||||||
head_block_num,
|
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue