mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-15 19:02:42 +00:00
Make max_blobs_per_block a config parameter (#6329)
* First pass
* Add restrictions to RuntimeVariableList api
* Use empty_uninitialized and fix warnings
* Fix some todos
* Merge branch 'unstable' into max-blobs-preset
* Fix take impl on RuntimeFixedList
* cleanup
* Fix test compilations
* Fix some more tests
* Fix test from unstable
* Merge branch 'unstable' into max-blobs-preset
* Merge remote-tracking branch 'origin/unstable' into max-blobs-preset
* Remove footgun function
* Minor simplifications
* Move from preset to config
* Fix typo
* Revert "Remove footgun function"
This reverts commit de01f923c7.
* Try fixing tests
* Thread through ChainSpec
* Fix release tests
* Move RuntimeFixedVector into module and rename
* Add test
* Remove empty RuntimeVarList awefullness
* Fix tests
* Simplify BlobSidecarListFromRoot
* Merge remote-tracking branch 'origin/unstable' into max-blobs-preset
* Bump quota to account for new target (6)
* Remove clone
* Fix issue from review
* Try to remove ugliness
* Merge branch 'unstable' into max-blobs-preset
* Fix max value
* Fix doctest
* Fix formatting
* Fix max check
* Delete hardcoded max_blobs_per_block in RPC limits
* Merge remote-tracking branch 'origin/unstable' into max-blobs-preset
This commit is contained in:
@@ -67,6 +67,15 @@ pub enum RangeRequestId {
|
||||
},
|
||||
}
|
||||
|
||||
impl RangeRequestId {
|
||||
pub fn batch_id(&self) -> BatchId {
|
||||
match self {
|
||||
RangeRequestId::RangeSync { batch_id, .. } => *batch_id,
|
||||
RangeRequestId::BackfillSync { batch_id, .. } => *batch_id,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum RpcEvent<T> {
|
||||
StreamTermination,
|
||||
@@ -445,11 +454,14 @@ impl<T: BeaconChainTypes> SyncNetworkContext<T> {
|
||||
(None, None)
|
||||
};
|
||||
|
||||
// TODO(pawan): this would break if a batch contains multiple epochs
|
||||
let max_blobs_len = self.chain.spec.max_blobs_per_block(epoch);
|
||||
let info = RangeBlockComponentsRequest::new(
|
||||
expected_blobs,
|
||||
expects_columns,
|
||||
num_of_column_req,
|
||||
requested_peers,
|
||||
max_blobs_len as usize,
|
||||
);
|
||||
self.range_block_components_requests
|
||||
.insert(id, (sender_id, info));
|
||||
@@ -950,12 +962,23 @@ impl<T: BeaconChainTypes> SyncNetworkContext<T> {
|
||||
) -> Option<RpcResponseResult<FixedBlobSidecarList<T::EthSpec>>> {
|
||||
let response = self.blobs_by_root_requests.on_response(id, rpc_event);
|
||||
let response = response.map(|res| {
|
||||
res.and_then(
|
||||
|(blobs, seen_timestamp)| match to_fixed_blob_sidecar_list(blobs) {
|
||||
Ok(blobs) => Ok((blobs, seen_timestamp)),
|
||||
Err(e) => Err(e.into()),
|
||||
},
|
||||
)
|
||||
res.and_then(|(blobs, seen_timestamp)| {
|
||||
if let Some(max_len) = blobs
|
||||
.first()
|
||||
.map(|blob| self.chain.spec.max_blobs_per_block(blob.epoch()) as usize)
|
||||
{
|
||||
match to_fixed_blob_sidecar_list(blobs, max_len) {
|
||||
Ok(blobs) => Ok((blobs, seen_timestamp)),
|
||||
Err(e) => Err(e.into()),
|
||||
}
|
||||
} else {
|
||||
Err(RpcResponseError::VerifyError(
|
||||
LookupVerifyError::InternalError(
|
||||
"Requested blobs for a block that has no blobs".to_string(),
|
||||
),
|
||||
))
|
||||
}
|
||||
})
|
||||
});
|
||||
if let Some(Err(RpcResponseError::VerifyError(e))) = &response {
|
||||
self.report_peer(peer_id, PeerAction::LowToleranceError, e.into());
|
||||
@@ -1150,8 +1173,9 @@ impl<T: BeaconChainTypes> SyncNetworkContext<T> {
|
||||
|
||||
fn to_fixed_blob_sidecar_list<E: EthSpec>(
|
||||
blobs: Vec<Arc<BlobSidecar<E>>>,
|
||||
max_len: usize,
|
||||
) -> Result<FixedBlobSidecarList<E>, LookupVerifyError> {
|
||||
let mut fixed_list = FixedBlobSidecarList::default();
|
||||
let mut fixed_list = FixedBlobSidecarList::new(vec![None; max_len]);
|
||||
for blob in blobs.into_iter() {
|
||||
let index = blob.index as usize;
|
||||
*fixed_list
|
||||
|
||||
Reference in New Issue
Block a user