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

# Multichain quickstart

> Создайте Multichain Virtual Environment, подключите её к Foundry или Hardhat, пополните аккаунты и выполните межцепочечную транзакцию от начала до конца.

Этот туториал проведёт вас от нуля до межцепочечной транзакции в Multichain Virtual Environment. К концу у вас будет Virtual Environment, охватывающая несколько сетей, с Bridge Module, ретранслирующим сообщения между ними, ваши контракты, задеплоенные в каждой сети, пополненные аккаунты в каждой цепочке и рабочая межцепочечная транзакция, видимая в единой шкале времени панели.

Если вы ещё не читали [обзор](/virtual-environments/multichain/overview), сначала сделайте это. Он объясняет, что такое Multichain Virtual Environment, как устроены RPC URL и что означают Virtual Chain ID.

## Прежде чем начать

Вам понадобится:

* Аккаунт Tenderly с включёнными multichain-возможностями. Если вы не видите опции добавления нескольких сетей при создании Virtual Environment, [свяжитесь с нами](https://tenderly.co/contact-us).
* Приватный ключ кошелька, который вы готовы использовать в тестовом окружении. Установите его как `PRIVATE_KEY` в вашем шелле.
* Установленный локально [Foundry](https://www.getfoundry.sh/) или [Hardhat](https://hardhat.org/).

Остальная часть туториала предполагает Ethereum mainnet, Arbitrum, Optimism и Base, но тот же поток работает с любой комбинацией поддерживаемых сетей.

## Пройдите туториал

<Steps>
  ### Создайте Multichain Virtual Environment

  В Tenderly Dashboard откройте **Virtual Environments** и начните новое. Ethereum mainnet предвыбран по умолчанию. Добавьте Arbitrum, Optimism и Base из списка сетей. Продакшен-цепочки идут первыми в списке, тестовые сети — внизу.

  Для каждой сети можно выбрать:

  * **Fork point.** Форк из последнего блока (по умолчанию) или выбрать конкретный номер блока, временную метку или дату.
  * **Chain ID.** Оставьте Virtual Chain ID по умолчанию, если у вас нет причины его переопределять. Раздел [Virtual Chain IDs](/virtual-environments/multichain/overview#virtual-chain-ids) объясняет компромиссы.

  Сохраните Virtual Environment. Обратите внимание на слаг, который Tenderly ей присваивает. Слаг является частью каждого RPC URL, который вы будете использовать далее.

  ### Включите Bridge Module

  Откройте настройки Virtual Environment и включите **Bridging**. После включения Bridge Module отслеживает межцепочечные события во всех сетях Virtual Environment и автоматически ретранслирует их в целевую цепочку. См. [Bridges](/virtual-environments/multichain/bridges) — какие протоколы и сети он покрывает.

  ### Подключите RPC к вашему проекту

  У каждой сети в вашей Virtual Environment есть уникальный RPC URL с предсказуемой формой:

  ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  https://virtual.<network>.<region>.rpc.tenderly.co/<org-slug>/<virtual-env-slug>
  ```

  Скопируйте RPC URL со страницы деталей Virtual Environment и добавьте их в конфигурацию проекта.

  <Tabs>
    <Tab title="Foundry">
      ```toml title="foundry.toml" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
      [rpc_endpoints]
      mainnet  = "https://virtual.mainnet.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug>"
      arbitrum = "https://virtual.arbitrum.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug>"
      optimism = "https://virtual.optimism.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug>"
      base     = "https://virtual.base.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug>"
      ```

      Чтобы верифицировать развёртывание в обозревателе Virtual Environment, установите `--verifier-url` тот же самый RPC. Вы получите верифицированный контракт в панели сразу после завершения деплоя.
    </Tab>

    <Tab title="Hardhat">
      ```typescript title="hardhat.config.ts" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
      const config: HardhatUserConfig = {
        networks: {
          tenderly_mainnet: {
            url: "https://virtual.mainnet.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug>",
            accounts: [process.env.PRIVATE_KEY],
          },
          tenderly_arbitrum: {
            url: "https://virtual.arbitrum.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug>",
            accounts: [process.env.PRIVATE_KEY],
          },
          tenderly_optimism: {
            url: "https://virtual.optimism.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug>",
            accounts: [process.env.PRIVATE_KEY],
          },
        },
      };
      ```
    </Tab>
  </Tabs>

  ### Пополните аккаунты в каждой сети

  Откройте [Unlimited Faucet](/virtual-environments/unlimited-faucet) для вашей Virtual Environment и пополните адрес, с которого вы будете деплоить. Сделайте это в каждой сети, поскольку балансы ведутся отдельно для каждой сети. Для самого деплоя достаточно нативной валюты. Если ваши контракты перемещают токены, пополните и их.

  ### Задеплойте и запустите межцепочечную транзакцию

  Задеплойте ваши контракты в каждую сеть, подключённую к Virtual Environment.

  <Tabs>
    <Tab title="Foundry">
      ```bash showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
      forge create Counter \
        --private-key $PRIVATE_KEY \
        --rpc-url https://virtual.optimism.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug> \
        --broadcast \
        --verify \
        --verifier-url https://virtual.optimism.eu.rpc.tenderly.co/<org-slug>/<virtual-env-slug>
      ```
    </Tab>

    <Tab title="Hardhat">
      ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
      npx hardhat run scripts/deploy.ts --network tenderly_mainnet
      ```
    </Tab>
  </Tabs>

  После того как контракты задеплоены в каждой сети, отправьте межцепочечную транзакцию так, как вы делаете это обычно (например, вызов `send` LayerZero). При включённом Bridge Module доставка на стороне назначения публикуется немедленно. Откройте панель Virtual Environment — вы должны увидеть обе транзакции, исходную и целевую, в единой шкале времени.

  Используйте фильтр Source/Destination в [Bridges](/virtual-environments/multichain/bridges#transaction-views), чтобы явно подтвердить round-trip.
</Steps>

Теперь у вас есть работающая Multichain Virtual Environment с межцепочечным мостостроением.

## Что попробовать дальше

Теперь, когда туториал работает, вот как применить тот же подход к реальным рабочим процессам:

<CardGroup cols={2}>
  <Card title="Автоматизация развёртываний в CI" href="/virtual-environments/ci-cd/github-actions-foundry">
    Деплойте в каждую сеть при каждом пуше, параллельно, с помощью GitHub Actions. Руководства по CI/CD показывают matrix-workflow и необходимые секреты.
  </Card>

  <Card title="Стейджинг фронтенда" href="/virtual-environments/dapp-ui/wagmi">
    Направьте ваш dApp на RPC Virtual Environment и предоставьте команде и ревьюерам окружение, отрабатывающее весь multichain-поток.
  </Card>

  <Card title="Создание Virtual Environments через API" href="/virtual-environments/develop/create-virtual-environment-via-api">
    Эндпоинт `multivnets` создаёт Multichain Virtual Environment одним вызовом. Удобно для создания окружения под каждый PR.
  </Card>

  <Card title="Тестирование сбоев моста" href="/virtual-environments/multichain/bridges#manual-bridge-controls">
    Ручное управление мостом позволяет детерминированно инсценировать нехватку газа, дублирующие доставки, изменённые payload и другие режимы отказа.
  </Card>
</CardGroup>

## См. также

* [Обзор Multichain Virtual Environments](/virtual-environments/multichain/overview)
* [Bridges](/virtual-environments/multichain/bridges)
* [Unlimited Faucet](/virtual-environments/unlimited-faucet)
* [Admin RPC](/virtual-environments/admin-rpc)
