18 个版本 (6 个稳定版)
2.0.2 | 2023 年 3 月 28 日 |
---|---|
1.5.0 |
|
1.0.2 | 2022 年 11 月 27 日 |
0.17.0 | 2022 年 7 月 28 日 |
0.2.1 | 2021 年 11 月 29 日 |
#11 in #celo
7,902 monthly downloads
在 9 个 crate 中使用 (7 个直接使用)
1MB
19K SLoC
ethers-rs
一个完整的以太坊和 Celo Rust 库
警告 我们正在弃用 ethers-rs 以支持 alloy。有关如何使用 Alloy 的信息,请访问 书籍。有关 ethers-rs 的更多信息,请参阅 #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 兼容链支持
有许多现存的链与 Ethereum JSON-RPC 和 EVM 兼容,但尚未支持 EIP-2718 类型交易。这意味着在 ethers-rs 中默认提交给它们的交易将具有无效的序列化。为了解决这个问题,您必须使用 legacy
功能标志
[dependencies]
ethers = { version = "2.0", features = ["legacy"] }
Polygon 支持
支持 Polygon 和 Mumbai 测试网络。建议您设置 POLYGONSCAN_API_KEY
环境变量。您可以在 此处 获取一个。
Avalanche 支持
支持 Avalanche 和 Fuji 测试网络。建议您设置 SNOWTRACE_API_KEY
环境变量。您可以在 此处 获取一个。
Optimism 支持
Optimism 通过 optimism
功能标志支持
[dependencies]
ethers = { version = "2.0", features = ["optimism"] }
乐观主义有了新的交易类型:带有类型ID 0x7E
的存入交易,需要3个新字段
sourceHash
:唯一标识存入交易起源的哈希mint
:在L2上铸造的ETH值。isSystemTx
:如果交易不与L2区块气体池交互,则为True。
注意: 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绑定(见注解)
- 常见操作的CLI
Websockets
通过功能标志ws
开启Websockets支持
[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已经很好地满足了这一需求。
同样,您应该能够构建ethers-rs的FFI绑定。如果ethers在C库格式中无法编译,请提交问题。目前没有计划提供官方的FFI绑定。
获取帮助
首先,查看您的问题是否可以在API文档中找到。如果答案不在那里,请尝试提交问题。
加入ethers-rs电报群,与社区交流!
贡献
感谢您的帮助,让项目得到改进!我们非常高兴能有您!我们有一个贡献指南,帮助您参与ethers-rs项目。
如果您发起一个Pull Request,请务必在CHANGELOG中添加您的更改,确保您的代码使用cargo +nightly fmt
进行了适当的格式化,并且Clippy没有问题cargo clippy
;您甚至可以尝试让Clippy自己修复简单的问题:cargo +nightly clippy --fix
运行测试
测试需要安装以下内容
此外,必须设置ETHERSCAN_API_KEY
环境变量以运行ethers-etherscan
测试。您可以在这里获得一个。
使用ethers-rs的项目
- Yield Liquidator:Yield Protocol的清算器
- MEV Inspect:矿工可提取价值检查器
- Ethers CCIP-Read:Ethers中间件,支持ENS CCIP-Read
- Ethers Flashbots:Ethers中间件,用于Flashbots
- Ethers Fireblocks:Ethers中间件和签名者,用于Fireblocks的API
- Celo Threshold BLS DKG:用于将Celo用作Joint-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。
依赖项
~10–21MB
~297K SLoC