Add da router, and initial logic

This commit is contained in:
Eitan Seri-Levi
2026-01-27 19:32:30 -08:00
parent 7f065009a7
commit d9c21f5e33
30 changed files with 3405 additions and 208 deletions

View File

@@ -566,6 +566,7 @@ fn handle_rpc_request<E: EthSpec>(
decoded_buffer,
spec.max_request_blocks(current_fork),
)?,
fork_name: current_fork,
},
))),
SupportedProtocol::PingV1 => Ok(Some(RequestType::Ping(Ping {
@@ -1089,6 +1090,7 @@ mod tests {
spec.max_request_blocks(fork_name),
)
.unwrap(),
fork_name,
}
}

View File

@@ -12,6 +12,7 @@ use std::ops::Deref;
use std::sync::Arc;
use strum::IntoStaticStr;
use superstruct::superstruct;
use types::ForkName;
use types::data::BlobIdentifier;
use types::light_client::consts::MAX_REQUEST_LIGHT_CLIENT_UPDATES;
use types::{
@@ -528,16 +529,21 @@ impl BlobsByRootRequest {
pub struct DataColumnsByRootRequest<E: EthSpec> {
/// The list of beacon block roots and column indices being requested.
pub data_column_ids: RuntimeVariableList<DataColumnsByRootIdentifier<E>>,
pub fork_name: ForkName,
}
impl<E: EthSpec> DataColumnsByRootRequest<E> {
pub fn new(
data_column_ids: Vec<DataColumnsByRootIdentifier<E>>,
fork_name: ForkName,
max_request_blocks: usize,
) -> Result<Self, &'static str> {
let data_column_ids = RuntimeVariableList::new(data_column_ids, max_request_blocks)
.map_err(|_| "DataColumnsByRootRequest too many column IDs")?;
Ok(Self { data_column_ids })
Ok(Self {
data_column_ids,
fork_name,
})
}
pub fn max_requested(&self) -> usize {