mycelium_tfchain_client

Crates.iomycelium_tfchain_client
lib.rsmycelium_tfchain_client
version0.1.0
created_at2025-12-31 13:58:43.712828+00
updated_at2025-12-31 13:58:43.712828+00
descriptionA Rust client for interacting with TFChain using dynamic metadata (no compile-time codegen required)
homepage
repositoryhttps://github.com/threefoldtech/tfchain_client
max_upload_size
id2014758
size454,927
kristof de spiegeleer (despiegk)

documentation

https://docs.rs/mycelium_tfchain_client

README

Mycelium TFChain Client

A Rust client library for interacting with the ThreeFold Grid infrastructure.

Modules

This library provides two main modules:

Module Description
tfchain TFChain blockchain client with dynamic metadata support
explorer TFGrid Explorer API client with optional Redis caching

Installation

Add to your Cargo.toml:

[dependencies]
mycelium_tfchain_client = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }

Quick Start

TFChain Client

Query the blockchain directly for twins, farms, nodes, and balances:

use mycelium_tfchain_client::{Client, KeyPair, KeyType};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let keypair = KeyPair::from_phrase(KeyType::Sr25519, "your mnemonic here", None)?;
    let client = Client::new("wss://tfchain.grid.tf:443").await?;

    if let Some(info) = client.get_balance(&keypair.account_id()).await? {
        println!("Balance: {} TFT", info.free as f64 / 10_000_000.0);
    }

    Ok(())
}

Explorer Client

Query the Grid Proxy API for nodes, farms, and grid statistics:

use mycelium_tfchain_client::explorer::GridExplorerBuilder;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let explorer = GridExplorerBuilder::new().mainnet().build()?;

    let stats = explorer.get_stats().await?;
    println!("Grid has {} nodes", stats.nodes);

    // Find nodes for a VM with 4 cores, 8GB RAM, 100GB disk
    let nodes = explorer.find_nodes_for_vm(4, 8, 100, Some(5)).await?;
    for node in nodes {
        println!("Node {} - ${:.4}/hr", node.id, node.price_usd);
    }

    Ok(())
}

Examples

Run the examples:

# TFChain client example (requires TFCHAIN_SECRET env var)
cargo run --example mainnet

# Explorer client examples
cargo run --example tfgrid3-explorer-client
cargo run --example tfgrid3-explorer-client-highlevel

Network Endpoints

TFChain (WebSocket)

Network URL
Mainnet wss://tfchain.grid.tf:443
Testnet wss://tfchain.test.grid.tf:443
Devnet wss://tfchain.dev.grid.tf:443

Grid Proxy (HTTP)

Network URL
Mainnet https://gridproxy.grid.tf
Testnet https://gridproxy.test.grid.tf
Devnet https://gridproxy.dev.grid.tf

License

Apache-2.0

Commit count: 0

cargo fmt