Воспроизведение рынка
Выбор отрезка времени
Проверьте, попадает ли нужный диапазон в готовые бандлы: они покрывают последние 30 дней. При необходимости сузьте поиск флагами --after <DATE> или --before <DATE>.
sim rangesStart Time (UTC) End Time (UTC) Start Slot End Slot Bundle Size Kind Scope
----------------------------------------------------------------------------------------------------------------------------------
2026-06-30T17:53:10Z 2026-06-30T19:00:53Z 429,926,541 429,936,540 10,000 account_state global
2026-06-30T18:23:38Z 2026-06-30T18:27:02Z 429,931,041 429,931,540 500 account_state global
2026-07-19T05:50:16Z 2026-07-19T07:00:13Z 433,838,452 433,848,451 10,000 account_state globalДля диапазонов старше 30 дней или тех, что попадают между готовыми бандлами, соберите собственный бандл.
sim bundle build --start-slot 400000000 --end-slot 400001000Базовый прогон
Запустите сессию, чтобы заново исполнить транзакции и зафиксировать текущее поведение. Если диапазон покрывается несколькими бандлами, флаг --parallel разделит работу между одновременными сессиями.
# Базовый прогон
sim run \
--start-slot 400000000 \
--end-slot 400001000 \
--program-id <PROGRAM_ID> \
--output-file baseline.jsonРезультат записывается в JSON-файл, где каждая запись идет с новой строки.
В sim есть команда, которая читает этот JSON и кратко подводит итоги прогона.
sim summarize baseline.jsonFile : baseline.json
Slot range : 400000000 → 400001000
Program IDs : <PROGRAM_ID>
Session(s) : 10
Ran at : 2026-05-29 03:06:07 UTC
i Transactions : 205308 (96972 successes, 108336 failures)# Отследить изменения баланса конкретного кошелька
sim summarize baseline.json --accounts E2gE...Account: E2gE...
SOL 29.455253127 → 29.293640983 (Δ -0.161612144)Эксперимент
Соберите измененную версию программы: с новыми параметрами, доработками или исправлениями ошибок. Подставьте ее вместо исходного бинарника и прогоните новую логику на тех же исторических транзакциях.
# Эксперимент
sim run \
--start-slot 400000000 \
--end-slot 400001000 \
--program-id <PROGRAM_ID> \
--program-so <PATH_TO_NEW_BINARY> \
--output-file experiment.jsonЕсли новой программе нужно больше вычислительных единиц (CU), поднимите лимит флагом --extra-compute-units <EXTRA_UNITS>, иначе транзакции будут падать.
Сравнение результатов
Когда готовы и базовый прогон, и эксперимент, сравните их:
регрессии: транзакция раньше проходила -> теперь падает
улучшения: транзакция раньше падала -> теперь проходит
изменения балансов: разница по токен-аккаунтам каждого аккаунта
sim compare baseline.json experiment.json# Показать только то, что сломалось
sim compare baseline.json experiment.json regressions# Проверить влияние на P&L
sim compare baseline.json experiment.json balancesПоследнее обновление