42个版本 (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日

#1110神奇豆子

Download history 62291/week @ 2024-03-14 59333/week @ 2024-03-21 52383/week @ 2024-03-28 50451/week @ 2024-04-04 51481/week @ 2024-04-11 48502/week @ 2024-04-18 44836/week @ 2024-04-25 41903/week @ 2024-05-02 46207/week @ 2024-05-09 44169/week @ 2024-05-16 40626/week @ 2024-05-23 42260/week @ 2024-05-30 47894/week @ 2024-06-06 48312/week @ 2024-06-13 49441/week @ 2024-06-20 37682/week @ 2024-06-27

190,916 每月下载量
用于 228 个crate (39直接)

MIT/Apache

1.5MB
27K SLoC

ethers-providers

Ethereum节点交互客户端。

此crate提供了符合Ethereum JSON-RPC的异步客户端。

更多信息请参阅书籍

警告

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

WebSocket

此crate通过tokio-tungstenite支持WebSocket。如果您想使用WebSocket,请确保已启用ws功能。

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

进程间通信(IPC)

此crate支持通过Unix套接字和Windows命名管道进行进程间通信。如果您想使用IPC,请确保已启用ipc功能。

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

Ethereum名称服务

该提供者还可以用于将Ethereum名称服务 (ENS) 名称解析为地址(反之亦然)。默认的ENS地址为0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e,可以通过提供者的ens方法进行覆盖。

示例

# use ethers_core::types::Address;
# use ethers_providers::{Provider, Http, Middleware, Ws};
# async fn foo() -> Result<(), Box<dyn std::error::Error>> {
let provider = Provider::<Http>::try_from("https://eth.llamarpc.com")?;

let block = provider.get_block(100u64).await?;
println!("Got block: {}", serde_json::to_string(&block)?);

let addr = "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359".parse::<Address>()?;
let code = provider.get_code(addr, None).await?;
println!("Got code: {}", serde_json::to_string(&code)?);
# Ok(())
# }

使用ENS

# use ethers_providers::{Provider, Http, Middleware};
# async fn foo() -> Result<(), Box<dyn std::error::Error>> {
let provider = Provider::<Http>::try_from("https://eth.llamarpc.com")?;

// Resolve ENS name to Address
let name = "vitalik.eth";
let address = provider.resolve_name(name).await?;

// Lookup ENS name given Address
let resolved_name = provider.lookup_address(address).await?;
assert_eq!(name, resolved_name);

/// Lookup ENS field
let url = "https://vitalik.ca".to_string();
let resolved_url = provider.resolve_field(name, "url").await?;
assert_eq!(url, resolved_url);

/// Lookup and resolve ENS avatar
let avatar = "https://ipfs.io/ipfs/QmSP4nq9fnN9dAiCj42ug9Wa79rqmQerZXZch82VqpiH7U/image.gif".to_string();
let resolved_avatar = provider.resolve_avatar(name).await?;
assert_eq!(avatar, resolved_avatar.to_string());
# Ok(())
# }

依赖项

~20–37MB
~687K SLoC