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

Справочник по 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, getMultipleAccounts

  • accountSubscribe, programSubscribe, signatureSubscribe

Полный список поддерживаемых методов подписки Solana — в справочнике API.

RPC-клиент сессии используется для отправки транзакций и чтения аккаунтов.

Также можно открыть WebSocket-соединение и использовать стандартные методы подписки.

Замена программы

Чтобы протестировать новую логику программы, скомпилируйте новый бинарник и подмените им существующий.

Перенаправление потока ордеров

Исторические свопы можно перенаправить через Jupiter Metis и посмотреть, как изменение параметров повлияло бы на поток, который получил бы пул.

{% hint style="warning" %} При внедрении нового пула, если программа проверяет связи между аккаунтами (например, vault, производные от пула и mint), эти связи нужно сохранить, иначе свопы через новый пул будут падать. {% endhint %}

Чтобы включить перенаправление, обновите параметры создания сессии.

Сводка и метрики

Чтобы получить сводку по перенаправлениям, подпишитесь на уведомления replacementSubscribe. Для каждого перенаправленного свопа доступны:

  • маршрут, выбранный роутером, по шагам, с адресом каждого использованного пула

  • входящие и исходящие объемы на каждом шаге

  • исходный маршрут и исполнение ончейн для сравнения

Сводка сессии также показывает, сколько свопов было обнаружено, перенаправлено, симулировано и успешно исполнено.

Последнее обновление