> ## 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.

# Режимы симуляции

> Выбирайте full для полного декодирования, abi для частичного декодирования или quick для более быстрого получения сырых выводов транзакций.

Параметр API `simulation_type` позволяет контролировать уровень детализации, возвращаемой в результате [Simulation API](/simulations/overview). Он применяется как к [одиночным симуляциям](/simulations/single-simulations), так и к пакетным запросам.

## Типы симуляций

* `full` (по умолчанию): подробная сырая и декодированная информация с трейсом вызовов, входными и выходными данными функций, разностями состояния и т. д.
* `quick`: минимальные, сырые значения
* `abi`: минимальная информация с декодированными входными данными, выходными данными и логами

<Note>
  Полные симуляции занимают больше времени, в зависимости от глубины трейса вызовов. Используйте быстрые симуляции, когда декодированная
  информация не требуется.
</Note>

## Полный режим симуляции

* **Трейс вызовов**, содержащий имя функции, позицию в исходном файле, адрес вызывающего и баланс
* Декодированные **входные и выходные данные функций** с **soltype** для всех аргументов. Это применяется ко всем вызовам функций, включая прямой вызов смарт-контракта из EOA, внутренние вызовы между смарт-контрактами и вызовы функций внутри каждого смарт-контракта.
* Декодированные **разности состояния** (изменения состояния), обогащённые **soltype** для изменённых полей
* Декодированные **логи (события)**, состоящие из Solidity-**события**, которое их произвело, и **значения** аргументов события, обогащённые **type** для каждого.

```ts title="request.ts" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}

dotenv.config();

const approveDai = async () => {
  // assuming environment variables TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG and TENDERLY_ACCESS_KEY are set
  // https://docs.tenderly.co/platform/account/projects/slug
  // https://docs.tenderly.co/platform/account/projects/api-tokens
  const { TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG, TENDERLY_ACCESS_KEY } = process.env;

  console.time('Simulation');

  const resp = await axios.post(
    `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate`,
    // the transaction
    {
      /* Simulation Configuration */
      save: false, // if true simulation is saved and shows up in the dashboard
      save_if_fails: false, // if true, reverting simulations show up in the dashboard
      simulation_type: 'full', // full, abi or quick (full is default)
      network_id: '1', // network to simulate on
      /* Standard EVM Transaction object */
      from: '0xdc6bdc37b2714ee601734cf55a05625c9e512461',
      to: '0x6b175474e89094c44da98b954eedeac495271d0f',
      input: '0x095ea7b3000000000000000000000000f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1000000000000000000000000000000000000000000000000000000000000012b',
      gas: 8000000,
      value: 0,
    },
    {
      headers: {
        'X-Access-Key': TENDERLY_ACCESS_KEY as string,
      },
    },
  );
  console.timeEnd('Simulation');

  const transaction = resp.data.transaction;
  console.log(JSON.stringify(transaction, null, 2));
};

approveDai();
```

## Быстрый режим симуляции

Предоставляет сырые данные без дополнительного декодирования. Этот режим лучше всего подходит, когда вам нужны только основные детали транзакции.

```ts title="request.ts" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}

dotenv.config();

const approveDai = async () => {
  // assuming environment variables TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG and TENDERLY_ACCESS_KEY are set
  // https://docs.tenderly.co/platform/account/projects/slug
  // https://docs.tenderly.co/platform/account/projects/api-tokens
  const { TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG, TENDERLY_ACCESS_KEY } = process.env;

  console.time('Simulation');

  const resp = await axios.post(
    `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate`,
    // the transaction
    {
      /* Simulation Configuration */
      save: false, // if true simulation is saved and shows up in the dashboard
      save_if_fails: false, // if true, reverting simulations show up in the dashboard
      simulation_type: 'quick', // full, abi or quick (full is default)
      network_id: '1', // network to simulate on
      /* Standard EVM Transaction object */
      from: '0xdc6bdc37b2714ee601734cf55a05625c9e512461',
      to: '0x6b175474e89094c44da98b954eedeac495271d0f',
      input: '0x095ea7b3000000000000000000000000f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1000000000000000000000000000000000000000000000000000000000000012b',
      gas: 8000000,
      value: 0,
    },
    {
      headers: {
        'X-Access-Key': TENDERLY_ACCESS_KEY as string,
      },
    },
  );
  console.timeEnd('Simulation');

  const transaction = resp.data.transaction;
  console.log(JSON.stringify(transaction, null, 2));
};

approveDai();
```

## Режим симуляции ABI

**Трейс вызовов**, содержащий имя функции, декодированные входные и выходные переменные

Декодированные **логи (события)**, состоящие из Solidity-**события**, которое их произвело, и **значения** аргументов события, обогащённые описанием **type** для каждого.

```ts title="request.ts" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}

dotenv.config();

const approveDai = async () => {
  // assuming environment variables TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG and TENDERLY_ACCESS_KEY are set
  // https://docs.tenderly.co/platform/account/projects/slug
  // https://docs.tenderly.co/platform/account/projects/api-tokens
  const { TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG, TENDERLY_ACCESS_KEY } = process.env;

  console.time('Simulation');

  const resp = await axios.post(
    `https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate`,
    // the transaction
    {
      /* Simulation Configuration */
      save: false, // if true simulation is saved and shows up in the dashboard
      save_if_fails: false, // if true, reverting simulations show up in the dashboard
      simulation_type: 'abi', // full, abi or quick (full is default)
      network_id: '1', // network to simulate on
      /* Standard EVM Transaction object */
      from: '0xdc6bdc37b2714ee601734cf55a05625c9e512461',
      to: '0x6b175474e89094c44da98b954eedeac495271d0f',
      input: '0x095ea7b3000000000000000000000000f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1000000000000000000000000000000000000000000000000000000000000012b',
      gas: 8000000,
      value: 0,
    },
    {
      headers: {
        'X-Access-Key': TENDERLY_ACCESS_KEY as string,
      },
    },
  );
  console.timeEnd('Simulation');

  const transaction = resp.data.transaction;
  console.log(JSON.stringify(transaction, null, 2));
};

approveDai();
```
