Справочник по Rust
Справочник по Rust
Крейты simulator-client и simulator-api дают нативный Rust-интерфейс к симулятору Termina. Они подходят командам, которые хотят встроить бэктестинг прямо в свой Rust-код, а не использовать sim CLI.
simulator-client— высокоуровневый асинхронный клиент. Он оборачивает WebSocket-протокол и предоставляет удобные билдеры для типовых сценариев: создания сессий, продвижения слотов, внедрения транзакций и чтения состояния аккаунтов.simulator-apiопределяет низкоуровневые типы протокола (структуры запросов и ответов, варианты ошибок, параметры сессии). Он нужен, если требуется прямой доступ к формату передачи данных или собственная реализация клиента.
Полный набор сквозных примеров — в репозитории со стартовым кодом.
Установка
[dependencies]
simulator-client = "0.23"
simulator-api = "0.23" # Только если нужны типы протокола (например, для собственного клиента)Примеры
Доступные слоты
Перед созданием сессии убедитесь, что нужный диапазон слотов доступен для бэктеста.
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)
);
}Инициализация сессии
Задайте диапазон слотов и нужные необязательные поля в параметрах создания сессии, затем создайте сессию:
signer_filter: пропускать исторические транзакции, подписанные указанными адресамиactions: выполнять заранее заданное действие в каждом слоте или при срабатывании на определенные транзакцииextra_compute_units: повысить лимит вычислительных единиц, чтобы транзакции не падали
Остальные поля — в полном справочнике.
Чтение и запись
Каждая сессия поддерживает стандартные методы и подписки Solana JSON-RPC по адресу /backtest/<session_id>, в том числе:
getAccountInfo,getBalance,getMultipleAccountsaccountSubscribe,programSubscribe,signatureSubscribe
Полный список поддерживаемых методов подписки Solana — в справочнике API.
RPC-клиент сессии используется для отправки транзакций и чтения аккаунтов.
Также можно открыть WebSocket-соединение и использовать стандартные методы подписки.
Замена программы
Чтобы протестировать новую логику программы, скомпилируйте новый бинарник и подмените им существующий.
Перенаправление потока ордеров
Исторические свопы можно перенаправить через Jupiter Metis и посмотреть, как изменение параметров повлияло бы на поток, который получил бы пул.
{% hint style="warning" %} При внедрении нового пула, если программа проверяет связи между аккаунтами (например, vault, производные от пула и mint), эти связи нужно сохранить, иначе свопы через новый пул будут падать. {% endhint %}
Чтобы включить перенаправление, обновите параметры создания сессии.
Сводка и метрики
Чтобы получить сводку по перенаправлениям, подпишитесь на уведомления replacementSubscribe. Для каждого перенаправленного свопа доступны:
маршрут, выбранный роутером, по шагам, с адресом каждого использованного пула
входящие и исходящие объемы на каждом шаге
исходный маршрут и исполнение ончейн для сравнения
Сводка сессии также показывает, сколько свопов было обнаружено, перенаправлено, симулировано и успешно исполнено.
Последнее обновление