Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

什么是以太坊 RPC URL,如何选择合适的?

摘要

以太坊 RPC URL 是你的 dApp 用来与以太坊区块链通信的 HTTP 或 WebSocket 端点。本文解释了 RPC URL 的组成部分、如何配置钱包和应用程序,以及如何评估公共、托管和专用端点选项以用于生产工作负载。

当你在以太坊上构建时,你的 dApp 首先需要的是一个 RPC URL。它是你的钱包、后端服务或索引器用来向区块链发送 JSON-RPC 请求的地址。但并非所有以太坊 RPC URL 都是相同的。你选择的端点会影响延迟、可靠性、数据可用性,以及随着流量增长你需要支付的费用。

本文解释了什么是以太坊 RPC URL,如何解读它,以及如何为你的用例选择合适的端点。你还会看到具体的配置示例以及公共、托管和专用选项的比较。

以太坊 RPC URL:它是什么以及如何工作

RPC(远程过程调用)URL 是暴露以太坊 JSON-RPC API 的 HTTP 或 WebSocket 地址。当你的应用程序调用 eth_blockNumbereth_getBalance 时,它会向此 URL 发送带有 JSON 负载的 POST 请求。该 URL 背后的节点处理请求并返回响应。

一个典型的以太坊 RPC URL 看起来像这样:

https://eth.api.onfinality.io/public

此 URL 指向由 OnFinality 托管的公共端点。它支持 HTTP 和 WebSocket,因此你可以将其用于标准请求和实时订阅。

RPC URL 的组成部分

  • 协议https:// 或用于 WebSocket 的 wss://。在生产环境中始终使用 HTTPS/WSS 来加密流量。
  • 主机:节点提供商的域名或 IP 地址。
  • 路径:通常包含网络名称或访问密钥。例如,/public 表示共享的公共端点。

HTTP 与 WebSocket

  • HTTP:最适合一次性请求,如获取区块数据或发送交易。大多数 SDK 默认使用 HTTP。
  • WebSocket:支持基于推送的订阅,如 eth_subscribe。将其用于实时更新,例如待处理交易或新区块。

如何在你的技术栈中配置以太坊 RPC URL

你会在多个地方需要 RPC URL:你的钱包、dApp 的前端以及后端服务。以下是常见的配置示例。

钱包配置(MetaMask)

在 MetaMask 中,你可以使用以下设置添加自定义网络:

{
  "chainId": "0x1",
  "chainName": "Ethereum Mainnet",
  "rpcUrls": ["https://eth.api.onfinality.io/public"],
  "nativeCurrency": {
    "name": "Ether",
    "symbol": "ETH",
    "decimals": 18
  },
  "blockExplorerUrls": ["https://etherscan.io"]
}

ethers.js 示例

const { ethers } = require("ethers");

const provider = new ethers.JsonRpcProvider("https://eth.api.onfinality.io/public");

async function getBlockNumber() {
  const blockNumber = await provider.getBlockNumber();
  console.log("Current block:", blockNumber);
}

getBlockNumber();

viem 示例

import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';

const client = createPublicClient({
  chain: mainnet,
  transport: http('https://eth.api.onfinality.io/public'),
});

const blockNumber = await client.getBlockNumber();
console.log(blockNumber);

WebSocket 订阅示例

const { WebSocket } = require("ws");
const ws = new WebSocket("wss://eth.api.onfinality.io/public");

ws.on("open", () => {
  ws.send(JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "eth_subscribe",
    params: ["newHeads"]
  }));
});

ws.on("message", (data) => {
  console.log("New head:", JSON.parse(data.toString()));
});

公共、托管或专用:你应该使用哪个以太坊 RPC URL?

你对 RPC URL 的选择取决于你的工作负载、预算和可靠性要求。以下是一个快速比较,可帮助你做出决定。

端点类型最适合考虑因素
公共 RPC URL原型开发、黑客松、低流量 dApp速率限制、无 SLA、可能不可靠
托管共享 RPC中等流量的生产 dApp更高的速率限制、更好的可靠性、成本随使用量增长
专用节点 RPC高吞吐量、数据密集型或合规敏感的应用程序完全控制、无嘈杂邻居、成本更高

公共 RPC URL

公共端点如 https://eth.api.onfinality.io/public 是免费且易于使用的。它们非常适合开发和测试。然而,它们被许多用户共享,因此在重负载下可能会变慢或受到速率限制。它们不适合需要一致性能的生产应用程序。

托管共享 RPC

托管 RPC 服务提供具有更高速率限制、更好正常运行时间和技术支持的专业 API 端点。它们处理节点基础设施,因此你无需运行自己的节点。对于大多数生产 dApp 来说,这是一个很好的中间选择。

专用节点

专用节点为你提供不与其他用户共享的私有 RPC URL。你可以完全控制节点的配置,并避免“嘈杂邻居”问题。这对于大量使用 eth_getLogs、归档数据或自定义追踪的应用程序来说非常理想。

如何评估以太坊 RPC 提供商

在比较 RPC 提供商时,不要只看 URL。以下是需要评估的关键标准:

可靠性和正常运行时间

检查提供商的历史正常运行时间以及他们是否提供 SLA。频繁中断的提供商会损害你的用户体验。寻找发布状态页面并具有冗余基础设施的提供商。

速率限制和公平使用

公共端点通常有严格的速率限制。托管服务提供更高的限制,但它们可能仍会限制你的每秒请求数。了解限制及其执行方式。如果你需要一致的吞吐量,则可能需要专用节点。

数据可用性:归档和追踪数据

许多 dApp 需要历史状态或交易追踪。归档节点存储区块链的完整历史,这对于分析、索引器和某些 DeFi 应用程序至关重要。检查提供商是否提供归档数据以及它是否包含在你的计划中。

WebSocket 支持

如果你的 dApp 需要实时更新,请确保提供商支持 WebSocket 连接。一些提供商仅提供 HTTP,这限制了你订阅事件的能力。

安全性和合规性

对于企业使用,请考虑提供商的安全实践,例如加密、访问控制和合规认证。提供专用基础设施的提供商可能会让你更好地控制数据隐私。

生产就绪检查清单

在使用以太坊 RPC URL 上线之前,请检查此清单:

  • 使用 HTTPS/WSS:在生产环境中切勿使用纯 HTTP。
  • 设置备用端点:在客户端中配置多个 RPC URL 以处理故障转移。
  • 监控性能:跟踪延迟、错误率和请求量。
  • 了解速率限制:了解提供商的限制并为峰值做好计划。
  • 测试归档数据:如果你的应用需要历史数据,请验证提供商是否支持。
  • 查看 SLA:确保提供商提供的服务级别协议满足你的需求。

常见陷阱及如何避免

在生产环境中使用公共端点

公共端点很方便,但它们并非为生产流量而设计。你可能会遇到速率限制或停机。对于任何严肃的应用程序,请使用托管或专用的 RPC URL。

忽略 WebSocket 与 HTTP 的差异

如果你的应用依赖实时数据,你需要 WebSocket。使用 HTTP 轮询效率低下,并且可能会错过事件。确保你的提供商支持 WebSocket,并且你使用正确的 URL 方案(wss://)。

未规划故障转移

单个 RPC URL 是单点故障。使用多个提供商或端点,并在客户端中实现自动故障转移。像 ethers.js 和 viem 这样的库支持多个提供商。

忽视归档数据需求

如果你的 dApp 查询历史状态,你需要一个归档节点。许多提供商对归档访问收取额外费用。在你的预算中为此做好计划,并选择在你需要的网络上提供归档数据的提供商。

如何开始使用以太坊 RPC URL

如果你准备好超越公共端点,OnFinality 为以太坊和许多其他网络提供托管 RPC 服务和专用节点。你可以从免费的公共端点开始测试,然后随着流量增长升级到生产计划。

关键要点

  • 以太坊 RPC URL 是你的 dApp 与区块链交互的端点。
  • 公共端点适合开发,但生产应用需要托管或专用的 RPC URL。
  • 根据你对实时数据的需求,在 HTTP 和 WebSocket 之间进行选择。
  • 评估提供商的可靠性、速率限制、归档数据、WebSocket 支持和安全性。
  • 在生产环境中始终使用 HTTPS/WSS 并设置故障转移。

常见问题解答

什么是官方的以太坊 RPC URL?

没有单一的官方以太坊 RPC URL。以太坊基金会不托管公共 RPC 端点。相反,你选择像 OnFinality 这样的提供商,它提供公共、托管或专用端点。

我可以将免费的以太坊 RPC URL 用于生产吗?

不建议将免费的公共端点用于生产,因为存在速率限制和潜在的停机时间。为了获得可靠的服务,请考虑托管 RPC 计划或专用节点。

如何找到我的以太坊 RPC URL?

如果你使用像 OnFinality 这样的提供商,你将在仪表板中收到一个 RPC URL。对于公共端点,你可以使用网络页面上提供的 URL,例如 https://eth.api.onfinality.io/public

HTTP 和 WebSocket RPC URL 有什么区别?

HTTP 用于标准的请求-响应调用,而 WebSocket 允许实时订阅。对于待处理交易通知或新区块警报等功能,请使用 WebSocket。

我需要以太坊的归档节点吗?

如果你的应用程序需要超过一定年龄的历史状态或事件日志,你需要一个归档节点。许多提供商将归档访问作为附加功能提供。

如何测试我的以太坊 RPC URL?

你可以使用 curl 发送一个简单的 JSON-RPC 请求:

curl -X POST https://eth.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

这应该以十六进制格式返回最新的区块号。

RPC 知识库

相关 RPC 内容

网络 RPCAstar

Astar API:如何连接Astar网络RPC和数据端点

Astar API是指用于与Astar网络交互的JSON-RPC接口,以及官方的代币和dApp质押数据API。本指南解释了不同类型的Astar API,如何使用RPC端点进行连接,以及如何为生产应用选择合适的基础设施。...

网络 RPCSORA

什么是 SORA 区块链项目,如何在其上构建?

SORA 区块链项目是一个基于 Substrate 构建的去中心化货币系统和 DeFi 平台,旨在创建一个超国家经济框架。它包括 XOR 代币、Polkaswap DEX 和 TBC(代币绑定曲线)。本文解释了该项目的架构、如何通过 RPC 端点连接到 SORA 网络,以及如何选择合适的基础设施来构...

RPC 提供商选择Starknet

如何为你的 dApp 选择合适的 Starknet RPC 提供商

# 如何为你的 dApp 选择合适的 Starknet RPC 提供商 Starknet 是以太坊上的一个有效性 Rollup(ZK-rollup),提供高吞吐量、低 Gas 成本和以太坊级别的安全性。要与 Starknet 交互,你的 dApp 需要一个可靠的 RPC(远程过程调用)提供商。本指南...

网络 RPCScroll

什么是 Scroll 端点?如何连接?

Scroll 端点是 Scroll 以太坊 Layer 2 网络的 JSON-RPC API。本页说明什么是 Scroll 端点、如何配置钱包或 dApp,以及如何为生产工作负载选择合适的 RPC 提供商。...

网络 RPC多链

什么是 Composable Finance,如何在其上构建?

Composable Finance 是一个跨链 DeFi 基础设施项目,使用 IBC 实现不同区块链生态系统之间的无信任通信。其核心组件包括用于编排的跨链虚拟机(XCVM)和用于桥接的 Centauri,并以 Picasso 作为其平行链。对于开发者来说,与这些网络交互需要可靠的 RPC 端点来查...

网络 RPCEfinity

Kaia 公共节点:端点、提供商和生产注意事项

Kaia 公共节点让您无需运行自己的端点节点即可与 Kaia 主网和 Kairos 测试网交互。本文介绍了官方公共端点、如何选择可靠的 RPC 提供商,以及生产工作负载的注意事项。...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始