From 53df849a56d86ee554f02293ba63b8c53bb276bd Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Tue, 16 Apr 2024 22:15:11 +0200 Subject: [PATCH] fix: add back transaction type --- crates/rpc-types/src/eth/transaction/mod.rs | 1 + crates/rpc-types/src/eth/transaction/request.rs | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/crates/rpc-types/src/eth/transaction/mod.rs b/crates/rpc-types/src/eth/transaction/mod.rs index 4147ffa7580..a8a6460b202 100644 --- a/crates/rpc-types/src/eth/transaction/mod.rs +++ b/crates/rpc-types/src/eth/transaction/mod.rs @@ -163,6 +163,7 @@ impl Transaction { nonce: Some(self.nonce), chain_id: self.chain_id, access_list: self.access_list, + transaction_type: self.transaction_type, max_fee_per_gas: self.max_fee_per_gas, max_priority_fee_per_gas: self.max_priority_fee_per_gas, max_fee_per_blob_gas: self.max_fee_per_blob_gas, diff --git a/crates/rpc-types/src/eth/transaction/request.rs b/crates/rpc-types/src/eth/transaction/request.rs index 90b4378171f..58d72b68ae7 100644 --- a/crates/rpc-types/src/eth/transaction/request.rs +++ b/crates/rpc-types/src/eth/transaction/request.rs @@ -62,6 +62,9 @@ pub struct TransactionRequest { /// An EIP-2930 access list, which lowers cost for accessing accounts and storages in the list. See [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) for more information. #[serde(default)] pub access_list: Option, + /// The EIP-2718 transaction type. See [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) for more information. + #[serde(default, rename = "type", with = "alloy_serde::num::u8_hex_opt")] + pub transaction_type: Option, /// Blob versioned hashes for EIP-4844 transactions. #[serde(skip_serializing_if = "Option::is_none")] pub blob_versioned_hashes: Option>, @@ -84,6 +87,7 @@ impl Hash for TransactionRequest { self.nonce.hash(state); self.chain_id.hash(state); self.access_list.hash(state); + self.transaction_type.hash(state); self.blob_versioned_hashes.hash(state); self.sidecar.hash(state); } @@ -99,6 +103,12 @@ impl TransactionRequest { self } + /// Sets the transactions type for the transactions. + pub const fn transaction_type(mut self, transaction_type: u8) -> Self { + self.transaction_type = Some(transaction_type); + self + } + /// Sets the gas limit for the transaction. pub const fn gas_limit(mut self, gas_limit: u128) -> Self { self.gas = Some(gas_limit); @@ -579,6 +589,7 @@ impl From for TransactionRequest { input: TransactionInput::from(tx.input), nonce: Some(tx.nonce), chain_id: tx.chain_id, + transaction_type: Some(0), ..Default::default() } } @@ -596,6 +607,7 @@ impl From for TransactionRequest { nonce: Some(tx.nonce), chain_id: Some(tx.chain_id), access_list: Some(tx.access_list), + transaction_type: Some(1), ..Default::default() } } @@ -614,6 +626,7 @@ impl From for TransactionRequest { nonce: Some(tx.nonce), chain_id: Some(tx.chain_id), access_list: Some(tx.access_list), + transaction_type: Some(2), ..Default::default() } } @@ -634,6 +647,7 @@ impl From for TransactionRequest { chain_id: Some(tx.chain_id), access_list: Some(tx.access_list), blob_versioned_hashes: Some(tx.blob_versioned_hashes), + transaction_type: Some(3), ..Default::default() } } @@ -657,6 +671,7 @@ impl From for TransactionRequest { access_list: Some(tx.access_list), blob_versioned_hashes: Some(tx.blob_versioned_hashes), sidecar: Some(sidecar), + transaction_type: Some(3), ..Default::default() } }