peerdas-devnet-7: update DataColumnSidecarsByRoot request to use DataColumnsByRootIdentifier (#7399)

Update DataColumnSidecarsByRoot request to use DataColumnsByRootIdentifier #7377


  As described in https://github.com/ethereum/consensus-specs/pull/4284
This commit is contained in:
SunnysidedJ
2025-05-12 09:20:55 +09:00
committed by GitHub
parent 92391cdac6
commit 593390162f
19 changed files with 262 additions and 208 deletions

View File

@@ -875,7 +875,11 @@ impl<T: BeaconChainTypes> SyncNetworkContext<T> {
self.send_network_msg(NetworkMessage::SendRequest {
peer_id,
request: RequestType::DataColumnsByRoot(request.clone().into_request(&self.chain.spec)),
request: RequestType::DataColumnsByRoot(
request
.clone()
.try_into_request(self.fork_context.current_fork(), &self.chain.spec)?,
),
app_request_id: AppRequestId::Sync(SyncRequestId::DataColumnsByRoot(id)),
})?;

View File

@@ -1,6 +1,9 @@
use lighthouse_network::rpc::methods::DataColumnsByRootRequest;
use std::sync::Arc;
use types::{ChainSpec, DataColumnIdentifier, DataColumnSidecar, EthSpec, Hash256};
use types::{
ChainSpec, DataColumnSidecar, DataColumnsByRootIdentifier, EthSpec, ForkName, Hash256,
RuntimeVariableList,
};
use super::{ActiveRequestItems, LookupVerifyError};
@@ -11,17 +14,21 @@ pub struct DataColumnsByRootSingleBlockRequest {
}
impl DataColumnsByRootSingleBlockRequest {
pub fn into_request(self, spec: &ChainSpec) -> DataColumnsByRootRequest {
DataColumnsByRootRequest::new(
self.indices
.into_iter()
.map(|index| DataColumnIdentifier {
block_root: self.block_root,
index,
})
.collect(),
spec,
)
pub fn try_into_request(
self,
fork_name: ForkName,
spec: &ChainSpec,
) -> Result<DataColumnsByRootRequest, &'static str> {
let number_of_columns = spec.number_of_columns as usize;
let columns = RuntimeVariableList::new(self.indices, number_of_columns)
.map_err(|_| "Number of indices exceeds total number of columns")?;
Ok(DataColumnsByRootRequest::new(
vec![DataColumnsByRootIdentifier {
block_root: self.block_root,
columns,
}],
spec.max_request_blocks(fork_name),
))
}
}

View File

@@ -979,18 +979,13 @@ impl TestRig {
request: RequestType::DataColumnsByRoot(request),
app_request_id:
AppRequestId::Sync(id @ SyncRequestId::DataColumnsByRoot { .. }),
} if request
.data_column_ids
.to_vec()
.iter()
.any(|r| r.block_root == block_root) =>
{
let indices = request
} => {
let matching = request
.data_column_ids
.to_vec()
.iter()
.map(|cid| cid.index)
.collect::<Vec<_>>();
.find(|id| id.block_root == block_root)?;
let indices = matching.columns.iter().copied().collect();
Some((*id, indices))
}
_ => None,