mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-03 00:31:50 +00:00
Update fulu network configs and add MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS (#7646)
- #6240 - Bring built-in network configs up to date with latest consensus-spec PeerDAS configs. - Add `MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS` and use it to determine data availability window after the Fulu fork.
This commit is contained in:
@@ -486,14 +486,9 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
|
||||
/// The epoch at which we require a data availability check in block processing.
|
||||
/// `None` if the `Deneb` fork is disabled.
|
||||
pub fn data_availability_boundary(&self) -> Option<Epoch> {
|
||||
let fork_epoch = self.spec.deneb_fork_epoch?;
|
||||
let current_slot = self.slot_clock.now()?;
|
||||
Some(std::cmp::max(
|
||||
fork_epoch,
|
||||
current_slot
|
||||
.epoch(T::EthSpec::slots_per_epoch())
|
||||
.saturating_sub(self.spec.min_epochs_for_blob_sidecars_requests),
|
||||
))
|
||||
let current_epoch = self.slot_clock.now()?.epoch(T::EthSpec::slots_per_epoch());
|
||||
self.spec
|
||||
.min_epoch_data_availability_boundary(current_epoch)
|
||||
}
|
||||
|
||||
/// Returns true if the given epoch lies within the da boundary and false otherwise.
|
||||
@@ -670,15 +665,17 @@ async fn availability_cache_maintenance_service<T: BeaconChainTypes>(
|
||||
.fork_choice_read_lock()
|
||||
.finalized_checkpoint()
|
||||
.epoch;
|
||||
|
||||
let Some(min_epochs_for_blobs) = chain
|
||||
.spec
|
||||
.min_epoch_data_availability_boundary(current_epoch)
|
||||
else {
|
||||
// Shutdown service if deneb fork epoch not set. Unreachable as the same check is performed above.
|
||||
break;
|
||||
};
|
||||
|
||||
// any data belonging to an epoch before this should be pruned
|
||||
let cutoff_epoch = std::cmp::max(
|
||||
finalized_epoch + 1,
|
||||
std::cmp::max(
|
||||
current_epoch
|
||||
.saturating_sub(chain.spec.min_epochs_for_blob_sidecars_requests),
|
||||
deneb_fork_epoch,
|
||||
),
|
||||
);
|
||||
let cutoff_epoch = std::cmp::max(finalized_epoch + 1, min_epochs_for_blobs);
|
||||
|
||||
if let Err(e) = overflow_cache.do_maintenance(cutoff_epoch) {
|
||||
error!(error = ?e,"Failed to maintain availability cache");
|
||||
|
||||
@@ -3074,18 +3074,17 @@ impl<E: EthSpec, Hot: ItemStore<E>, Cold: ItemStore<E>> HotColdDB<E, Hot, Cold>
|
||||
|
||||
/// Try to prune blobs, approximating the current epoch from the split slot.
|
||||
pub fn try_prune_most_blobs(&self, force: bool) -> Result<(), Error> {
|
||||
let Some(deneb_fork_epoch) = self.spec.deneb_fork_epoch else {
|
||||
debug!("Deneb fork is disabled");
|
||||
return Ok(());
|
||||
};
|
||||
// The current epoch is >= split_epoch + 2. It could be greater if the database is
|
||||
// configured to delay updating the split or finalization has ceased. In this instance we
|
||||
// choose to also delay the pruning of blobs (we never prune without finalization anyway).
|
||||
let min_current_epoch = self.get_split_slot().epoch(E::slots_per_epoch()) + 2;
|
||||
let min_data_availability_boundary = std::cmp::max(
|
||||
deneb_fork_epoch,
|
||||
min_current_epoch.saturating_sub(self.spec.min_epochs_for_blob_sidecars_requests),
|
||||
);
|
||||
let Some(min_data_availability_boundary) = self
|
||||
.spec
|
||||
.min_epoch_data_availability_boundary(min_current_epoch)
|
||||
else {
|
||||
debug!("Deneb fork is disabled");
|
||||
return Ok(());
|
||||
};
|
||||
|
||||
self.try_prune_blobs(force, min_data_availability_boundary)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user