2020-06-15 14:43:32 +00:00
|
|
|
# <h1 align="center"> ethers.rs </h1>
|
2020-05-22 18:37:21 +00:00
|
|
|
|
2020-06-17 09:22:01 +00:00
|
|
|
**Complete Ethereum and Celo wallet implementation and utilities in Rust**
|
2020-06-15 14:43:32 +00:00
|
|
|
|
2020-06-17 13:09:41 +00:00
|
|
|
![Github Actions](https://github.com/gakonst/ethers-rs/workflows/Tests/badge.svg)
|
2020-06-15 14:43:32 +00:00
|
|
|
|
|
|
|
## Documentation
|
|
|
|
|
2020-06-17 13:09:41 +00:00
|
|
|
Extensive documentation and examples are available [here](https://docs.rs/ethers).
|
2020-06-15 14:43:32 +00:00
|
|
|
|
|
|
|
Alternatively, you may clone the repository and run `cd ethers/ && cargo doc --open`
|
|
|
|
|
|
|
|
## Add ethers-rs to your repository
|
|
|
|
|
|
|
|
```toml
|
|
|
|
[dependencies]
|
|
|
|
|
2020-07-03 10:25:28 +00:00
|
|
|
ethers = { git = "https://github.com/gakonst/ethers-rs" }
|
2020-06-15 14:43:32 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|
2020-05-22 18:37:21 +00:00
|
|
|
|
2020-06-17 09:22:01 +00:00
|
|
|
### Celo Support
|
|
|
|
|
|
|
|
[Celo](http://celo.org/) support is turned on via the feature-flag `celo`:
|
|
|
|
|
|
|
|
```toml
|
|
|
|
[dependencies]
|
|
|
|
|
2020-07-03 10:25:28 +00:00
|
|
|
ethers = { git = "https://github.com/gakonst/ethers-rs", features = ["celo"] }
|
2020-06-17 09:22:01 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Celo's transactions differ from Ethereum transactions by including 3 new fields:
|
|
|
|
- `fee_currency`: The currency fees are paid in (None for CELO, otherwise it's an Address)
|
|
|
|
- `gateway_fee_recipient`: The address of the fee recipient (None for no gateway fee paid)
|
|
|
|
- `gateway_fee`: Gateway fee amount (None for no gateway fee paid)
|
|
|
|
|
|
|
|
The feature flag enables these additional fields in the transaction request builders and
|
|
|
|
in the transactions which are fetched over JSON-RPC.
|
|
|
|
|
2020-05-24 18:56:10 +00:00
|
|
|
## Features
|
2020-05-22 18:37:21 +00:00
|
|
|
|
2020-06-15 14:43:32 +00:00
|
|
|
- [x] Ethereum JSON-RPC Client
|
|
|
|
- [x] Interacting and deploying smart contracts
|
|
|
|
- [x] Type safe smart contract bindings code generation
|
2020-05-26 11:00:56 +00:00
|
|
|
- [x] Querying past events
|
2020-06-15 14:43:32 +00:00
|
|
|
- [x] Event monitoring as `Stream`s
|
|
|
|
- [x] ENS as a first class citizen
|
2020-06-17 09:22:01 +00:00
|
|
|
- [x] Celo support
|
2020-06-15 14:43:32 +00:00
|
|
|
- [ ] Websockets / `eth_subscribe`
|
|
|
|
- [ ] Hardware Wallet Support
|
|
|
|
- [ ] WASM Bindings
|
|
|
|
- [ ] FFI Bindings
|
|
|
|
- [ ] CLI for common operations
|
|
|
|
|
|
|
|
## Getting Help
|
|
|
|
|
2020-06-17 13:09:41 +00:00
|
|
|
First, see if the answer to your question can be found in the [API documentation](https://docs.rs/ethers). If the answer
|
2020-06-15 14:43:32 +00:00
|
|
|
is not there, try opening an [issue](https://github.com/gakonst/ethers-rs/issues/new) with the question.
|
|
|
|
|
|
|
|
## Contributing
|
2020-05-22 18:37:21 +00:00
|
|
|
|
2020-06-15 14:43:32 +00:00
|
|
|
Thanks for your help improving the project! We are so happy to have you! We have
|
|
|
|
[a contributing guide](https://github.com/gakonst/ethers-rs/blob/master/CONTRIBUTING.md) to
|
|
|
|
help you get involved in the ethers-rs project.
|
2020-05-26 11:00:56 +00:00
|
|
|
|
2020-06-15 14:43:32 +00:00
|
|
|
## Related Projects
|
2020-05-25 18:14:13 +00:00
|
|
|
|
2020-06-15 14:43:32 +00:00
|
|
|
This library would not have been possibly without the great work done in:
|
2020-06-17 16:18:46 +00:00
|
|
|
- [`ethers.js`](https://github.com/ethers-io/ethers.js/)
|
2020-06-15 14:43:32 +00:00
|
|
|
- [`rust-web3`](https://github.com/tomusdrw/rust-web3/)
|
|
|
|
- [`ethcontract-rs`](https://github.com/gnosis/ethcontract-rs/)
|
2020-06-20 14:15:00 +00:00
|
|
|
- [`guac_rs`](https://github.com/althea-net/guac_rs/tree/master/web3/src/jsonrpc)
|
2020-05-25 18:14:13 +00:00
|
|
|
|
2020-06-15 14:43:32 +00:00
|
|
|
A lot of the code was inspired and adapted from them, to a unified and opinionated interface,
|
|
|
|
built with async/await and std futures from the ground up.
|