Fork aware max values in rpc (#6847)

N/A


  In https://github.com/sigp/lighthouse/pull/6329 we changed `max_blobs_per_block` from a preset to a config value.
We weren't using the right value based on fork in that PR. This is a follow up PR to use the fork dependent values.

In the proces, I also updated other places where we weren't using fork dependent values from the ChainSpec.

Note to reviewer: easier to go through by commit
This commit is contained in:
Pawan Dhananjay
2025-01-29 11:42:13 -08:00
committed by GitHub
parent e7ea69647a
commit 4a07c08c4f
16 changed files with 203 additions and 114 deletions

View File

@@ -217,7 +217,7 @@ pub struct ChainSpec {
pub network_id: u8,
pub target_aggregators_per_committee: u64,
pub gossip_max_size: u64,
pub max_request_blocks: u64,
max_request_blocks: u64,
pub min_epochs_for_block_requests: u64,
pub max_chunk_size: u64,
pub ttfb_timeout: u64,
@@ -233,19 +233,19 @@ pub struct ChainSpec {
/*
* Networking Deneb
*/
pub max_request_blocks_deneb: u64,
pub max_request_blob_sidecars: u64,
max_request_blocks_deneb: u64,
max_request_blob_sidecars: u64,
pub max_request_data_column_sidecars: u64,
pub min_epochs_for_blob_sidecars_requests: u64,
pub blob_sidecar_subnet_count: u64,
pub max_blobs_per_block: u64,
blob_sidecar_subnet_count: u64,
max_blobs_per_block: u64,
/*
* Networking Electra
*/
max_blobs_per_block_electra: u64,
pub blob_sidecar_subnet_count_electra: u64,
pub max_request_blob_sidecars_electra: u64,
blob_sidecar_subnet_count_electra: u64,
max_request_blob_sidecars_electra: u64,
/*
* Networking Derived
@@ -625,6 +625,17 @@ impl ChainSpec {
}
}
/// Returns the highest possible value for max_request_blocks based on enabled forks.
///
/// This is useful for upper bounds in testing.
pub fn max_request_blocks_upper_bound(&self) -> usize {
if self.deneb_fork_epoch.is_some() {
self.max_request_blocks_deneb as usize
} else {
self.max_request_blocks as usize
}
}
pub fn max_request_blob_sidecars(&self, fork_name: ForkName) -> usize {
if fork_name.electra_enabled() {
self.max_request_blob_sidecars_electra as usize
@@ -633,6 +644,17 @@ impl ChainSpec {
}
}
/// Returns the highest possible value for max_request_blobs based on enabled forks.
///
/// This is useful for upper bounds in testing.
pub fn max_request_blobs_upper_bound(&self) -> usize {
if self.electra_fork_epoch.is_some() {
self.max_request_blob_sidecars_electra as usize
} else {
self.max_request_blob_sidecars as usize
}
}
/// Return the value of `MAX_BLOBS_PER_BLOCK` appropriate for the fork at `epoch`.
pub fn max_blobs_per_block(&self, epoch: Epoch) -> u64 {
self.max_blobs_per_block_by_fork(self.fork_name_at_epoch(epoch))
@@ -647,6 +669,26 @@ impl ChainSpec {
}
}
/// Returns the `BLOB_SIDECAR_SUBNET_COUNT` at the given fork_name.
pub fn blob_sidecar_subnet_count(&self, fork_name: ForkName) -> u64 {
if fork_name.electra_enabled() {
self.blob_sidecar_subnet_count_electra
} else {
self.blob_sidecar_subnet_count
}
}
/// Returns the highest possible value of blob sidecar subnet count based on enabled forks.
///
/// This is useful for upper bounds for the subnet count during a given run of lighthouse.
pub fn blob_sidecar_subnet_count_max(&self) -> u64 {
if self.electra_fork_epoch.is_some() {
self.blob_sidecar_subnet_count_electra
} else {
self.blob_sidecar_subnet_count
}
}
/// Returns the number of data columns per custody group.
pub fn data_columns_per_group(&self) -> u64 {
self.number_of_columns