Перейти к основному содержанию
В этом туториале вы научитесь запускать симуляцию транзакции с помощью Tenderly SDK. Симуляции позволяют тестировать поведение транзакций, не отправляя их ончейн. Подробнее о Transaction Simulator от Tenderly здесь.

Предварительные требования

Используйте эту ссылку, чтобы зарегистрироваться в Tenderly.

Шаг 1. Инициализируйте новый проект Node.js

Создайте новую директорию для проекта, перейдите в неё в терминале и инициализируйте новый проект Node.js:
example
mkdir tenderly-simulation
cd tenderly-simulation
npm init -y

Шаг 2. Установите Tenderly SDK

Установите npm-пакет Tenderly SDK как зависимость вашего проекта Node.js:
example
npm install @tenderly/sdk

Шаг 3. Импортируйте Tenderly SDK и настройте его

Создайте новый файл index.js в директории проекта и добавьте следующий код, чтобы импортировать Tenderly SDK и настроить его с деталями вашей учётной записи Tenderly:
example.js
const { Network, Tenderly } = require('@tenderly/sdk');

const tenderly = new Tenderly({
  accountName: 'your-account-name',
  projectName: 'your-project-name',
  accessKey: 'your-access-key',
  network: Network.MAINNET, // Replace with the appropriate network
});
Обязательно замените your-account-name, your-project-name и your-access-key реальными данными вашей учётной записи Tenderly.
Следуйте этим руководствам, чтобы получить данные конфигурации.

Шаг 4. Определите детали транзакции

Далее определите параметры транзакции для симуляции. Добавьте следующий код в index.js:
example.js
const transactionParameters = {
  from: '0x0000000000000000000000000000000000000000',
  to: '0x1f98431c8ad98523631ae4a59f267346ea31f984',
  input: '0xa1671295000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000152649ea73beab28c5b49b26eb48f7ead6d4c8980000000000000000000000000000000000000000000000000000000000000bb8',
  value: '0',
  gas: 8000000,
  gas_price: '0',
};

const simulation = {
  transaction: transactionParameters,
  blockNumber: 18813657, // simulation's target block number
  //overrides: {...} // optional state overrides field
};

Замените поля from, to, input, value, gas и gas_price нужными вам данными транзакции. Поле override необязательное и позволяет переопределить состояние конкретных контрактов в симуляции.
Убедитесь, что указанный номер блока действительно существует в выбранной сети.

Шаг 5. Запустите симуляцию транзакции

Теперь используйте метод simulateTransaction Tenderly SDK, чтобы запустить симуляцию транзакции. Добавьте следующий код в index.js:
example.js
(async () => {
  try {
    const simulationResult = await tenderly.simulator.simulateTransaction(simulation);
    console.log('Simulation result:', simulationResult);
  } catch (error) {
    console.error('Error running simulation:', error);
  }
})();
Этот код запускает асинхронную функцию, которая вызывает метод simulateTransaction и выводит результат симуляции в консоль.

Шаг 6. Запустите скрипт

Сохраните файл index.js и запустите скрипт следующей командой:
example
node index.js
Если симуляция транзакции успешна, вы увидите её результат в консоли. Готово! Теперь вы знаете, как запустить симуляцию транзакции с помощью Tenderly SDK.