Merge remote-tracking branch 'sigp/unstable' into gloas-lookup-sync-fixes

Reconciles unstable's #9383 (Deprecate blob lookup sync) with this PR's
rewritten lookup architecture by removing blob lookup from the new arch:
Deneb/Electra block lookups complete on the block alone (the merged
da_checker makes them available without blobs), and DataDownload::Blobs,
blob_lookup_request, SyncRequestId::SingleBlob, BlockProcessType::SingleBlob,
the process_rpc_blobs lookup cluster, and blob lookup tests are removed.
Range-sync blobs and blob serving are kept.
This commit is contained in:
dapplion
2026-06-01 17:44:16 +02:00
22 changed files with 309 additions and 316 deletions

View File

@@ -179,14 +179,6 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
let re_org_max_epochs_since_finalization =
Epoch::new(self.spec.reorg_max_epochs_since_finalization);
if self.spec.proposer_score_boost.is_none() {
warn!(
reason = "this network does not have proposer boost enabled",
"Ignoring proposer re-org configuration"
);
return None;
}
let slot_delay = self
.slot_clock
.seconds_from_current_slot_start()

View File

@@ -895,12 +895,8 @@ impl<E: EthSpec> AvailableBlock<E> {
match &block_data {
AvailableBlockData::NoData => {
// For Gloas, DA is checked for the PayloadEnvelope, not for the block.
if !block.fork_name_unchecked().gloas_enabled() {
if columns_required {
return Err(AvailabilityCheckError::MissingCustodyColumns);
} else if blobs_required {
return Err(AvailabilityCheckError::MissingBlobs);
}
if !block.fork_name_unchecked().gloas_enabled() && columns_required {
return Err(AvailabilityCheckError::MissingCustodyColumns);
}
}
AvailableBlockData::Blobs(blobs) => {

View File

@@ -9,7 +9,7 @@ use crate::data_column_verification::KzgVerifiedCustodyDataColumn;
use crate::{BeaconChainTypes, BlockProcessStatus};
use lru::LruCache;
use parking_lot::{MappedRwLockReadGuard, RwLock, RwLockReadGuard, RwLockWriteGuard};
use ssz_types::{RuntimeFixedVector, RuntimeVariableList};
use ssz_types::RuntimeFixedVector;
use std::cmp::Ordering;
use std::num::NonZeroUsize;
use std::sync::Arc;
@@ -235,36 +235,7 @@ impl<E: EthSpec> PendingComponents<E> {
}
}
} else {
// Before PeerDAS, blobs
let num_received_blobs = self.verified_blobs.iter().flatten().count();
match num_received_blobs.cmp(&num_expected_blobs) {
Ordering::Greater => {
// Should never happen
return Err(AvailabilityCheckError::Unexpected(format!(
"too many blobs got {num_received_blobs} expected {num_expected_blobs}"
)));
}
Ordering::Equal => {
let max_blobs = spec.max_blobs_per_block(block.block.epoch()) as usize;
let blobs_vec = self
.verified_blobs
.iter()
.flatten()
.map(|blob| blob.clone().to_blob())
.collect::<Vec<_>>();
let blobs_len = blobs_vec.len();
let blobs = RuntimeVariableList::new(blobs_vec, max_blobs).map_err(|_| {
AvailabilityCheckError::Unexpected(format!(
"over max_blobs len {blobs_len} max {max_blobs}"
))
})?;
Some(AvailableBlockData::Blobs(blobs))
}
Ordering::Less => {
// Not enough blobs received yet
None
}
}
Some(AvailableBlockData::NoData)
};
// Block's data not available yet