#ethereum #ethers #celo #web3

cbrzn-ethers-core

ethers-rs crate的核心结构

1 个稳定版本

1.0.2 2023年2月27日

#12#celo

MIT/Apache

1MB
18K SLoC

Ethereum类型、加密和实用工具。

建议使用 utilstypesabi 的重导出,而不是 core 模块,以简化你的导入。

该库为Ethereum的主要数据类型提供了类型定义,同时还提供了与其他Ethereum生态系统交互的实用工具。

对以"ethereum"前缀的消息进行签名

Ethereum中的签名是通过首先使用以下命令对消息进行前缀处理:"\x19Ethereum Signed Message:\n" + message.length,然后对结果哈希进行签名。

# async fn foo() -> Result<(), Box<dyn std::error::Error>> {
use ethers::signers::{Signer, LocalWallet};

let message = "Some data";
let wallet = LocalWallet::new(&mut rand::thread_rng());

// Sign the message
let signature = wallet.sign_message(message).await?;

// Recover the signer from the message
let recovered = signature.recover(message)?;

assert_eq!(recovered, wallet.address());
# Ok(())
# }

实用工具

该crate提供了通过使用 ganache-cliGanacheBuilder 结构体来启动本地Ethereum测试网的实用工具。

特性

  • ["eip712"] | 提供了用于对派生结构体中的类型数据进行EIP-712编码的Eip712特质

ABI编码和解码

该crate在 abi 模块下重导出 ethabi crate的函数,以及为了方便而重导出 secp256k1rand crate。

依赖关系

~10–22MB
~313K SLoC