Crate alchemy_api

source ·
Expand description

A high-level binding for Alchemy Enhanced APIs, written in Rust.

Alchemy provides a suite of web3 APIs that dramatically simplify and optimize common request patterns to make your life as a developer easier.

Access the blockchain like never before with Alchemy’s continually expanding Enhanced API suite, and web3 developer tools! Query NFTs by the user, trace transactions, get real-time notifications in your dApp, debug smart contracts faster, and do more with Alchemy’s supported endpoints.

This crate uses the reqwest crate for a convenient, higher-level HTTP Client, for request and response, to and from Alchemy, and serde for serialize and deserialize from and to appropriate data format.

Examples

Let’s start out creating an AddressActivity webhook.

use alchemy_api::{
    alchemy::Alchemy,
    api::notify::{CreateWebhook, WebhookResponse, WebhookType},
    cores::query::Query,
};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let client = Alchemy::new(&std::env::var("ALCHEMY_TOKEN")?);

    // Create a simple endpoint.
    let endpoint = CreateWebhook::builder()
        .webhook_url(std::env::var("WEBHOOK_URL")?)
        .webhook_type(WebhookType::AddressActivity)
        .addresses(vec![std::env::var("ADDRESS")?.parse()?])
        .build()?;
    println!("{:?}", endpoint);

    // Call the endpoint. The return type decides how to represent the value.
    let webhook: WebhookResponse = endpoint.query(&client).await?;
    println!("webhook: {:?}", webhook);

    anyhow::Ok(())
}

For more examples, take a look at the examples/ directory.

Modules

  • Alchemy client module, contains information about Alchemy connection.
  • API module, contains list of API supported by Alchemy.
  • Core module, contains some helpful generic traits for endpoint and request.
  • Types module, contains some helpers type associated with the data Alchemy provided.