Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions beacon_node/execution_layer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2080,8 +2080,8 @@ pub enum BlobTxConversionError {
AccessListMissing,
/// Missing the `max_fee_per_data_gas` field.
MaxFeePerDataGasMissing,
/// Missing the `blob_versioned_hashes` field.
BlobVersionedHashesMissing,
/// Missing the `versioned_hashes` field.
VersionedHashesMissing,
/// `y_parity` field was greater than one.
InvalidYParity,
/// There was an error converting the transaction to SSZ.
Expand Down Expand Up @@ -2207,18 +2207,18 @@ fn ethers_tx_to_bytes<T: EthSpec>(
)
.map_err(BlobTxConversionError::FromStrRadix)?;

// blobVersionedHashes
let blob_versioned_hashes = other
.get("blobVersionedHashes")
.ok_or(BlobTxConversionError::BlobVersionedHashesMissing)?
// versionedHashes
let versioned_hashes = other
.get("versionedHashes")
.ok_or(BlobTxConversionError::VersionedHashesMissing)?
.as_array()
.ok_or(BlobTxConversionError::BlobVersionedHashesMissing)?
.ok_or(BlobTxConversionError::VersionedHashesMissing)?
.iter()
.map(|versioned_hash| {
let hash_bytes = eth2_serde_utils::hex::decode(
versioned_hash
.as_str()
.ok_or(BlobTxConversionError::BlobVersionedHashesMissing)?,
.ok_or(BlobTxConversionError::VersionedHashesMissing)?,
)
.map_err(BlobTxConversionError::FromHex)?;
if hash_bytes.len() != Hash256::ssz_fixed_len() {
Expand All @@ -2239,7 +2239,7 @@ fn ethers_tx_to_bytes<T: EthSpec>(
data,
access_list,
max_fee_per_data_gas,
blob_versioned_hashes: VariableList::new(blob_versioned_hashes)?,
versioned_hashes: VariableList::new(versioned_hashes)?,
};

// ******************** EcdsaSignature fields ********************
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ pub fn verify_kzg_commitments_against_transactions<T: EthSpec>(
.map(|tx_type| *tx_type == BLOB_TX_TYPE)
.unwrap_or(false)
})
.map(|tx| tx_peek_blob_versioned_hashes::<T>(tx));
.map(|tx| tx_peek_versioned_hashes::<T>(tx));

itertools::process_results(nested_iter, |iter| {
let zipped_iter = iter
Expand Down Expand Up @@ -76,7 +76,7 @@ pub fn verify_kzg_commitments_against_transactions<T: EthSpec>(
}

/// Only transactions of type `BLOB_TX_TYPE` should be passed into this function.
fn tx_peek_blob_versioned_hashes<T: EthSpec>(
fn tx_peek_versioned_hashes<T: EthSpec>(
opaque_tx: &Transaction<T::MaxBytesPerTransaction>,
) -> Result<
impl IntoIterator<Item = Result<VersionedHash, BlockProcessingError>> + '_,
Expand All @@ -93,7 +93,7 @@ fn tx_peek_blob_versioned_hashes<T: EthSpec>(
let message_offset_usize = message_offset as usize;

// field offset: 32 + 8 + 32 + 32 + 8 + 4 + 32 + 4 + 4 + 32 = 188
let blob_versioned_hashes_offset = message_offset.safe_add(u32::from_ssz_bytes(
let versioned_hashes_offset = message_offset.safe_add(u32::from_ssz_bytes(
opaque_tx
.get(message_offset_usize.safe_add(188)?..message_offset_usize.safe_add(192)?)
.ok_or(BlockProcessingError::BlobVersionHashIndexOutOfBounds {
Expand All @@ -103,12 +103,12 @@ fn tx_peek_blob_versioned_hashes<T: EthSpec>(
)?)?;

let num_hashes = tx_len
.safe_sub(blob_versioned_hashes_offset as usize)?
.safe_sub(versioned_hashes_offset as usize)?
.safe_div(32)?;

Ok((0..num_hashes).map(move |i| {
let next_version_hash_index =
(blob_versioned_hashes_offset as usize).safe_add(i.safe_mul(32)?)?;
(versioned_hashes_offset as usize).safe_add(i.safe_mul(32)?)?;
let bytes = opaque_tx
.get(next_version_hash_index..next_version_hash_index.safe_add(32)?)
.ok_or(BlockProcessingError::BlobVersionHashIndexOutOfBounds {
Expand Down
6 changes: 3 additions & 3 deletions consensus/types/src/transaction.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
use crate::{Hash256, Uint256, VersionedHash};
use ethereum_types::Address;
use ssz_derive::{Decode, Encode};
use ssz_types::typenum::U16777216;
use ssz_types::typenum::{U16777216, U4096};
use ssz_types::VariableList;

pub type MaxCalldataSize = U16777216;
pub type MaxAccessListSize = U16777216;
pub type MaxVersionedHashesListSize = U16777216;
pub type MaxAccessListStorageKeys = U16777216;
pub type MaxVersionedHashesListSize = U4096;

#[derive(Debug, Clone, PartialEq, Encode, Decode)]
pub struct SignedBlobTransaction {
Expand All @@ -27,7 +27,7 @@ pub struct BlobTransaction {
pub data: VariableList<u8, MaxCalldataSize>,
pub access_list: VariableList<AccessTuple, MaxAccessListSize>,
pub max_fee_per_data_gas: Uint256,
pub blob_versioned_hashes: VariableList<VersionedHash, MaxVersionedHashesListSize>,
pub versioned_hashes: VariableList<VersionedHash, MaxVersionedHashesListSize>,
}

#[derive(Debug, Clone, PartialEq, Encode, Decode)]
Expand Down