> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Симуляция транзакций через SDK

> Узнайте, как выполнить простую симуляцию транзакции с помощью Tenderly SDK.

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

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

* Установленный на вашей машине Node.js
* [Учётная запись Tenderly с API-ключом](/platform/account/projects/api-tokens)
* [Проект, настроенный в Tenderly Dashboard](/platform/account/projects/slug)

<Info>
  Используйте эту ссылку, чтобы [зарегистрироваться в
  Tenderly](https://dashboard.tenderly.co/register?utm_source=homepage).
</Info>

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

Создайте новую директорию для проекта, перейдите в неё в терминале и инициализируйте новый проект Node.js:

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
mkdir tenderly-simulation
cd tenderly-simulation
npm init -y
```

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

Установите [npm-пакет Tenderly SDK](https://www.npmjs.com/package/@tenderly/sdk) как зависимость вашего проекта Node.js:

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
npm install @tenderly/sdk
```

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

Создайте новый файл **`index.js`** в директории проекта и добавьте следующий код, чтобы импортировать Tenderly SDK и настроить его с деталями вашей учётной записи Tenderly:

```javascript title="example.js" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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.

<Note>
  Следуйте этим руководствам, чтобы [получить данные
  конфигурации](/platform/sdk/introduction#how-to-get-the-account-name-project-slug-and-secret-key).
</Note>

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

Далее определите параметры транзакции для симуляции.

Добавьте следующий код в **`index.js`**:

```js title="example.js" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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`** необязательное и позволяет переопределить состояние конкретных контрактов в симуляции.

<Warning>
  Убедитесь, что указанный номер блока действительно существует в выбранной сети.
</Warning>

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

Теперь используйте метод **`simulateTransaction`** Tenderly SDK, чтобы запустить симуляцию транзакции.

Добавьте следующий код в **`index.js`**:

```js title="example.js" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
(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`** и запустите скрипт следующей командой:

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
node index.js
```

Если симуляция транзакции успешна, вы увидите её результат в консоли.

Готово! Теперь вы знаете, как запустить симуляцию транзакции с помощью Tenderly SDK.
