Перейти к основному содержанию
Вы можете полностью управлять вашей Virtual Environment с помощью специальных RPC-методов. Эти методы доступны через Admin RPC, который можно скопировать из Dashboard. Они позволяют вам изменять состояние сети — балансы аккаунтов, номера блоков и хранилище — под нужды вашей разработки. Вызовы этих RPC-методов представлены вызовом виртуального контракта TenderlyCheatcodes. Список специальных RPC-методов ниже работает только при вызове через Admin RPC. Кастомизация сети Отправка транзакции Безлимитный фаусет Управление хранилищем Откат состояния Управление синхронизацией Network Mirror Mode

evm_increaseTime

Продвигает время блокчейна на указанную величину и создаёт пустой блок с новой временной меткой. Последующие вызовы eth_call и eth_sendRawTransaction будут получать разные значения block.timestamp в зависимости от того, на какой blockNumber они нацелены:
  • Для блока pending: возвращается current_time + time_increase. Это ожидаемая временная метка следующего майнящегося блока.
  • Для блока latest: возвращается time_of_evm_increaseTimestamp_call + time_increase. Это временная метка пустого блока, созданного при вызове evm_increaseTimestamp.
Параметры
  • QUANTITY — hex-кодированный time_increase в секундах, на которое нужно перепрыгнуть вперёд
Возвращает
  • DATA — 32-байтный хеш вновь сгенерированного блока
Пример запроса
example.json
Пример ответа
example.json

evm_setNextBlockTimestamp

Смещает текущее время на указанную временную метку и создаёт пустой блок с заданной временной меткой. Последующие вызовы eth_call и eth_sendRawTransaction будут возвращать разные значения block.timestamp в зависимости от того, на какой blockNumber они нацелены:
  • Для блока pending: возвращается specified_timestamp + time_since_evmSetNextBlockTimestamp_call. Это установленная временная метка плюс любое время, прошедшее с момента вызова метода.
  • Для блока latest: возвращается specified_timestamp. Это временная метка пустого блока, созданного при вызове evm_setNextBlockTimestamp.
Параметры
  • QUANTITY — hex-кодированный specified_timestamp, представляющий epoch-временную метку (в секундах)
Возвращает
  • QUANTITY — целое число (epoch-временная метка), устанавливаемое для следующего блока
Пример запроса
example.json
Пример ответа
example.json

tenderly_setNextBlockTimestamp

Смещает текущее время на заданную временную метку, не создавая пустой блок. Последующие вызовы eth_call и eth_sendRawTransaction будут возвращать разные значения block.timestamp в зависимости от того, на какой blockNumber они нацелены:
  • Для блока pending: возвращается specified_timestamp + time_since_tenderly_setNextBlockTimestamp. Это установленная временная метка плюс любое время, прошедшее с момента вызова метода.
  • Для блока latest: возвращается временная метка последнего созданного блока.
Параметры
  • QUANTITY — hex-кодированный specified_timestamp, представляющий epoch-временную метку (в секундах)
Возвращает
  • QUANTITY — целое число (epoch-временная метка), устанавливаемое для следующего блока
Пример запроса
example.json
Пример ответа
example.json

evm_increaseBlocks

Пропускает заданное количество блоков и генерирует новый блок с новым номером блока. Параметры
  • QUANTITY — hex-кодированное количество блоков для пропуска
Возвращает
  • DATA — 32-байтный хеш вновь сгенерированного блока
Пример запроса
example.json
Пример ответа
example.json

eth_sendTransaction

Отправляет неподписанную транзакцию. Параметры
  1. Transaction — объект транзакции
  • from: DATA, 20 байт — адрес, с которого отправляется транзакция.
  • to: DATA, 20 байт — (необязательно, опускается при создании нового контракта) адрес, на который направляется транзакция.
  • gas: QUANTITY — (необязательно) целое число газа, предоставленного для исполнения транзакции. Неиспользованный газ будет возвращён.
  • gasPrice: QUANTITY — (необязательно) целое число gasPrice, используемое за каждую единицу оплаченного газа.
  • value: QUANTITY — (необязательно) целое число значения, отправляемого с этой транзакцией.
  • data: DATA — (необязательно) скомпилированный код контракта ИЛИ хеш вызываемой сигнатуры метода и закодированные параметры.
example.json
RESULT: хеш транзакции STRING, 32-байтное hex-значение

eth_createAccessList

Возвращает access-tuples, которые будут затронуты транзакцией. Параметры
  • SendTransactionObject — объект транзакции (такой же, как передаваемый в eth_sendTransaction)
  • BlockNumber — параметр номера блока
Возвращает
  • AccessList — массив access-tuples, затронутых транзакцией
Пример запроса
example.json
Пример ответа
example.json

evm_getLatest

Получает идентификатор последней транзакции в сетевой Virtual Environment. Параметры Возвращает
  • DATA — UUID последней транзакции Virtual Environment
Пример запроса
example.json
Пример ответа
example.json

tenderly_setBalance

Изменяет баланс аккаунта или аккаунтов. Параметры
  • ADDRESS/ADDRESSES — строка или массив адресов аккаунтов
  • AMOUNT — hex-кодированное число суммы в wei
Возвращает
  • DATA — 32-байтный хеш вновь созданной транзакции
Пример запроса
example.json
ИЛИ
example.json
Пример ответа
example.json

tenderly_addBalance

Добавляет баланс к указанному аккаунту или аккаунтам. Параметры
  • ADDRESS/ADDRESSES — строка или массив адресов аккаунтов
  • AMOUNT — hex-кодированное число суммы в wei
Возвращает
  • DATA — 32-байтный хеш вновь созданной транзакции
Пример запроса
example.json
ИЛИ
example.json
Пример ответа
example.json

tenderly_setErc20Balance

Устанавливает баланс токенов для кошелька на указанном ERC-20 контракте.
tenderly_setErc20Balance записывает новый баланс напрямую в хранилище контракта токена и не эмитирует событие ERC-20 Transfer. Если ваш нижестоящий инструментарий (индексеры, subgraphs, учёт) полагается на события Transfer для отслеживания балансов, используйте вместо этого tenderly_addErc20Balance — он эмитирует синтетический лог Transfer для каждого пополненного аккаунта.
Параметры
  • TOKEN_ADDRESS — адрес контракта ERC-20
  • WALLET — адрес кошелька, который будет пополнен
  • VALUE — 32-байтный хеш, представляющий значение токенов в wei
Возвращает DATA — 32-байтный хеш вновь созданной транзакции (переопределение хранилища фиксируется через транзакцию) Пример запроса
example.json
Пример ответа
example.json

tenderly_addErc20Balance

Добавляет указанное количество токенов одному или нескольким кошелькам на указанном ERC-20 контракте. В отличие от tenderly_setErc20Balance, этот метод эмитирует синтетическое событие Transfer для каждого пополненного аккаунта, так что индексеры, subgraphs и любые инструменты, сверяющие балансы по логам, остаются в синхронизации с итоговым состоянием. Эмитируемый лог имеет стандартный ERC-20 топик Transfer(address,address,uint256), использует отправителя транзакции как адрес from и пополняемый кошелёк как адрес to, а также несёт добавленную сумму amount в поле данных. Параметры
  • TOKEN_ADDRESS — адрес контракта ERC-20
  • WALLETS — массив адресов кошельков, которые получат токены
  • VALUE — 32-байтный хеш, представляющий сумму токенов в wei, добавляемую каждому кошельку
Возвращает DATA — 32-байтный хеш вновь созданной транзакции (переопределение хранилища фиксируется через транзакцию) Пример запроса
example.json
Пример ответа
example.json

tenderly_setMaxErc20Balance

Пополняет адрес кошелька максимально возможным балансом токенов (в основном предназначено для токенов без простого mapping баланса) на указанном ERC-20 контракте.
Как и tenderly_setErc20Balance, этот метод пишет напрямую в хранилище и не эмитирует событие ERC-20 Transfer. Используйте tenderly_addErc20Balance, если вам нужно, чтобы индексеры или инструменты на основе логов подхватили изменение баланса.
Параметры
  • YIELD_TOKEN_ADDRESS — адрес контракта ERC-20
  • WALLET — адрес кошелька, который будет пополнен
Возвращает DATA — 32-байтный хеш вновь созданной транзакции (переопределение хранилища фиксируется через транзакцию) Пример запроса
example.json
Пример ответа
example.json

tenderly_setStorageAt

Устанавливает хранилище указанного адреса по указанному слоту. Параметры
  • ADDRESS — адрес, у которого будет переопределено хранилище
  • SLOT — 32-байтный хеш, представляющий ключ слота хранилища
  • VALUE — 32-байтный хеш, представляющий значение по ключу slot
Возвращает
  • DATA — 32-байтный хеш вновь созданной транзакции (переопределение хранилища фиксируется через транзакцию)
Пример запроса
example.json
Пример ответа
example.json

evm_snapshot

Возвращает ID снимка, позволяющий откатить Virtual Environment к предыдущей точке (совпадает с hash блока из evm_getLatest). Параметры Возвращает
  1. DATA — хеш последнего блока, произведённого Virtual Environment (ID снимка)
Пример запроса
example.json
Пример ответа
example.json

evm_revert

Откатывает состояние Virtual Environment к предыдущему снимку. Одиночный evm_revert может откатить не более 2000 блоков. Если снимок находится дальше в прошлом, вызов завершается ошибкой revert operation is limited to maximum 2000 blocks. Чтобы вернуться в точку более чем на 2000 блоков назад, вместо этого клонируйте Virtual Environment на целевом историческом блоке. Параметры
  • DATA — ID снимка
Возвращает
  • BOOLEAN — флаг успешности операции
Пример запроса
example.json
Пример ответа
example.json

Управление синхронизацией Network Mirror Mode

Следующие методы управляют Network Mirror Mode: они запускают, останавливают, пошагово продвигают, перематывают и инспектируют непрерывную синхронизацию между Virtual Environment и её родительской сетью.
Пока синхронизация Network Mirror Mode активна, другие чит-коды Admin RPC (например, tenderly_setBalance, tenderly_setStorageAt, tenderly_sendBlock) отключены. Сначала приостановите синхронизацию с помощью tenderly_stopSync, если вам нужно, чтобы они сработали немедленно.

tenderly_startSync

Запускает непрерывную синхронизацию между Virtual Environment и её родительской сетью. Новые блоки родительской сети поглощаются по мере их появления, а любые транзакции из mempool Virtual Environment добавляются (в порядке FIFO) в начало следующего синхронизированного блока. Параметры Нет. Возвращает
  • BOOLEANtrue, если синхронизация была запущена
Пример запроса
example.json
Пример ответа
example.json

tenderly_stopSync

Останавливает любую текущую синхронизацию. Virtual Environment остаётся на своём текущем блоке; вы можете возобновить синхронизацию с помощью tenderly_startSync или вручную продвигать её через tenderly_syncNext. Используйте это перед вызовом других чит-кодов Admin RPC, когда Mirror Mode активен. Параметры Нет. Возвращает
  • BOOLEANtrue, если синхронизация была остановлена (или уже была остановлена)
Пример запроса
example.json
Пример ответа
example.json

tenderly_syncNext

Синхронизирует следующий одиночный блок родительской сети на Virtual Environment. Любые ожидающие транзакции Virtual Environment добавляются в начало этого блока в порядке FIFO. Удобно для пошагового прохода по синхронизации по одному блоку за раз. Параметры Нет. Возвращает
  • DATA — 32-байтный хеш вновь синхронизированного блока
Пример запроса
example.json
Пример ответа
example.json

tenderly_revertSync

Перематывает Virtual Environment на N синхронизированных блоков назад, отменяя их эффект на состояние Virtual Environment. По умолчанию — 10 блоков. Используйте это, чтобы пошагово вернуть Mirror-Mode Virtual Environment в более раннюю точку истории родительской сети. Параметры
  • QUANTITY (необязательно) — hex-кодированное количество блоков для перемотки. По умолчанию 0xa (10).
Возвращает
  • DATA — 32-байтный хеш блока, на котором сейчас находится Virtual Environment
Пример запроса
example.json
Пример ответа
example.json

tenderly_getSyncStatus

Возвращает текущее состояние синхронизации Virtual Environment, включая то, активна ли синхронизация, насколько она отстаёт от родительской сети и последний синхронизированный блок. Параметры Нет. Возвращает
  • OBJECT — статус синхронизации со следующими полями:
    • activeBOOLEAN, true, если синхронизация сейчас выполняется
    • lagQUANTITY, количество блоков, на которое Virtual Environment отстаёт от родительской сети
    • latestSyncedBlockQUANTITY, номер последнего блока, синхронизированного на Virtual Environment
    • parentLatestBlockQUANTITY, номер последнего блока в родительской сети
Пример запроса
example.json
Пример ответа
example.json