pub struct GasFiller;
Expand description
A TxFiller
that populates gas related fields in transaction requests if
unset.
Gas related fields are gas_price, gas_limit, max_fee_per_gas max_priority_fee_per_gas and max_fee_per_blob_gas.
The layer fetches the estimations for these via the
Provider::get_gas_price
, Provider::estimate_gas
and
Provider::estimate_eip1559_fees
methods.
§Note:
The layer will populate gas fields based on the following logic:
- if
gas_price
is set, it will process as a legacy tx and populate thegas_limit
field if unset. - if
access_list
is set, it will process as a 2930 tx and populate thegas_limit
andgas_price
field if unset. - if
blob_sidecar
is set, it will process as a 4844 tx and populate thegas_limit
,max_fee_per_gas
,max_priority_fee_per_gas
andmax_fee_per_blob_gas
fields if unset. - Otherwise, it will process as a EIP-1559 tx and populate the
gas_limit
,max_fee_per_gas
andmax_priority_fee_per_gas
fields if unset. - If the network does not support EIP-1559, it will fallback to the legacy tx and populate the
gas_limit
andgas_price
fields if unset.
§Example
let provider = ProviderBuilder::new()
.with_gas_estimation()
.wallet(wallet)
.on_http(url);
provider.send_transaction(TransactionRequest::default()).await;
Trait Implementations§
source§impl<N: Network> TxFiller<N> for GasFiller
impl<N: Network> TxFiller<N> for GasFiller
source§type Fillable = GasFillable
type Fillable = GasFillable
The properties that this filler retrieves from the RPC. to fill in the
TransactionRequest.
source§fn status(&self, tx: &<N as Network>::TransactionRequest) -> FillerControlFlow
fn status(&self, tx: &<N as Network>::TransactionRequest) -> FillerControlFlow
Return a control-flow enum indicating whether the filler is ready to
fill in the transaction request, or if it is missing required
properties.
source§fn fill_sync(&self, _tx: &mut SendableTx<N>)
fn fill_sync(&self, _tx: &mut SendableTx<N>)
Performs any synchronous filling. This should be called before
TxFiller::prepare
and TxFiller::fill
to fill in any properties
that can be filled synchronously.source§async fn prepare<P, T>(
&self,
provider: &P,
tx: &<N as Network>::TransactionRequest,
) -> TransportResult<Self::Fillable>
async fn prepare<P, T>( &self, provider: &P, tx: &<N as Network>::TransactionRequest, ) -> TransportResult<Self::Fillable>
Prepares fillable properties, potentially by making an RPC request.
source§async fn fill(
&self,
fillable: Self::Fillable,
tx: SendableTx<N>,
) -> TransportResult<SendableTx<N>>
async fn fill( &self, fillable: Self::Fillable, tx: SendableTx<N>, ) -> TransportResult<SendableTx<N>>
Fills in the transaction request with the fillable properties.
source§fn join_with<T>(self, other: T) -> JoinFill<Self, T>where
T: TxFiller<N>,
fn join_with<T>(self, other: T) -> JoinFill<Self, T>where
T: TxFiller<N>,
Joins this filler with another filler to compose multiple fillers.
source§fn continue_filling(&self, tx: &SendableTx<N>) -> bool
fn continue_filling(&self, tx: &SendableTx<N>) -> bool
Returns
true
if the filler is should continue filling.source§fn ready(&self, tx: &N::TransactionRequest) -> bool
fn ready(&self, tx: &N::TransactionRequest) -> bool
Returns
true
if the filler is ready to fill in the transaction request.source§fn finished(&self, tx: &N::TransactionRequest) -> bool
fn finished(&self, tx: &N::TransactionRequest) -> bool
Returns
true
if the filler is finished filling in the transaction request.source§fn prepare_and_fill<P, T>(
&self,
provider: &P,
tx: SendableTx<N>,
) -> impl Send + Future<Output = TransportResult<SendableTx<N>>>
fn prepare_and_fill<P, T>( &self, provider: &P, tx: SendableTx<N>, ) -> impl Send + Future<Output = TransportResult<SendableTx<N>>>
Prepares and fills the transaction request with the fillable properties.
impl Copy for GasFiller
Auto Trait Implementations§
impl Freeze for GasFiller
impl RefUnwindSafe for GasFiller
impl Send for GasFiller
impl Sync for GasFiller
impl Unpin for GasFiller
impl UnwindSafe for GasFiller
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