pub struct NonceFiller<M: NonceManager = CachedNonceManager> { /* private fields */ }
Expand description
A TxFiller
that fills nonces on transactions. The behavior of filling nonces is determined
by the NonceManager
.
§Note
- If the transaction request does not have a sender set, this layer will not fill nonces.
- Using two providers with their own nonce layer can potentially fill invalid nonces if transactions are sent from the same address, as the next nonce to be used is cached internally in the layer.
§Example
let pk: PrivateKeySigner = "0x...".parse()?;
let provider = ProviderBuilder::<_, _, Ethereum>::default()
.with_simple_nonce_management()
.wallet(pk)
.connect_http(url);
provider.send_transaction(TransactionRequest::default()).await;
Implementations§
Source§impl<M: NonceManager> NonceFiller<M>
impl<M: NonceManager> NonceFiller<M>
Sourcepub const fn new(nonce_manager: M) -> Self
pub const fn new(nonce_manager: M) -> Self
Creates a new NonceFiller
with the specified NonceManager
.
To instantiate with the SimpleNonceManager
, use NonceFiller::simple()
.
To instantiate with the CachedNonceManager
, use NonceFiller::cached()
.
Sourcepub const fn simple() -> NonceFiller<SimpleNonceManager>
pub const fn simple() -> NonceFiller<SimpleNonceManager>
Creates a new NonceFiller
with the SimpleNonceManager
.
SimpleNonceManager
will fetch the transaction count for any new account it sees,
resulting in frequent RPC calls.
Sourcepub fn cached() -> NonceFiller<CachedNonceManager>
pub fn cached() -> NonceFiller<CachedNonceManager>
Creates a new NonceFiller
with the CachedNonceManager
.
CachedNonceManager
will fetch the transaction count for any new account it sees,
store it locally and increment the locally stored nonce as transactions are sent via
Provider::send_transaction
, reducing the number of RPC calls.
Trait Implementations§
Source§impl<M: Clone + NonceManager> Clone for NonceFiller<M>
impl<M: Clone + NonceManager> Clone for NonceFiller<M>
Source§fn clone(&self) -> NonceFiller<M>
fn clone(&self) -> NonceFiller<M>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<M: Debug + NonceManager> Debug for NonceFiller<M>
impl<M: Debug + NonceManager> Debug for NonceFiller<M>
Source§impl<M: Default + NonceManager> Default for NonceFiller<M>
impl<M: Default + NonceManager> Default for NonceFiller<M>
Source§fn default() -> NonceFiller<M>
fn default() -> NonceFiller<M>
Source§impl<M: NonceManager, N: Network> TxFiller<N> for NonceFiller<M>
impl<M: NonceManager, N: Network> TxFiller<N> for NonceFiller<M>
Source§type Fillable = u64
type Fillable = u64
Source§fn status(&self, tx: &<N as Network>::TransactionRequest) -> FillerControlFlow
fn status(&self, tx: &<N as Network>::TransactionRequest) -> FillerControlFlow
Source§fn fill_sync(&self, _tx: &mut SendableTx<N>)
fn fill_sync(&self, _tx: &mut SendableTx<N>)
TxFiller::prepare
and TxFiller::fill
to fill in any properties
that can be filled synchronously.Source§async fn prepare<P>(
&self,
provider: &P,
tx: &N::TransactionRequest,
) -> TransportResult<Self::Fillable>where
P: Provider<N>,
async fn prepare<P>(
&self,
provider: &P,
tx: &N::TransactionRequest,
) -> TransportResult<Self::Fillable>where
P: Provider<N>,
Source§async fn fill(
&self,
nonce: Self::Fillable,
tx: SendableTx<N>,
) -> TransportResult<SendableTx<N>>
async fn fill( &self, nonce: Self::Fillable, tx: SendableTx<N>, ) -> TransportResult<SendableTx<N>>
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>,
Source§fn continue_filling(&self, tx: &SendableTx<N>) -> bool
fn continue_filling(&self, tx: &SendableTx<N>) -> bool
true
if the filler should continue filling.Source§fn ready(&self, tx: &N::TransactionRequest) -> bool
fn ready(&self, tx: &N::TransactionRequest) -> bool
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
true
if the filler is finished filling in the transaction request.Source§fn fill_envelope(
&self,
fillable: Self::Fillable,
tx: SendableTx<N>,
) -> impl Send + Future<Output = Result<N::TxEnvelope, FillEnvelopeError<N::TransactionRequest>>>
fn fill_envelope( &self, fillable: Self::Fillable, tx: SendableTx<N>, ) -> impl Send + Future<Output = Result<N::TxEnvelope, FillEnvelopeError<N::TransactionRequest>>>
Source§fn prepare_and_fill<P>(
&self,
provider: &P,
tx: SendableTx<N>,
) -> impl Send + Future<Output = TransportResult<SendableTx<N>>>where
P: Provider<N>,
fn prepare_and_fill<P>(
&self,
provider: &P,
tx: SendableTx<N>,
) -> impl Send + Future<Output = TransportResult<SendableTx<N>>>where
P: Provider<N>,
Source§fn prepare_call(
&self,
tx: &mut N::TransactionRequest,
) -> impl Send + Future<Output = TransportResult<()>>
fn prepare_call( &self, tx: &mut N::TransactionRequest, ) -> impl Send + Future<Output = TransportResult<()>>
Source§fn prepare_call_sync(
&self,
tx: &mut N::TransactionRequest,
) -> TransportResult<()>
fn prepare_call_sync( &self, tx: &mut N::TransactionRequest, ) -> TransportResult<()>
Auto Trait Implementations§
impl<M> Freeze for NonceFiller<M>where
M: Freeze,
impl<M> RefUnwindSafe for NonceFiller<M>where
M: RefUnwindSafe,
impl<M> Send for NonceFiller<M>
impl<M> Sync for NonceFiller<M>
impl<M> Unpin for NonceFiller<M>where
M: Unpin,
impl<M> UnwindSafe for NonceFiller<M>where
M: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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>
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>
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