> ## 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: Web3 Actions

> Ответы о режимах выполнения Web3 Actions, типах хранилища, триггерах, лимитах запросов, библиотеках рантайма, секретах, локальном тестировании и лимитах размера проекта.

<div className="flex flex-col gap-4 mt-8">
  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="do-i-need-a-paid-plan-to-use-web3-actions" className="text-xl font-semibold">Нужен ли платный тарифный план для использования Web3 Actions?</h2>

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

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

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-s-the-difference-between-parallel-and-sequent" className="text-xl font-semibold">В чём разница между параллельным и последовательным выполнением?</h2>

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

      <div>
        При настройке Web3 Action вы можете выбрать один из двух режимов выполнения.

        Когда сработало несколько Web3 Actions (например, транзакции из одного блока), эти два режима ведут себя следующим образом:

        * **sequential**: выполнение будет соблюдать порядок, в котором произошли триггеры; до завершения триггера `N-1` триггер `N` ожидает выполнения. Порядок выполнения гарантирован.
        * **parallel**: все триггеры будут отправлены на выполнение, а порядок выполнения не гарантируется.

        Действуют различные [лимиты запросов](#whats-the-rate-limit-for-web3-actions).
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-s-the-difference-between-write-copy-on-write" className="text-xl font-semibold">В чём разница между типами хранилища WRITE, COPY ON WRITE и EMPTY?</h2>

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

      <div>
        * **Write**: этот тип выбран по умолчанию. Он всегда используется в автоматических триггерах и записывает данные в
          основное хранилище. Обратите внимание, что этот тип потенциально может перезаписать данные в основном хранилище.
          * **Copy on write**: этот тип создаёт копию основного хранилища как временное хранилище. Его можно выбрать для
            ручных триггеров. Как только триггер прекращает работать, всё, что было записано во временное хранилище, не будет
            сохранено.
          * **Empty**: этот тип создаёт временное пустое хранилище. Его можно выбрать для ручных триггеров. Тип пустого
            хранилища не имеет никакой привязки к основному хранилищу. Как только триггер прекращает работать, всё, что было
            записано в этот тип хранилища, исчезнет.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="do-contracts-need-to-be-verified-to-be-used-in-web" className="text-xl font-semibold">Нужно ли верифицировать контракты для использования в Web3 Actions?</h2>

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

      <div>
        Да, контракты должны быть верифицированы и добавлены в ваш проект в Tenderly для использования в триггерах Web3 Action.
        Иначе CLI выдаст ошибку.

        Узнайте больше о [триггерах и их работе
        здесь](/monitoring/web3-actions/references/functions-events-triggers).
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-the-allowed-number-of-web3-actions-per-pro" className="text-xl font-semibold">Каково допустимое количество Web3 Actions на проект?</h2>

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

      <div>
        Допустимое количество Web3 Actions на проект — 10. Если вы попытаетесь развернуть Action и достигнете
        лимита, вы получите следующее сообщение об ошибке:

        `The request failed with a status code of 400 and status message of '400 Bad Request'`
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-the-storage-limit" className="text-xl font-semibold">Каков лимит хранилища?</h2>

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

      <div>
        Лимит key-value хранилища составляет 100 КБ и не ограничен по количеству ключей. Вы можете добавлять столько
        ключей, сколько хотите, при условии, что их общий размер меньше или равен 100 КБ.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-s-the-size-limit-to-the-web3-action-project" className="text-xl font-semibold">Каков лимит размера проекта Web3 Action?</h2>

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

      <div>
        Когда вы создаёте Web3 Action с помощью CLI, весь NPM-проект будет запакован в zip и загружен в Tenderly.
        Максимальный размер запакованного архива, включая `node_modules`, — **40 МБ**.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-s-the-maximum-duration-of-web3-action-executi" className="text-xl font-semibold">Какова максимальная продолжительность выполнения Web3 Action?</h2>

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

      <div>
        Выполнение Web3 Action ограничено 30 секундами, после чего оно будет прекращено.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-the-execution-timeout-for-web3-actions" className="text-xl font-semibold">Каков тайм-аут выполнения для Web3 Actions?</h2>

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

      <div>
        Текущий тайм-аут выполнения — 30 с, после чего выполнение будет прекращено. Если требуется больше времени, вы
        можете связаться с нашей службой поддержки по адресу [support@tenderly.co](mailto:support@tenderly.co), чтобы обсудить ваш сценарий использования. Получите больше [информации о типах статуса выполнения](/monitoring/web3-actions/references/execution).
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="i-have-a-tenderly-yaml-file-with-two-web3-actions" className="text-xl font-semibold">У меня есть файл `tenderly.yaml` с двумя Web3 Actions с одинаковым триггером (определённое событие контракта). Будет ли первый action, объявленный в файле манифеста, всегда вызываться до второго?</h2>

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

      <div>
        Два отдельных Web3 Actions с одинаковым триггером выполняются параллельно, поскольку они являются изолированными сущностями и не знают
        друг о друге.
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-s-available-in-web3-actions-runtime" className="text-xl font-semibold">Что доступно в рантайме Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/functions-events-triggers#available-libraries-for-dashboard-based-actions"

        Доступны следующие библиотеки:

        * Ethers.js
        * Bignumber.js
        * Axios
        * Luxon

        [Узнать больше →](/monitoring/web3-actions/references/functions-events-triggers#available-libraries-for-dashboard-based-actions)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-do-web3-actions-interact-with-blockchain-data" className="text-xl font-semibold">Как Web3 Actions взаимодействуют с данными блокчейна?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/introduction"

        Web3 Actions могут взаимодействовать с данными блокчейна, читая блоки, транзакции и логи, обеспечивая мониторинг смарт-контрактов.
        Пример:

        ```js theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        const { ethers } = require("ethers");
        const provider = new ethers.providers.JsonRpcProvider(RPC_URL);
        const latestBlock = await provider.getBlockNumber();
        ```

        [Узнать больше →](/monitoring/web3-actions/introduction)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-are-the-trigger-types-available-for-web3-acti" className="text-xl font-semibold">Какие типы триггеров доступны для Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/functions-events-triggers#external-events-and-trigger-types"

        Web3 Actions поддерживают триггеры block, transaction, webhook и periodic (CRON), которые определяют, когда action должен быть выполнен.

        [Узнать больше →](/monitoring/web3-actions/references/functions-events-triggers#external-events-and-trigger-types)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-do-i-deploy-web3-actions" className="text-xl font-semibold">Как развернуть Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/introduction"

        Web3 Actions можно развернуть через Tenderly Dashboard или с помощью CLI. CLI предоставляет более расширенные опции конфигурации.
        Пример команды CLI:

        ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        tenderly actions deploy --name MyAction --triggers triggers.yaml
        ```

        [Узнать больше →](/monitoring/web3-actions/introduction)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-are-errors-handled-in-web3-actions" className="text-xl font-semibold">Как обрабатываются ошибки в Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/error-reporting"

        Ошибки в Web3 Actions логируются и могут быть просмотрены в Tenderly Dashboard. Неудачные actions можно перезапустить для дальнейшей отладки.

        [Узнать больше →](/monitoring/web3-actions/references/error-reporting)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-s-the-rate-limit-for-web3-actions" className="text-xl font-semibold">Каков лимит запросов для Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/usage-rate-limits"

        Лимит запросов — 100 выполнений за 5 минут на Web3 Action.

        [Узнать больше →](/monitoring/web3-actions/usage-rate-limits)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-key-value-storage-in-web3-actions" className="text-xl font-semibold">Что такое key-value хранилище в Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/context#storage"

        Key-value хранилище позволяет Web3 Actions сохранять состояние между выполнениями.
        Пример:

        ```js theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        await kvStore.put("myKey", "value");
        const value = await kvStore.get("myKey");
        ```

        [Узнать больше →](/monitoring/web3-actions/references/context#storage)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-i-store-data-in-web3-actions" className="text-xl font-semibold">Могу ли я хранить данные в Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/context#storage"

        Да, вы можете использовать key-value хранилище для сохранения данных и управлять секретами для конфиденциальной информации, такой как API-ключи.
        Пример:

        ```js theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        const value = await kvStore.get("key");
        await kvStore.put("key", value);
        ```

        [Узнать больше →](/monitoring/web3-actions/references/context#storage)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-are-common-use-cases-for-web3-actions" className="text-xl font-semibold">Каковы распространённые сценарии использования Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/introduction#use-cases-for-web3-actions-and-different-events"

        Распространённые сценарии использования включают мониторинг транзакций блокчейна, автоматизацию задач и построение webhook-бэкендов для dapp'ов.

        [Узнать больше →](/monitoring/web3-actions/introduction#use-cases-for-web3-actions-and-different-events)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-web3-actions-be-tested-locally" className="text-xl font-semibold">Можно ли тестировать Web3 Actions локально?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/local-development"

        Да, с помощью npm-пакета `@tenderly/actions-test` Web3 Actions можно тестировать локально.
        Пример:

        ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        npm install @tenderly/actions-test
        tenderly actions run local MyAction.js
        ```

        [Узнать больше →](/monitoring/web3-actions/references/local-development)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-are-the-supported-programming-languages-for-w" className="text-xl font-semibold">Какие языки программирования поддерживаются для Web3 Actions?</h2>

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

      <div>
        Web3 Actions пишутся на JavaScript или TypeScript.
        Пример:

        ```ts theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        async function main() {
          console.log("Running Web3 Action");
        }
        ```
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-can-i-manage-secrets-in-web3-actions" className="text-xl font-semibold">Как управлять секретами в Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/context#secrets"

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

        ```js theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        const apiKey = await secrets.get("API_KEY");
        ```

        [Узнать больше →](/monitoring/web3-actions/references/context#secrets)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="can-web3-actions-interact-with-external-apis" className="text-xl font-semibold">Могут ли Web3 Actions взаимодействовать с внешними API?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/introduction"

        Да, вы можете взаимодействовать с внешними API с помощью библиотек, таких как Axios, для HTTP-запросов.
        Пример:

        ```js theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        const axios = require("axios");
        const response = await axios.get("https://api.example.com/data");
        ```

        [Узнать больше →](/monitoring/web3-actions/introduction)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-the-purpose-of-cron-triggers-in-web3-actio" className="text-xl font-semibold">Каково назначение CRON-триггеров в Web3 Actions?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/functions-events-triggers#periodic-event"

        CRON-триггеры позволяют Web3 Actions выполняться периодически с определёнными интервалами, автоматизируя повторяющиеся задачи.
        Пример:

        ```yaml theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        cron:
          interval: "*/15 * * * *"
        ```

        [Узнать больше →](/monitoring/web3-actions/references/functions-events-triggers#periodic-event)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-are-webhook-based-web3-actions" className="text-xl font-semibold">Что такое Web3 Actions на основе webhook'ов?</h2>

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

      <div>
        [//]: # "source: https://docs.tenderly.co/monitoring/web3-actions/references/functions-events-triggers#webhook-event "

        Web3 Actions на основе webhook'ов запускаются входящими HTTP-запросами, что позволяет Web3 Actions выступать в роли бэкендов для dapp'ов или других сервисов.

        [Узнать больше →](/monitoring/web3-actions/references/functions-events-triggers#webhook-event)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-are-transaction-based-web3-actions" className="text-xl font-semibold">Что такое Web3 Actions на основе транзакций?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/functions-events-triggers#transaction-event"

        Web3 Actions на основе транзакций запускаются определёнными транзакциями блокчейна, обеспечивая мониторинг и пользовательские реакции.

        [Узнать больше →](/monitoring/web3-actions/references/functions-events-triggers#transaction-event)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-are-block-based-web3-actions" className="text-xl font-semibold">Что такое Web3 Actions на основе блоков?</h2>

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

      <div>
        [//]: # "https://docs.tenderly.co/monitoring/web3-actions/references/functions-events-triggers#block-event"

        Web3 Actions на основе блоков запускаются новыми блоками в блокчейне, что делает их идеальными для мониторинга на уровне блоков.

        [Узнать больше →](/monitoring/web3-actions/references/functions-events-triggers#block-event)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="what-is-the-purpose-of-simulations-in-web3-actions" className="text-xl font-semibold">Каково назначение симуляций в Web3 Actions?</h2>

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

      <div>
        [//]: # "source: https://docs.tenderly.co/monitoring/web3-actions/introduction#use-cases "

        Web3 Actions могут запускать симуляции транзакций для тестирования и проверки результатов перед отправкой транзакций.
        Пример:

        ```js theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
        const simulationResult = await simulateTransaction(txData);
        ```

        [Узнать больше →](/monitoring/web3-actions/introduction#use-cases)
      </div>
    </div>
  </Card>

  <Card>
    <div className="flex flex-col gap-2">
      <h2 id="how-does-tenderly-handle-logs-for-web3-actions" className="text-xl font-semibold">Как Tenderly обрабатывает логи для Web3 Actions?</h2>

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

      <div>
        Tenderly логирует каждое выполнение Web3 Actions. Логи можно просматривать и изучать в Tenderly Dashboard для отладки.
      </div>
    </div>
  </Card>
</div>
