#ethereum #celo #ethers #crypto #web3

ethers-derive-eip712

EIP-712 类型数据的派生过程宏

18 个版本 (6 个稳定版)

2.0.2 2023 年 3 月 28 日
1.5.0 2023 年 3 月 1 日
1.0.2 2022 年 11 月 27 日
0.17.0 2022 年 7 月 28 日
0.2.1 2021 年 11 月 29 日

#11 in #celo

Download history 2749/week @ 2024-04-14 2739/week @ 2024-04-21 2426/week @ 2024-04-28 2340/week @ 2024-05-05 2533/week @ 2024-05-12 1735/week @ 2024-05-19 2074/week @ 2024-05-26 1725/week @ 2024-06-02 1633/week @ 2024-06-09 2078/week @ 2024-06-16 2150/week @ 2024-06-23 2204/week @ 2024-06-30 2032/week @ 2024-07-07 1827/week @ 2024-07-14 2061/week @ 2024-07-21 1888/week @ 2024-07-28

7,902 monthly downloads
9 个 crate 中使用 (7 个直接使用)

MIT/Apache

1MB
19K SLoC

ethers-rs

一个完整的以太坊和 Celo Rust 库

Github Actions Telegram Chat Crates.io

警告 我们正在弃用 ethers-rs 以支持 alloy。有关如何使用 Alloy 的信息,请访问 书籍。有关 ethers-rs 的更多信息,请参阅 #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 兼容链支持

有许多现存的链与 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。

注意: 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绑定(见注解)
  • 常见操作的CLI

Websockets

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

[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已经很好地满足了这一需求。

同样,您应该能够构建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

运行测试

测试需要安装以下内容

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

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

使用ethers-rs的项目

鸣谢

如果没有在以下领域所做的出色工作,这个库将无法实现:

大量代码是从它们那里受到启发并进行改编的,构建了一个统一的、有见地的接口,从头开始使用async/await和std futures。

依赖项

~10–21MB
~297K SLoC