摘要
为 Optimism 设置自定义 RPC 意味着将你的钱包或 dApp 配置为使用特定的端点,而不是默认的公共端点。本指南涵盖了你需要的链设置、如何将 Optimism 添加到 MetaMask,以及如何为生产环境选择可靠的 RPC 提供商。
快速建议:何时为 Optimism 使用自定义 RPC
如果你正在阅读本文,很可能你遇到了公共 Optimism 端点的速率限制,或者需要 WebSocket 支持来获取实时数据。自定义 RPC 为你提供一个可控的专用端点,这对于生产级 dApp、交易机器人或任何依赖 OP Mainnet 稳定访问的应用至关重要。
对于大多数开发者来说,决策通常归结为三种场景:
- 你只是在测试或构建一个小项目:公共端点
https://mainnet.optimism.io对于开发来说没问题,但它有速率限制且不支持 WebSocket。 - 你正在部署生产应用:你需要一个可靠、可扩展的 RPC 提供商。OnFinality 提供托管的 Optimism RPC 端点,你可以使用简单的 API 密钥进行访问。
- 你需要 WebSocket 订阅:对于实时事件监听,你需要一个支持 WSS 的提供商。OnFinality 的 Optimism 端点同时支持 HTTP 和 WebSocket。
如果你不确定选择哪条路径,可以从 OnFinality 等提供商的免费层开始,并监控你的使用情况。如果需求增长,你随时可以升级到专用节点。
Optimism 链设置一览
在连接到 Optimism 之前,你需要正确的网络参数。以下是 OP Mainnet 和 OP Sepolia 的快速参考表:
| 参数 | OP Mainnet | OP Sepolia |
|---|---|---|
| 网络名称 | OP Mainnet | OP Sepolia |
| 链 ID | 10 | 11155420 |
| 货币符号 | ETH | ETH |
| 区块浏览器 | https://optimistic.etherscan.io | https://sepolia-optimism.etherscan.io |
| 公共 RPC URL | https://mainnet.optimism.io | https://sepolia.optimism.io |
| OnFinality 公共 RPC | https://optimism.api.onfinality.io/public | https://optimism-sepolia.api.onfinality.io/public |
这些设置是你将 Optimism 添加到 MetaMask 或配置 dApp 所需的。OnFinality 公共端点有速率限制,但比官方公共端点更可靠,并且支持 HTTP 和 WebSocket。
如何使用自定义 RPC 将 Optimism 添加到 MetaMask
将 Optimism 添加到 MetaMask 是常见的第一步。以下是手动添加的方法:
- 打开 MetaMask,点击顶部的网络下拉菜单。
- 点击 添加网络。
- 在底部,点击 手动添加网络。
- 填写以下详细信息:
- 网络名称:OP Mainnet
- 新的 RPC URL:
https://optimism.api.onfinality.io/public - 链 ID:
10 - 货币符号:
ETH - 区块浏览器 URL:
https://optimistic.etherscan.io
- 点击 保存。
现在你可以切换到 OP Mainnet 并与网络交互。对于 OP Sepolia,请使用上表中的相应设置。
使用 ethers.js 和 viem 连接到 Optimism
获得 RPC URL 后,你可以使用流行的 JavaScript 库连接到 Optimism。以下是使用 ethers.js 的示例:
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://optimism.api.onfinality.io/public");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("Current block number:", blockNumber);
}
getBlockNumber();
以及使用 viem:
import { createPublicClient, http } from 'viem';
import { optimism } from 'viem/chains';
const client = createPublicClient({
chain: optimism,
transport: http('https://optimism.api.onfinality.io/public')
});
const blockNumber = await client.getBlockNumber();
console.log(blockNumber);
对于 WebSocket 订阅,你可以使用 WSS 端点。OnFinality 的公共端点支持 WebSocket,因此你可以这样做:
const provider = new ethers.WebSocketProvider("wss://optimism.api.onfinality.io/public");
provider.on("block", (blockNumber) => {
console.log("New block:", blockNumber);
});
使用 curl 测试你的 RPC 端点
在集成之前,你可以使用简单的 curl 命令测试你的端点。以下是如何检查当前区块号:
curl https://optimism.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
你应该会收到类似以下的响应:
{"jsonrpc":"2.0","result":"0x10d4f","id":1}
结果是十六进制编码的区块号。这确认了你的端点正常工作。
常见故障模式及调试方法
即使使用自定义 RPC,你也可能会遇到问题。以下是一些常见问题及解决方法:
- 速率限制:如果你收到 429 错误,说明你的请求被限制了。这在公共端点上很常见。解决方案:使用具有更高速率限制的提供商,例如 OnFinality 的付费计划。
- WebSocket 连接断开:如果你的 WebSocket 连接不稳定,请检查你的网络并确保你使用了正确的 WSS URL。某些提供商在免费层不支持 WebSocket。
- 链 ID 不匹配:如果你的交易因链 ID 错误而失败,请确保你的钱包或 dApp 配置了正确的链 ID(OP Mainnet 为 10)。
- 节点不同步:如果你运行自己的节点,它可能落后于链尖。这可能导致读取过时数据。考虑使用托管提供商来避免这种情况。
如何选择 Optimism RPC 提供商
在评估 Optimism 的 RPC 提供商时,请考虑以下标准:
| 标准 | 检查内容 | 重要性 |
|---|---|---|
| 正常运行时间 | 历史正常运行时间统计 | 停机意味着你的应用不可用 |
| 速率限制 | 允许的每秒请求数 (RPS) | 高流量应用需要更高的限制 |
| WebSocket 支持 | WSS 端点可用性 | 实时功能需要 |
| 归档数据 | 访问历史状态 | 某些分析和调试需要 |
| 定价 | 免费层和付费计划 | 必须符合你的预算和规模 |
| 支持 | SLA 和响应时间 | 对生产问题至关重要 |
OnFinality 提供托管的 Optimism RPC 服务,支持 HTTP 和 WebSocket,你可以从免费层开始。对于生产工作负载,你可以扩展到专用节点以获得更可预测的性能。查看我们的 RPC 定价 了解详情。
生产就绪检查清单
在 Optimism dApp 上线之前,请检查以下清单:
- 使用可靠的 RPC 提供商(而非公共端点)
- 配置备用端点以防提供商故障
- 监控 RPC 使用情况,并为速率限制阈值设置警报
- 如果你依赖实时数据,请测试 WebSocket 订阅
- 验证钱包和 dApp 中的链 ID 和网络设置
- 确保你的提供商支持你所需的方法(例如,用于事件索引的
eth_getLogs)
关键要点
- 为 Optimism 使用自定义 RPC 可以让你控制速率限制、WebSocket 支持和可靠性。
- OP Mainnet 的链设置为链 ID 10、符号 ETH 和浏览器 https://optimistic.etherscan.io。
- 你可以使用 OnFinality 的公共端点进行开发,但对于生产环境,请考虑付费计划或专用节点。
- 在集成之前,始终使用 curl 或简单脚本测试你的端点。
- 根据正常运行时间、速率限制、WebSocket 支持和定价选择提供商。
常见问题解答
什么是自定义 RPC? 自定义 RPC 是你在钱包或 dApp 中配置的特定端点,用于连接区块链网络。你可以使用提供商的端点,而不是使用默认的公共端点,以获得更好的性能和可靠性。
为什么我需要为 Optimism 使用自定义 RPC? 公共 Optimism 端点有速率限制且不支持 WebSocket。来自 OnFinality 等提供商的自定义 RPC 提供更高的限制、WebSocket 支持和更稳定的正常运行时间。
如何将 Optimism 添加到 MetaMask? 转到 MetaMask > 添加网络 > 手动添加网络,然后输入网络名称、RPC URL、链 ID、符号和浏览器 URL。你可以使用上表中的设置。
我可以免费使用自定义 RPC 吗? 是的,许多提供商提供免费层。OnFinality 有免费的公共端点,但对于生产环境,你可能需要付费计划以获得更高的速率限制和支持。
HTTP 和 WebSocket RPC 有什么区别? HTTP 用于请求-响应交互,例如获取余额或发送交易。WebSocket 保持持久连接以进行实时更新,例如新区块通知或事件日志。
如何测试我的 Optimism RPC 端点?
使用 curl 发送 JSON-RPC 请求,例如 eth_blockNumber。如果你收到有效响应,则你的端点正常工作。
如果我遇到速率限制,该怎么办? 升级到具有更高速率限制的计划,或使用多个端点进行故障转移。OnFinality 的付费计划提供更高的 RPS 和专用节点,以满足高要求的工作负载。
OnFinality 是否支持 Optimism Sepolia?
是的,OnFinality 为 Optimism Sepolia 提供公共端点:https://optimism-sepolia.api.onfinality.io/public。你可以在我们的 Optimism 网络页面 上找到更多详细信息。