mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-20 14:28:37 +00:00
Light client updates by range RPC (#6383)
* enable lc update over rpc * resolve TODOs * resolve merge conflicts * move max light client updates to eth spec * Merge branch 'unstable' of https://github.com/sigp/lighthouse into light-client-updates-by-range-rpc * remove ethspec dependency * Update beacon_node/network/src/network_beacon_processor/rpc_methods.rs Co-authored-by: Michael Sproul <micsproul@gmail.com> * Update beacon_node/lighthouse_network/src/rpc/methods.rs Co-authored-by: Michael Sproul <micsproul@gmail.com>
This commit is contained in:
@@ -106,6 +106,8 @@ pub struct RPCRateLimiter {
|
||||
lc_optimistic_update_rl: Limiter<PeerId>,
|
||||
/// LightClientFinalityUpdate rate limiter.
|
||||
lc_finality_update_rl: Limiter<PeerId>,
|
||||
/// LightClientUpdatesByRange rate limiter.
|
||||
lc_updates_by_range_rl: Limiter<PeerId>,
|
||||
}
|
||||
|
||||
/// Error type for non conformant requests
|
||||
@@ -146,6 +148,8 @@ pub struct RPCRateLimiterBuilder {
|
||||
lc_optimistic_update_quota: Option<Quota>,
|
||||
/// Quota for the LightClientOptimisticUpdate protocol.
|
||||
lc_finality_update_quota: Option<Quota>,
|
||||
/// Quota for the LightClientUpdatesByRange protocol.
|
||||
lc_updates_by_range_quota: Option<Quota>,
|
||||
}
|
||||
|
||||
impl RPCRateLimiterBuilder {
|
||||
@@ -166,6 +170,7 @@ impl RPCRateLimiterBuilder {
|
||||
Protocol::LightClientBootstrap => self.lcbootstrap_quota = q,
|
||||
Protocol::LightClientOptimisticUpdate => self.lc_optimistic_update_quota = q,
|
||||
Protocol::LightClientFinalityUpdate => self.lc_finality_update_quota = q,
|
||||
Protocol::LightClientUpdatesByRange => self.lc_updates_by_range_quota = q,
|
||||
}
|
||||
self
|
||||
}
|
||||
@@ -191,6 +196,9 @@ impl RPCRateLimiterBuilder {
|
||||
let lc_finality_update_quota = self
|
||||
.lc_finality_update_quota
|
||||
.ok_or("LightClientFinalityUpdate quota not specified")?;
|
||||
let lc_updates_by_range_quota = self
|
||||
.lc_updates_by_range_quota
|
||||
.ok_or("LightClientUpdatesByRange quota not specified")?;
|
||||
|
||||
let blbrange_quota = self
|
||||
.blbrange_quota
|
||||
@@ -221,6 +229,7 @@ impl RPCRateLimiterBuilder {
|
||||
let lc_bootstrap_rl = Limiter::from_quota(lc_bootstrap_quota)?;
|
||||
let lc_optimistic_update_rl = Limiter::from_quota(lc_optimistic_update_quota)?;
|
||||
let lc_finality_update_rl = Limiter::from_quota(lc_finality_update_quota)?;
|
||||
let lc_updates_by_range_rl = Limiter::from_quota(lc_updates_by_range_quota)?;
|
||||
|
||||
// check for peers to prune every 30 seconds, starting in 30 seconds
|
||||
let prune_every = tokio::time::Duration::from_secs(30);
|
||||
@@ -241,6 +250,7 @@ impl RPCRateLimiterBuilder {
|
||||
lc_bootstrap_rl,
|
||||
lc_optimistic_update_rl,
|
||||
lc_finality_update_rl,
|
||||
lc_updates_by_range_rl,
|
||||
init_time: Instant::now(),
|
||||
})
|
||||
}
|
||||
@@ -278,6 +288,7 @@ impl RPCRateLimiter {
|
||||
light_client_bootstrap_quota,
|
||||
light_client_optimistic_update_quota,
|
||||
light_client_finality_update_quota,
|
||||
light_client_updates_by_range_quota,
|
||||
} = config;
|
||||
|
||||
Self::builder()
|
||||
@@ -300,6 +311,10 @@ impl RPCRateLimiter {
|
||||
Protocol::LightClientFinalityUpdate,
|
||||
light_client_finality_update_quota,
|
||||
)
|
||||
.set_quota(
|
||||
Protocol::LightClientUpdatesByRange,
|
||||
light_client_updates_by_range_quota,
|
||||
)
|
||||
.build()
|
||||
}
|
||||
|
||||
@@ -332,6 +347,7 @@ impl RPCRateLimiter {
|
||||
Protocol::LightClientBootstrap => &mut self.lc_bootstrap_rl,
|
||||
Protocol::LightClientOptimisticUpdate => &mut self.lc_optimistic_update_rl,
|
||||
Protocol::LightClientFinalityUpdate => &mut self.lc_finality_update_rl,
|
||||
Protocol::LightClientUpdatesByRange => &mut self.lc_updates_by_range_rl,
|
||||
};
|
||||
check(limiter)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user