Skip to content

Commit

Permalink
Avoid computing rpc_blob_limits multiple times (#6595)
Browse files Browse the repository at this point in the history
* Compute blob rpc limits in static block

* Fix min size

* Use MainnetEthSpec in rpc tests

* Revert MainnetEthSpec; add another constant for blob size minimal
  • Loading branch information
pawanjay176 authored Nov 20, 2024
1 parent 94311c6 commit 6e1945f
Showing 1 changed file with 30 additions and 15 deletions.
45 changes: 30 additions & 15 deletions beacon_node/lighthouse_network/src/rpc/protocol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ use tokio_util::{
};
use types::{
BeaconBlock, BeaconBlockAltair, BeaconBlockBase, BeaconBlockCapella, BeaconBlockElectra,
BlobSidecar, ChainSpec, DataColumnSidecar, EmptyBlock, EthSpec, ForkContext, ForkName,
LightClientBootstrap, LightClientBootstrapAltair, LightClientFinalityUpdate,
BlobSidecar, ChainSpec, DataColumnSidecar, EmptyBlock, EthSpec, EthSpecId, ForkContext,
ForkName, LightClientBootstrap, LightClientBootstrapAltair, LightClientFinalityUpdate,
LightClientFinalityUpdateAltair, LightClientOptimisticUpdate,
LightClientOptimisticUpdateAltair, LightClientUpdate, MainnetEthSpec, Signature,
SignedBeaconBlock,
LightClientOptimisticUpdateAltair, LightClientUpdate, MainnetEthSpec, MinimalEthSpec,
Signature, SignedBeaconBlock,
};

// Note: Hardcoding the `EthSpec` type for `SignedBeaconBlock` as min/max values is
Expand Down Expand Up @@ -105,6 +105,20 @@ pub static SIGNED_BEACON_BLOCK_ELECTRA_MAX: LazyLock<usize> = LazyLock::new(|| {
+ ssz::BYTES_PER_LENGTH_OFFSET
}); // Length offset for the blob commitments field.

pub static BLOB_SIDECAR_SIZE: LazyLock<usize> =
LazyLock::new(BlobSidecar::<MainnetEthSpec>::max_size);

pub static BLOB_SIDECAR_SIZE_MINIMAL: LazyLock<usize> =
LazyLock::new(BlobSidecar::<MinimalEthSpec>::max_size);

pub static DATA_COLUMNS_SIDECAR_MIN: LazyLock<usize> = LazyLock::new(|| {
DataColumnSidecar::<MainnetEthSpec>::empty()
.as_ssz_bytes()
.len()
});
pub static DATA_COLUMNS_SIDECAR_MAX: LazyLock<usize> =
LazyLock::new(DataColumnSidecar::<MainnetEthSpec>::max_size);

pub static ERROR_TYPE_MIN: LazyLock<usize> = LazyLock::new(|| {
VariableList::<u8, MaxErrorLen>::from(Vec::<u8>::new())
.as_ssz_bytes()
Expand Down Expand Up @@ -597,8 +611,8 @@ impl ProtocolId {
Protocol::BlocksByRoot => rpc_block_limits_by_fork(fork_context.current_fork()),
Protocol::BlobsByRange => rpc_blob_limits::<E>(),
Protocol::BlobsByRoot => rpc_blob_limits::<E>(),
Protocol::DataColumnsByRoot => rpc_data_column_limits::<E>(),
Protocol::DataColumnsByRange => rpc_data_column_limits::<E>(),
Protocol::DataColumnsByRoot => rpc_data_column_limits(),
Protocol::DataColumnsByRange => rpc_data_column_limits(),
Protocol::Ping => RpcLimits::new(
<Ping as Encode>::ssz_fixed_len(),
<Ping as Encode>::ssz_fixed_len(),
Expand Down Expand Up @@ -668,17 +682,18 @@ impl ProtocolId {
}

pub fn rpc_blob_limits<E: EthSpec>() -> RpcLimits {
RpcLimits::new(
BlobSidecar::<E>::empty().as_ssz_bytes().len(),
BlobSidecar::<E>::max_size(),
)
match E::spec_name() {
EthSpecId::Minimal => {
RpcLimits::new(*BLOB_SIDECAR_SIZE_MINIMAL, *BLOB_SIDECAR_SIZE_MINIMAL)
}
EthSpecId::Mainnet | EthSpecId::Gnosis => {
RpcLimits::new(*BLOB_SIDECAR_SIZE, *BLOB_SIDECAR_SIZE)
}
}
}

pub fn rpc_data_column_limits<E: EthSpec>() -> RpcLimits {
RpcLimits::new(
DataColumnSidecar::<E>::empty().as_ssz_bytes().len(),
DataColumnSidecar::<E>::max_size(),
)
pub fn rpc_data_column_limits() -> RpcLimits {
RpcLimits::new(*DATA_COLUMNS_SIDECAR_MIN, *DATA_COLUMNS_SIDECAR_MAX)
}

/* Inbound upgrade */
Expand Down

0 comments on commit 6e1945f

Please sign in to comment.