Перейти к основному содержанию

Documentation Index

Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt

Use this file to discover all available pages before exploring further.

На этапе после прототипа — демон, индексер, торговый бот или долгоживущий worker агента — берите Rust SDK. Вместо сырых HTTP, gRPC-каналов и WebSocket SDK сам управляет жизненным циклом, аутентификацией, повторами, failover и переподключением за простым API.
Для интерактивных агентов в Claude Code или Cursor лучше MCP-сервер. Для скриптов и CI — CLI. SDK — для кода, который агенты пишут: продакшен-сервисы, работающие сами по себе.

Установка

cargo add orbitflare-sdk                          # RPC only
cargo add orbitflare-sdk --features ws            # + WebSocket
cargo add orbitflare-sdk --features grpc          # + Yellowstone gRPC
cargo add orbitflare-sdk --features jetstream     # + Jetstream
Комбинируйте фичи: например --features "ws grpc" для индексера с двумя поверхностями.

Что входит

ServiceWhat it does
RPCJSON-RPC client with typed helpers for common Solana methods, plus raw escape hatches
WebSocketSubscriptions for accounts, logs, slots, signatures with auto-resubscribe on reconnect
gRPC (Yellowstone)Yellowstone Geyser streaming for transactions, accounts, slots, and blocks. YAML config or programmatic filters
JetStreamOrbitFlare’s decoded shreds delivered as gRPC streams. Same client pattern as Yellowstone, different proto

Переменные окружения

SDK подхватывает эндпоинты из окружения, если вы не задаёте их явно. Рекомендуемый паттерн для кода от агента: без хардкода URL и ключей — один и тот же бинарь для регионов и сетей.
VariableUsed byPurpose
ORBITFLARE_LICENSE_KEYRPC, WebSocketAPI key appended to endpoint URLs
ORBITFLARE_RPC_URLRPCDefault endpoint if .url() is not called
ORBITFLARE_WS_URLWebSocketDefault endpoint if .url() is not called
ORBITFLARE_GRPC_URLgRPCDefault endpoint if .url() is not called
ORBITFLARE_JETSTREAM_URLJetStreamDefault endpoint if .url() is not called

Быстрый пример

Минимальный RPC-агент: эндпоинт из окружения, баланс с автоматическим retry/failover:
use orbitflare_sdk::{RpcClientBuilder, Result};

#[tokio::main]
async fn main() -> Result<()> {
    let client = RpcClientBuilder::new().build()?;     // reads ORBITFLARE_RPC_URL + LICENSE_KEY
    let lamports = client.get_balance("Gh9ZwEm...").await?;
    println!("{} SOL", lamports as f64 / 1e9);
    Ok(())
}
С явными резервными регионами:
let client = RpcClientBuilder::new()
    .urls(&[
        "http://ny.rpc.orbitflare.com",
        "http://fra.rpc.orbitflare.com",
        "http://ams.rpc.orbitflare.com",
    ])
    .build()?;
Первый URL — основной, остальные — failover по порядку при ошибке.

Стриминг через Yellowstone gRPC

use orbitflare_sdk::{GeyserClientBuilder, Result};

#[tokio::main]
async fn main() -> Result<()> {
    let client = GeyserClientBuilder::new()
        .url("http://fra.rpc.orbitflare.com:10000")
        .build()
        .await?;

    let mut stream = client.subscribe_yaml("stream.yml")?;
    while let Some(update) = stream.next().await {
        // process update
    }
    Ok(())
}
subscribe_yaml читает фильтры из YAML; для программных фильтров — client.subscribe(SubscribeRequest { .. }). Клиент Jetstream зеркалит этот паттерн: замените GeyserClientBuilder на JetstreamClientBuilder.

Зачем SDK вместо сырого HTTP

Для продакшен-кода от агента SDK закрывает типичные ошибки:
  • Retries with exponential backoff, настраивается на клиент
  • Multi-region failover: основной упал — перебор резервов по порядку
  • Auth injection: лицензионный ключ добавляется к каждому запросу, не хранится в строке эндпоинта
  • WebSocket reconnect: подписки автоматически восстанавливаются после разрыва
  • gRPC channel management: keepalive, reconnect, backoff
  • Typed responses: распространённые методы десериализуются в структуры Rust, с сырыми обходными путями для остального
Попросив агента интеграцию OrbitFlare через SDK, вы получите компактный и устойчивый код.

Источники