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

> 将实时网络 fork 为私有的、类生产环境的 testnet 替代方案，通过 JSON-RPC 和可视化仪表板用于 dapp 开发、CI/CD 和 staging。

Virtual Environments 是私有的区块链环境，它们 fork 一条实时网络，并像您可控制的 Mainnet 一样运行。它们为您提供生产链的真实性（预言机价格、活跃的资金池、治理状态），同时没有成本或风险。您可以通过您的工具已经使用的相同 JSON-RPC 与它们交互，此外还有用于作弊码的增强型 Admin RPC，以及带有区块浏览器的可视化仪表板。

<Note>
  Virtual Environments 仅在付费计划中可用。要为您的账户启用它们，请[联系我们的销售团队](https://tenderly.co/contact-us)以安排通话并讨论升级您的计划。
</Note>

<Frame>
  <img src="https://mintcdn.com/tenderly/bHnTa-WH-G_A7Wtg/images/testnets/27-vnet-home.webp?fit=max&auto=format&n=bHnTa-WH-G_A7Wtg&q=85&s=42e6f39d617130411f3c4005bd0d766d" alt="Virtual Environment Home view showing the Integrate Virtual RPC section with Admin RPC and Public RPC endpoints, setup steps, Network Mirror, Bridge, and Contracts cards, and the attached network with chain IDs and block numbers" width="1600" height="1000" data-path="images/testnets/27-vnet-home.webp" />
</Frame>

## 您可以用它们构建什么

* **本地节点替代方案。** 针对一个镜像 Mainnet 状态的网络，编码、测试和调试您 dapp 的每个部分（智能合约、dapp UI、后端、索引层）。
* **CI/CD 基础设施。** 为每个 pull request 配置一个全新的 Virtual Environment，部署您的合约，运行测试，然后拆除它。[GitHub Actions 指南](/virtual-environments/ci-cd/github-actions-foundry)介绍了这种模式。
* **Staging 与演示环境。** 针对 fork 的 Mainnet 运行完整的 dapp，用于人工 QA、社区测试、合约审计或销售演示。审核人员看到的是真实的区块浏览器；您无需动用真实资金。
* **跨链测试。** 将多个网络附加到一个 Virtual Environment 上，端到端演练桥接流程。[Multichain Quickstart](/virtual-environments/multichain/quickstart) 引导您完成设置。

## Virtual Environments 与公共 testnet 相比如何？

Sepolia 和 Holesky 等公共 testnet 运行自己隔离的链状态，因此缺乏 Mainnet 的流动性、实时预言机价格以及您的 dapp 所依赖的已部署协议。Virtual Environment 则会 fork Mainnet（或 100+ 网络中的任意一个），因此您可以针对真实的生产状态进行测试，拥有永不枯竭的水龙头资金，以及对账户余额、区块号和时间的完全控制。与公共 testnet 不同，它对您的团队保持私有，并且可以按 pull request 创建和销毁。

## 从这里开始

<CardGroup cols={2}>
  <Card title="Quickstart" href="/virtual-environments/quickstart">
    启动您的第一个 Virtual Environment，为账户注资，并发送交易。
  </Card>

  <Card title="Multichain Quickstart" href="/virtual-environments/multichain/quickstart">
    设置一个跨越多个网络的 Virtual Environment，并通过自动桥接中继运行一笔跨链交易。
  </Card>
</CardGroup>

## 网络同步模式

每个 Virtual Environment 都有一个网络同步模式，用于控制它在创建后与其父网络的关系：

* **Static**（默认）：Virtual Environment 停留在 fork 时的区块头，不接收来自父网络的实时更新。状态仅通过您自己的交易和作弊码进行变更。
* **State Only Sync**：存储槽会持续跟踪父网络的实时值，直到您的 Virtual Environment 对其进行写入。参见 [State Sync](/virtual-environments/state-sync)。
* **Network Mirror**：将父网络逐个区块地完整重放到您的 Virtual Environment 上，具有可见的内存池和时间控制。参见 [Network Mirror Mode](/virtual-environments/network-mirror-mode)。

同步模式在创建时固定，之后无论从仪表板还是 API 都无法更改。要使用其他模式，请创建一个新的 Virtual Environment。

## 构建模块

以下页面解释了 Virtual Environment 的每个部分做什么以及它们之间的关系。在您需要调试问题之前请先阅读它们。

<CardGroup cols={3}>
  <Card title="Explorer" href="/virtual-environments/explorer">
    通过熟悉的区块浏览器 UI 检查您的 Virtual Environment 上的交易、合约、钱包和 RPC 调用。
  </Card>

  <Card title="Unlimited Faucet" href="/virtual-environments/unlimited-faucet">
    为任意账户充值原生货币或 ERC-20 余额，无需真实资金。
  </Card>

  <Card title="State Sync" href="/virtual-environments/state-sync">
    让存储槽持续跟踪实时 Mainnet 值，直到您的 Virtual Environment 对其进行写入。
  </Card>

  <Card title="Network Mirror Mode" href="/virtual-environments/network-mirror-mode">
    与父网络逐块对齐，具有可见的内存池和时间控制。
  </Card>

  <Card title="Named RPC URLs" href="/virtual-environments/named-rpc-urls">
    为环境的 RPC URL 附加一个固定的、人类可读的名称，使其在重新 fork 后仍然有效。
  </Card>

  <Card title="Multichain Virtual Environments" href="/virtual-environments/multichain/overview">
    一个 Virtual Environment、多个网络、共享身份、统一时间线。
  </Card>

  <Card title="Bridges" href="/virtual-environments/multichain/bridges">
    Multichain Virtual Environment 中各网络之间 LayerZero、Chainlink CCIP 和 Across 的自动中继。
  </Card>
</CardGroup>

## 您如何与 Virtual Environment 交互

您可以通过四个界面驱动 Virtual Environment：

* **Tenderly Dashboard**，在其中创建 Virtual Environment、浏览交易、为账户注资、针对环境的当前状态模拟交易，以及配置设置。
* **Public RPC**，一个标准的 JSON-RPC 端点，支持任何 dapp 或库已经调用的方法。将其用于您的 dapp UI、后端以及您会向外部测试者公开的任何东西。
* **Admin RPC**，一个增强型 JSON-RPC 端点，增加了用于设置余额、覆盖存储、快进时间、部署任意字节码以及与实时网络同步的作弊码。请在您的开发工具和测试中使用它，而不要在任何外部可访问的地方使用。完整的作弊码集合记录在 [Admin RPC 参考](/virtual-environments/admin-rpc)中。
* **REST API**，用于从脚本和 CI 流水线中创建、fork 和删除 Virtual Environments。参见 [REST API 参考](/virtual-environments/rest-api)；[GitHub Actions 指南](/virtual-environments/ci-cd/github-actions-foundry)在 pull request 工作流中对其进行了封装。

<Warning>
  当您与外部测试者共享 Virtual Environment 或通过 dapp UI 公开它时，请提供 Public RPC，而不是 Admin RPC。Admin RPC 允许调用方以可能破坏您测试的方式变更余额、存储、时间和其他网络状态。
</Warning>

## 常见任务

<CardGroup cols={3}>
  <Card title="添加到钱包" href="/virtual-environments/interact/add-to-wallet">
    将 MetaMask 或其他钱包连接到您的 Virtual Environment。
  </Card>

  <Card title="连接您的工具" href="/virtual-environments/integrations">
    将 Foundry、Hardhat、ethers、viem 或您的 dapp UI 指向您的 Virtual Environment RPC。
  </Card>

  <Card title="部署和验证合约" href="/virtual-environments/develop/deploy-contracts">
    使用 Foundry 或 Hardhat 部署，并自动进行合约验证。
  </Card>

  <Card title="模拟交易" href="/virtual-environments/interact/simulate-transactions">
    在发送之前，针对 Virtual Environment 的当前状态对交易进行试运行。
  </Card>

  <Card title="Fork Virtual Environment" href="/virtual-environments/develop/fork-testnet">
    将现有 Virtual Environment 在其当前状态下分支为新的 Virtual Environment。
  </Card>

  <Card title="回滚状态" href="/virtual-environments/develop/revert-state">
    创建快照并将 Virtual Environment 回滚到这些快照。
  </Card>
</CardGroup>

## 支持的网络

Virtual Environments 支持 100+ EVM 网络。完整列表请参见[支持的网络](/platform/supported-networks)。

## 另请参阅

* [Quickstart](/virtual-environments/quickstart)，端到端体验您的第一个 Virtual Environment。
* [Stage contracts](/virtual-environments/ci-cd/stage-contracts)，与您的团队共享 Virtual Environment。
* [Admin RPC](/virtual-environments/admin-rpc) 和 [REST API](/virtual-environments/rest-api) 参考资料。
* [Solidity Cheatcodes](/virtual-environments/precompiles)，通过 Virtual Environment 预编译从交易内部操纵状态。
