Record · Replay · Reproduce

Solana를 위한리플레이 레이어.

Record the Geyser stream once. Replay it as many times as you need, through your existing Yellowstone gRPC client, paced to the original wall clock. Apache-2.0.

slot ──────────────────

실제체인으로백테스트하세요.
모든
슬롯.모든바이트.

드롭인 호환

같은 클라이언트. 같은 프로토콜. 다른 엔드포인트.

sillage.sh는 Yellowstone gRPC 프로토콜을 변경 없이 서버로서 그대로 제공합니다. Triton, Helius, 자체 호스팅 Geyser 플러그인용으로 작성한 코드가 그대로 동작합니다. 시작 슬롯만 전달하면, 스트림이 그 지점부터 시작됩니다.

use yellowstone_grpc_client::GeyserGrpcClient;

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

let (_, stream) = client
    .subscribe_with_request(Some(req.from_slot(312_840_000)))
    .await?;
서버 사이드 필터

Filter at the server. Read only what matches.

Yellowstone's pubkey-based filters work unchanged — narrow transactions to specific programs or accounts, narrow account streams to specific owners. Roaring-bitmap indexes resolve the filter before a single compressed byte is decoded.

필터가 적용된 구독
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()
};
월클락 정밀도

실제 발생한 속도 그대로 리플레이.

모든 메시지는 수신된 시각을 100마이크로초 단위까지 기록합니다. 슬롯 내 24.3ms에 도착한 트랜잭션은 리플레이에서도 정확히 24.3ms에 재현됩니다. 슬롯 내부 순서, 전파 지연, 실제 네트워크 시간의 결 — 모두 보존됩니다.

슬롯 312,847,201 · 캡처됨400ms · 11 메시지
24ms
0ms400ms
0 / 11 메시지 · 타임스탬프 정밀도 100μs
타임스탬프 정밀도
100μs
풀 파이어호스

세 가지 핵심 스트림. 동일하게 리플레이.

Every message your live subscription receives is recorded and replayed identically. No sampling. No summaries. No schema translation.

라이브 캡처 · 3개 핵심 스트림— msgs/sec
transactions
320/s
accounts
180/s
blocks
2.5/s
지원 메시지 타입
3지속적으로 확장 중
수치로 보기

기능 목록이 아닌, 스펙입니다.

Tests
0passing, in CI

Every push runs fmt, clippy at -D warnings, and the full suite — including a producer built from the format spec alone.

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.

대안들 사이에서

리플레이 퍼스트. 리플레이를 티어로 제공하지 않음.

The other providers all stream the live chain beautifully. Sillage ships the inverse: the stream as it was delivered, recorded and played back through the same protocol — and you can run the whole thing yourself.

sillage.shHelius LaserStreamTriton FumaroleQuickNode
Replay windowWhatever you record24 hours4 days~20 min
LicenseApache-2.0ProprietaryProprietaryProprietary
ProtocolYellowstone gRPCYellowstone gRPCYellowstone gRPCYellowstone gRPC
Timestamp precisionPer messageSlot-levelSlot-level
사용 사례

Built for workloads that need the same input twice.

백테스팅

Replay a recorded window through your strategy. Tune PnL against real mainnet traffic without holding a live subscription open.

Solana 백테스팅 자세히 보기
인덱싱

Backfill a new index from any slot inside a window you have recorded. No re-sync from snapshot.

리서치

Query historical flow patterns. Same Yellowstone protocol, replayed as many times as the question needs.

리오그 복구

리오그 이전 시점의 윈도우를 리플레이하여 상태 검증 — 원시 히스토리를 직접 보관할 필요 없음.

Get started

Run it yourself, or try the live endpoint.

Sillage is Apache-2.0 and self-hostable end to end. Record your own window from any Geyser source, or point an unmodified client at the demo endpoint to see replay working before you set anything up.

Path 1

Clone and build

Rust stable and a checkout. Point the writer at any Geyser source to record, then serve the result back with the reader.

git clone https://github.com/sunkuu7/sillage
cd sillage && cargo build --release
Path 2

Use the live endpoint

replay.sillage.sh serves a recorded mainnet window over TLS. Change the URL in a Yellowstone client you already have and it works unmodified.

new Client("https://replay.sillage.sh", token, {})
Path 3Soon

Container images

Published images for the reader and writer, so a replaying endpoint is one command with no toolchain to install.

docker run sillage/reader
View on GitHub

Apache-2.0 · no account, no billing, nothing gated.