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

# Отправка транзакций в Virtual Environments

> Отправляйте подписанные и неподписанные транзакции в Virtual Environment через JSON-RPC и пополняйте аккаунты чит-кодами Admin RPC.

Virtual Environments позволяют отправлять транзакции в виртуальную сеть. Процесс отправки транзакций идентичен отправке транзакций в реальной сети.

Транзакции можно отправлять через UI Dashboard или через RPC. На этой странице показано, как это сделать обоими способами.

## Отправка через RPC

Используйте RPC-метод `eth_sendRawTransaction` для отправки транзакций в вашу Virtual Environment.

Пример ниже показывает, как отправить транзакцию с помощью Viem, Ethers.js и команды cURL. Фрагменты кода можно запускать без изменений.

<Tabs>
  <Tab title="Shell">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    curl $TENDERLY_VIRTUAL_TESTNET_RPC \
        -X POST \
        -H "Content-Type: application/json" \
        -d '{
              "jsonrpc": "2.0",
              "id": 0,
              "method": "eth_sendRawTransaction",
              "params": [
                "0x095ea7b300000000000000000000000040bdb4497614bae1a67061ee20aade3c2067ac9e00000000000000000000000000000000000000000000000000000000000186a0"
              ]
        }'
    ```
  </Tab>

  <Tab title="virtual-environments/src/viem-send-tx.ts">
    Подробнее об интеграции с Viem — в [этом руководстве](/virtual-environments/libraries/viem).

    ```typescript showLineNumbers title="virtual-environments/src/viem-send-tx.ts" lines={2,4, 17, 23} theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}

    const EXPLORER_BASE_URL = vMainnet.blockExplorers.default;

    const account = privateKeyToAccount(generatePrivateKey());

    (async () => {
      const client = createWalletClient({
        account,
        chain: vMainnet,
        transport: http(vMainnet.rpcUrls.default.http[0]),
      });

      await tenderlySetBalance(client, [
        [account.address],
        "0xDE0B6B3A7640000",
      ]);


      const tx = await client.sendTransaction({
        to: "0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC",
        value: parseEther("0.01"),
      });

      console.log(`${EXPLORER_BASE_URL}/tx/${tx}`);
    })();
    ```
  </Tab>

  <Tab title="send-tx.ts">
    Подробнее об интеграции с Ethers — в [этом руководстве](/virtual-environments/libraries/ethers).

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

    await (async () => {
      const provider = new ethers.JsonRpcProvider(process.env.TENDERLY_VIRTUAL_TESTNET_RPC!);

      const signer = Wallet.fromPhrase(Mnemonic.fromEntropy(ethers.randomBytes(24)).phrase, provider);

      await provider.send("tenderly_setBalance", [
        signer.address,
        "0xDE0B6B3A7640000",
      ]);

      const tx = await signer.sendTransaction({
        to: "0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC",
        value: ethers.parseEther("0.01"),
      });

      console.log(`${process.env.VIRTUAL_MAINNET_EXPLORER!}/tx/${tx.hash}`);
    })();
    ```
  </Tab>
</Tabs>

## Отправка из Dashboard

Транзакции, отправленные из Dashboard, будут записаны в состояние Virtual Environment. Эти транзакции **не нужно подписывать**, и их можно отправлять на любой адрес и с любого адреса в Virtual Environment.

Из представления Explorer щёлкните на **иконке Send** в правом верхнем углу, чтобы открыть форму ввода **Send Transaction**.

[Смотреть на Loom →](https://www.loom.com/embed/e376ad4184ab4294b9e0ca57033af568?sid=0cdaf910-aad4-41fc-86a6-6bc678032341)

<Steps>
  ### Выберите контракт

  В поле **address** вставьте адрес контракта стейблкоина DAI: `0x6B175474E89094C44Da98b954EedeAC495271d0F`.

  Получающий контракт может быть любым из следующих:

  * Virtual Contract [задеплоенным в Virtual Environment](/virtual-environments/develop/deploy-contracts)
  * Контрактом, добавленным в ваш [проект Tenderly](/platform/account/projects/overview)
  * Любым существующим контрактом в сети

  ### Укажите данные вызова

  Для контрактов, [верифицированных в Tenderly](/contract-verification/overview) (приватно или публично) или публично на Etherscan или Blockscout,
  вы можете использовать **Choose function and parameters**.

  1. Выберите функцию **`approve`**
  2. Вставьте адрес, которому вы хотите разрешить DAI (`0x40BdB4497614bAe1A67061EE20AAdE3c2067AC9e`)
  3. Установите количество DAI в wei, которое вы хотите одобрить. Например, `10000000000000000000`.

  <Note>Для неверифицированных контрактов нужно **ввести необработанные входные данные/calldata** в hex-форме.</Note>

  ### Заполните параметры транзакции

  Можно заполнить следующие опции:

  * **From**: любой адрес аккаунта, поскольку транзакции в Virtual Environments не нужно подписывать. Используйте `0xbd8daa414fda8a8a129f7035e7496759c5af8570` или любой адрес, который вы пополнили DAI.
  * **Gas**: по умолчанию `800000`, либо задайте желаемый газ (лимит)
  * **Gas Price**: по умолчанию `0`, либо произвольная цена газа
  * **Value**: по умолчанию `0`, либо укажите произвольное значение транзакции, которое будет вычтено из баланса отправителя (**from**).

  <Note>
    У аккаунтов-отправителей должно быть достаточно средств для отправки транзакций. Используйте [Unlimited Faucet](/virtual-environments/unlimited-faucet), чтобы пополнить любой аккаунт любым балансом перед отправкой транзакций в Virtual Environments.
  </Note>

  ### Отправьте транзакцию

  Нажмите **Send Transaction**.

  Отправленные транзакции появятся в [Virtual Environment Explorer](/virtual-environments/explorer). Щёлкните на транзакции, чтобы просмотреть её call trace, отладить с помощью Debugger или повторно симулировать с другими параметрами.

  <img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/dai-send-tx.png?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=e87158c2e275276447fb71683b0f03e2" alt="" width="3456" height="2160" data-path="images/testnets/dai-send-tx.png" />
</Steps>

## Дальнейшие шаги

* [Симулируйте транзакцию](/virtual-environments/interact/simulate-transactions): запускайте симуляции транзакций из Dashboard или через RPC
* [Задеплойте смарт-контракт](/virtual-environments/develop/deploy-contracts): начните деплоить и мониторить смарт-контракты
* [Стейджинг dapp](/virtual-environments/ci-cd/stage-dapps): узнайте, как подключить Virtual Environment к UI вашего dapp
* [Отладка транзакций](/virtual-environments/develop/debug-transactions) с помощью Tenderly Debugger.
