Expand description
Blockchain client implementations.
Provides abstractions and concrete clients for interacting with
blockchain networks. See ChainClient for the common
interface and EthereumClient for EVM chain support.
§Blockchain Client Module
This module provides abstractions and implementations for interacting
with various blockchain networks. It defines a common ChainClient trait
that all chain-specific implementations must satisfy.
§Capabilities
All chain clients support:
- Balance queries with optional USD valuation via DexScreener
- Transaction lookup by hash/signature with full details
- Transaction history for addresses with pagination
- Token balances (ERC-20, SPL, TRC-20) for portfolio tracking
§Supported Chains
§EVM-Compatible Chains
- Ethereum - Ethereum Mainnet (via Etherscan V2 API)
- Polygon - Polygon PoS
- Arbitrum - Arbitrum One
- Optimism - Optimism Mainnet
- Base - Base (Coinbase L2)
- BSC - BNB Smart Chain (Binance)
- Aegis - Aegis/Wraith blockchain (JSON-RPC)
§Non-EVM Chains
- Solana - Solana Mainnet (JSON-RPC with
jsonParsedencoding) - Tron - Tron Mainnet (TronGrid API, base58check address validation)
§DEX Data
- DexScreener - Token prices, volume, liquidity, and trading data across all DEX pairs
§Usage
§Ethereum/EVM Client
use scope::chains::{ChainClient, EthereumClient};
use scope::Config;
#[tokio::main]
async fn main() -> scope::Result<()> {
let config = Config::load(None)?;
let client = EthereumClient::new(&config.chains)?;
let balance = client.get_balance("0x742d35Cc6634C0532925a3b844Bc9e7595f1b3c2").await?;
println!("Balance: {} ETH", balance.formatted);
Ok(())
}§Solana Client
use scope::chains::SolanaClient;
use scope::Config;
#[tokio::main]
async fn main() -> scope::Result<()> {
let config = Config::load(None)?;
let client = SolanaClient::new(&config.chains)?;
let balance = client.get_balance("DRpbCBMxVnDK7maPM5tGv6MvB3v1sRMC86PZ8okm21hy").await?;
println!("Balance: {} SOL", balance.formatted);
Ok(())
}§Tron Client
use scope::chains::TronClient;
use scope::Config;
#[tokio::main]
async fn main() -> scope::Result<()> {
let config = Config::load(None)?;
let client = TronClient::new(&config.chains)?;
let balance = client.get_balance("TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf").await?;
println!("Balance: {} TRX", balance.formatted);
Ok(())
}Re-exports§
pub use dex::DexClient;pub use dex::DexDataSource;pub use dex::TokenSearchResult;pub use ethereum::ApiType;pub use ethereum::EthereumClient;pub use solana::SolanaClient;pub use solana::validate_solana_address;pub use solana::validate_solana_signature;pub use tron::TronClient;pub use tron::validate_tron_address;pub use tron::validate_tron_tx_hash;
Modules§
Structs§
- Balance
- Balance representation with multiple formats.
- Default
Client Factory - Default factory that creates real chain clients from configuration.
- DexPair
- DEX trading pair information.
- Holder
Count Point - A holder count data point for historical charting.
- Price
Point - A price data point for historical charting.
- Token
- Token information.
- Token
Analytics - Comprehensive token analytics data.
- Token
Balance - Token balance for an address.
- Token
Holder - A token holder with their balance and percentage of supply.
- Token
Social - Social media link for a token.
- Transaction
- Transaction information.
- Volume
Point - A volume data point for historical charting.
Traits§
- Chain
Client - Trait defining common blockchain client operations.
- Chain
Client Factory - Factory trait for creating chain clients and DEX data sources.
Functions§
- infer_
chain_ from_ address - Infers the blockchain from an address format.
- infer_
chain_ from_ hash - Infers the blockchain from a transaction hash format.