Skip to main content
Симуляционные пакеты (Simulation Bundles) позволяют вам симулировать несколько транзакций последовательно. Например, чтобы установить определённые условия перед симуляцией нужной транзакции, вам сначала нужно выполнить несколько других транзакций. Как Simulation API, так и Simulation RPC поддерживают пакетные симуляции. Эндпоинты получают массив транзакций, которые симулируются одна за другой в пределах одного блока.

Пакетные симуляции через RPC

Node RPC позволяет читать данные из блокчейна и отправлять транзакции. Но вы также можете симулировать пакетные транзакции в Node через один RPC URL. Симуляции через RPC доступны только в поддерживаемых сетях. Если ваша сеть не поддерживается в Node, вместо этого запускайте пакетные симуляции через Simulation API. Получите RPC URL из Dashboard. Перейдите в Node > Copy HTTPS URL нужной вам сети.
example
Чтобы симулировать пакетные транзакции через RPC, вызовите метод tenderly_simulateBundle. Этот пользовательский метод позволяет симулировать несколько транзакций, передавая их в виде массива. См. справочник RPC.
Транзакции симулируются одна за другой в одном блоке. Параметр блока определяет блок, в составе которого симулируется пакет: пакет выполняется на состоянии в начале этого блока, до любых его собственных транзакций. Поэтому latest выполняется на состоянии после блока, предшествующего голове цепочки, а параметра индекса транзакции не существует. См. семантику параметра блока.
Пример
example

Пакетные симуляции через API

Используйте эндпоинт API simulate-bundle, чтобы симулировать несколько последовательных транзакций одновременно. См. справочник API.
example
Результат симуляции показывает генерируемые события и изменения состояния, которые может вызвать транзакция, если вы отправите её в блокчейн. В случае сбоя транзакции произойдёт ранний возврат со всеми симуляциями до точки сбоя. Каждый элемент simulations принимает block_number и transaction_index с той же семантикой, что и одиночная симуляция: целочисленный блок (отрицательные значения отсчитываются назад от головы цепочки) и индекс от 0 (начало блока) до числа транзакций в блоке (после всех его транзакций). block_number верхнего уровня задаёт блок по умолчанию для всех элементов. Не указывайте оба поля, чтобы симулировать пакет на ожидающем блоке; transaction_index требует явного block_number. Пример

Изучите сценарии использования

Что дальше

Одиночные симуляции

Симуляция через SDK