per-chain rpc rate limits

This commit is contained in:
Bryan Stitt 2023-02-21 21:10:23 -08:00
parent 6c33b1ae1e
commit 0ab7738393
2 changed files with 24 additions and 23 deletions

View File

@ -334,6 +334,7 @@ These are not yet ordered. There might be duplicates. We might not actually need
- [x] improve eth_sendRawTransaction server selection - [x] improve eth_sendRawTransaction server selection
- [x] don't cache methods that are usually very large - [x] don't cache methods that are usually very large
- [x] use http provider when available - [x] use http provider when available
- [x] per-chain rpc rate limits
- [ ] don't use new_head_provider anywhere except new head subscription - [ ] don't use new_head_provider anywhere except new head subscription
- [-] proxy mode for benchmarking all backends - [-] proxy mode for benchmarking all backends
- [-] proxy mode for sending to multiple backends - [-] proxy mode for sending to multiple backends

View File

@ -645,14 +645,12 @@ impl Web3ProxyApp {
let mut login_rate_limiter = None; let mut login_rate_limiter = None;
if let Some(redis_pool) = vredis_pool.as_ref() { if let Some(redis_pool) = vredis_pool.as_ref() {
if let Some(public_requests_per_period) = top_config.app.public_requests_per_period {
// chain id is included in the app name so that rpc rate limits are per-chain
let rpc_rrl = RedisRateLimiter::new( let rpc_rrl = RedisRateLimiter::new(
"web3_proxy", &format!("web3_proxy:{}", top_config.app.chain_id),
"frontend", "frontend",
// TODO: think about this unwrapping public_requests_per_period,
top_config
.app
.public_requests_per_period
.unwrap_or(u64::MAX),
60.0, 60.0,
redis_pool.clone(), redis_pool.clone(),
); );
@ -669,7 +667,9 @@ impl Web3ProxyApp {
frontend_registered_user_rate_limiter = Some(DeferredRateLimiter::<u64>::new( frontend_registered_user_rate_limiter = Some(DeferredRateLimiter::<u64>::new(
10_000, "key", rpc_rrl, None, 10_000, "key", rpc_rrl, None,
)); ));
}
// login rate limiter
login_rate_limiter = Some(RedisRateLimiter::new( login_rate_limiter = Some(RedisRateLimiter::new(
"web3_proxy", "web3_proxy",
"login", "login",