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

# FAQ: Симуляции

> Ответы на распространённые вопросы о симуляциях Tenderly: видимость в Dashboard, API против RPC, переопределения состояния, оценка газа и лимиты запросов.

<div className="flex flex-col gap-4 mt-8">
  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-see-simulations-in-dashboard" className="text-xl font-semibold">Можно ли увидеть симуляции в Dashboard?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Dashboard показывает симуляции, которые вы выполнили через UI Simulator, Simulation API (с `save` или `save_if_fails`, установленными в `true`). Симуляции через RPC не сохраняются и не отображаются в Dashboard.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-delete-a-simulation" className="text-xl font-semibold">Можно ли удалить симуляцию?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Нет, симуляции нельзя удалить. Не стесняйтесь обращаться в поддержку по адресу [support@tenderly.co](mailto:support@tenderly.co), если у вас будут
        дополнительные вопросы.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="does-running-the-same-simulation-multiple-times-co" className="text-xl font-semibold">Стоит ли запуск одной и той же симуляции несколько раз столько же, сколько её однократный запуск?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Нет — каждый вызов API к эндпоинту simulate считается отдельным запросом, даже если вы отправляете идентичные payload'ы для симуляции одной и той же транзакции несколько раз.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-advance-a-block-number-timestamp-in-a-simula" className="text-xl font-semibold">Можно ли продвинуть номер блока/временную метку в симуляции?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Да, вы можете продвинуть номер блока или временную метку в симуляции с помощью читкодов [Increase block](/simulator-ui/parameters#increase-block) и [Override timestamp](/simulator-ui/parameters#override-timestamp).
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-simulate-transactions-on-behalf-of-a-user-wi" className="text-xl font-semibold">Могу ли я симулировать транзакции от имени пользователя без его приватного ключа? Другими словами, могу ли я симулировать транзакции, исходящие с произвольных адресов?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        В симуляциях все адреса разблокированы по умолчанию. Это означает, что вы можете симулировать транзакции с любого адреса
        на любой адрес.

        Узнайте больше о [том, как использовать Transaction Simulator во время разработки и тестирования
        здесь](/simulations/quickstart).
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-the-difference-between-api-and-rpc-simulat" className="text-xl font-semibold">В чём разница между симуляциями через API и RPC?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Симуляции через API выполняются через эндпоинт [Simulation API](/api-reference#/operations/simulateTransaction), а симуляции через RPC — через RPC-метод [**`tenderly_simulateTransaction`**](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_simulateTransaction).

        Симуляции через API можно сохранять в Dashboard, установив `save` или `save_if_fails` в `true`. Симуляции через RPC в Dashboard не сохраняются.

        И симуляции через API, и симуляции через RPC предоставляют одинаковые результаты симуляции, включая детали транзакции, трейсы вызовов, логи и изменения балансов.
        Да, вы можете использовать переопределения состояния, чтобы изменять переменные хранилища контрактов, балансы аккаунтов и другие данные из сети для симуляции.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="which-rate-limits-are-applied-for-api-simulations" className="text-xl font-semibold">Какие лимиты применяются к симуляциям через API?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Симуляции через API подчиняются лимитам запросов. Чтобы обсудить лимиты или запросить более высокие квоты для вашей учётной записи, [свяжитесь с нашим отделом продаж](https://tenderly.co/contact-us).
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-the-correct-format-of-a-tuple-when-simulat" className="text-xl font-semibold">Каков правильный формат кортежа при симуляции транзакции через Dashboard?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Формат кортежей — JSON. Вот пример кортежа:

        ```json filename="example.json" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        {
          "tokenIn": "0x3Df2f692132f55b97cc9DA04A1fFFEA82F511333",
          "tokenOut": "0x31254874432f55b97cc9DA04A1fFFEA82F5d7122",
          "fee": 100,
          "recipient": "0x3D555552132f55b97cc9DA04A1fFFEA82F5d7122",
          "deadline": 1630403200,
          "amountIn": 10000,
          "amountOutMinimum": 9000,
          "sqrtPriceLimitX96": 7894561250
        }
        ```
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-test-the-effects-of-a-token-transfer-bef" className="text-xl font-semibold">Как проверить эффекты трансфера токенов перед деплоем моего смарт-контракта?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/single-simulations"

        Вы можете симулировать трансферы токенов, запустив одиночную симуляцию через Simulation API. Это позволит вам проверить, как токены перемещаются между адресами, и убедиться, что логика контракта верна, перед его деплоем.

        [Узнать больше →](/simulations/single-simulations)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-integrate-tenderly-simulations-into-the" className="text-xl font-semibold">Как интегрировать симуляции Tenderly в UI для предпросмотра результатов транзакций для пользователей?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/overview"

        Вы можете интегрировать [Simulation API](/simulations/overview) или [Simulation RPC](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_simulateTransaction) от Tenderly в UI вашего dApp, вызывая API для симуляции транзакций и отображая пользователям итоговые изменения состояния, движения активов и оценки газа перед подтверждением транзакций.

        [Узнать больше →](/simulations/overview)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-simulate-contract-interactions-that-involve" className="text-xl font-semibold">Могу ли я симулировать взаимодействия контракта, включающие несколько внешних смарт-контрактов?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/bundled-simulations"

        Да, пакетные симуляции позволяют тестировать несколько взаимодействий с контрактами в одной симуляции. Состояние обновляется после каждой транзакции, что позволяет проверять сложные взаимодействия контрактов.

        Вы также можете симулировать пакеты транзакций с помощью [**`tenderly_simulateBundle` RPC**](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_simulateBundle).

        [Узнать больше →](/simulations/bundled-simulations)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-does-the-simulation-api-handle-reverts-in-smar" className="text-xl font-semibold">Как Simulation API обрабатывает откаты в вызовах смарт-контрактов?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/single-simulations"

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

        [Узнать больше →](/simulations/single-simulations)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-display-detailed-balance-changes-to-user" className="text-xl font-semibold">Как отобразить пользователям подробные изменения балансов после симулированной транзакции?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/asset-balance-changes"

        Simulation API от Tenderly возвращает изменения балансов активов как часть результата симуляции. Вы можете использовать эти данные, чтобы показать пользователям, как их балансы токенов изменятся после транзакции.

        [Узнать больше →](/simulations/asset-balance-changes)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-estimate-the-gas-required-for-contract-funct" className="text-xl font-semibold">Могу ли я оценить газ, необходимый для функций контракта, с помощью Simulation API?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/gas-estimation"

        Да, функция оценки газа в Tenderly позволяет симулировать функции контракта и получать точную оценку газа перед выполнением транзакции. Это помогает убедиться, что транзакция выполнится успешно, и минимизировать затраты на газ.

        Помимо Simulation API, можно использовать [**`tenderly_estimateGas`**](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_estimateGas) и [**`tenderly_estimateGasBundle`**](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_estimateGasBundle).

        [Узнать больше →](/simulations/gas-estimation)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-the-difference-between-gas-and-gasused" className="text-xl font-semibold">В чём разница между gas и gasUsed?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        Gas — это максимальный лимит газа, выделенный на транзакцию («бюджет»), а gasUsed показывает фактический объём газа, израсходованный во время выполнения.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-do-bundled-simulations-help-in-testing-complex" className="text-xl font-semibold">Как пакетные симуляции помогают тестировать сложные рабочие процессы с несколькими вызовами контрактов?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/bundled-simulations"

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

        [Узнать больше →](/simulations/bundled-simulations)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-do-i-handle-simulation-failures-and-errors-in" className="text-xl font-semibold">Как обрабатывать сбои и ошибки симуляции в UI dApp?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/quickstart"

        Когда симуляция завершается сбоем, Tenderly API предоставляет подробные сообщения об ошибках. Вы можете использовать эти сообщения, чтобы отображать пользователям осмысленную обратную связь об ошибках в UI dApp, помогая им скорректировать транзакцию перед повторной попыткой.

        [Узнать больше →](/simulations/quickstart)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-do-i-trigger-simulations-programmatically-from" className="text-xl font-semibold">Как программно запускать симуляции из бэкенда для проверки успеха транзакции перед выполнением?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/quickstart"

        Вы можете программно запускать симуляции, выполняя POST-запрос к эндпоинту [**`/simulate`** REST API](/api-reference#/operations/simulateTransaction) или [**`tenderly_simulateTransaction`** RPC](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_simulateTransaction), передавая детали транзакции. Это помогает проверить успех транзакции в контролируемом окружении перед её отправкой в сеть.

        [Узнать больше →](/simulations/quickstart)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-modify-storage-variables-during-a-simulation" className="text-xl font-semibold">Можно ли изменять переменные хранилища во время симуляции для тестирования различных сценариев?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/state-overrides"

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

        [Узнать больше →](/simulations/state-overrides)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-create-a-ui-that-shows-gas-estimates-for-use" className="text-xl font-semibold">Могу ли я создать UI, показывающий оценки газа для пользовательских транзакций с помощью Tenderly API?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/gas-estimation"

        Да, вы можете интегрировать функцию оценки газа Tenderly API в свой UI, чтобы показывать пользователям оценочную стоимость газа для их транзакций перед подтверждением.

        Альтернативно можно использовать [**`tenderly_estimateGas`**](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_estimateGas) и [**`tenderly_estimateGasBundle`**](/node-rpc/rpc-reference?network=ethereum-mainnet\&method=tenderly_estimateGasBundle).

        [Узнать больше →](/simulations/gas-estimation)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-simulate-calls-from-different-wallets-to" className="text-xl font-semibold">Как симулировать вызовы моего контракта с разных кошельков для тестирования многопользовательских сценариев?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/single-simulations"

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

        [Узнать больше →](/simulations/single-simulations)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-simulate-invalid-or-out-of-bound-inputs" className="text-xl font-semibold">Как симулировать некорректные или выходящие за пределы допустимого входные данные для проверки устойчивости контракта в различных граничных случаях?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/single-simulations"

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

        [Узнать больше →](/simulations/single-simulations)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-simulate-flash-loan-attacks-or-multi-contrac" className="text-xl font-semibold">Могу ли я симулировать атаки flash loan или уязвимости взаимодействия с несколькими контрактами?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/bundled-simulations"

        Да, вы можете симулировать сложные транзакции, такие как атаки flash loan или взаимодействия между несколькими контрактами, объединяя транзакции в одну симуляцию. Это полезно для тестирования уязвимостей в DeFi-протоколах.

        [Узнать больше →](/simulations/bundled-simulations)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-simulate-cross-contract-interactions-and" className="text-xl font-semibold">Как симулировать межконтрактные взаимодействия и обеспечить корректность потока транзакций?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/bundled-simulations"

        Объединив транзакции в одну симуляцию, вы можете тестировать межконтрактные взаимодействия и проверять, что поток транзакций корректно ведёт себя в нескольких контрактах. Это критически важно для dApp, которые полагаются на сложные взаимодействия контрактов.

        [Узнать больше →](/simulations/bundled-simulations)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-bundle-multiple-user-actions-into-a-sing" className="text-xl font-semibold">Как объединить несколько пользовательских действий в одну симуляцию для предоставления обратной связи по сложным потокам?</h2>

      <hr className="dark:border-neutral-800" />

      <div>
        [//]: # "/simulations/bundled-simulations"

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

        [Узнать больше →](/simulations/bundled-simulations)
      </div>
    </div>
  </Card>
</div>
