Backtesting Solana

Kiểm thử chiến lượctrên chain đã thực sự xảy ra.

Replay 24 giờ gần nhất của Solana mainnet qua client Yellowstone gRPC bạn đang dùng. Cùng giao thức, cùng thứ tự, độ chính xác 100μs. Trả phí theo lượt replay.

Vì sao cần replay lịch sử

Mainnet là backtest trung thực duy nhất.

Devnet không có MEV, không có nghẽn, không có đối thủ thật. Simulator tự xây trượt khỏi hành vi validator ngay khi một program mới chạm vào một edge case mới.

sillage.sh giữ 24 giờ mainnet — mọi account write, mọi transaction, mọi block — và stream lại qua cùng giao thức mà bot live của bạn đang dùng. Chain đã thực sự xảy ra, theo yêu cầu, đúng timing nó đã xảy ra.

Cách hoạt động

Ba bước từ một subscription live.

  1. 01
    Trỏ client tới endpoint của sillage.

    Cùng Yellowstone gRPC, cùng SubscribeRequest, cùng filter. sillage.sh phục vụ giao thức như một server.

  2. 02
    Truyền một slot bắt đầu trong 24h qua.

    Stream khởi chạy từ đó và replay đúng tốc độ thực, thứ tự trong slot được giữ chính xác tới 100 microsecond.

  3. 03
    Lặp lại mà không đốt plan streaming.

    Trả phí theo lượt replay. Chạy lại cửa sổ hôm qua bao nhiêu lần tùy vòng tuning của bạn cần.

Drop-in

yellowstone-grpc-client, không đổi.

Chỉ endpoint và slot bắt đầu thay đổi. SubscribeRequest, filter và xử lý message của bạn giữ nguyên.

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

let req = SubscribeRequest {
    // any slot within the last 24 hours
    from_slot: Some(312_847_201),
    transactions: hashmap! {
        "swaps".into() => SubscribeRequestFilterTransactions {
            account_include: vec![JUPITER_V6.into()],
            ..Default::default()
        },
    },
    ..Default::default()
};

let (_, mut stream) =
    client.subscribe_with_request(Some(req)).await?;

while let Some(msg) = stream.next().await {
    handle(msg?);
}
Câu hỏi

Những gì mọi người hỏi trước khi đăng ký.

Làm sao để có endpoint?

Đăng ký waitlist. 100 thành viên đầu nhận replay 24h miễn phí; những người khác nhận endpoint khi cohort mở.

Tôi có phải đổi code client không?

Không. sillage.sh phục vụ giao thức Yellowstone gRPC như một server. Trỏ client hiện tại tới endpoint mới và truyền slot bắt đầu — SubscribeRequest, filter và xử lý message của bạn chạy nguyên trạng.

Replay chính xác đến mức nào?

Mỗi message mang timestamp lúc nó được nhận trong live capture, giữ chính xác tới 100 microsecond. Thứ tự trong slot, độ trễ lan truyền và kết cấu thời gian mạng thực đều replay đúng như đã xảy ra.

Vì sao cửa sổ 24 giờ?

Từ chain tip hiện tại trở về trước, rolling liên tục. Các workload chúng tôi phục vụ — backtesting, backfill indexer, kiểm tra reorg — đều sống trong cửa sổ này. Vượt quá 24h, replay không còn xứng đáng chi phí.

Khác gì so với tự chạy RPC của riêng tôi?

RPC cho bạn các query theo yêu cầu; nó không cho bạn một stream replay-được, có thứ tự thời gian, của mọi account write đã xảy ra hôm qua. sillage.sh thì có, qua chính giao thức mà bot bạn đã wired sẵn.

So với một provider Yellowstone live thì sao?

Helius, Triton, QuickNode đều stream chain tiến tới rất tốt. Không ai gửi 24 giờ lịch sử qua cùng giao thức và tính phí theo lượt replay. Đó là phía ngược lại mà sillage.sh được dựng nên.

Backtest trên chain thật.

Lấy endpoint trước khi chúng tôi mở cửa.