From 14e5bfae2905edaed4dbe8d8ab61f3918bad5f3e Mon Sep 17 00:00:00 2001 From: realbigsean Date: Tue, 25 Apr 2023 18:12:16 -0400 Subject: [PATCH] fix lints --- .../beacon_chain/src/blob_verification.rs | 15 +++--------- .../src/data_availability_checker.rs | 24 ++++++------------- .../network/src/sync/block_lookups/tests.rs | 1 + consensus/types/src/blob_sidecar.rs | 4 +++- 4 files changed, 14 insertions(+), 30 deletions(-) diff --git a/beacon_node/beacon_chain/src/blob_verification.rs b/beacon_node/beacon_chain/src/blob_verification.rs index 2c27bf527f..979227ea65 100644 --- a/beacon_node/beacon_chain/src/blob_verification.rs +++ b/beacon_node/beacon_chain/src/blob_verification.rs @@ -1,6 +1,5 @@ use derivative::Derivative; use slot_clock::SlotClock; -use ssz_types::FixedVector; use state_processing::state_advance::partial_state_advance; use std::sync::Arc; @@ -15,7 +14,7 @@ use crate::kzg_utils::{validate_blob, validate_blobs}; use crate::BeaconChainError; use kzg::Kzg; use std::borrow::Cow; -use types::blob_sidecar::BlobIdentifier; +use types::blob_sidecar::{BlobIdentifier, FixedBlobSidecarList}; use types::{ BeaconBlockRef, BeaconState, BeaconStateError, BlobSidecar, ChainSpec, CloneConfig, Epoch, EthSpec, Hash256, KzgCommitment, RelativeEpoch, SignedBeaconBlock, SignedBeaconBlockHeader, @@ -588,19 +587,11 @@ impl AsBlock for &MaybeAvailableBlock { #[derivative(Hash(bound = "E: EthSpec"))] pub enum BlockWrapper { Block(Arc>), - BlockAndBlobs( - Arc>, - FixedVector>>, E::MaxBlobsPerBlock>, - ), + BlockAndBlobs(Arc>, FixedBlobSidecarList), } impl BlockWrapper { - pub fn deconstruct( - self, - ) -> ( - Arc>, - Option>>, E::MaxBlobsPerBlock>>, - ) { + pub fn deconstruct(self) -> (Arc>, Option>) { match self { BlockWrapper::Block(block) => (block, None), BlockWrapper::BlockAndBlobs(block, blobs) => (block, Some(blobs)), diff --git a/beacon_node/beacon_chain/src/data_availability_checker.rs b/beacon_node/beacon_chain/src/data_availability_checker.rs index 5f0eddd60a..5b2b54fa2a 100644 --- a/beacon_node/beacon_chain/src/data_availability_checker.rs +++ b/beacon_node/beacon_chain/src/data_availability_checker.rs @@ -14,7 +14,7 @@ use std::collections::hash_map::{Entry, OccupiedEntry}; use std::collections::HashMap; use std::sync::Arc; use types::beacon_block_body::KzgCommitments; -use types::blob_sidecar::{BlobIdentifier, BlobSidecar}; +use types::blob_sidecar::{BlobIdentifier, BlobSidecar, FixedBlobSidecarList}; use types::consts::deneb::MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUESTS; use types::{ BeaconBlockRef, BlobSidecarList, ChainSpec, Epoch, EthSpec, ExecPayload, FullPayload, Hash256, @@ -170,7 +170,7 @@ impl DataAvailabilityChecker { &self, block_root: Hash256, block: Arc>, - blobs: FixedVector>>, T::MaxBlobsPerBlock>, + blobs: FixedBlobSidecarList, ) -> Result, AvailabilityCheckError> { Ok(match self.get_blob_requirements(&block)? { BlobRequirements::EmptyBlobs => BlockWrapper::Block(block), @@ -226,16 +226,14 @@ impl DataAvailabilityChecker { pub fn put_rpc_blobs( &self, block_root: Hash256, - blobs: FixedVector>>, T::MaxBlobsPerBlock>, + blobs: FixedBlobSidecarList, ) -> Result, AvailabilityCheckError> { // TODO(sean) we may duplicated kzg verification on some blobs we already have cached so we could optimize this let mut verified_blobs = vec![]; if let Some(kzg) = self.kzg.as_ref() { - for blob_opt in blobs.into_iter() { - if let Some(blob) = blob_opt { - verified_blobs.push(verify_kzg_for_blob(blob.clone(), kzg)?) - } + for blob in blobs.iter().flatten() { + verified_blobs.push(verify_kzg_for_blob(blob.clone(), kzg)?) } } else { return Err(AvailabilityCheckError::KzgNotInitialized); @@ -396,11 +394,7 @@ impl DataAvailabilityChecker { .kzg .as_ref() .ok_or(AvailabilityCheckError::KzgNotInitialized)?; - let filtered_blobs = blob_list - .to_vec() - .into_iter() - .filter_map(|blob| blob) - .collect(); + let filtered_blobs = blob_list.iter().flatten().cloned().collect(); let verified_blobs = verify_kzg_for_blob_list(filtered_blobs, kzg)?; Ok(MaybeAvailableBlock::Available( @@ -695,11 +689,7 @@ impl AsBlock for AvailableBlock { fn into_block_wrapper(self) -> BlockWrapper { let (block, blobs_opt) = self.deconstruct(); if let Some(blobs) = blobs_opt { - let blobs_vec = blobs - .to_vec() - .into_iter() - .map(Option::Some) - .collect::>(); + let blobs_vec = blobs.iter().cloned().map(Option::Some).collect::>(); BlockWrapper::BlockAndBlobs(block, FixedVector::from(blobs_vec)) } else { BlockWrapper::Block(block) diff --git a/beacon_node/network/src/sync/block_lookups/tests.rs b/beacon_node/network/src/sync/block_lookups/tests.rs index 07d0b77423..7fbf334871 100644 --- a/beacon_node/network/src/sync/block_lookups/tests.rs +++ b/beacon_node/network/src/sync/block_lookups/tests.rs @@ -12,6 +12,7 @@ use beacon_chain::{ test_utils::{build_log, BeaconChainHarness, EphemeralHarnessType}, }; pub use genesis::{interop_genesis_state, DEFAULT_ETH1_BLOCK_HASH}; +use lighthouse_network::rpc::RPCResponseErrorCode; use lighthouse_network::{NetworkGlobals, Request}; use slot_clock::TestingSlotClock; use std::time::Duration; diff --git a/consensus/types/src/blob_sidecar.rs b/consensus/types/src/blob_sidecar.rs index 9e38e3e215..5898a79ebc 100644 --- a/consensus/types/src/blob_sidecar.rs +++ b/consensus/types/src/blob_sidecar.rs @@ -5,7 +5,7 @@ use kzg::{KzgCommitment, KzgProof}; use serde_derive::{Deserialize, Serialize}; use ssz::Encode; use ssz_derive::{Decode, Encode}; -use ssz_types::VariableList; +use ssz_types::{FixedVector, VariableList}; use std::sync::Arc; use test_random_derive::TestRandom; use tree_hash_derive::TreeHash; @@ -74,6 +74,8 @@ impl Ord for BlobSidecar { } pub type BlobSidecarList = VariableList>, ::MaxBlobsPerBlock>; +pub type FixedBlobSidecarList = + FixedVector>>, ::MaxBlobsPerBlock>; pub type Blobs = VariableList, ::MaxExtraDataBytes>; impl SignedRoot for BlobSidecar {}