Перейти к основному содержанию
Симуляции транзакций поддерживаются в Virtual Environments. Вы можете симулировать транзакции из UI Dashboard или программно через RPC.

Simulator UI

Simulation RPC

Bundle Simulation RPC

Simulation API в Virtual Environments

Симуляция из Dashboard

Чтобы симулировать транзакцию из Dashboard, перейдите в Virtual Environments и нажмите Simulate в левом меню. Симулированные транзакции видны только в панели Virtual Environment и не будут отображаться в Public Explorer. Симулятор можно использовать следующими способами:
  • Отладка ошибок смарт-контрактов с помощью Edit Source для проверки вашего исправления.
  • Вызов контрактов, чтобы получить представление о состояниях без сохранения транзакций в сети.
  • Настройка нужных состояний контрактов с помощью State Overrides для оценки исполнения в условиях, которых нет и не должно быть в сети.
  • Построение proof-of-concept транзакций для валидации тестовых сценариев.

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

Транзакции в Virtual Environments также можно симулировать с помощью RPC-методов tenderly_simulate и tenderly_simulateBundle.
Мы рекомендуем интегрировать Simulation RPC, но можно использовать и Simulation REST API.
Пример кода ниже запускает симуляцию, которая использует переопределения состояния для минта DAI.
  • Адрес отправителя: 0xe2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2.
  • Адрес контракта DAI: 0x6b175474e89094c44da98b954eedeac495271d0f
  • Аргументы переопределения состояния: DAI(0x6b175474e89094c44da98b954eedeac495271d0f).wards[0xe2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2] = 1
Изучите это руководство, чтобы узнать больше о симуляции с переопределениями состояния.
showLineNumbers
# simulate DAI minting by 0xe2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2
# 0xf1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1 gets the minted DAI
# Simulated on the latest block

VIRTUAL_TESTNET_RPC=RPC_LINK_HERE

curl $VIRTUAL_TESTNET_RPC \
-X POST \
-H "Content-Type: application/json" \
-d \
'{
  "id":0,
  "jsonrpc":"2.0",
  "method":"tenderly_simulateTransaction",
  "params":[
    {
      "from":"0xe2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2",
      "to":"0x6b175474e89094c44da98b954eedeac495271d0f",
      "gas":"0x7a1200",
      "data":"0x40c10f19000000000000000000000000f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f10000000000000000000000000000000000000000000000001bc16d674ec80000"
    },
    "latest",
    {
      "0x6b175474e89094c44da98b954eedeac495271d0f":{
        "stateDiff":{
          "0xedd7d04419e9c48ceb6055956cbb4e2091ae310313a4d1fa7cbcfe7561616e03":"0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        "balance": "0xFFFFFF"
      }
    }
  ]
}'

Симуляция транзакций через клиентские библиотеки

Для симуляции транзакций через Ethers и Viem см. следующий пример:

Симуляция с Viem