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、getMultipleAccountsaccountSubscribe、programSubscribe、signatureSubscribe
完整的 Solana 订阅方法列表见 API 参考。
使用会话的 RPC 客户端发送交易和读取账户。
也可以建立 WebSocket 连接,使用标准订阅方法。
程序替换
编译新的二进制文件并替换现有程序,以测试新的程序逻辑。
重新路由订单流
通过 Jupiter Metis 重新路由历史 swap,观察参数变化会如何影响某个池子本可以捕获的订单流。
{% hint style="warning" %} 注入新池子时,如果程序会校验账户之间的关系(例如由池子和 mint 派生的 vault),需要保持这些关系一致,否则经由新池子的 swap 会失败。 {% endhint %}
更新会话创建参数以启用重新路由。
汇总与测量
要获取重新路由的汇总,请订阅 replacementSubscribe 通知。每笔重新路由的 swap 包含:
路由器选择的路径(逐跳列出),以及每一跳所用池子的地址
每一跳的输入和输出数量
链上的原始路径和成交结果,用于对比
会话汇总还会报告检测到、重新路由、模拟以及成功的 swap 数量。
最后更新于