Перейти к основному содержанию
Вы можете полностью управлять вашей 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
{
  "jsonrpc": "2.0",
  "method": "evm_increaseTime",
  "params": ["0x15180"],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "0x51e0a03f19e0c154b16363086aa6bbf22ad4582b0515b0a3a00519015f06246f",
  "id": "1234"
}

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
{
  "jsonrpc": "2.0",
  "method": "evm_setNextBlockTimestamp",
  "params": ["1750074671"],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": 1750074671,
  "id": "1234"
}

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
{
  "jsonrpc": "2.0",
  "method": "evm_setNextBlockTimestamp",
  "params": ["1750074671"],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": 1750074671,
  "id": "1234"
}

evm_increaseBlocks

Пропускает заданное количество блоков и генерирует новый блок с новым номером блока. Параметры
  • QUANTITY — hex-кодированное количество блоков для пропуска
Возвращает
  • DATA — 32-байтный хеш вновь сгенерированного блока
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "evm_increaseBlocks",
  "params": ["0x20"],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "0x51e0a03f19e0c154b16363086aa6bbf22ad4582b0515b0a3a00519015f06246f",
  "id": "1234"
}

eth_sendTransaction

Отправляет неподписанную транзакцию. Параметры
  1. Transaction — объект транзакции
  • from: DATA, 20 байт — адрес, с которого отправляется транзакция.
  • to: DATA, 20 байт — (необязательно, опускается при создании нового контракта) адрес, на который направляется транзакция.
  • gas: QUANTITY — (необязательно) целое число газа, предоставленного для исполнения транзакции. Неиспользованный газ будет возвращён.
  • gasPrice: QUANTITY — (необязательно) целое число gasPrice, используемое за каждую единицу оплаченного газа.
  • value: QUANTITY — (необязательно) целое число значения, отправляемого с этой транзакцией.
  • data: DATA — (необязательно) скомпилированный код контракта ИЛИ хеш вызываемой сигнатуры метода и закодированные параметры.
example.json
{
  "id": 0,
  "jsonrpc": "2.0",
  "method": "eth_sendTransaction",
  "params": [
    {
      "from": "0xDC6bDc37B2714eE601734cf55A05625C9e512461",
      "to": "0xff39a3e734fe363e631441f6d24c7539240c2628",
      "value": "0x0",
      "data": "0x2e7700f0"
    }
  ]
}
RESULT: хеш транзакции STRING, 32-байтное hex-значение

eth_createAccessList

Возвращает access-tuples, которые будут затронуты транзакцией. Параметры
  • SendTransactionObject — объект транзакции (такой же, как передаваемый в eth_sendTransaction)
  • BlockNumber — параметр номера блока
Возвращает
  • AccessList — массив access-tuples, затронутых транзакцией
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "eth_getAccessList",
  "params": [
    {
      "from": "0x7ed8dff35e6fef1a6c1f95423cd8a64e22687aac",
      "to": "0x6b175474e89094c44da98b954eedeac495271d0f",
      "gas": "0x76c00",
      "gasPrice": "0x0",
      "value": "0x0",
      "data": "0xa9059cbb0000000000000000000000005eddecc908575e1adcf857d8be380b9b7e5f658300000000000000000000000000000000000000000000000228813d891ab86000"
    },
    "latest"
  ],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": [
    {
      "address": "0x7ed8dff35e6fef1a6c1f95423cd8a64e22687aac"
    },
    {
      "address": "0x6b175474e89094c44da98b954eedeac495271d0f",
      "storage_keys": [
        "0x5051a693fd89be4fee1466db5a0684c1868dc09405da86e3d13004a803e302ec"
      ]
    },
    {
      "address": "0xc8f595e2084db484f8a80109101d58625223b7c9"
    }
  ],
  "id": 1234
}

evm_getLatest

Получает идентификатор последней транзакции в сетевой Virtual Environment. Параметры Возвращает
  • DATA — UUID последней транзакции Virtual Environment
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "evm_getLatest",
  "params": [],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "4a05d7ed-f66c-471a-899d-d6d843b8e790",
  "id": "1234"
}

tenderly_setBalance

Изменяет баланс аккаунта или аккаунтов. Параметры
  • ADDRESS/ADDRESSES — строка или массив адресов аккаунтов
  • AMOUNT — hex-кодированное число суммы в wei
Возвращает
  • DATA — 32-байтный хеш вновь созданной транзакции
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_setBalance",
  "params": [["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"], "0xDE0B6B3A7640000"],
  "id": "1234"
}
ИЛИ
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_setBalance",
  "params": ["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xDE0B6B3A7640000"],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "0xc5b2c658f5fa236c598a6e7fbf7f21413dc42e2a41dd982eb772b30707cba2eb",
  "id": "1234"
}

tenderly_addBalance

Добавляет баланс к указанному аккаунту или аккаунтам. Параметры
  • ADDRESS/ADDRESSES — строка или массив адресов аккаунтов
  • AMOUNT — hex-кодированное число суммы в wei
Возвращает
  • DATA — 32-байтный хеш вновь созданной транзакции
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_addBalance",
  "params": [["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B"], "0xDE0B6B3A7640000"],
  "id": "1234"
}
ИЛИ
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_addBalance",
  "params": ["0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B", "0xDE0B6B3A7640000"],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "0xc5b2c658f5fa236c598a6e7fbf7f21413dc42e2a41dd982eb772b30707cba2eb",
  "id": "1234"
}

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
{
  "jsonrpc": "2.0",
  "method": "tenderly_setErc20Balance",
  "params": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "0x40BdB4497614bAe1A67061EE20AAdE3c2067AC9e",
    "0xDE0B6B3A7640000"
  ],
  "id": 3640
}
Пример ответа
example.json
{
  "id": 3640,
  "jsonrpc": "2.0",
  "result": "0x8a84686634729c57532b9ffa4e632e241b2de5c880c771c5c214d5e7ec465b1c"
}

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
{
  "jsonrpc": "2.0",
  "method": "tenderly_addErc20Balance",
  "params": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    [
      "0x40BdB4497614bAe1A67061EE20AAdE3c2067AC9e",
      "0xBd8DaA414Fda8a8A129F7035e7496759C5aF8570"
    ],
    "0xDE0B6B3A7640000"
  ],
  "id": 3641
}
Пример ответа
example.json
{
  "id": 3641,
  "jsonrpc": "2.0",
  "result": "0x8a84686634729c57532b9ffa4e632e241b2de5c880c771c5c214d5e7ec465b1d"
}

tenderly_setMaxErc20Balance

Пополняет адрес кошелька максимально возможным балансом токенов (в основном предназначено для токенов без простого mapping баланса) на указанном ERC-20 контракте.
Как и tenderly_setErc20Balance, этот метод пишет напрямую в хранилище и не эмитирует событие ERC-20 Transfer. Используйте tenderly_addErc20Balance, если вам нужно, чтобы индексеры или инструменты на основе логов подхватили изменение баланса.
Параметры
  • YIELD_TOKEN_ADDRESS — адрес контракта ERC-20
  • WALLET — адрес кошелька, который будет пополнен
Возвращает DATA — 32-байтный хеш вновь созданной транзакции (переопределение хранилища фиксируется через транзакцию) Пример запроса
example.json
{
  "id": 0,
  "jsonrpc": "2.0",
  "method": "tenderly_setMaxErc20Balance",
  "params": [
    "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",
    "0xb5f45E52649123117C175B2016Ed3fCd26f9bE06"
  ]
}
Пример ответа
example.json
{
  "id": 0,
  "jsonrpc": "2.0",
  "result": "0x8fb202d4612be9f6e96b955b4e5bd002cde4d79bec8a6d1b7d35976f124636a4"
}

tenderly_setStorageAt

Устанавливает хранилище указанного адреса по указанному слоту. Параметры
  • ADDRESS — адрес, у которого будет переопределено хранилище
  • SLOT — 32-байтный хеш, представляющий ключ слота хранилища
  • VALUE — 32-байтный хеш, представляющий значение по ключу slot
Возвращает
  • DATA — 32-байтный хеш вновь созданной транзакции (переопределение хранилища фиксируется через транзакцию)
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_setStorageAt",
  "params": [
    "0x3Df2f692132f55b97cc9DA04A1fFFEA82F5d710b",
    "0x8111de210bcfef10861a4ab6df0f4838296bd61d5a8f02dca283ed3b72a47bba",
    "0x0000000000000000000000000000000000000000000000000000000000000000"
  ],
  "id": "1"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "0xc5b2c658f5fa236c598a6e7fbf7f21413dc42e2a41dd982eb772b30707cba2eb",
  "id": "1234"
}

evm_snapshot

Возвращает ID снимка, позволяющий откатить Virtual Environment к предыдущей точке (совпадает с hash блока из evm_getLatest). Параметры Возвращает
  1. DATA — хеш последнего блока, произведённого Virtual Environment (ID снимка)
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "evm_snapshot",
  "params": [],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "0xfdb5a15fe652e0f47e4312df749f8cc1769d5e70f0bf3f26a4e231bb6a550f8d",
  "id": "1234"
}

evm_revert

Откатывает состояние Virtual Environment к предыдущему снимку. Одиночный evm_revert может откатить не более 2000 блоков. Если снимок находится дальше в прошлом, вызов завершается ошибкой revert operation is limited to maximum 2000 blocks. Чтобы вернуться в точку более чем на 2000 блоков назад, вместо этого клонируйте Virtual Environment на целевом историческом блоке. Параметры
  • DATA — ID снимка
Возвращает
  • BOOLEAN — флаг успешности операции
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "evm_revert",
  "params": ["0xfdb5a15fe652e0f47e4312df749f8cc1769d5e70f0bf3f26a4e231bb6a550f8d"],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": true,
  "id": "1234"
}

Управление синхронизацией 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
{
  "jsonrpc": "2.0",
  "method": "tenderly_startSync",
  "params": [],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": true,
  "id": "1234"
}

tenderly_stopSync

Останавливает любую текущую синхронизацию. Virtual Environment остаётся на своём текущем блоке; вы можете возобновить синхронизацию с помощью tenderly_startSync или вручную продвигать её через tenderly_syncNext. Используйте это перед вызовом других чит-кодов Admin RPC, когда Mirror Mode активен. Параметры Нет. Возвращает
  • BOOLEANtrue, если синхронизация была остановлена (или уже была остановлена)
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_stopSync",
  "params": [],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": true,
  "id": "1234"
}

tenderly_syncNext

Синхронизирует следующий одиночный блок родительской сети на Virtual Environment. Любые ожидающие транзакции Virtual Environment добавляются в начало этого блока в порядке FIFO. Удобно для пошагового прохода по синхронизации по одному блоку за раз. Параметры Нет. Возвращает
  • DATA — 32-байтный хеш вновь синхронизированного блока
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_syncNext",
  "params": [],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "0x51e0a03f19e0c154b16363086aa6bbf22ad4582b0515b0a3a00519015f06246f",
  "id": "1234"
}

tenderly_revertSync

Перематывает Virtual Environment на N синхронизированных блоков назад, отменяя их эффект на состояние Virtual Environment. По умолчанию — 10 блоков. Используйте это, чтобы пошагово вернуть Mirror-Mode Virtual Environment в более раннюю точку истории родительской сети. Параметры
  • QUANTITY (необязательно) — hex-кодированное количество блоков для перемотки. По умолчанию 0xa (10).
Возвращает
  • DATA — 32-байтный хеш блока, на котором сейчас находится Virtual Environment
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_revertSync",
  "params": ["0xa"],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": "0xfdb5a15fe652e0f47e4312df749f8cc1769d5e70f0bf3f26a4e231bb6a550f8d",
  "id": "1234"
}

tenderly_getSyncStatus

Возвращает текущее состояние синхронизации Virtual Environment, включая то, активна ли синхронизация, насколько она отстаёт от родительской сети и последний синхронизированный блок. Параметры Нет. Возвращает
  • OBJECT — статус синхронизации со следующими полями:
    • activeBOOLEAN, true, если синхронизация сейчас выполняется
    • lagQUANTITY, количество блоков, на которое Virtual Environment отстаёт от родительской сети
    • latestSyncedBlockQUANTITY, номер последнего блока, синхронизированного на Virtual Environment
    • parentLatestBlockQUANTITY, номер последнего блока в родительской сети
Пример запроса
example.json
{
  "jsonrpc": "2.0",
  "method": "tenderly_getSyncStatus",
  "params": [],
  "id": "1234"
}
Пример ответа
example.json
{
  "jsonrpc": "2.0",
  "result": {
    "active": true,
    "lag": 0,
    "latestSyncedBlock": 22845130,
    "parentLatestBlock": 22845130
  },
  "id": "1234"
}