For the complete documentation index, see llms.txt. This page is also available as Markdown.

Rust 参考

Rust 参考

simulator-client 和 simulator-api 这两个 crate 为 Termina 模拟器提供原生 Rust 接口,适合希望将回测直接集成到 Rust 代码中、而不是使用 sim CLI 的团队。

  • simulator-client 是高层异步客户端。它封装了 WebSocket 协议,并为常见工作流提供易用的构建器:创建会话、推进 slot、注入交易以及读取账户状态。

  • simulator-api 定义了原始协议类型(请求/响应结构体、错误变体、会话参数)。如果需要直接访问传输格式,或想实现自己的客户端,可以使用它。

完整的端到端示例请参阅入门代码仓库。

安装

[dependencies]
simulator-client = "0.23"
simulator-api = "0.23" # 仅在需要协议类型时添加(例如构建自定义客户端)

示例

可用 slot

创建会话之前,请先确认要回测的 slot 范围可用。

use simulator_client::BacktestClient;

let client = BacktestClient::builder()
    .url("wss://simulator.termina.technology/backtest")
    .api_key(api_key)
    .build();

let ranges = client.available_ranges().await?;
for r in &ranges {
    println!(
        "slots {} – {}",
        r.bundle_start_slot,
        r.max_bundle_end_slot.unwrap_or(0)
    );
}

会话初始化

在会话创建参数中设置 slot 范围及可选字段,然后创建会话:

  • signer_filter:跳过由这些地址签名的历史交易

  • actions:在每个 slot 或由特定交易触发时,执行预先设定的操作

  • extra_compute_units:提高计算单元上限,避免交易失败

其他字段见完整参考。

读取与写入

每个会话都在 /backtest/<session_id> 上支持标准的 Solana JSON-RPC 方法和订阅,包括:

  • getAccountInfo、getBalance、getMultipleAccounts

  • accountSubscribe、programSubscribe、signatureSubscribe

完整的 Solana 订阅方法列表见 API 参考。

使用会话的 RPC 客户端发送交易和读取账户。

也可以建立 WebSocket 连接,使用标准订阅方法。

程序替换

编译新的二进制文件并替换现有程序,以测试新的程序逻辑。

重新路由订单流

通过 Jupiter Metis 重新路由历史 swap,观察参数变化会如何影响某个池子本可以捕获的订单流。

{% hint style="warning" %} 注入新池子时,如果程序会校验账户之间的关系(例如由池子和 mint 派生的 vault),需要保持这些关系一致,否则经由新池子的 swap 会失败。 {% endhint %}

更新会话创建参数以启用重新路由。

汇总与测量

要获取重新路由的汇总,请订阅 replacementSubscribe 通知。每笔重新路由的 swap 包含:

  • 路由器选择的路径(逐跳列出),以及每一跳所用池子的地址

  • 每一跳的输入和输出数量

  • 链上的原始路径和成交结果,用于对比

会话汇总还会报告检测到、重新路由、模拟以及成功的 swap 数量。

最后更新于