op_alloy_network

Trait TransactionBuilder

pub trait TransactionBuilder<N>:
    Sized
    + Default
    + Send
    + Sync
    + 'static
where 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 chain_id(&self) -> Option<u64>

Get the chain ID for the transaction.

fn set_chain_id(&mut self, chain_id: u64)

Set the chain ID for the transaction.

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

Get the nonce for the transaction.

fn set_nonce(&mut self, nonce: u64)

Set the nonce for the transaction.

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

Get the input data for the transaction.

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

Set the input data for the transaction.

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

Get the sender for the transaction.

fn set_from(&mut self, from: Address)

Set the sender for the transaction.

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

Get the kind of transaction.

fn clear_kind(&mut self)

Clear the kind of transaction.

fn set_kind(&mut self, kind: TxKind)

Set the kind of transaction.

fn value(&self) -> Option<Uint<256, 4>>

Get the value for the transaction.

fn set_value(&mut self, value: Uint<256, 4>)

Set the value for the transaction.

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

Get the legacy gas price for the transaction.

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>

Get the max fee per gas for the transaction.

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>

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)

Set the max priority fee per gas for the transaction.

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

Get the gas limit for the transaction.

fn set_gas_limit(&mut self, gas_limit: u64)

Set the gas limit for the transaction.

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

Get the EIP-2930 access list for the transaction.

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

Check if all necessary keys are present to build the specified type, returning a list of missing keys.

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

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

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>

Returns the transaction type that this builder will build. None if the builder is not ready to build.

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

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>,

Build a signed transaction.

Provided Methods§

fn with_chain_id(self, chain_id: u64) -> Self

Builder-pattern method for setting the chain ID.

fn with_nonce(self, nonce: u64) -> Self

Builder-pattern method for setting the nonce.

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

Builder-pattern method for setting the input data.

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

Builder-pattern method for setting the sender.

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

Builder-pattern method for setting the kind of transaction.

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

Get the recipient for the transaction.

fn set_to(&mut self, to: Address)

Set the recipient for the transaction.

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

Builder-pattern method for setting the recipient.

fn set_create(&mut self)

Set the to field to a create call.

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>,

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) -> Self
where 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,

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

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

Make a contract call with data.

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

Builder-pattern method for setting the value.

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

Builder-pattern method for setting max fee per gas .

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

Builder-pattern method for setting the gas limit.

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

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)

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

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

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

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

§

impl TransactionBuilder<AnyNetwork> for WithOtherFields<TransactionRequest>

§

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

Get the EIP-2930 access list for the transaction.

§

fn set_access_list(&mut self, access_list: AccessList)

Sets the EIP-2930 access list.

§

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 complete_type( &self, ty: <AnyNetwork as Network>::TxType, ) -> Result<(), Vec<&'static str>>

§

fn can_submit(&self) -> bool

§

fn can_build(&self) -> bool

§

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

§

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

§

fn prep_for_submission(&mut self)

§

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

§

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

§

impl TransactionBuilder<Ethereum> for TransactionRequest

§

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: TxType) -> Result<(), Vec<&'static str>>

§

fn can_submit(&self) -> bool

§

fn can_build(&self) -> bool

§

fn output_tx_type(&self) -> TxType

§

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

§

fn prep_for_submission(&mut self)

§

fn build_unsigned( self, ) -> Result<TypedTransaction, UnbuiltTransactionError<Ethereum>>

§

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

source§

impl TransactionBuilder<Optimism> 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: OpTxType) -> Result<(), Vec<&'static str>>

source§

fn can_submit(&self) -> bool

source§

fn can_build(&self) -> bool

source§

fn output_tx_type(&self) -> OpTxType

source§

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

source§

fn prep_for_submission(&mut self)

source§

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

source§

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

Implementors§