Skip to content
This repository has been archived by the owner on Aug 11, 2023. It is now read-only.
/ alchemy-rs Public archive

Minimal ethers-rs wrappers for the Alchemy API built in pure Rust.

License

Notifications You must be signed in to change notification settings

refcell/alchemy-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

alchemy-rs • ci license crates.io

Minimal ethers-rs wrappers for the Alchemy API built in pure Rust.

Getting Started

Add the alchemy-rs crate to your project:

alchemy_rs = "0.1.0"

Usage

alchemy-rs is a minimal ethers-rs wrapper for the Alchemy API built in pure rust.

The AlchemyManager is the main entry point for interacting with the Alchemy API. It is initializable with an Alchemy API key and a Chain. Alchemy supports the following chains: ...

Examples

Listening to pending transactions using alchemy's alchemy_pendingTransactions method is demonstrated below.

use std::str::FromStr;
use std::env;

use alchemy_rs::prelude::*;

async {
    // Read an alchemy websocket api key from the `ALCHEMY_API_KEY` environment variable
    let api_key = env::var("ALCHEMY_API_KEY").expect("ALCHEMY_API_KEY must be set");

    // Create the AlchemyManager
    let mut manager = AlchemyManager::new(&format!("wss://eth-mainnet.g.alchemy.com/v2/{}", api_key), None);

    // Connect to the websocket
    let _ = manager.connect().await.unwrap();

    // Listen to _pending_ transactions to the USDT address on mainnet
    // (there should be a lot of these!)
    let usdt_address = Address::from_str("dac17f958d2ee523a2206206994597c13d831ec7").unwrap();

    // Try to subscribe to pending transactions
    let sub_id = match manager.subscribe(Some(usdt_address), None).await {
        Ok(id) => id,
        Err(e) => {
            println!("Error subscribing to pending transactions: {:?}", e);
            return;
        }
    };

    // Now we can grab items from the stream
    let item: AlchemySocketMessageResponse;
    loop {
        match manager.receive(sub_id).await {
            Ok(i) => {
                item = i;
                break;
            },
            Err(e) => {
                println!("Error receiving item: {:?}", e);
                return;
            }
        }
    }

   // Print the next item
   println!("Received pending transaction from the stream: {:?}", item);
};

Safety

Warning

This is experimental software and is provided on an "as is" and "as available" basis. Expect rapid iteration and use at your own risk.

License

MIT, but go crazy :P

Acknowledgements

About

Minimal ethers-rs wrappers for the Alchemy API built in pure Rust.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages