32 个版本 (16 个稳定版)

2.0.14 2024 年 3 月 6 日
2.0.11 2023 年 11 月 16 日
2.0.8 2023 年 7 月 15 日
2.0.2 2023 年 3 月 28 日
0.1.3 2020 年 6 月 20 日

#1459 in 魔法豆

Download history 33961/week @ 2024-04-19 29675/week @ 2024-04-26 28354/week @ 2024-05-03 30913/week @ 2024-05-10 30634/week @ 2024-05-17 28324/week @ 2024-05-24 30369/week @ 2024-05-31 35377/week @ 2024-06-07 35170/week @ 2024-06-14 36295/week @ 2024-06-21 30401/week @ 2024-06-28 29831/week @ 2024-07-05 31379/week @ 2024-07-12 33141/week @ 2024-07-19 35225/week @ 2024-07-26 33342/week @ 2024-08-02

138,629 次每月下载
194 个crate中使用 (170 个直接使用)

MIT/Apache

2MB
38K SLoC

ethers-rs

完整的以太坊和 Celo Rust 库

Github Actions Telegram Chat Crates.io

警告

此库正在被弃用。有关更多信息,请参阅 #2667

快速入门

将以下内容添加到您的 Cargo.toml 中

[dependencies]
ethers = "2.0"

并将以下内容添加到您的代码中

use ethers::prelude::*;

文档

在此 或在此 查看API参考。

示例组织在 /examples 文件夹下的独立crate中。您可以通过执行以下命令运行任何示例:

# cargo run -p <example-crate-name> --example <name>
cargo run -p examples-big-numbers --example math_operations

支持兼容EVM的链

有多个活跃的链支持以太坊JSON-RPC和EVM兼容,但尚未支持 EIP-2718 类型化事务。这意味着通过ethers-rs提交给它们的交易默认情况下将具有无效的序列化。为了解决这个问题,您必须使用 legacy 功能标志

[dependencies]
ethers = { version = "2.0", features = ["legacy"] }

支持Polygon

支持Polygon和Mumbai测试网络。建议您设置 POLYGONSCAN_API_KEY 环境变量。您可以在 此处 获取一个。

支持Avalanche

支持Avalanche和富士测试网络。建议您设置环境变量SNOWTRACE_API_KEY。您可以在这里获取一个。

Optimism支持

Optimism通过optimism功能标志进行支持

[dependencies]
ethers = { version = "2.0", features = ["optimism"] }

Optimism有一个新的交易类型:存入交易,类型ID为0x7E,需要3个新字段

  • sourceHash:唯一标识存入交易来源的哈希
  • mint:在L2上铸造的ETH价值。
  • isSystemTx:如果交易不与L2区块气池交互,则为真。

注意:optimismcelo功能互斥。

Celo支持

Celo支持通过功能标志celo开启

[dependencies]
ethers = { version = "2.0", features = ["celo"] }

Celo的交易与以太坊交易不同,包含3个新字段

  • fee_currency:支付费用的货币(CELO为None,否则为地址)
  • gateway_fee_recipient:费用接收者的地址(未支付网关费用为None)
  • gateway_fee:网关费用金额(未支付网关费用为None)

该功能标志在交易请求构建器和通过JSON-RPC获取的交易中启用这些附加字段。

注意:optimismcelo功能互斥。

功能

  • 以太坊JSON-RPC客户端
  • 交互和部署智能合约
  • 类型安全的智能合约绑定代码生成
  • 查询历史事件
  • 事件监控作为Stream
  • ENS作为一等公民
  • Celo支持
  • 支持Polygon
  • 支持Avalanche
  • Optimism支持
  • Websockets / eth_subscribe
  • 硬件钱包支持
  • Parity API(tracingparity_blockWithReceipts
  • Geth TxPool API
  • WASM绑定(见注解)
  • FFI绑定(见注解)
  • 常用操作命令行界面

Websockets

Websockets支持通过功能标志ws开启

[dependencies]
ethers = { version = "2.0", features = ["ws"] }

进程间通信(IPC)

IPC支持通过功能标志ipc开启

[dependencies]
ethers = { version = "2.0", features = ["ipc"] }

HTTP安全(HTTPS)

如果您想连接到HTTPS端点,则需要启用rustlsopenssl功能标志。

启用rustls

[dependencies]
ethers = { version = "2.0", features = ["rustls"] }

启用openssl

[dependencies]
ethers = { version = "2.0", features = ["openssl"] }

关于WASM和FFI绑定的注解

您应该能够构建一个使用ethers-rs的wasm应用程序(参见示例)。如果ethers在WASM中无法编译,请提交问题。目前我们没有计划提供官方的JS/TS可访问的库接口,因为我们相信viemethers.js可以很好地满足这一需求。

同样,您应该能够构建FFI绑定到ethers-rs。如果ethers在C库格式中无法编译,请提交问题。目前我们没有计划提供官方的FFI绑定。

获取帮助

首先,看看您的答案是否可以在API文档中找到。如果答案不在那里,请尝试提交一个包含问题的问题

加入ethers-rs 电报群与社区交流!

贡献

感谢您为改进项目做出的贡献!我们非常高兴有您的加入!我们有一个贡献指南,帮助您参与ethers-rs项目。

如果您提交Pull Request,请不要忘记在变更日志中添加您的更改,确保您的代码格式正确,使用cargo +nightly fmt进行格式化,并让Clippy满意cargo clippy;您甚至可以尝试让Clippy自行修复简单问题:cargo +nightly clippy --fix

运行测试

测试需要安装以下软件

  1. solc (>=0.8.0)。我们还推荐使用svm以获得更多灵活性。
  2. anvil
  3. geth

此外,运行ethers-etherscan测试需要设置ETHERSCAN_API_KEY环境变量。您可以在这里获取一个。

使用ethers-rs的项目

致谢

如果没有以下项目的出色工作,这个库将无法实现:

大部分代码都是受他们启发并改编的,构建了一个统一且具有偏见的接口,从头开始使用async/await和std futures。

依赖关系

~24–43MB
~809K SLoC