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

# Named RPC URLs

> 为 Virtual Environment 的 RPC URL 附加一个固定的、人类可读的名称，使 CI/CD 和本地配置在重新 fork 后永不改变。

默认情况下，Virtual Environment 的 RPC URL 中包含一个随机生成的标识符，每次创建或重新 fork 环境时该标识符都会更改。Named RPC URL 会将该标识符替换为您选择的名称，因此 URL 在重新 fork 后保持不变。这样一来，每次为 pull request、本地开发循环或 staging 部署启动全新环境时，就无需更新 CI 密钥、`.env` 文件或硬编码的 RPC URL。

## RPC URL 格式

<Frame caption="Create Virtual Environment 对话框的 Advanced 部分：已启用 Named RPC URL，并且打开了 Add named endpoint 字段，显示创建新名称的选项。">
  <img src="https://mintcdn.com/tenderly/t9EqhphGfQpnmZbq/images/testnets/named-rpc-url-create.webp?fit=max&auto=format&n=t9EqhphGfQpnmZbq&q=85&s=93bd08cd0b82aeab6aad808aa0e7f9d6" alt="Advanced section of the Create Virtual Environment dialog with the Named RPC URL toggle enabled and the Add named endpoint combobox open showing a Create option for a new name" width="600" height="382" data-path="images/testnets/named-rpc-url-create.webp" />
</Frame>

不使用名称时，RPC URL 的标识符段是自动生成的，例如 `https://virtual.mainnet.eu.rpc.tenderly.co/tenderly/demo/89e9b3-4bcd00`，每次重新 fork 都会生成一个新的。

附加名称后，Public 和 Admin RPC URL 将采用以下形式：

| 端点         | URL 格式                                                                                       | 备注                                                                                           |
| ---------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| Public RPC | `https://virtual.[NETWORK].[REGION].rpc.tenderly.co/[ACCOUNT]/[PROJECT]/[RPC_NAME]`          | 仅标准 JSON-RPC，可安全地分享给外部测试者或嵌入到 dapp UI 中。                                                     |
| Admin RPC  | `https://virtual.[NETWORK].[REGION].rpc.tenderly.co/[ACCOUNT]/[PROJECT]/[RPC_NAME]-[SUFFIX]` | `[SUFFIX]` 是 Tenderly 附加的随机字符串，因此即使名称是公开的，[启用作弊码的](/virtual-environments/admin-rpc)端点也无法被猜到。 |

`[REGION]` 是 `eu` 或 `us-east`，取决于您在分配名称时选择的区域。`[RPC_NAME]` 在您的项目内必须唯一。名称附加后，就是它（而不是自动生成的标识符）在重新 fork 后保持固定。

## 在创建 Virtual Environment 时分配名称

1. 开始[创建 Virtual Environment](/virtual-environments/quickstart) 并展开 **Advanced** 部分。
2. 启用 **Named RPC URL**。
3. 在 **Add named endpoint** 中，输入新名称并选择 **Create `<name>`**，或者从列表中选择现有名称。
4. 单击 **Create Virtual Environment**。

新环境的 Admin 和 Public RPC URL 可在其 **Home** 页面上 **Integrate Virtual RPC** 下找到。

<Frame caption="Virtual Environment Home 页面上的 Integrate Virtual RPC 面板，显示了附加名称后解析出的 Admin RPC 与 Public RPC URL。">
  <img src="https://mintcdn.com/tenderly/t9EqhphGfQpnmZbq/images/testnets/named-rpc-url-home.webp?fit=max&auto=format&n=t9EqhphGfQpnmZbq&q=85&s=22d65050416dff69c60dfda9055f5b41" alt="Integrate Virtual RPC panel showing the resolved Admin RPC URL ending in the name plus a random suffix, the Public RPC URL ending in just the name, and the chain id" width="1198" height="140" data-path="images/testnets/named-rpc-url-home.webp" />
</Frame>

## 在创建后更改或删除名称

打开 Virtual Environment 的 **Settings** 页面。此处的 **Named RPC URL** 部分与创建对话框中的相同：

* 要将环境重新分配到其他名称，请打开名称选择器并选择另一个条目，或输入新名称并选择 **Create `<name>`**。
* 要将该名称从此环境上解除关联，请禁用 **Named RPC URL** 并保存。名称本身不会被删除，只是可以自由地附加到其他地方。

## 一个名称一次只映射到一个环境

将名称附加到 Virtual Environment 是一对一的关系。在名称选择器中，已在项目内其他地方分配的现有名称会被标记为 **In use on another environment**。选择其中一个会将其附加到当前环境，并从之前持有它的环境上解除关联，因此该环境的命名 RPC URL 将不再解析到那里，而是路由到当前环境。

这使得切换固定 RPC URL 的目标只需一次操作：创建替换环境，为其分配与您正在退役的环境相同的名称，指向该 URL 的所有脚本、CI 流水线或 dapp 配置现在都会解析到新环境，无需在其一侧做任何更改。

## 通过 REST API 设置名称

在通过环境创建端点创建环境时传入 `rpcName`：

```bash title="environment-create-named.sh" theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
curl --request POST \
  --url https://api.tenderly.co/api/v1/account/me/project/project/environments \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header "X-Access-Key: ${TENDERLY_ACCESS_KEY}" \
  --data '{
    "displayName": "My Staging Environment",
    "rpcName": "my-staging-rpc",
    "networkConfigs": [
      {
        "networkId": "1",
        "chainConfigOverrides": { "chainId": "1" },
        "blockNumber": "latest",
        "region": "eu",
        "explorerConfig": { "enabled": false, "contractVerificationVisibility": "bytecode" }
      }
    ]
  }'
```

通过 [REST API 参考](/virtual-environments/rest-api#get-an-environment)读取该环境以获取解析后的 RPC URL：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
curl --request GET \
  --url https://api.tenderly.co/api/public/v1/account/me/project/project/environments/{environmentId} \
  --header "X-Access-Key: ${TENDERLY_ACCESS_KEY}"
```

`active_instance.vnets[].rpcs` 数组包含命名的 Admin 和 Public RPC URL：

```json theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "rpcs": [
    { "name": "Admin RPC", "url": "https://virtual.mainnet.eu.rpc.tenderly.co/tenderly/project/my-staging-rpc-800896" },
    { "name": "Public RPC", "url": "https://virtual.mainnet.eu.rpc.tenderly.co/tenderly/project/my-staging-rpc" }
  ]
}
```

## 另请参阅

* [Quickstart](/virtual-environments/quickstart)，完整的 Virtual Environment 创建流程。
* [Admin RPC](/virtual-environments/admin-rpc)，可在 Admin RPC 上使用的作弊码。
* [CI/CD with GitHub Actions](/virtual-environments/ci-cd/github-actions-foundry)，按 pull request 创建和销毁环境的流水线。
