update blob transaction (#4218)
* update blob transaction * update blob transaction * rename in JSON deserializing
This commit is contained in:
parent
a6335eb27e
commit
e6b033aefd
@ -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.
|
||||
@ -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() {
|
||||
@ -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 ********************
|
||||
|
@ -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
|
||||
@ -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>> + '_,
|
||||
@ -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 {
|
||||
@ -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 {
|
||||
|
@ -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 {
|
||||
@ -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)]
|
||||
|
Loading…
Reference in New Issue
Block a user