4844 blob txs (#4631)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
Supernovahs.eth
2023-09-18 14:05:03 +05:30
committed by GitHub
parent a55f48cf28
commit 16072b9a94
3 changed files with 13 additions and 5 deletions

View File

@ -1,4 +1,4 @@
use reth_primitives::{AccessList, Address, BlockId, Bytes, U256, U64, U8};
use reth_primitives::{AccessList, Address, BlockId, Bytes, H256, U256, U64, U8};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use crate::BlockOverrides;
@ -88,7 +88,7 @@ impl<'de> Deserialize<'de> for TransactionIndex {
}
}
/// Call request
/// Call request for `eth_call` and adjacent methods.
#[derive(Debug, Clone, Default, Eq, PartialEq, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct CallRequest {
@ -115,6 +115,11 @@ pub struct CallRequest {
pub chain_id: Option<U64>,
/// AccessList
pub access_list: Option<AccessList>,
/// Max Fee per Blob gas for EIP-4844 transactions
pub max_fee_per_blob_gas: Option<U256>,
/// Blob Versioned Hashes for EIP-4844 transactions
#[serde(default)]
pub blob_versioned_hashes: Vec<H256>,
/// EIP-2718 type
#[serde(rename = "type")]
pub transaction_type: Option<U8>,

View File

@ -469,6 +469,8 @@ where
access_list: request.access_list.clone(),
max_priority_fee_per_gas: Some(U256::from(max_fee_per_gas)),
transaction_type: None,
blob_versioned_hashes: Vec::new(),
max_fee_per_blob_gas: None,
},
BlockId::Number(BlockNumberOrTag::Pending),
)

View File

@ -286,6 +286,8 @@ pub(crate) fn create_txn_env(block_env: &BlockEnv, request: CallRequest) -> EthR
nonce,
access_list,
chain_id,
blob_versioned_hashes,
max_fee_per_blob_gas,
..
} = request;
@ -311,10 +313,9 @@ pub(crate) fn create_txn_env(block_env: &BlockEnv, request: CallRequest) -> EthR
data: input.try_into_unique_input()?.map(|data| data.0).unwrap_or_default(),
chain_id: chain_id.map(|c| c.as_u64()),
access_list: access_list.map(AccessList::flattened).unwrap_or_default(),
// EIP-4844 fields
blob_hashes: Default::default(),
max_fee_per_blob_gas: None,
blob_hashes: blob_versioned_hashes,
max_fee_per_blob_gas,
};
Ok(env)