Backtest · Replay · Index

The replay layerfor Solana.

Twenty-four hours of chain history, streamed through your existing Yellowstone gRPC client. Pay per replay.

Backtesttherealchain.
Every
slot.Everybyte.

Drop-in compatible

Same client. Same proto. Different endpoint.

Sillage speaks the Yellowstone gRPC protocol as a server, unmodified. Anything you've already written against Triton, Helius, or a self-hosted Geyser plugin connects unchanged. Pass a starting slot. The stream begins there.

use yellowstone_grpc_client::GeyserGrpcClient;

let mut client = GeyserGrpcClient::build_from_shared(
    "https://sillage.sh/v1",
)?
    .x_token(Some(token))?
    .connect()
    .await?;

let (_, stream) = client
    .subscribe_with_request(Some(req.from_slot(312_840_000)))
    .await?;
Server-side filters

Filter at the server. Pay for what you read.

Yellowstone's pubkey-based filters work unchanged — narrow transactions to specific programs or accounts, narrow account streams to specific owners.

Subscription with filters
let req = SubscribeRequest {
    transactions: hashmap! {
        "swaps".to_owned() => SubscribeRequestFilterTransactions {
            vote: Some(false),
            failed: Some(false),
            account_include: vec![JUPITER_V6.into()],
            ..Default::default()
        },
    },
    accounts: hashmap! {
        "pools".to_owned() => SubscribeRequestFilterAccounts {
            owner: vec![RAYDIUM_AMM.into()],
            ..Default::default()
        },
    },
    ..Default::default()
};
Wall-clock precise

Replayed at the speed it happened.

Every message carries the timestamp it was received, to 100 microseconds. A transaction that landed 24.3ms into its slot replays 24.3ms into that slot. Intra-slot ordering, propagation gaps, the texture of real network time — all preserved.

slot 312,847,201 · captured400ms · 11 msgs
24ms
0ms400ms
0 / 11 messages · timestamps preserved to 100μs
Timestamp precision
100μs
Full firehose

Three core streams. Replayed identically.

Every message your live subscription receives is retained continuously across the full 24-hour window. No sampling. No summaries. No schema translation.

live capture · 3 core streams— msgs/sec
transactions
320/s
accounts
180/s
blocks
2.5/s
Supported message types
3and evolving
By the numbers

A specification, not a feature list.

Replay window
0hours, rolling

From the current chain tip, backward. Continuous, not calendar-day rotation.

Commitment levels
0confirmed, finalized

Processed-commitment messages aren't stored — too ephemeral to be useful at replay time.

Filter resolution
μsbefore disk read

Roaring bitmap indexes over programs, accounts, and signatures, resolved before message bytes are touched.

Storage
Zstdblock-compressed

Range-fetchable from persistent storage. A filtered replay reads only the bytes it matches.

Among the alternatives

Replay-first. Not replay as a tier.

The other providers all stream the live chain beautifully. Sillage ships the inverse: 24 hours of history, same protocol, billed per replay.

sillage.shHelius LaserStreamTriton FumaroleQuickNode
Replay window24 hours24 hours4 days~20 min
PricingPer replay$999/mo plan*$0.08/GB + planEnterprise
ProtocolYellowstone gRPCYellowstone gRPCYellowstone gRPCYellowstone gRPC
Timestamp precisionPer messageSlot-levelSlot-level
Use cases

Built for workloads that don't need to be always-on.

Backtesting

Replay yesterday's chain through your strategy. Tune PnL without burning a streaming subscription.

Indexing

Backfill a new index from any slot in the last 24 hours. No re-sync from snapshot.

Research

Query historical flow patterns. Same Yellowstone protocol, paid only when you read.

Reorg recovery

Replay a window from before the reorg to verify state — no need to keep raw history yourself.

Early access

Get an endpoint before we open the door.

The first cohort opens with 24-hour replay of transactions, accounts, and block streams. Builders working on bots, indexers, and research get priority. Shreds replay and longer windows are next.

No spam. We'll email when your endpoint is provisioned.