pub trait TransactionBuilder<N: Network>:
Default
+ Sized
+ Send
+ Sync
+ 'static {
Show 56 methods
// Required methods
fn chain_id(&self) -> Option<ChainId>;
fn set_chain_id(&mut self, chain_id: ChainId);
fn nonce(&self) -> Option<u64>;
fn set_nonce(&mut self, nonce: u64);
fn input(&self) -> Option<&Bytes>;
fn set_input<T: Into<Bytes>>(&mut self, input: T);
fn from(&self) -> Option<Address>;
fn set_from(&mut self, from: Address);
fn kind(&self) -> Option<TxKind>;
fn clear_kind(&mut self);
fn set_kind(&mut self, kind: TxKind);
fn value(&self) -> Option<U256>;
fn set_value(&mut self, value: U256);
fn gas_price(&self) -> Option<u128>;
fn set_gas_price(&mut self, gas_price: u128);
fn max_fee_per_gas(&self) -> Option<u128>;
fn set_max_fee_per_gas(&mut self, max_fee_per_gas: u128);
fn max_priority_fee_per_gas(&self) -> Option<u128>;
fn set_max_priority_fee_per_gas(&mut self, max_priority_fee_per_gas: u128);
fn gas_limit(&self) -> Option<u64>;
fn set_gas_limit(&mut self, gas_limit: u64);
fn access_list(&self) -> Option<&AccessList>;
fn set_access_list(&mut self, access_list: AccessList);
fn complete_type(&self, ty: N::TxType) -> Result<(), Vec<&'static str>>;
fn can_submit(&self) -> bool;
fn can_build(&self) -> bool;
fn output_tx_type(&self) -> N::TxType;
fn output_tx_type_checked(&self) -> Option<N::TxType>;
fn prep_for_submission(&mut self);
fn build_unsigned(self) -> BuildResult<N::UnsignedTx, N>;
fn build<W: NetworkWallet<N>>(
self,
wallet: &W,
) -> impl Send + Future<Output = Result<N::TxEnvelope, TransactionBuilderError<N>>>;
// Provided methods
fn with_chain_id(self, chain_id: ChainId) -> Self { ... }
fn with_nonce(self, nonce: u64) -> Self { ... }
fn with_input<T: Into<Bytes>>(self, input: T) -> Self { ... }
fn with_from(self, from: Address) -> Self { ... }
fn with_kind(self, kind: TxKind) -> Self { ... }
fn to(&self) -> Option<Address> { ... }
fn set_to(&mut self, to: Address) { ... }
fn with_to(self, to: Address) -> Self { ... }
fn set_create(&mut self) { ... }
fn into_create(self) -> Self { ... }
fn set_deploy_code<T: Into<Bytes>>(&mut self, code: T) { ... }
fn with_deploy_code<T: Into<Bytes>>(self, code: T) -> Self { ... }
fn set_call<T: SolCall>(&mut self, t: &T) { ... }
fn with_call<T: SolCall>(self, t: &T) -> Self { ... }
fn calculate_create_address(&self) -> Option<Address> { ... }
fn with_value(self, value: U256) -> Self { ... }
fn with_gas_price(self, gas_price: u128) -> Self { ... }
fn with_max_fee_per_gas(self, max_fee_per_gas: u128) -> Self { ... }
fn with_max_priority_fee_per_gas(
self,
max_priority_fee_per_gas: u128,
) -> Self { ... }
fn with_gas_limit(self, gas_limit: u64) -> Self { ... }
fn with_access_list(self, access_list: AccessList) -> Self { ... }
fn complete_preferred(&self) -> Result<(), Vec<&'static str>> { ... }
fn assert_preferred(&self, ty: N::TxType) { ... }
fn assert_preferred_chained(self, ty: N::TxType) -> Self { ... }
fn apply<F>(self, f: F) -> Self
where F: FnOnce(Self) -> Self { ... }
}
Expand description
A Transaction builder for a network.
Transaction builders are primarily used to construct typed transactions that can be signed with
TransactionBuilder::build
, or unsigned typed transactions with
TransactionBuilder::build_unsigned
.
Transaction builders should be able to construct all available transaction types on a given network.
Required Methods§
Sourcefn set_chain_id(&mut self, chain_id: ChainId)
fn set_chain_id(&mut self, chain_id: ChainId)
Set the chain ID for the transaction.
Sourcefn clear_kind(&mut self)
fn clear_kind(&mut self)
Clear the kind of transaction.
Sourcefn 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.
Sourcefn max_fee_per_gas(&self) -> Option<u128>
fn max_fee_per_gas(&self) -> Option<u128>
Get the max fee per gas for the transaction.
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.
Sourcefn set_gas_limit(&mut self, gas_limit: u64)
fn set_gas_limit(&mut self, gas_limit: u64)
Set the gas limit for the transaction.
Sourcefn access_list(&self) -> Option<&AccessList>
fn access_list(&self) -> Option<&AccessList>
Get the EIP-2930 access list for the transaction.
Sourcefn set_access_list(&mut self, access_list: AccessList)
fn set_access_list(&mut self, access_list: AccessList)
Sets the EIP-2930 access list.
Sourcefn complete_type(&self, ty: N::TxType) -> Result<(), Vec<&'static str>>
fn complete_type(&self, ty: N::TxType) -> Result<(), Vec<&'static str>>
Check if all necessary keys are present to build the specified type, returning a list of missing keys.
Sourcefn 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.
Sourcefn can_build(&self) -> bool
fn can_build(&self) -> bool
True if the builder contains all necessary information to be built into a valid transaction.
Sourcefn output_tx_type(&self) -> N::TxType
fn output_tx_type(&self) -> N::TxType
Returns the transaction type that this builder will attempt to build. This does not imply that the builder is ready to build.
Sourcefn output_tx_type_checked(&self) -> Option<N::TxType>
fn output_tx_type_checked(&self) -> Option<N::TxType>
Returns the transaction type that this builder will build. None
if
the builder is not ready to build.
Sourcefn prep_for_submission(&mut self)
fn prep_for_submission(&mut self)
Trim any conflicting keys and populate any computed fields (like blob hashes).
This is useful for transaction requests that have multiple conflicting fields. While these may be buildable, they may not be submitted to the RPC. This method should be called before RPC submission, but is not necessary before building.
Sourcefn build_unsigned(self) -> BuildResult<N::UnsignedTx, N>
fn build_unsigned(self) -> BuildResult<N::UnsignedTx, N>
Build an unsigned, but typed, transaction.
Sourcefn build<W: NetworkWallet<N>>(
self,
wallet: &W,
) -> impl Send + Future<Output = Result<N::TxEnvelope, TransactionBuilderError<N>>>
fn build<W: NetworkWallet<N>>( self, wallet: &W, ) -> impl Send + Future<Output = Result<N::TxEnvelope, TransactionBuilderError<N>>>
Build a signed transaction.
Provided Methods§
Sourcefn 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.
Sourcefn with_nonce(self, nonce: u64) -> Self
fn with_nonce(self, nonce: u64) -> Self
Builder-pattern method for setting the nonce.
Sourcefn 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.
Sourcefn with_kind(self, kind: TxKind) -> Self
fn with_kind(self, kind: TxKind) -> Self
Builder-pattern method for setting the kind of transaction.
Sourcefn set_create(&mut self)
fn set_create(&mut self)
Set the to
field to a create call.
Sourcefn into_create(self) -> Self
fn into_create(self) -> Self
Set the to
field to a create call.
Sourcefn 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
.
Sourcefn 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
.
Sourcefn 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
.
Sourcefn 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.
Returns None
if the transaction is not a contract creation (the to
field is set), or if
the from
or nonce
fields are not set.
Sourcefn with_value(self, value: U256) -> Self
fn with_value(self, value: U256) -> Self
Builder-pattern method for setting the value.
Sourcefn 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.
Sourcefn 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 .
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
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.