Fixes based on feedback

This commit is contained in:
Eitan Seri- Levi
2026-03-03 18:32:57 -08:00
parent 0212e84fa8
commit 8378f7d294
9 changed files with 186 additions and 60 deletions

View File

@@ -306,6 +306,7 @@ pub struct ChainSpec {
pub max_blocks_by_root_request_deneb: usize,
pub max_blobs_by_root_request: usize,
pub max_data_columns_by_root_request: usize,
pub max_payload_envelopes_by_root_request: usize,
/*
* Application params
@@ -969,6 +970,8 @@ impl ChainSpec {
max_blobs_by_root_request_common(self.max_request_blob_sidecars);
self.max_data_columns_by_root_request =
max_data_columns_by_root_request_common::<E>(self.max_request_blocks_deneb);
self.max_payload_envelopes_by_root_request =
max_blocks_by_root_request_common(self.max_request_payloads);
self
}
@@ -1299,6 +1302,7 @@ impl ChainSpec {
min_epochs_for_data_column_sidecars_requests:
default_min_epochs_for_data_column_sidecars_requests(),
max_data_columns_by_root_request: default_data_columns_by_root_request(),
max_payload_envelopes_by_root_request: default_max_payload_envelopes_by_root_request(),
/*
* Application specific
@@ -1629,7 +1633,7 @@ impl ChainSpec {
builder_payment_threshold_denominator: 10,
min_builder_withdrawability_delay: Epoch::new(4096),
max_request_payloads: 128,
/*
* Network specific
*/
@@ -1685,6 +1689,7 @@ impl ChainSpec {
min_epochs_for_data_column_sidecars_requests:
default_min_epochs_for_data_column_sidecars_requests(),
max_data_columns_by_root_request: default_data_columns_by_root_request(),
max_payload_envelopes_by_root_request: default_max_payload_envelopes_by_root_request(),
/*
* Application specific
@@ -2349,6 +2354,14 @@ fn default_data_columns_by_root_request() -> usize {
max_data_columns_by_root_request_common::<MainnetEthSpec>(default_max_request_blocks_deneb())
}
fn default_max_payload_envelopes_by_root_request() -> usize {
max_blocks_by_root_request_common(default_max_request_payloads())
}
fn default_max_request_payloads() -> u64 {
128
}
impl Default for Config {
fn default() -> Self {
let chain_spec = MainnetEthSpec::default_spec();

View File

@@ -8,7 +8,9 @@ use ssz_derive::{Decode, Encode};
use test_random_derive::TestRandom;
use tree_hash_derive::TreeHash;
#[derive(Debug, Clone, Serialize, Encode, Decode, Deserialize, TestRandom, TreeHash, Educe)]
#[derive(
Debug, Default, Clone, Serialize, Encode, Decode, Deserialize, TestRandom, TreeHash, Educe,
)]
#[educe(PartialEq, Hash(bound(E: EthSpec)))]
#[context_deserialize(ForkName)]
#[serde(bound = "E: EthSpec")]

View File

@@ -8,6 +8,7 @@ use bls::{PublicKey, Signature};
use context_deserialize::context_deserialize;
use educe::Educe;
use serde::{Deserialize, Serialize};
use ssz::{BYTES_PER_LENGTH_OFFSET, Encode as SszEncode};
use ssz_derive::{Decode, Encode};
use test_random_derive::TestRandom;
use tree_hash_derive::TreeHash;
@@ -22,6 +23,36 @@ pub struct SignedExecutionPayloadEnvelope<E: EthSpec> {
}
impl<E: EthSpec> SignedExecutionPayloadEnvelope<E> {
/// Returns the minimum SSZ-encoded size (all variable-length fields empty).
pub fn min_size() -> usize {
Self {
message: ExecutionPayloadEnvelope::default(),
signature: Signature::empty(),
}
.as_ssz_bytes()
.len()
}
/// Returns the maximum SSZ-encoded size.
#[allow(clippy::arithmetic_side_effects)]
pub fn max_size() -> usize {
// Start from the min size (all variable-length fields empty)
Self::min_size()
// ExecutionPayloadGloas variable-length fields:
+ (E::max_extra_data_bytes() * <u8 as SszEncode>::ssz_fixed_len())
+ (E::max_transactions_per_payload()
* (BYTES_PER_LENGTH_OFFSET + E::max_bytes_per_transaction()))
+ (E::max_withdrawals_per_payload()
* <crate::Withdrawal as SszEncode>::ssz_fixed_len())
// ExecutionRequests variable-length fields:
+ (E::max_deposit_requests_per_payload()
* <crate::DepositRequest as SszEncode>::ssz_fixed_len())
+ (E::max_withdrawal_requests_per_payload()
* <crate::WithdrawalRequest as SszEncode>::ssz_fixed_len())
+ (E::max_consolidation_requests_per_payload()
* <crate::ConsolidationRequest as SszEncode>::ssz_fixed_len())
}
pub fn slot(&self) -> Slot {
self.message.slot
}