Trait TransactionBuilder
pub trait TransactionBuilder<N>:
Sized
+ Default
+ Send
+ Sync
+ 'staticwhere
N: Network,{
Show 56 methods
// Required methods
fn chain_id(&self) -> Option<u64>;
fn set_chain_id(&mut self, chain_id: u64);
fn nonce(&self) -> Option<u64>;
fn set_nonce(&mut self, nonce: u64);
fn input(&self) -> Option<&Bytes>;
fn set_input<T>(&mut self, input: T)
where T: Into<Bytes>;
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<Uint<256, 4>>;
fn set_value(&mut self, value: Uint<256, 4>);
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 as Network>::TxType,
) -> Result<(), Vec<&'static str>>;
fn can_submit(&self) -> bool;
fn can_build(&self) -> bool;
fn output_tx_type(&self) -> <N as Network>::TxType;
fn output_tx_type_checked(&self) -> Option<<N as Network>::TxType>;
fn prep_for_submission(&mut self);
fn build_unsigned(
self,
) -> Result<<N as Network>::UnsignedTx, UnbuiltTransactionError<N>>;
fn build<W>(
self,
wallet: &W,
) -> impl Send + Future<Output = Result<<N as Network>::TxEnvelope, TransactionBuilderError<N>>>
where W: NetworkWallet<N>;
// Provided methods
fn with_chain_id(self, chain_id: u64) -> Self { ... }
fn with_nonce(self, nonce: u64) -> Self { ... }
fn with_input<T>(self, input: T) -> Self
where T: Into<Bytes> { ... }
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>(&mut self, code: T)
where T: Into<Bytes> { ... }
fn with_deploy_code<T>(self, code: T) -> Self
where T: Into<Bytes> { ... }
fn set_call<T>(&mut self, t: &T)
where T: SolCall { ... }
fn with_call<T>(self, t: &T) -> Self
where T: SolCall { ... }
fn calculate_create_address(&self) -> Option<Address> { ... }
fn with_value(self, value: Uint<256, 4>) -> 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 as Network>::TxType) { ... }
fn assert_preferred_chained(self, ty: <N as Network>::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§
fn set_chain_id(&mut self, chain_id: u64)
fn set_chain_id(&mut self, chain_id: u64)
Set the chain ID for the transaction.
fn set_from(&mut self, from: Address)
fn set_from(&mut self, from: Address)
Set the sender for the transaction.
fn clear_kind(&mut self)
fn clear_kind(&mut self)
Clear the kind of transaction.
fn set_kind(&mut self, kind: TxKind)
fn set_kind(&mut self, kind: TxKind)
Set the kind of transaction.
fn set_value(&mut self, value: Uint<256, 4>)
fn set_value(&mut self, value: Uint<256, 4>)
Set the value for the transaction.
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.
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.
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.
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.
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.
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.
fn access_list(&self) -> Option<&AccessList>
fn access_list(&self) -> Option<&AccessList>
Get the EIP-2930 access list for the transaction.
fn set_access_list(&mut self, access_list: AccessList)
fn set_access_list(&mut self, access_list: AccessList)
Sets the EIP-2930 access list.
fn complete_type(
&self,
ty: <N as Network>::TxType,
) -> Result<(), Vec<&'static str>>
fn complete_type( &self, ty: <N 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.
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.
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.
fn output_tx_type(&self) -> <N as Network>::TxType
fn output_tx_type(&self) -> <N 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.
fn output_tx_type_checked(&self) -> Option<<N as Network>::TxType>
fn output_tx_type_checked(&self) -> Option<<N as Network>::TxType>
Returns the transaction type that this builder will build. None
if
the builder is not ready to build.
fn 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.
fn build_unsigned(
self,
) -> Result<<N as Network>::UnsignedTx, UnbuiltTransactionError<N>>
fn build_unsigned( self, ) -> Result<<N as Network>::UnsignedTx, UnbuiltTransactionError<N>>
Build an unsigned, but typed, transaction.
fn build<W>(
self,
wallet: &W,
) -> impl Send + Future<Output = Result<<N as Network>::TxEnvelope, TransactionBuilderError<N>>>where
W: NetworkWallet<N>,
fn build<W>(
self,
wallet: &W,
) -> impl Send + Future<Output = Result<<N as Network>::TxEnvelope, TransactionBuilderError<N>>>where
W: NetworkWallet<N>,
Build a signed transaction.
Provided Methods§
fn with_chain_id(self, chain_id: u64) -> Self
fn with_chain_id(self, chain_id: u64) -> Self
Builder-pattern method for setting the chain ID.
fn with_nonce(self, nonce: u64) -> Self
fn with_nonce(self, nonce: u64) -> Self
Builder-pattern method for setting the nonce.
fn with_input<T>(self, input: T) -> Selfwhere
T: Into<Bytes>,
fn with_input<T>(self, input: T) -> Selfwhere
T: Into<Bytes>,
Builder-pattern method for setting the input data.
fn with_from(self, from: Address) -> Self
fn with_from(self, from: Address) -> Self
Builder-pattern method for setting the sender.
fn with_kind(self, kind: TxKind) -> Self
fn with_kind(self, kind: TxKind) -> Self
Builder-pattern method for setting the kind of transaction.
fn set_to(&mut self, to: Address)
fn set_to(&mut self, to: Address)
Set the recipient for the transaction.
fn with_to(self, to: Address) -> Self
fn with_to(self, to: Address) -> Self
Builder-pattern method for setting the recipient.
fn set_create(&mut self)
fn set_create(&mut self)
Set the to
field to a create call.
fn into_create(self) -> Self
fn into_create(self) -> Self
Set the to
field to a create call.
fn set_deploy_code<T>(&mut self, code: T)where
T: Into<Bytes>,
fn set_deploy_code<T>(&mut self, code: T)where
T: Into<Bytes>,
Deploy the code by making a create call with data. This will set the
to
field to [TxKind::Create
].
fn with_deploy_code<T>(self, code: T) -> Selfwhere
T: Into<Bytes>,
fn with_deploy_code<T>(self, code: T) -> Selfwhere
T: Into<Bytes>,
Deploy the code by making a create call with data. This will set the
to
field to [TxKind::Create
].
fn set_call<T>(&mut self, t: &T)where
T: SolCall,
fn set_call<T>(&mut self, t: &T)where
T: SolCall,
Set the data field to a contract call. This will clear the to
field
if it is set to [TxKind::Create
].
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.
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.
fn with_value(self, value: Uint<256, 4>) -> Self
fn with_value(self, value: Uint<256, 4>) -> Self
Builder-pattern method for setting the value.
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.
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 .
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.
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.
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.
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.
fn assert_preferred(&self, ty: <N as Network>::TxType)
fn assert_preferred(&self, ty: <N as Network>::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.
fn assert_preferred_chained(self, ty: <N as Network>::TxType) -> Self
fn assert_preferred_chained(self, ty: <N as Network>::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.
Object Safety§
Implementations on Foreign Types§
§impl TransactionBuilder<AnyNetwork> for WithOtherFields<TransactionRequest>
impl TransactionBuilder<AnyNetwork> for WithOtherFields<TransactionRequest>
§fn access_list(&self) -> Option<&AccessList>
fn access_list(&self) -> Option<&AccessList>
Get the EIP-2930 access list for the transaction.
§fn set_access_list(&mut self, access_list: AccessList)
fn set_access_list(&mut self, access_list: AccessList)
Sets the EIP-2930 access list.