No description
| .forgejo/workflows | ||
| examples | ||
| rhaiexamples | ||
| scripts | ||
| specs | ||
| src | ||
| .gitignore | ||
| build.rs | ||
| build.sh | ||
| build_package.sh | ||
| build_publish.sh | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
Mycelium TFChain Client
A Rust client library for interacting with the ThreeFold Grid infrastructure.
Install Binary
Quick Install (recommended)
curl -sSL https://forge.ourworld.tf/geomind_code/tfchain_client/raw/branch/main/scripts/install.sh | bash
Usage
# Run a Rhai script
tfchain script.rhai
# Show help
tfchain --help
or just call rhai script it has shebang on top
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 |
to play
make sure your key is in env:
export TFCHAIN_KEY=...
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