摘要
RPC URL 是你的应用程序用来向区块链节点发送 JSON-RPC 请求的 HTTP 或 WebSocket 地址。它是连接字符串,让钱包、dApp、脚本和后端服务能够读取链上状态、提交交易和订阅事件。URL 本身只是配置的一半:你还需要正确的链 ID、货币符号和区块浏览器来进行钱包设置,并且在生产环境中依赖它之前,你需要了解端点支持哪些方法和工作负载。
本页解释了什么是 RPC URL,如何在公共端点和管理端点之间选择,以及如何将其接入常见工具。它还涵盖了当 RPC URL 错误、被限流或缺少归档数据时出现的故障模式,并指出了在哪里可以找到支持网络的端点以及当共享公共 URL 不再足够时的专用节点选项。
关键要点
- RPC URL 是你的应用通过 JSON-RPC 读取和写入区块链数据时调用的端点。
- 公共 RPC URL 适合原型设计和钱包设置,但通常缺乏生产应用所需的速率限制、归档数据和 WebSocket 支持。
- 钱包配置需要的不仅仅是 URL:链 ID、货币符号和浏览器 URL 必须与网络匹配。
- 大多数 RPC URL 错误源于错误的链 ID、过期的 API 密钥、速率限制或缺少归档/追踪方法。
- 当共享端点成为瓶颈时,托管 RPC 服务和专用节点可提供可预测的容量和支持。
- OnFinality 在支持的网络中提供 RPC API 访问和专用节点基础设施;请查看网络页面以获取确切的端点和功能。
一分钟了解 RPC URL 的含义
RPC 代表远程过程调用。在区块链开发中,RPC URL 是接受 JSON-RPC 请求的节点地址。你的代码向该 URL 发送诸如 eth_blockNumber 或 eth_getBalance 的请求,节点返回结果。如果提供商支持订阅,同一个 URL 也可以接受 WebSocket 连接。
典型的 RPC URL 看起来像 https://provider.example.com/v1/<api-key> 或 wss://provider.example.com/ws。协议方案告诉你它是 HTTP 还是 WebSocket,主机指向提供商或你自己的节点,路径通常包含 API 密钥或项目 ID。当完整 URL 包含密钥时,请将其视为机密:任何拥有它的人都可以消耗你的配额。
- HTTP RPC URL:用于请求/响应调用,例如读取余额、发送交易和查询日志。
- WebSocket RPC URL:用于订阅,例如新区块、待处理交易和合约事件。
- 链 ID:不是 URL 的一部分,但钱包和许多 SDK 需要它来确认端点服务于哪个网络。
公共、管理或专用:哪种 RPC URL 适合你的工作负载
正确的 RPC URL 取决于谁在使用它以及失败时会发生什么。公共端点对于快速脚本或钱包配置很方便,但它与许多其他用户共享,可能不支持归档查询、追踪方法或 WebSocket 订阅。托管 RPC 服务为你提供带有文档化限制和支持的密钥端点。专用节点在你需要可预测的容量或自定义配置时为你提供隔离的基础设施。
使用下表将你的工作负载与端点类型匹配。如果不确定,请从托管端点开始,当你能够测量到速率限制的持续压力或需要共享端点不提供的归档数据时,再迁移到专用节点。
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| 原型设计和脚本 | 公共 RPC URL 或托管服务的免费层 | 在验证想法时设置成本低且无承诺 |
| 钱包和 dApp 配置 | 具有文档化链 ID 和浏览器的稳定托管端点 | 用户需要一个不会意外更改的可靠 URL |
| 生产 dApp 流量 | 具有速率限制、归档访问和 WebSocket 支持的托管 RPC 计划 | 共享公共端点在高负载下可能限流或丢弃请求 |
| 索引器和分析 | 归档节点访问和 eth_getLogs 限制 | 历史查询在修剪节点或具有严格日志限制的端点上失败 |
| 高容量或延迟敏感系统 | 具有隔离资源的专用节点 | 隔离减少噪声邻居效应,并让你控制升级 |
链设置一览
当你将网络添加到钱包或配置 SDK 时,RPC URL 只是其中一个字段。链 ID 必须与网络匹配,否则交易将为错误的链签名。货币符号用于显示,区块浏览器 URL 帮助用户验证交易。对于 EVM 网络,这些值按链标准化;对于非 EVM 网络,配置模型不同,你应该遵循网络特定的文档。
下表显示了大多数钱包要求的字段。在保存配置之前,请始终根据官方网络文档或 OnFinality 网络页面确认这些值。
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| RPC URL | 来自提供商或节点的 HTTP 端点 | 你的钱包或应用用于 JSON-RPC 调用的地址 |
| 链 ID | 网络的数字链 ID | 防止交易为错误的链签名 |
| 货币符号 | 原生 gas 代币符号 | 钱包用于显示余额和费用 |
| 区块浏览器 URL | 网络的官方浏览器 | 让用户检查交易和地址 |
在代码中连接 RPC URL
大多数 JavaScript 库接受 RPC URL 作为字符串。下面的示例使用通用占位符,因为确切的端点取决于你选择的网络和提供商。将占位符替换为来自提供商或你自己节点的 HTTP RPC URL,并将 API 密钥保存在环境变量中,而不是源代码管理中。
对于只读调用,单个 HTTP 提供商通常就足够了。对于需要事件订阅的应用程序,请使用 WebSocket URL 并处理重连。如果你使用 ethers 或 viem,提供程序抽象处理 JSON-RPC 格式化,但它不会隐藏速率限制或方法限制。
- 将 RPC URL 存储在环境变量中,例如 RPC_URL。
- 如果你的提供商提供单独的 WebSocket URL,请将其用于订阅。
- 记录 JSON-RPC 错误代码和消息,以便区分速率限制和无效请求。
- 为瞬时网络错误设置请求超时和带退避的重试。
调试路径:常见的 RPC URL 故障
当 RPC URL 停止工作时,症状通常指向特定原因。401 或 403 响应通常意味着 API 密钥缺失、过期或受来源限制。429 响应意味着你触发了速率限制。方法未找到错误意味着端点不支持该 JSON-RPC 方法,这在共享端点上的归档或追踪调用中很常见。链 ID 不匹配表现为交易失败或钱包中余额显示为空。
按顺序处理症状。首先用简单的 curl 请求确认 URL 可达。然后检查身份验证、速率限制、方法支持,最后检查链配置。如果端点是公共 URL,假设它可能被限流或未经通知即弃用,对于测试之外的任何用途,请迁移到托管端点。
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| 401 或 403 | API 密钥存在、正确且允许此来源 | 身份验证失败会阻止所有请求 |
| 429 | 请求速率和计划限制 | 速率限制导致高负载下的间歇性故障 |
| 方法未找到 | 归档、追踪或调试方法支持 | 共享端点通常禁用昂贵的方法 |
| 余额错误或交易失败 | 链 ID 和网络配置 | 链 ID 不匹配会使应用指向错误的网络 |
| 超时 | 端点健康状况和网络路径 | 缓慢或不可达的节点会破坏用户流程 |
何时从公共 RPC URL 迁移到托管基础设施
公共 RPC URL 对于学习和快速测试很有用,但它们不是为生产流量设计的。随着应用程序的增长,你可能需要更高的请求限制、用于历史查询的归档数据、WebSocket 订阅以及出现问题时支持渠道。托管 RPC 服务通过密钥端点和文档化限制提供这些功能。专用节点通过为你的工作负载隔离资源更进一步。
OnFinality 在支持的网络中提供 RPC API 访问和专用节点基础设施。你可以查看支持的网络以找到你的链的端点和功能集,比较 RPC 定价以了解请求量和归档访问,并在需要隔离容量时选择专用节点。正确的选择取决于你的请求模式、数据需求以及你希望多少操作控制。
- 当你看到重复的 429 响应或需要归档方法时,迁移到托管端点。
- 当你需要可预测的吞吐量或自定义节点配置时,考虑专用节点。
- 在迁移之前,查看网络页面以获取链特定设置和支持的方法。
- 配置一个备用 RPC URL,以便单个端点故障不会导致应用宕机。
常见问题
简单来说,什么是 RPC URL?
RPC URL 是区块链节点的网络地址,你的应用调用它来读取数据或发送交易。它像 API 端点一样工作:你向 URL 发送 JSON-RPC 请求并接收响应。
RPC URL 和 API 密钥是一样的吗?
不。RPC URL 是端点的地址。API 密钥是一种凭证,可能包含在 URL 路径中或作为标头发送。一些公共端点不需要密钥,而托管服务通常发放密钥以跟踪使用情况并实施限制。
我可以在生产环境中使用公共 RPC URL 吗?
公共 RPC URL 最适合测试和低容量使用。它们通常是共享的、有限流的,并且可能不支持归档或 WebSocket 方法。对于生产环境,请使用具有文档化限制和支持的托管 RPC 服务或专用节点。
为什么我的钱包说 RPC URL 无效?
常见原因包括 API 密钥缺失或过期、在需要 WebSocket URL 的地方使用了 HTTP URL、主机或路径拼写错误,或链 ID 与网络不匹配。用简单的 curl 请求验证 URL,并根据官方网络文档确认链设置。
如何找到特定网络的 RPC URL?
查看网络的官方开发者文档或 OnFinality 支持的网络页面。对于 EVM 网络,链 ID 和浏览器详细信息通常与 RPC URL 一起列出。避免从未经核实的来源复制端点而不进行验证。