ethers-rs is a port of ethers-js in Rust.
A prelude is provided which imports all the important data types and traits for you. Use this when you want to quickly bootstrap a new project.
Examples on how you can use the types imported by the prelude can be found in
examples directory of the repository
and in the
tests/ directories of each crate.
Contains all the necessary data structures for interacting
with Ethereum, along with cryptographic utilities for signing and verifying
ECDSA signatures on
secp256k1. Bindings to the solidity compiler and
are also provided as helpers. To simplify your imports, consider using the re-exported
modules described in the next subsection.
Ethereum nodes expose RPC endpoints (by default at
localhost:8545). You can connect
to them by using the
Provider. The provider instance
allows you to issue requests to the node which involve querying the state of Ethereum or
broadcasting transactions with unlocked accounts on the node.
This module provides a
Signer trait which can be used for signing messages
or transactions. A
Wallet type is implemented which can be used with a
raw private key, or a YubiHSM2. We also provide Ledger support.
Interacting with Ethereum is not restricted to sending or receiving funds. It also involves using smart contracts, which can be thought of as programs with persistent storage.
Interacting with a smart contract requires broadcasting carefully crafted
transactions where the
data field contains
along with the arguments of the called function. This module provides the
ContractFactory abstractions so that you do not have to worry about that.
It also provides typesafe bindings via the
abigen macro and the
In order to keep the ethers architecture as modular as possible, providers define a
trait which defines all the methods to interact with an Ethereum node. By implementing the
middleware trait, you are able to override the default behavior of methods and do things such
as using other gas oracles, escalating your transactions' gas prices, or signing your transactions
Signer. The middleware architecture allows users to either use one of the existing
middleware, or they are free to write on of their own.