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
Decodable2718
forAnyTxEnvelope
will not work for non-Ethereum transaction types. It will succesfully 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
Encodable2718
forAnyTypedTransaction
will 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
TransactionRequest
will build ONLY Ethereum types. It will error when attempting to build any unknown type. - The
Network::TransactionResponse
may 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
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
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
The network transaction envelope type.
Source§type UnsignedTx = AnyTypedTransaction
type UnsignedTx = AnyTypedTransaction
An enum over the various transaction types.
Source§type ReceiptEnvelope = AnyReceiptEnvelope
type ReceiptEnvelope = AnyReceiptEnvelope
The network receipt envelope type.
Source§type TransactionRequest = WithOtherFields<TransactionRequest>
type TransactionRequest = WithOtherFields<TransactionRequest>
The JSON body of a transaction request.
Source§type TransactionResponse = WithOtherFields<Transaction<AnyTxEnvelope>>
type TransactionResponse = WithOtherFields<Transaction<AnyTxEnvelope>>
The JSON body of a transaction response.
Source§type ReceiptResponse = WithOtherFields<TransactionReceipt<AnyReceiptEnvelope<Log>>>
type ReceiptResponse = WithOtherFields<TransactionReceipt<AnyReceiptEnvelope<Log>>>
The JSON body of a transaction receipt.
Source§type HeaderResponse = Header<AnyHeader>
type HeaderResponse = Header<AnyHeader>
The JSON body of a header response.
Source§type BlockResponse = WithOtherFields<Block<WithOtherFields<Transaction<AnyTxEnvelope>>, Header<AnyHeader>>>
type BlockResponse = WithOtherFields<Block<WithOtherFields<Transaction<AnyTxEnvelope>>, Header<AnyHeader>>>
The JSON body of a block response.
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 set_chain_id(&mut self, chain_id: ChainId)
fn set_chain_id(&mut self, chain_id: ChainId)
Set the chain ID for the transaction.
Source§fn clear_kind(&mut self)
fn clear_kind(&mut self)
Clear the kind of transaction.
Source§fn set_gas_price(&mut self, gas_price: u128)
fn set_gas_price(&mut self, gas_price: u128)
Set the legacy gas price for the transaction.
Source§fn max_fee_per_gas(&self) -> Option<u128>
fn max_fee_per_gas(&self) -> Option<u128>
Get the max fee per gas for the transaction.
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)
Set the max fee per gas for the transaction.
Source§fn max_priority_fee_per_gas(&self) -> Option<u128>
fn max_priority_fee_per_gas(&self) -> Option<u128>
Get the max priority fee per gas for the transaction.
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)
Set the max priority fee per gas for the transaction.
Source§fn set_gas_limit(&mut self, gas_limit: u64)
fn set_gas_limit(&mut self, gas_limit: u64)
Set the gas limit for the transaction.
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>>
Check if all necessary keys are present to build the specified type,
returning a list of missing keys.
Source§fn can_submit(&self) -> bool
fn can_submit(&self) -> bool
True if the builder contains all necessary information to be submitted
to the
eth_sendTransaction
endpoint.Source§fn can_build(&self) -> bool
fn can_build(&self) -> bool
True if the builder contains all necessary information to be built into
a valid transaction.
Source§fn output_tx_type(&self) -> <AnyNetwork as Network>::TxType
fn output_tx_type(&self) -> <AnyNetwork as Network>::TxType
Returns the transaction type that this builder will attempt to build.
This does not imply that the builder is ready to build.
Source§fn output_tx_type_checked(&self) -> Option<<AnyNetwork as Network>::TxType>
fn output_tx_type_checked(&self) -> Option<<AnyNetwork as Network>::TxType>
Returns the transaction type that this builder will build.
None
if
the builder is not ready to build.Source§fn prep_for_submission(&mut self)
fn prep_for_submission(&mut self)
Trim any conflicting keys and populate any computed fields (like blob
hashes). Read more
Source§fn build_unsigned(
self,
) -> BuildResult<<AnyNetwork as Network>::UnsignedTx, AnyNetwork>
fn build_unsigned( self, ) -> BuildResult<<AnyNetwork as Network>::UnsignedTx, AnyNetwork>
Build an unsigned, but typed, transaction.
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 a signed transaction.
Source§fn with_chain_id(self, chain_id: ChainId) -> Self
fn with_chain_id(self, chain_id: ChainId) -> Self
Builder-pattern method for setting the chain ID.
Source§fn with_nonce(self, nonce: u64) -> Self
fn with_nonce(self, nonce: u64) -> Self
Builder-pattern method for setting the nonce.
Source§fn with_input<T: Into<Bytes>>(self, input: T) -> Self
fn with_input<T: Into<Bytes>>(self, input: T) -> Self
Builder-pattern method for setting the input data.
Source§fn with_kind(self, kind: TxKind) -> Self
fn with_kind(self, kind: TxKind) -> Self
Builder-pattern method for setting the kind of transaction.
Source§fn set_create(&mut self)
fn set_create(&mut self)
Set the
to
field to a create call.Source§fn into_create(self) -> Self
fn into_create(self) -> Self
Set the
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)
Deploy the code by making a create call with data. This will set the
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
Deploy the code by making a create call with data. This will set the
to
field to TxKind::Create
.Source§fn set_call<T: SolCall>(&mut self, t: &T)
fn set_call<T: SolCall>(&mut self, t: &T)
Set the data field to a contract call. This will clear the
to
field
if it is set to TxKind::Create
.Source§fn calculate_create_address(&self) -> Option<Address>
fn calculate_create_address(&self) -> Option<Address>
Calculates the address that will be created by the transaction, if any. Read more
Source§fn with_value(self, value: U256) -> Self
fn with_value(self, value: U256) -> Self
Builder-pattern method for setting the value.
Source§fn with_gas_price(self, gas_price: u128) -> Self
fn with_gas_price(self, gas_price: u128) -> Self
Builder-pattern method for setting the legacy gas price.
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
Builder-pattern method for setting max fee per gas .
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
Builder-pattern method for setting max priority fee per gas.
Source§fn with_gas_limit(self, gas_limit: u64) -> Self
fn with_gas_limit(self, gas_limit: u64) -> Self
Builder-pattern method for setting the gas limit.
Source§fn with_access_list(self, access_list: AccessList) -> Self
fn with_access_list(self, access_list: AccessList) -> Self
Builder-pattern method for setting the access list.
Source§fn complete_preferred(&self) -> Result<(), Vec<&'static str>>
fn complete_preferred(&self) -> Result<(), Vec<&'static str>>
Check if all necessary keys are present to build the currently-preferred
transaction type, returning a list of missing keys.
Source§fn assert_preferred(&self, ty: N::TxType)
fn assert_preferred(&self, ty: N::TxType)
Assert that the builder prefers a certain transaction type. This does
not indicate that the builder is ready to build. This function uses a
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
Assert that the builder prefers a certain transaction type. This does
not indicate that the builder is ready to build. This function uses a
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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>
Converts
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>
Converts
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 more