Trait reth::core::rpc::api::servers::eth::helpers::transaction::EthTransactions
source · pub trait EthTransactions: LoadTransaction {
Show 17 methods
// Required methods
fn provider(&self) -> impl BlockReaderIdExt;
fn raw_tx_forwarder(&self) -> Option<Arc<dyn RawTransactionForwarder>>;
fn signers(&self) -> &RwLock<RawRwLock, Vec<Box<dyn EthSigner>>>;
// Provided methods
fn transaction_by_hash(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<TransactionSource>, EthApiError>> + Send { ... }
fn transactions_by_block(
&self,
block: FixedBytes<32>,
) -> impl Future<Output = Result<Option<Vec<TransactionSigned>>, EthApiError>> + Send { ... }
fn raw_transaction_by_hash(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<Bytes>, EthApiError>> + Send { ... }
fn historical_transaction_by_hash_at(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<(TransactionSource, FixedBytes<32>)>, EthApiError>> + Send { ... }
fn transaction_receipt(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<WithOtherFields<TransactionReceipt<AnyReceiptEnvelope<Log>>>>, EthApiError>> + Send
where Self: LoadReceipt + 'static { ... }
fn load_transaction_and_receipt(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<(TransactionSigned, TransactionMeta, Receipt)>, EthApiError>> + Send
where Self: 'static { ... }
fn transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<Transaction>, EthApiError>> + Send
where Self: LoadBlock { ... }
fn raw_transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<Bytes>, EthApiError>> + Send
where Self: LoadBlock { ... }
fn send_raw_transaction(
&self,
tx: Bytes,
) -> impl Future<Output = Result<FixedBytes<32>, EthApiError>> + Send { ... }
fn send_transaction(
&self,
request: TransactionRequest,
) -> impl Future<Output = Result<FixedBytes<32>, EthApiError>> + Send
where Self: EthApiSpec + LoadBlock + LoadPendingBlock + LoadFee + Call { ... }
fn sign_request(
&self,
from: &Address,
request: TypedTransactionRequest,
) -> Result<TransactionSigned, EthApiError> { ... }
fn sign(
&self,
account: Address,
message: Bytes,
) -> impl Future<Output = Result<Bytes, EthApiError>> + Send { ... }
fn sign_typed_data(
&self,
data: &TypedData,
account: Address,
) -> Result<Bytes, EthApiError> { ... }
fn find_signer(
&self,
account: &Address,
) -> Result<Box<dyn EthSigner>, SignError> { ... }
}
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§
sourcefn provider(&self) -> impl BlockReaderIdExt
fn provider(&self) -> impl BlockReaderIdExt
Returns a handle for reading data from disk.
Data access in default (L1) trait method implementations.
sourcefn raw_tx_forwarder(&self) -> Option<Arc<dyn RawTransactionForwarder>>
fn raw_tx_forwarder(&self) -> Option<Arc<dyn RawTransactionForwarder>>
Returns a handle for forwarding received raw transactions.
Access to transaction forwarder in default (L1) trait method implementations.
Provided Methods§
sourcefn transaction_by_hash(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<TransactionSource>, EthApiError>> + Send
fn transaction_by_hash( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<TransactionSource>, EthApiError>> + 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: FixedBytes<32>,
) -> impl Future<Output = Result<Option<Vec<TransactionSigned>>, EthApiError>> + Send
fn transactions_by_block( &self, block: FixedBytes<32>, ) -> impl Future<Output = Result<Option<Vec<TransactionSigned>>, EthApiError>> + 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: FixedBytes<32>,
) -> impl Future<Output = Result<Option<Bytes>, EthApiError>> + Send
fn raw_transaction_by_hash( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<Bytes>, EthApiError>> + 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: FixedBytes<32>,
) -> impl Future<Output = Result<Option<(TransactionSource, FixedBytes<32>)>, EthApiError>> + Send
fn historical_transaction_by_hash_at( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<(TransactionSource, FixedBytes<32>)>, EthApiError>> + Send
Returns the historical transaction and the block it was mined in
sourcefn transaction_receipt(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<WithOtherFields<TransactionReceipt<AnyReceiptEnvelope<Log>>>>, EthApiError>> + Sendwhere
Self: LoadReceipt + 'static,
fn transaction_receipt(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<WithOtherFields<TransactionReceipt<AnyReceiptEnvelope<Log>>>>, EthApiError>> + 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: FixedBytes<32>,
) -> impl Future<Output = Result<Option<(TransactionSigned, TransactionMeta, Receipt)>, EthApiError>> + Sendwhere
Self: 'static,
fn load_transaction_and_receipt(
&self,
hash: FixedBytes<32>,
) -> impl Future<Output = Result<Option<(TransactionSigned, TransactionMeta, Receipt)>, EthApiError>> + 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<Transaction>, EthApiError>> + Sendwhere
Self: LoadBlock,
fn transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<Transaction>, EthApiError>> + 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 raw_transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<Bytes>, EthApiError>> + Sendwhere
Self: LoadBlock,
fn raw_transaction_by_block_and_tx_index(
&self,
block_id: BlockId,
index: usize,
) -> impl Future<Output = Result<Option<Bytes>, EthApiError>> + 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<FixedBytes<32>, EthApiError>> + Send
fn send_raw_transaction( &self, tx: Bytes, ) -> impl Future<Output = Result<FixedBytes<32>, EthApiError>> + 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<FixedBytes<32>, EthApiError>> + Send
fn send_transaction( &self, request: TransactionRequest, ) -> impl Future<Output = Result<FixedBytes<32>, EthApiError>> + 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, EthApiError>
fn sign_request( &self, from: &Address, request: TypedTransactionRequest, ) -> Result<TransactionSigned, EthApiError>
Signs a transaction, with configured signers.
sourcefn sign(
&self,
account: Address,
message: Bytes,
) -> impl Future<Output = Result<Bytes, EthApiError>> + Send
fn sign( &self, account: Address, message: Bytes, ) -> impl Future<Output = Result<Bytes, EthApiError>> + Send
Signs given message. Returns the signature.
sourcefn sign_typed_data(
&self,
data: &TypedData,
account: Address,
) -> Result<Bytes, EthApiError>
fn sign_typed_data( &self, data: &TypedData, account: Address, ) -> Result<Bytes, EthApiError>
Encodes and signs the typed data according EIP-712. Payload must implement Eip712 trait.