Trait reth_rpc_eth_api::helpers::transaction::EthTransactions
source · pub trait EthTransactions: LoadTransaction {
Show 17 methods
// Required methods
fn provider(&self) -> impl BlockReaderIdExt;
fn signers(&self) -> &RwLock<Vec<Box<dyn EthSigner>>>;
// Provided methods
fn transaction_by_hash(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<TransactionSource>, Self::Error>> + Send { ... }
fn transactions_by_block(
&self,
block: B256,
) -> impl Future<Output = Result<Option<Vec<TransactionSigned>>, Self::Error>> + Send { ... }
fn raw_transaction_by_hash(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<Bytes>, Self::Error>> + Send { ... }
fn historical_transaction_by_hash_at(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<(TransactionSource, B256)>, Self::Error>> + Send { ... }
fn transaction_receipt(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<AnyTransactionReceipt>, Self::Error>> + Send
where Self: LoadReceipt + 'static { ... }
fn load_transaction_and_receipt(
&self,
hash: TxHash,
) -> impl Future<Output = Result<Option<(TransactionSigned, TransactionMeta, Receipt)>, Self::Error>> + Send
where Self: 'static { ... }
fn transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<RpcTransaction<Self::NetworkTypes>>, Self::Error>> + Send
where Self: LoadBlock { ... }
fn get_transaction_by_sender_and_nonce(
&self,
sender: Address,
nonce: u64,
include_pending: bool,
) -> impl Future<Output = Result<Option<RpcTransaction<Self::NetworkTypes>>, Self::Error>> + Send
where Self: LoadBlock + LoadState { ... }
fn raw_transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<Bytes>, Self::Error>> + Send
where Self: LoadBlock { ... }
fn send_raw_transaction(
&self,
tx: Bytes,
) -> impl Future<Output = Result<B256, Self::Error>> + Send { ... }
fn send_transaction(
&self,
request: TransactionRequest,
) -> impl Future<Output = Result<B256, Self::Error>> + Send
where Self: EthApiSpec + LoadBlock + LoadPendingBlock + LoadFee + Call { ... }
fn sign_request(
&self,
from: &Address,
request: TypedTransactionRequest,
) -> Result<TransactionSigned, Self::Error> { ... }
fn sign(
&self,
account: Address,
message: Bytes,
) -> impl Future<Output = Result<Bytes, Self::Error>> + Send { ... }
fn sign_typed_data(
&self,
data: &TypedData,
account: Address,
) -> Result<Bytes, Self::Error> { ... }
fn find_signer(
&self,
account: &Address,
) -> Result<Box<dyn EthSigner + 'static>, Self::Error> { ... }
}
Expand description
Transaction related functions for the EthApiServer
trait in
the eth_
namespace.
This includes utilities for transaction tracing, transacting and inspection.
Async functions that are spawned onto the
BlockingTaskPool
begin with spawn_
§Calls
There are subtle differences between when transacting [TransactionRequest
]:
The endpoints eth_call
and eth_estimateGas
and eth_createAccessList
should always
disable the base fee check in the
EnvWithHandlerCfg
.
The behaviour for tracing endpoints is not consistent across clients. Geth also disables the basefee check for tracing: https://github.com/ethereum/go-ethereum/blob/bc0b87ca196f92e5af49bd33cc190ef0ec32b197/eth/tracers/api.go#L955-L955 Erigon does not: https://github.com/ledgerwatch/erigon/blob/aefb97b07d1c4fd32a66097a24eddd8f6ccacae0/turbo/transactions/tracing.go#L209-L209
See also https://github.com/paradigmxyz/reth/issues/6240
This implementation follows the behaviour of Geth and disables the basefee check for tracing.
Required Methods§
Provided Methods§
sourcefn transaction_by_hash(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<TransactionSource>, Self::Error>> + Send
fn transaction_by_hash( &self, hash: B256, ) -> impl Future<Output = Result<Option<TransactionSource>, Self::Error>> + Send
Returns the transaction by hash.
Checks the pool and state.
Returns Ok(None)
if no matching transaction was found.
sourcefn transactions_by_block(
&self,
block: B256,
) -> impl Future<Output = Result<Option<Vec<TransactionSigned>>, Self::Error>> + Send
fn transactions_by_block( &self, block: B256, ) -> impl Future<Output = Result<Option<Vec<TransactionSigned>>, Self::Error>> + Send
Get all transactions in the block with the given hash.
Returns None
if block does not exist.
sourcefn raw_transaction_by_hash(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<Bytes>, Self::Error>> + Send
fn raw_transaction_by_hash( &self, hash: B256, ) -> impl Future<Output = Result<Option<Bytes>, Self::Error>> + Send
Returns the EIP-2718 encoded transaction by hash.
If this is a pooled EIP-4844 transaction, the blob sidecar is included.
Checks the pool and state.
Returns Ok(None)
if no matching transaction was found.
sourcefn historical_transaction_by_hash_at(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<(TransactionSource, B256)>, Self::Error>> + Send
fn historical_transaction_by_hash_at( &self, hash: B256, ) -> impl Future<Output = Result<Option<(TransactionSource, B256)>, Self::Error>> + Send
Returns the historical transaction and the block it was mined in
sourcefn transaction_receipt(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<AnyTransactionReceipt>, Self::Error>> + Sendwhere
Self: LoadReceipt + 'static,
fn transaction_receipt(
&self,
hash: B256,
) -> impl Future<Output = Result<Option<AnyTransactionReceipt>, Self::Error>> + Sendwhere
Self: LoadReceipt + 'static,
Returns the transaction receipt for the given hash.
Returns None if the transaction does not exist or is pending Note: The tx receipt is not available for pending transactions.
sourcefn load_transaction_and_receipt(
&self,
hash: TxHash,
) -> impl Future<Output = Result<Option<(TransactionSigned, TransactionMeta, Receipt)>, Self::Error>> + Sendwhere
Self: 'static,
fn load_transaction_and_receipt(
&self,
hash: TxHash,
) -> impl Future<Output = Result<Option<(TransactionSigned, TransactionMeta, Receipt)>, Self::Error>> + Sendwhere
Self: 'static,
Helper method that loads a transaction and its receipt.
sourcefn transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<RpcTransaction<Self::NetworkTypes>>, Self::Error>> + Sendwhere
Self: LoadBlock,
fn transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<RpcTransaction<Self::NetworkTypes>>, Self::Error>> + Sendwhere
Self: LoadBlock,
Get transaction by [BlockId
] and index of transaction within that block.
Returns Ok(None)
if the block does not exist, or index is out of range.
sourcefn get_transaction_by_sender_and_nonce(
&self,
sender: Address,
nonce: u64,
include_pending: bool,
) -> impl Future<Output = Result<Option<RpcTransaction<Self::NetworkTypes>>, Self::Error>> + Send
fn get_transaction_by_sender_and_nonce( &self, sender: Address, nonce: u64, include_pending: bool, ) -> impl Future<Output = Result<Option<RpcTransaction<Self::NetworkTypes>>, Self::Error>> + Send
Find a transaction by sender’s address and nonce.
sourcefn raw_transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<Bytes>, Self::Error>> + Sendwhere
Self: LoadBlock,
fn raw_transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<Bytes>, Self::Error>> + Sendwhere
Self: LoadBlock,
Get transaction, as raw bytes, by [BlockId
] and index of transaction within that block.
Returns Ok(None)
if the block does not exist, or index is out of range.
sourcefn send_raw_transaction(
&self,
tx: Bytes,
) -> impl Future<Output = Result<B256, Self::Error>> + Send
fn send_raw_transaction( &self, tx: Bytes, ) -> impl Future<Output = Result<B256, Self::Error>> + Send
Decodes and recovers the transaction and submits it to the pool.
Returns the hash of the transaction.
sourcefn send_transaction(
&self,
request: TransactionRequest,
) -> impl Future<Output = Result<B256, Self::Error>> + Send
fn send_transaction( &self, request: TransactionRequest, ) -> impl Future<Output = Result<B256, Self::Error>> + Send
Signs transaction with a matching signer, if any and submits the transaction to the pool. Returns the hash of the signed transaction.
sourcefn sign_request(
&self,
from: &Address,
request: TypedTransactionRequest,
) -> Result<TransactionSigned, Self::Error>
fn sign_request( &self, from: &Address, request: TypedTransactionRequest, ) -> Result<TransactionSigned, Self::Error>
Signs a transaction, with configured signers.
sourcefn sign(
&self,
account: Address,
message: Bytes,
) -> impl Future<Output = Result<Bytes, Self::Error>> + Send
fn sign( &self, account: Address, message: Bytes, ) -> impl Future<Output = Result<Bytes, Self::Error>> + Send
Signs given message. Returns the signature.
sourcefn sign_typed_data(
&self,
data: &TypedData,
account: Address,
) -> Result<Bytes, Self::Error>
fn sign_typed_data( &self, data: &TypedData, account: Address, ) -> Result<Bytes, Self::Error>
Encodes and signs the typed data according EIP-712. Payload must implement Eip712 trait.