pub struct AnyNetwork { /* private fields */ }Expand description
Types for a catch-all network.
AnyNetwork’s associated types allow for many different types of
transactions, using catch-all fields. This Network should be used
only when the application needs to support multiple networks via the same
codepaths without knowing the networks at compile time.
§Rough Edges
Supporting arbitrary unknown types is hard, and users of this network should be aware of the following:
- The implementation of
Decodable2718forAnyTxEnvelopewill not work for non-Ethereum transaction types. It will successfully decode an EthereumTxEnvelope, but will decode only the type for any unknown transaction type. It will also leave the buffer unconsumed, which will cause further deserialization to produce erroneous results. - The implementation of
Encodable2718forAnyTypedTransactionwill not work for non-Ethereum transaction types. It will encode the type for any unknown transaction type, but will not encode any other fields. This is symmetric with the decoding behavior, but still erroneous. - The
TransactionRequestwill build ONLY Ethereum types. It will error when attempting to build any unknown type. - The
Network::TransactionResponsemay deserialize unknown metadata fields into the innerAnyTxEnvelope, rather than into the outerWithOtherFields.
Trait Implementations§
Source§impl Clone for AnyNetwork
impl Clone for AnyNetwork
Source§fn clone(&self) -> AnyNetwork
fn clone(&self) -> AnyNetwork
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AnyNetwork
impl Debug for AnyNetwork
Source§impl Network for AnyNetwork
impl Network for AnyNetwork
Source§type TxEnvelope = AnyTxEnvelope
type TxEnvelope = AnyTxEnvelope
Source§type UnsignedTx = AnyTypedTransaction
type UnsignedTx = AnyTypedTransaction
Source§type ReceiptEnvelope = AnyReceiptEnvelope
type ReceiptEnvelope = AnyReceiptEnvelope
Source§type TransactionRequest = WithOtherFields<TransactionRequest>
type TransactionRequest = WithOtherFields<TransactionRequest>
Source§type TransactionResponse = AnyRpcTransaction
type TransactionResponse = AnyRpcTransaction
Source§type ReceiptResponse = WithOtherFields<TransactionReceipt<AnyReceiptEnvelope<Log>>>
type ReceiptResponse = WithOtherFields<TransactionReceipt<AnyReceiptEnvelope<Log>>>
Source§type HeaderResponse = Header<AnyHeader>
type HeaderResponse = Header<AnyHeader>
Source§type BlockResponse = AnyRpcBlock
type BlockResponse = AnyRpcBlock
Source§impl NetworkWallet<AnyNetwork> for EthereumWallet
impl NetworkWallet<AnyNetwork> for EthereumWallet
Source§fn default_signer_address(&self) -> Address
fn default_signer_address(&self) -> Address
NetworkWallet::sign_transaction_from when no specific signer is
specified.Source§fn has_signer_for(&self, address: &Address) -> bool
fn has_signer_for(&self, address: &Address) -> bool
Source§fn signer_addresses(&self) -> impl Iterator<Item = Address>
fn signer_addresses(&self) -> impl Iterator<Item = Address>
Source§async fn sign_transaction_from(
&self,
sender: Address,
tx: AnyTypedTransaction,
) -> Result<AnyTxEnvelope>
async fn sign_transaction_from( &self, sender: Address, tx: AnyTypedTransaction, ) -> Result<AnyTxEnvelope>
Source§fn sign_transaction(
&self,
tx: N::UnsignedTx,
) -> impl Send + Future<Output = Result<N::TxEnvelope>>
fn sign_transaction( &self, tx: N::UnsignedTx, ) -> impl Send + Future<Output = Result<N::TxEnvelope>>
Source§fn sign_request(
&self,
request: N::TransactionRequest,
) -> impl Send + Future<Output = Result<N::TxEnvelope>>
fn sign_request( &self, request: N::TransactionRequest, ) -> impl Send + Future<Output = Result<N::TxEnvelope>>
from field.Source§impl TransactionBuilder<AnyNetwork> for WithOtherFields<TransactionRequest>
impl TransactionBuilder<AnyNetwork> for WithOtherFields<TransactionRequest>
Source§fn access_list(&self) -> Option<&AccessList>
fn access_list(&self) -> Option<&AccessList>
Get the EIP-2930 access list for the transaction.
Source§fn set_access_list(&mut self, access_list: AccessList)
fn set_access_list(&mut self, access_list: AccessList)
Sets the EIP-2930 access list.
Source§fn build_unsigned(
self,
) -> BuildResult<<AnyNetwork as Network>::UnsignedTx, AnyNetwork>
fn build_unsigned( self, ) -> BuildResult<<AnyNetwork as Network>::UnsignedTx, AnyNetwork>
Build an unsigned typed transaction.
This method validates that all required fields are present and builds an unsigned transaction. Returns an error if any required fields are missing.
§Limitations
The TransactionRequest can only build Ethereum transaction types
(Legacy, EIP-2930, EIP-1559, EIP-4844, EIP-7702). Attempting to build
unknown transaction types will result in an error.
§Errors
Returns TransactionBuilderError::InvalidTransactionRequest if required
fields are missing for the transaction type.
Source§async fn build<W: NetworkWallet<AnyNetwork>>(
self,
wallet: &W,
) -> Result<<AnyNetwork as Network>::TxEnvelope, TransactionBuilderError<AnyNetwork>>
async fn build<W: NetworkWallet<AnyNetwork>>( self, wallet: &W, ) -> Result<<AnyNetwork as Network>::TxEnvelope, TransactionBuilderError<AnyNetwork>>
Build and sign a transaction using the provided wallet.
This method signs the transaction request with the given wallet and returns a signed transaction envelope ready for submission to the network.
§Limitations
The TransactionRequest can only build Ethereum transaction types.
Unknown transaction types cannot be signed through this builder.
§Errors
Returns an error if signing fails or if the wallet cannot produce the required signature type for the transaction.
Source§fn set_chain_id(&mut self, chain_id: ChainId)
fn set_chain_id(&mut self, chain_id: ChainId)
Source§fn take_nonce(&mut self) -> Option<u64>
fn take_nonce(&mut self) -> Option<u64>
Source§fn set_input_kind<T: Into<Bytes>>(
&mut self,
input: T,
kind: TransactionInputKind,
)
fn set_input_kind<T: Into<Bytes>>( &mut self, input: T, kind: TransactionInputKind, )
Source§fn clear_kind(&mut self)
fn clear_kind(&mut self)
Source§fn set_gas_price(&mut self, gas_price: u128)
fn set_gas_price(&mut self, gas_price: u128)
Source§fn max_fee_per_gas(&self) -> Option<u128>
fn max_fee_per_gas(&self) -> Option<u128>
Source§fn set_max_fee_per_gas(&mut self, max_fee_per_gas: u128)
fn set_max_fee_per_gas(&mut self, max_fee_per_gas: u128)
Source§fn max_priority_fee_per_gas(&self) -> Option<u128>
fn max_priority_fee_per_gas(&self) -> Option<u128>
Source§fn set_max_priority_fee_per_gas(&mut self, max_priority_fee_per_gas: u128)
fn set_max_priority_fee_per_gas(&mut self, max_priority_fee_per_gas: u128)
Source§fn set_gas_limit(&mut self, gas_limit: u64)
fn set_gas_limit(&mut self, gas_limit: u64)
Source§fn complete_type(
&self,
ty: <AnyNetwork as Network>::TxType,
) -> Result<(), Vec<&'static str>>
fn complete_type( &self, ty: <AnyNetwork as Network>::TxType, ) -> Result<(), Vec<&'static str>>
Source§fn can_submit(&self) -> bool
fn can_submit(&self) -> bool
eth_sendTransaction endpoint.Source§fn can_build(&self) -> bool
fn can_build(&self) -> bool
Source§fn output_tx_type(&self) -> <AnyNetwork as Network>::TxType
fn output_tx_type(&self) -> <AnyNetwork as Network>::TxType
Source§fn output_tx_type_checked(&self) -> Option<<AnyNetwork as Network>::TxType>
fn output_tx_type_checked(&self) -> Option<<AnyNetwork as Network>::TxType>
None if
the builder is not ready to build.Source§fn prep_for_submission(&mut self)
fn prep_for_submission(&mut self)
Source§fn with_chain_id(self, chain_id: ChainId) -> Self
fn with_chain_id(self, chain_id: ChainId) -> Self
Source§fn with_nonce(self, nonce: u64) -> Self
fn with_nonce(self, nonce: u64) -> Self
Source§fn without_nonce(self) -> Self
fn without_nonce(self) -> Self
Source§fn with_input<T: Into<Bytes>>(self, input: T) -> Self
fn with_input<T: Into<Bytes>>(self, input: T) -> Self
Source§fn with_input_kind<T: Into<Bytes>>(
self,
input: T,
kind: TransactionInputKind,
) -> Self
fn with_input_kind<T: Into<Bytes>>( self, input: T, kind: TransactionInputKind, ) -> Self
Source§fn with_kind(self, kind: TxKind) -> Self
fn with_kind(self, kind: TxKind) -> Self
Source§fn set_create(&mut self)
fn set_create(&mut self)
to field to a create call.Source§fn into_create(self) -> Self
fn into_create(self) -> Self
to field to a create call.Source§fn set_deploy_code<T: Into<Bytes>>(&mut self, code: T)
fn set_deploy_code<T: Into<Bytes>>(&mut self, code: T)
to field to TxKind::Create.Source§fn with_deploy_code<T: Into<Bytes>>(self, code: T) -> Self
fn with_deploy_code<T: Into<Bytes>>(self, code: T) -> Self
to field to TxKind::Create.Source§fn set_call<T: SolCall>(&mut self, t: &T)
fn set_call<T: SolCall>(&mut self, t: &T)
to field
if it is set to TxKind::Create.Source§fn calculate_create_address(&self) -> Option<Address>
fn calculate_create_address(&self) -> Option<Address>
Source§fn with_value(self, value: U256) -> Self
fn with_value(self, value: U256) -> Self
Source§fn with_gas_price(self, gas_price: u128) -> Self
fn with_gas_price(self, gas_price: u128) -> Self
Source§fn with_max_fee_per_gas(self, max_fee_per_gas: u128) -> Self
fn with_max_fee_per_gas(self, max_fee_per_gas: u128) -> Self
Source§fn with_max_priority_fee_per_gas(self, max_priority_fee_per_gas: u128) -> Self
fn with_max_priority_fee_per_gas(self, max_priority_fee_per_gas: u128) -> Self
Source§fn with_gas_limit(self, gas_limit: u64) -> Self
fn with_gas_limit(self, gas_limit: u64) -> Self
Source§fn with_access_list(self, access_list: AccessList) -> Self
fn with_access_list(self, access_list: AccessList) -> Self
Source§fn complete_preferred(&self) -> Result<(), Vec<&'static str>>
fn complete_preferred(&self) -> Result<(), Vec<&'static str>>
Source§fn assert_preferred(&self, ty: N::TxType)
fn assert_preferred(&self, ty: N::TxType)
dbg_assert_eq! to check the builder status, and will have no affect
in release builds.Source§fn assert_preferred_chained(self, ty: N::TxType) -> Self
fn assert_preferred_chained(self, ty: N::TxType) -> Self
dbg_assert_eq! to check the builder status, and will have no affect
in release builds.impl Copy for AnyNetwork
Auto Trait Implementations§
impl Freeze for AnyNetwork
impl RefUnwindSafe for AnyNetwork
impl Send for AnyNetwork
impl Sync for AnyNetwork
impl Unpin for AnyNetwork
impl UnwindSafe for AnyNetwork
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 0 bytes