alloy_network

Trait TransactionBuilder

Source
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§

Source

fn chain_id(&self) -> Option<ChainId>

Get the chain ID for the transaction.

Source

fn set_chain_id(&mut self, chain_id: ChainId)

Set the chain ID for the transaction.

Source

fn nonce(&self) -> Option<u64>

Get the nonce for the transaction.

Source

fn set_nonce(&mut self, nonce: u64)

Set the nonce for the transaction.

Source

fn input(&self) -> Option<&Bytes>

Get the input data for the transaction.

Source

fn set_input<T: Into<Bytes>>(&mut self, input: T)

Set the input data for the transaction.

Source

fn from(&self) -> Option<Address>

Get the sender for the transaction.

Source

fn set_from(&mut self, from: Address)

Set the sender for the transaction.

Source

fn kind(&self) -> Option<TxKind>

Get the kind of transaction.

Source

fn clear_kind(&mut self)

Clear the kind of transaction.

Source

fn set_kind(&mut self, kind: TxKind)

Set the kind of transaction.

Source

fn value(&self) -> Option<U256>

Get the value for the transaction.

Source

fn set_value(&mut self, value: U256)

Set the value for the transaction.

Source

fn gas_price(&self) -> Option<u128>

Get the legacy gas price for the transaction.

Source

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>

Get the max fee per gas for the transaction.

Source

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>

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)

Set the max priority fee per gas for the transaction.

Source

fn gas_limit(&self) -> Option<u64>

Get the gas limit for the transaction.

Source

fn set_gas_limit(&mut self, gas_limit: u64)

Set the gas limit for the transaction.

Source

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)

Sets the EIP-2930 access list.

Source

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.

Source

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

True if the builder contains all necessary information to be built into a valid transaction.

Source

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.

Source

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.

Source

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.

Source

fn build_unsigned(self) -> BuildResult<N::UnsignedTx, N>

Build an unsigned, but typed, transaction.

Source

fn build<W: NetworkWallet<N>>( self, wallet: &W, ) -> impl Send + Future<Output = Result<N::TxEnvelope, TransactionBuilderError<N>>>

Build a signed transaction.

Provided Methods§

Source

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

Builder-pattern method for setting the nonce.

Source

fn with_input<T: Into<Bytes>>(self, input: T) -> Self

Builder-pattern method for setting the input data.

Source

fn with_from(self, from: Address) -> Self

Builder-pattern method for setting the sender.

Source

fn with_kind(self, kind: TxKind) -> Self

Builder-pattern method for setting the kind of transaction.

Source

fn to(&self) -> Option<Address>

Get the recipient for the transaction.

Source

fn set_to(&mut self, to: Address)

Set the recipient for the transaction.

Source

fn with_to(self, to: Address) -> Self

Builder-pattern method for setting the recipient.

Source

fn set_create(&mut self)

Set the to field to a create call.

Source

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)

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

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)

Set the data field to a contract call. This will clear the to field if it is set to TxKind::Create.

Source

fn with_call<T: SolCall>(self, t: &T) -> Self

Make a contract call with data.

Source

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.

Source

fn with_value(self, value: U256) -> Self

Builder-pattern method for setting the value.

Source

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

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

Builder-pattern method for setting max priority fee per gas.

Source

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

Builder-pattern method for setting the access list.

Source

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)

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

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 apply<F>(self, f: F) -> Self
where F: FnOnce(Self) -> Self,

Apply a function to the builder, returning the modified builder.

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>

Source§

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)

Sets the EIP-2930 access list.

Source§

fn chain_id(&self) -> Option<ChainId>

Source§

fn set_chain_id(&mut self, chain_id: ChainId)

Source§

fn nonce(&self) -> Option<u64>

Source§

fn set_nonce(&mut self, nonce: u64)

Source§

fn input(&self) -> Option<&Bytes>

Source§

fn set_input<T: Into<Bytes>>(&mut self, input: T)

Source§

fn from(&self) -> Option<Address>

Source§

fn set_from(&mut self, from: Address)

Source§

fn kind(&self) -> Option<TxKind>

Source§

fn clear_kind(&mut self)

Source§

fn set_kind(&mut self, kind: TxKind)

Source§

fn value(&self) -> Option<U256>

Source§

fn set_value(&mut self, value: U256)

Source§

fn gas_price(&self) -> Option<u128>

Source§

fn set_gas_price(&mut self, gas_price: u128)

Source§

fn max_fee_per_gas(&self) -> Option<u128>

Source§

fn set_max_fee_per_gas(&mut self, max_fee_per_gas: u128)

Source§

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)

Source§

fn gas_limit(&self) -> Option<u64>

Source§

fn set_gas_limit(&mut self, gas_limit: u64)

Source§

fn complete_type( &self, ty: <AnyNetwork as Network>::TxType, ) -> Result<(), Vec<&'static str>>

Source§

fn can_submit(&self) -> bool

Source§

fn can_build(&self) -> bool

Source§

fn output_tx_type(&self) -> <AnyNetwork as Network>::TxType

Source§

fn output_tx_type_checked(&self) -> Option<<AnyNetwork as Network>::TxType>

Source§

fn prep_for_submission(&mut self)

Source§

fn build_unsigned( self, ) -> BuildResult<<AnyNetwork as Network>::UnsignedTx, AnyNetwork>

Source§

async fn build<W: NetworkWallet<AnyNetwork>>( self, wallet: &W, ) -> Result<<AnyNetwork as Network>::TxEnvelope, TransactionBuilderError<AnyNetwork>>

Source§

impl TransactionBuilder<Ethereum> for TransactionRequest

Source§

fn chain_id(&self) -> Option<ChainId>

Source§

fn set_chain_id(&mut self, chain_id: ChainId)

Source§

fn nonce(&self) -> Option<u64>

Source§

fn set_nonce(&mut self, nonce: u64)

Source§

fn input(&self) -> Option<&Bytes>

Source§

fn set_input<T: Into<Bytes>>(&mut self, input: T)

Source§

fn from(&self) -> Option<Address>

Source§

fn set_from(&mut self, from: Address)

Source§

fn kind(&self) -> Option<TxKind>

Source§

fn clear_kind(&mut self)

Source§

fn set_kind(&mut self, kind: TxKind)

Source§

fn value(&self) -> Option<U256>

Source§

fn set_value(&mut self, value: U256)

Source§

fn gas_price(&self) -> Option<u128>

Source§

fn set_gas_price(&mut self, gas_price: u128)

Source§

fn max_fee_per_gas(&self) -> Option<u128>

Source§

fn set_max_fee_per_gas(&mut self, max_fee_per_gas: u128)

Source§

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)

Source§

fn gas_limit(&self) -> Option<u64>

Source§

fn set_gas_limit(&mut self, gas_limit: u64)

Source§

fn access_list(&self) -> Option<&AccessList>

Source§

fn set_access_list(&mut self, access_list: AccessList)

Source§

fn complete_type(&self, ty: TxType) -> Result<(), Vec<&'static str>>

Source§

fn can_submit(&self) -> bool

Source§

fn can_build(&self) -> bool

Source§

fn output_tx_type(&self) -> TxType

Source§

fn output_tx_type_checked(&self) -> Option<TxType>

Source§

fn prep_for_submission(&mut self)

Source§

fn build_unsigned(self) -> BuildResult<TypedTransaction, Ethereum>

Source§

async fn build<W: NetworkWallet<Ethereum>>( self, wallet: &W, ) -> Result<<Ethereum as Network>::TxEnvelope, TransactionBuilderError<Ethereum>>

Implementors§