From df476140c42283fca9327fd7211253f403696efc Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Sat, 6 May 2023 19:34:22 +0200 Subject: [PATCH] chore: add transaction_type field to callrequest (#2590) --- crates/rpc/rpc-types/src/eth/call.rs | 23 ++++++++++++++++--- .../rpc-types/src/eth/transaction/request.rs | 5 ++-- crates/rpc/rpc/src/eth/api/transactions.rs | 1 + crates/rpc/rpc/src/eth/revm_utils.rs | 1 + 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/crates/rpc/rpc-types/src/eth/call.rs b/crates/rpc/rpc-types/src/eth/call.rs index 507cc5271d..49b5b7613d 100644 --- a/crates/rpc/rpc-types/src/eth/call.rs +++ b/crates/rpc/rpc-types/src/eth/call.rs @@ -1,9 +1,9 @@ -use reth_primitives::{AccessList, Address, Bytes, U256, U64}; +use reth_primitives::{AccessList, Address, Bytes, U256, U64, U8}; use serde::{Deserialize, Serialize}; /// Call request #[derive(Debug, Clone, Default, Eq, PartialEq, Serialize, Deserialize)] -#[serde(default, rename_all = "camelCase", deny_unknown_fields)] +#[serde(default, rename_all = "camelCase")] pub struct CallRequest { /// From pub from: Option
, @@ -19,7 +19,10 @@ pub struct CallRequest { pub gas: Option, /// Value pub value: Option, - /// Data + /// Transaction data + /// + /// This accepts both `input` and `data` + #[serde(alias = "input")] pub data: Option, /// Nonce pub nonce: Option, @@ -27,6 +30,9 @@ pub struct CallRequest { pub chain_id: Option, /// AccessList pub access_list: Option, + /// EIP-2718 type + #[serde(rename = "type")] + pub transaction_type: Option, } impl CallRequest { @@ -37,3 +43,14 @@ impl CallRequest { self.gas_price.or(self.max_fee_per_gas) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn serde_call_request() { + let s = r#"{"accessList":[],"data":"0x0902f1ac","to":"0xa478c2975ab1ea89e8196811f51a7b7ade33eb11","type":"0x02"}"#; + let _req = serde_json::from_str::(s).unwrap(); + } +} diff --git a/crates/rpc/rpc-types/src/eth/transaction/request.rs b/crates/rpc/rpc-types/src/eth/transaction/request.rs index 80c0b36c67..132deacef6 100644 --- a/crates/rpc/rpc-types/src/eth/transaction/request.rs +++ b/crates/rpc/rpc-types/src/eth/transaction/request.rs @@ -2,7 +2,7 @@ use crate::eth::transaction::typed::{ EIP1559TransactionRequest, EIP2930TransactionRequest, LegacyTransactionRequest, TransactionKind, TypedTransactionRequest, }; -use reth_primitives::{AccessList, Address, Bytes, U128, U256}; +use reth_primitives::{AccessList, Address, Bytes, U128, U256, U8}; use serde::{Deserialize, Serialize}; /// Represents _all_ transaction requests received from RPC @@ -28,6 +28,7 @@ pub struct TransactionRequest { /// value of th tx in wei pub value: Option, /// Any additional data sent + #[serde(alias = "input")] pub data: Option, /// Transaction nonce pub nonce: Option, @@ -36,7 +37,7 @@ pub struct TransactionRequest { pub access_list: Option, /// EIP-2718 type #[serde(rename = "type")] - pub transaction_type: Option, + pub transaction_type: Option, } // == impl TransactionRequest == diff --git a/crates/rpc/rpc/src/eth/api/transactions.rs b/crates/rpc/rpc/src/eth/api/transactions.rs index c9adcd860b..0119ab201d 100644 --- a/crates/rpc/rpc/src/eth/api/transactions.rs +++ b/crates/rpc/rpc/src/eth/api/transactions.rs @@ -368,6 +368,7 @@ where chain_id: Some(chain_id), access_list: request.access_list.clone(), max_priority_fee_per_gas: Some(U256::from(max_fee_per_gas)), + transaction_type: None, }, BlockId::Number(BlockNumberOrTag::Pending), ) diff --git a/crates/rpc/rpc/src/eth/revm_utils.rs b/crates/rpc/rpc/src/eth/revm_utils.rs index 8d9f6cadad..fe79aba323 100644 --- a/crates/rpc/rpc/src/eth/revm_utils.rs +++ b/crates/rpc/rpc/src/eth/revm_utils.rs @@ -211,6 +211,7 @@ pub(crate) fn create_txn_env(block_env: &BlockEnv, request: CallRequest) -> EthR nonce, access_list, chain_id, + .. } = request; let CallFees { max_priority_fee_per_gas, gas_price } = CallFees::ensure_fees(