refactor: Remove duplications

This commit is contained in:
sprites0
2025-09-11 18:47:58 -04:00
parent ab11ce513f
commit 701e6a25e6
2 changed files with 14 additions and 48 deletions

View File

@ -1,5 +1,6 @@
use crate::node::primitives::TransactionSigned; use crate::node::primitives::TransactionSigned;
use alloy_evm::eth::receipt_builder::{ReceiptBuilder, ReceiptBuilderCtx}; use alloy_evm::eth::receipt_builder::{ReceiptBuilder, ReceiptBuilderCtx};
use reth_codecs::alloy::transaction::Envelope;
use reth_evm::Evm; use reth_evm::Evm;
use reth_primitives::Receipt; use reth_primitives::Receipt;

View File

@ -1,20 +1,22 @@
//! HlNodePrimitives::TransactionSigned; it's the same as ethereum transaction type, //! HlNodePrimitives::TransactionSigned; it's the same as ethereum transaction type,
//! except that it supports pseudo signer for system transactions. //! except that it supports pseudo signer for system transactions.
use crate::evm::transaction::HlTxEnv;
use alloy_consensus::{ use alloy_consensus::{
crypto::RecoveryError, error::ValueError, EthereumTxEnvelope, EthereumTypedTransaction, crypto::RecoveryError, error::ValueError, SignableTransaction, Signed,
SignableTransaction, Signed, Transaction as TransactionTrait, TransactionEnvelope, TxEip1559, Transaction as TransactionTrait, TransactionEnvelope, TxEip1559, TxEip2930, TxEip4844,
TxEip2930, TxEip4844, TxEip4844WithSidecar, TxEip7702, TxLegacy, TxType, TypedTransaction, TxEip7702, TxLegacy, TxType, TypedTransaction,
}; };
use alloy_eips::{eip7594::BlobTransactionSidecarVariant, Encodable2718}; use alloy_eips::Encodable2718;
use alloy_network::TxSigner; use alloy_network::TxSigner;
use alloy_primitives::{address, Address, TxHash, U256}; use alloy_primitives::{address, Address, TxHash, U256};
use alloy_rpc_types::{Transaction, TransactionInfo, TransactionRequest}; use alloy_rpc_types::{Transaction, TransactionInfo, TransactionRequest};
use alloy_signer::Signature; use alloy_signer::Signature;
use reth_codecs::alloy::transaction::FromTxCompact; use reth_codecs::alloy::transaction::{Envelope, FromTxCompact};
use reth_db::{ use reth_db::{
table::{Compress, Decompress}, table::{Compress, Decompress},
DatabaseError, DatabaseError,
}; };
use reth_ethereum_primitives::PooledTransactionVariant;
use reth_evm::FromRecoveredTx; use reth_evm::FromRecoveredTx;
use reth_primitives::Recovered; use reth_primitives::Recovered;
use reth_primitives_traits::{ use reth_primitives_traits::{
@ -26,8 +28,6 @@ use reth_rpc_eth_api::{
}; };
use revm::context::{BlockEnv, CfgEnv, TxEnv}; use revm::context::{BlockEnv, CfgEnv, TxEnv};
use crate::evm::transaction::HlTxEnv;
type InnerType = alloy_consensus::EthereumTxEnvelope<TxEip4844>; type InnerType = alloy_consensus::EthereumTxEnvelope<TxEip4844>;
#[derive(Debug, Clone, TransactionEnvelope)] #[derive(Debug, Clone, TransactionEnvelope)]
@ -157,16 +157,8 @@ impl TransactionSigned {
} }
} }
pub fn signature(&self) -> &Signature {
self.inner().signature()
}
pub const fn tx_type(&self) -> TxType {
self.inner().tx_type()
}
pub fn is_system_transaction(&self) -> bool { pub fn is_system_transaction(&self) -> bool {
self.gas_price().is_some() && self.gas_price().unwrap() == 0 matches!(self.gas_price(), Some(0))
} }
} }
@ -187,24 +179,16 @@ impl SerdeBincodeCompat for TransactionSigned {
pub type BlockBody = alloy_consensus::BlockBody<TransactionSigned>; pub type BlockBody = alloy_consensus::BlockBody<TransactionSigned>;
impl TryFrom<TransactionSigned> impl TryFrom<TransactionSigned> for PooledTransactionVariant {
for EthereumTxEnvelope<TxEip4844WithSidecar<BlobTransactionSidecarVariant>> type Error = <InnerType as TryInto<PooledTransactionVariant>>::Error;
{
type Error = <InnerType as TryInto<
EthereumTxEnvelope<TxEip4844WithSidecar<BlobTransactionSidecarVariant>>,
>>::Error;
fn try_from(value: TransactionSigned) -> Result<Self, Self::Error> { fn try_from(value: TransactionSigned) -> Result<Self, Self::Error> {
value.into_inner().try_into() value.into_inner().try_into()
} }
} }
impl From<EthereumTxEnvelope<TxEip4844WithSidecar<BlobTransactionSidecarVariant>>> impl From<PooledTransactionVariant> for TransactionSigned {
for TransactionSigned fn from(value: PooledTransactionVariant) -> Self {
{
fn from(
value: EthereumTxEnvelope<TxEip4844WithSidecar<BlobTransactionSidecarVariant>>,
) -> Self {
Self::Default(value.into()) Self::Default(value.into())
} }
} }
@ -277,26 +261,7 @@ impl SignableTxRequest<TransactionSigned> for TransactionRequest {
self, self,
signer: impl TxSigner<Signature> + Send, signer: impl TxSigner<Signature> + Send,
) -> Result<TransactionSigned, SignTxRequestError> { ) -> Result<TransactionSigned, SignTxRequestError> {
let mut tx = let signed = SignableTxRequest::<InnerType>::try_build_and_sign(self, signer).await?;
self.build_typed_tx().map_err(|_| SignTxRequestError::InvalidTransactionRequest)?;
let signature = signer.sign_transaction(&mut tx).await?;
let signed = match tx {
EthereumTypedTransaction::Legacy(tx) => {
EthereumTxEnvelope::Legacy(tx.into_signed(signature))
}
EthereumTypedTransaction::Eip2930(tx) => {
EthereumTxEnvelope::Eip2930(tx.into_signed(signature))
}
EthereumTypedTransaction::Eip1559(tx) => {
EthereumTxEnvelope::Eip1559(tx.into_signed(signature))
}
EthereumTypedTransaction::Eip4844(tx) => {
EthereumTxEnvelope::Eip4844(TxEip4844::from(tx).into_signed(signature))
}
EthereumTypedTransaction::Eip7702(tx) => {
EthereumTxEnvelope::Eip7702(tx.into_signed(signature))
}
};
Ok(TransactionSigned::Default(signed)) Ok(TransactionSigned::Default(signed))
} }
} }