Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Aug 11, 2023. It is now read-only.

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

AltStyle によって変換されたページ (->オリジナル) /