摘要
公共 Optimism RPC 端点让你无需运行节点即可读取 OP Mainnet 数据并广播交易。本页提供链设置、可用的 curl 和 JavaScript 示例,以及共享公共基础设施可能出现的故障模式。它还说明了共享公共端点何时不再是最佳选择,以及如何在不重写应用的情况下迁移到托管或专用设置。
公共 Optimism RPC 端点是开始读取 OP Mainnet 状态和发送交易的最快方式。你将钱包或脚本指向 HTTP 或 WebSocket URL,设置链 ID,即可接入网络。代价是公共端点为共享资源,因此你无法控制吞吐量、速率限制或节点升级速度。本页涵盖确切的链设置、可用的请求示例、你将遇到的错误,以及托管或专用端点成为更优选择的时机。
链设置一览
在发送任何请求之前,请确保这些值正确。错误的链 ID 或不匹配的 RPC URL 是钱包显示错误余额或交易广播失败的最常见原因。
| 设置 | 值 |
|---|---|
| 网络名称 | OP Mainnet (Optimism) |
| 链 ID | 10 |
| 货币符号 | ETH |
| 货币小数位 | 18 |
| 区块浏览器 | https://optimistic.etherscan.io |
| RPC 传输 | HTTP 和 WebSocket |
| 公共端点 | https://optimism.api.onfinality.io/public |
Optimism 是 EVM 等效的 Layer 2,因此 JSON-RPC 接口与以太坊高度匹配。这意味着相同的库、相同的方法名和相同的 ABI 工具无需更改即可使用。不同之处在于链 ID、排序器行为,以及你读取的是 L2 状态而非 L1 状态。
如果你在接触主网之前进行测试,Optimism Sepolia 使用链 ID 11155420 和端点 https://optimism-sepolia.api.onfinality.io/public。在代码库中将两个配置分开,以免意外将测试网交易广播到主网。
决定连接方式
这里没有唯一正确答案。正确的选择取决于你的应用做什么以及你需要对端点背后的节点有多少控制权。
在以下情况使用公共端点:你正在原型设计、运行脚本、检查余额或构建低流量、突发性流量的应用。公共端点可免费试用且无需账户。它们非常适合本地开发、黑客松项目和只读仪表板。
在以下情况迁移到托管 RPC API:你正在向真实用户发布。托管端点提供稳定的 URL、可预测的请求处理以及出问题时的支持路径。这通常是应用有生产流量后的下一步。
在以下情况选择专用节点:你需要一致的吞吐量、归档数据、trace 方法或大量 eth_getLogs 查询。专用基础设施消除了吵闹邻居问题,因为节点仅服务于你的工作负载。
快速判断方法:如果请求失败会在凌晨 2 点把你叫醒,说明你已经超出了公共端点的能力。如果请求失败只意味着你在终端重试,那么公共端点就足够了。
使用 curl 连接
在将端点接入应用之前,你可以验证它是否在线并返回预期的链。此请求查询链 ID,应返回 0xa(十六进制的 10)。
curl -X POST https://optimism.api.onfinality.io/public \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"method": "eth_chainId",
"params": [],
"id": 1
}'
健康的响应如下所示:
{
"jsonrpc": "2.0",
"id": 1,
"result": "0xa"
}
如果返回 0xa,则端点位于 OP Mainnet。如果返回不同的值,则你指向了错误的网络。如果返回错误对象,请先阅读 message 字段,然后再更改其他内容。
从 JavaScript 连接
大多数应用使用库而非原始 HTTP。使用 ethers 时,获得 URL 后提供程序设置只需一行。
import { JsonRpcProvider } from "ethers";
const provider = new JsonRpcProvider(
"https://optimism.api.onfinality.io/public",
{ chainId: 10, name: "optimism" }
);
const block = await provider.getBlockNumber();
console.log("Latest OP Mainnet block:", block);
显式传递链 ID 值得多写几个字符。它让 ethers 检测到不匹配,而不是静默地从错误的链读取,后者是以后很难发现的 bug。
对于实时用例,如监视待处理交易或跟踪特定地址,请使用 WebSocket 传输而非通过 HTTP 轮询。Optimism 支持 ws,因此你可以订阅新区块头并在到达时做出反应,而不是每隔几秒询问一次。
将 Optimism 添加到钱包
如果你手动配置钱包,请使用链设置表中的值。在 MetaMask 中,打开网络选择器,选择添加网络,然后输入网络名称、RPC URL、链 ID、符号和浏览器。链 ID 可防止钱包将 OP Mainnet 与以太坊主网或测试网混淆。
一个常见错误是粘贴来自博客文章的 RPC URL,而该文章可能已下线。在保存之前始终确认端点有响应,并保留第二个 URL 以便在第一个降级时快速切换。
常见故障模式
公共端点以可预测的方式失败。了解症状可避免你在错误的层面进行调试。
| 症状 | 可能原因 | 应对措施 |
|---|---|---|
429 或速率限制消息 | 共享端点正在限制你的请求速率 | 添加退避、批量请求或迁移到托管端点 |
| 负载下超时 | 共享基础设施拥塞 | 使用抖动重试,然后评估专用节点 |
eth_getLogs 返回错误 | 查询范围或结果大小过大 | 缩小区块范围并分页 |
| 交易卡在待处理状态 | Gas 价格对当前条件太低 | 重新估算 Gas 并考虑替换交易 |
| 余额或链错误 | 链 ID 或 URL 不匹配 | 重新检查链 ID 10 和端点主机 |
速率限制是开发者低估的一点。公共端点被许多调用者共享,因此你的有效吞吐量取决于当时其他人在做什么。在测试中有效的代码在繁忙时段可能会变慢。从一开始就构建带指数退避的重试逻辑,并在库支持的情况下批量处理独立读取。
依赖端点前应检查什么
如果你在比较端点或提供商,请针对实际工作负载进行测试,而不是通用基准。几项检查可将可用端点与会导致事故的端点区分开来。
- 方法覆盖。 确认端点支持你调用的方法,包括归档查询和 trace 方法(如果需要历史状态)。
- 传输支持。 如果需要订阅,请验证 WebSocket 可用,而不仅仅是 HTTP。
- 负载下的行为。 发送现实的突发流量并观察限流或延迟上升。
- 故障转移。 配置第二个端点,以便单次中断不会导致应用宕机。
- 可观测性。 跟踪每个端点的错误率和延迟,以便在用户之前注意到性能下降。
OnFinality 通过托管 API 和专用节点选项提供 Optimism RPC。你可以在 Optimism RPC API 页面 查看网络详情,在 RPC 定价 比较成本,并在 支持的 RPC 网络 查看完整链列表。如果你需要一致的吞吐量或归档访问,专用节点 让你运行按工作负载规模配置的基础设施。如需更广泛的框架,请参阅 如何选择 RPC 提供商。
从公共端点迁移
离开公共端点不应需要重写应用。如果你将 URL 保存在一个地方,更改就是配置更新。
- 将 RPC URL 放在环境变量中,而不是硬编码。
- 添加第二个端点作为回退,并在第一个失败时将请求路由到它。
- 在预发环境中运行两个端点,并在真实流量上比较延迟和错误率。
- 一旦新端点在关键方法上匹配或超过旧端点,就切换生产流量。
- 将公共端点保留为最后手段的回退,而非主要路径。
这种方法还能在提供商发生事故时保护你。单个端点,无论公共还是私有,都是单点故障。两个具有明确优先级顺序的端点是对任何面向用户的应用的最低要求。
关键要点
- OP Mainnet 使用链 ID 10,ETH 作为原生货币,并支持 HTTP 和 WebSocket RPC。
- 公共端点适合原型设计和低流量读取,但它是共享的,因此吞吐量无法保证。
- 始终在提供程序配置中显式设置链 ID,以便及早发现网络不匹配。
- 速率限制和大量
eth_getLogs查询是公共端点上最常见的两个错误来源。 - 当你需要可预测的吞吐量、归档数据或支持路径时,迁移到托管 RPC API 或专用节点。
- 将 RPC URL 保留在配置中,并在投入生产前添加回退端点。
常见问题
什么是 Optimism 公共 RPC 端点?
OnFinality 在 https://optimism.api.onfinality.io/public 暴露了一个公共 OP Mainnet 端点。它支持 HTTP 和 WebSocket,适用于开发和轻量生产使用。对于更重的工作负载,托管或专用端点更合适。
Optimism 链 ID 是什么?
OP Mainnet 使用链 ID 10。测试网 Optimism Sepolia 使用链 ID 11155420。始终确认链 ID 与你打算使用的网络匹配。
公共 RPC 端点对生产安全吗?
对于低流量应用它可以工作,但公共端点是共享的,在繁忙时段可能会限制请求。对于面向用户的应用,带有回退的托管端点是更安全的默认选择。
为什么我的 Optimism 请求返回速率限制错误?
你可能发送请求的速度超过了共享端点的允许。添加指数退避、批量处理独立读取,或迁移到具有更高限制的托管端点。
Optimism 支持 WebSocket RPC 吗?
是的。OP Mainnet 支持 HTTP 和 WebSocket 传输,因此你可以订阅新区块和事件,而不是轮询。
何时应该使用专用 Optimism 节点?
当你需要一致的吞吐量、归档数据、trace 方法或大量日志查询时,专用节点消除了吵闹邻居效应,并为你提供按工作负载规模配置的基础设施。