diff --git a/Cargo.toml b/Cargo.toml index 7c24f6d..7d70cd0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,8 +95,9 @@ significant_drop_tightening = "allow" needless_return = "allow" [workspace.dependencies] -alloy = { version = "1.0.41", features = [ +alloy = { version = "1.1.0", features = [ "eips", + "ens", "full", "json-rpc", "node-bindings", diff --git a/examples/ens/Cargo.toml b/examples/ens/Cargo.toml new file mode 100644 index 0000000..bd51e6d --- /dev/null +++ b/examples/ens/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "examples-ens" +publish.workspace = true +version.workspace = true +edition.workspace = true +rust-version.workspace = true +authors.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +[lints] +workspace = true + +[dev-dependencies] +alloy.workspace = true + +eyre.workspace = true +futures-util.workspace = true +tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } diff --git a/examples/ens/examples/address_lookup.rs b/examples/ens/examples/address_lookup.rs new file mode 100644 index 0000000..4f7d8fe --- /dev/null +++ b/examples/ens/examples/address_lookup.rs @@ -0,0 +1,20 @@ +//! Example of looking up ENS names from Ethereum addresses. +use alloy::{ens::ProviderEnsExt, primitives::address, providers::ProviderBuilder}; +use eyre::Result; + +#[tokio::main] +async fn main() -> Result<()> { + // Create a provider. + let rpc_url = "https://reth-ethereum.ithaca.xyz/rpc".parse()?; + let provider = ProviderBuilder::new().connect_http(rpc_url); + + // Vitalik's Ethereum address. + let vitalik_address = address!("0xd8da6bf26964af9d7eed9e03e53415d37aa96045"); + + // Perform reverse ENS lookup to get the ENS name for the address. + let ens_name = provider.lookup_address(&vitalik_address).await?; + + println!("Address {vitalik_address} resolves to: {ens_name:?}"); + + Ok(()) +} diff --git a/examples/ens/examples/name_resolution.rs b/examples/ens/examples/name_resolution.rs new file mode 100644 index 0000000..85685d7 --- /dev/null +++ b/examples/ens/examples/name_resolution.rs @@ -0,0 +1,18 @@ +//! Example of resolving ENS names to Ethereum addresses. + +use alloy::{ens::ProviderEnsExt, providers::ProviderBuilder}; +use eyre::Result; + +#[tokio::main] +async fn main() -> Result<()> { + // Create a provider. + let rpc_url = "https://reth-ethereum.ithaca.xyz/rpc".parse()?; + let provider = ProviderBuilder::new().connect_http(rpc_url); + + // Resolve the ENS name "vitalik.eth" to its Ethereum address. + let address = provider.resolve_name("vitalik.eth").await?; + + println!("vitalik.eth resolves to: {address:?}"); + + Ok(()) +}