Crate ethers_middleware[−][src]
Ethers Middleware
Ethers uses a middleware-based architecture. You start the middleware stack with
a Provider
, and wrap it with additional
middleware functionalities that you need.
Available Middleware
Signer
: Signs transactions locally, with a private key or a hardware walletNonce Manager
: Manages nonces locally, allowing the rapid broadcast of transactions without having to wait for them to be submittedGas Escalator
: Bumps transaction gas prices in the backgroundGas Oracle
: Allows getting your gas price estimates from places other thaneth_gasPrice
.Transformer
: Allows intercepting and transforming a transaction to be broadcasted via a proxy wallet, e.g.DSProxy
.
Example of a middleware stack
use ethers::{ providers::{Provider, Http}, signers::LocalWallet, middleware::{ gas_escalator::{GasEscalatorMiddleware, GeometricGasPrice, Frequency}, gas_oracle::{GasOracleMiddleware, GasNow, GasCategory}, signer::SignerMiddleware, nonce_manager::NonceManagerMiddleware, }, core::rand, }; use std::convert::TryFrom; // Start the stack let provider = Provider::<Http>::try_from("http://localhost:8545").unwrap(); // Escalate gas prices let escalator = GeometricGasPrice::new(1.125, 60u64, None::<u64>); let provider = GasEscalatorMiddleware::new(provider, escalator, Frequency::PerBlock); // Sign transactions with a private key let signer = LocalWallet::new(&mut rand::thread_rng()); let address = signer.address(); let provider = SignerMiddleware::new(provider, signer); // Use GasNow as the gas oracle let gas_oracle = GasNow::new().category(GasCategory::SafeLow); let provider = GasOracleMiddleware::new(provider, gas_oracle); // Manage nonces locally let provider = NonceManagerMiddleware::new(provider, address); // ... do something with the provider
Re-exports
pub use nonce_manager::NonceManagerMiddleware; |
pub use signer::SignerMiddleware; |
Modules
gas_escalator | The Gas Escalator middleware is used to re-broadcast transactions with an increasing gas price to guarantee their timely inclusion. |
gas_oracle | The gas oracle middleware is used to get the gas price from a list of gas oracles
instead of using eth_gasPrice. For usage examples, refer to the
|
nonce_manager | The Nonce Manager is used to locally calculate nonces instead of using eth_getTransactionCount |
signer | The Signer is used to locally sign transactions and messages instead of using eth_sendTransaction and eth_sign |
transformer | The Transformer is used to intercept transactions and transform them to be sent via various supported transformers, e.g., DSProxy |