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 魔法豆
138,629 次每月下载
在 194 个crate中使用 (170 个直接使用)
2MB
38K SLoC
ethers-rs
完整的以太坊和 Celo Rust 库
警告
此库正在被弃用。有关更多信息,请参阅 #2667。
快速入门
将以下内容添加到您的 Cargo.toml 中
[dependencies]
ethers = "2.0"
并将以下内容添加到您的代码中
use ethers::prelude::*;
文档
示例组织在 /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区块气池交互,则为真。
注意:optimism
和celo
功能互斥。
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获取的交易中启用这些附加字段。
注意:optimism
和celo
功能互斥。
功能
- 以太坊JSON-RPC客户端
- 交互和部署智能合约
- 类型安全的智能合约绑定代码生成
- 查询历史事件
- 事件监控作为
Stream
- ENS作为一等公民
- Celo支持
- 支持Polygon
- 支持Avalanche
- Optimism支持
- Websockets /
eth_subscribe
- 硬件钱包支持
- Parity API(
tracing
、parity_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端点,则需要启用rustls
或openssl
功能标志。
启用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可访问的库接口,因为我们相信viem或ethers.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
运行测试
测试需要安装以下软件
此外,运行ethers-etherscan
测试需要设置ETHERSCAN_API_KEY
环境变量。您可以在这里获取一个。
使用ethers-rs的项目
- Yield Liquidator:Yield Protocol的清算器
- MEV Inspect:矿工可提取价值检查器
- Ethers CCIP-Read:支持ENS CCIP-Read的Ethers中间件
- Ethers Flashbots:用于Flashbots的Ethers中间件
- Ethers Fireblocks:用于Fireblocks API的Ethers中间件和签名者
- Celo Threshold BLS DKG:使用Celo作为联合Feldman BLS DKG数据可用性网络的CLI
- Celo Plumo Prover:从链上数据创建Celo的超轻客户端证明
- Celo SNARK Setup Coordinator:执行流水线Groth16 SNARK设置的协调器
- ERC-4337 Bundler:账户抽象(ERC-4337)捆绑器
- zkSync Withdrawal Finalizer:从zkSync Era到L1的提款最终化器
致谢
如果没有以下项目的出色工作,这个库将无法实现:
大部分代码都是受他们启发并改编的,构建了一个统一且具有偏见的接口,从头开始使用async/await和std futures。
依赖关系
~24–43MB
~809K SLoC