Gloas serve envelope rpc (#8896)

Serves envelope by range and by root requests. Added PayloadEnvelopeStreamer so that we dont need to alter upstream code when we introduce blinded payload envelopes.


  


Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
This commit is contained in:
Eitan Seri-Levi
2026-03-25 15:45:24 +09:00
committed by GitHub
parent 7ffc637eef
commit c7055b604f
26 changed files with 1778 additions and 13 deletions

View File

@@ -109,7 +109,11 @@ pub struct RPCRateLimiter {
blbrange_rl: Limiter<PeerId>,
/// BlobsByRoot rate limiter.
blbroot_rl: Limiter<PeerId>,
/// DataColumnssByRoot rate limiter.
/// PayloadEnvelopesByRange rate limiter.
envrange_rl: Limiter<PeerId>,
/// PayloadEnvelopesByRoot rate limiter.
envroots_rl: Limiter<PeerId>,
/// DataColumnsByRoot rate limiter.
dcbroot_rl: Limiter<PeerId>,
/// DataColumnsByRange rate limiter.
dcbrange_rl: Limiter<PeerId>,
@@ -148,6 +152,10 @@ pub struct RPCRateLimiterBuilder {
bbrange_quota: Option<Quota>,
/// Quota for the BlocksByRoot protocol.
bbroots_quota: Option<Quota>,
/// Quota for the ExecutionPayloadEnvelopesByRange protocol.
perange_quota: Option<Quota>,
/// Quota for the ExecutionPayloadEnvelopesByRoot protocol.
peroots_quota: Option<Quota>,
/// Quota for the BlobsByRange protocol.
blbrange_quota: Option<Quota>,
/// Quota for the BlobsByRoot protocol.
@@ -177,6 +185,8 @@ impl RPCRateLimiterBuilder {
Protocol::Goodbye => self.goodbye_quota = q,
Protocol::BlocksByRange => self.bbrange_quota = q,
Protocol::BlocksByRoot => self.bbroots_quota = q,
Protocol::PayloadEnvelopesByRange => self.perange_quota = q,
Protocol::PayloadEnvelopesByRoot => self.peroots_quota = q,
Protocol::BlobsByRange => self.blbrange_quota = q,
Protocol::BlobsByRoot => self.blbroot_quota = q,
Protocol::DataColumnsByRoot => self.dcbroot_quota = q,
@@ -201,6 +211,12 @@ impl RPCRateLimiterBuilder {
let bbrange_quota = self
.bbrange_quota
.ok_or("BlocksByRange quota not specified")?;
let perange_quota = self
.perange_quota
.ok_or("PayloadEnvelopesByRange quota not specified")?;
let peroots_quota = self
.peroots_quota
.ok_or("PayloadEnvelopesByRoot quota not specified")?;
let lc_bootstrap_quota = self
.lcbootstrap_quota
.ok_or("LightClientBootstrap quota not specified")?;
@@ -236,6 +252,8 @@ impl RPCRateLimiterBuilder {
let goodbye_rl = Limiter::from_quota(goodbye_quota)?;
let bbroots_rl = Limiter::from_quota(bbroots_quota)?;
let bbrange_rl = Limiter::from_quota(bbrange_quota)?;
let envrange_rl = Limiter::from_quota(perange_quota)?;
let envroots_rl = Limiter::from_quota(peroots_quota)?;
let blbrange_rl = Limiter::from_quota(blbrange_quota)?;
let blbroot_rl = Limiter::from_quota(blbroots_quota)?;
let dcbroot_rl = Limiter::from_quota(dcbroot_quota)?;
@@ -259,6 +277,8 @@ impl RPCRateLimiterBuilder {
goodbye_rl,
bbroots_rl,
bbrange_rl,
envrange_rl,
envroots_rl,
blbrange_rl,
blbroot_rl,
dcbroot_rl,
@@ -312,6 +332,8 @@ impl RPCRateLimiter {
goodbye_quota,
blocks_by_range_quota,
blocks_by_root_quota,
payload_envelopes_by_range_quota,
payload_envelopes_by_root_quota,
blobs_by_range_quota,
blobs_by_root_quota,
data_columns_by_root_quota,
@@ -329,6 +351,14 @@ impl RPCRateLimiter {
.set_quota(Protocol::Goodbye, goodbye_quota)
.set_quota(Protocol::BlocksByRange, blocks_by_range_quota)
.set_quota(Protocol::BlocksByRoot, blocks_by_root_quota)
.set_quota(
Protocol::PayloadEnvelopesByRange,
payload_envelopes_by_range_quota,
)
.set_quota(
Protocol::PayloadEnvelopesByRoot,
payload_envelopes_by_root_quota,
)
.set_quota(Protocol::BlobsByRange, blobs_by_range_quota)
.set_quota(Protocol::BlobsByRoot, blobs_by_root_quota)
.set_quota(Protocol::DataColumnsByRoot, data_columns_by_root_quota)
@@ -376,6 +406,8 @@ impl RPCRateLimiter {
Protocol::Goodbye => &mut self.goodbye_rl,
Protocol::BlocksByRange => &mut self.bbrange_rl,
Protocol::BlocksByRoot => &mut self.bbroots_rl,
Protocol::PayloadEnvelopesByRange => &mut self.envrange_rl,
Protocol::PayloadEnvelopesByRoot => &mut self.envroots_rl,
Protocol::BlobsByRange => &mut self.blbrange_rl,
Protocol::BlobsByRoot => &mut self.blbroot_rl,
Protocol::DataColumnsByRoot => &mut self.dcbroot_rl,
@@ -400,6 +432,8 @@ impl RPCRateLimiter {
status_rl,
bbrange_rl,
bbroots_rl,
envrange_rl,
envroots_rl,
blbrange_rl,
blbroot_rl,
dcbroot_rl,
@@ -417,6 +451,8 @@ impl RPCRateLimiter {
status_rl.prune(time_since_start);
bbrange_rl.prune(time_since_start);
bbroots_rl.prune(time_since_start);
envrange_rl.prune(time_since_start);
envroots_rl.prune(time_since_start);
blbrange_rl.prune(time_since_start);
blbroot_rl.prune(time_since_start);
dcbrange_rl.prune(time_since_start);