摘要
使用正确的 RPC 端点、链设置和调试工作流程连接到 OP Mainnet 和 Optimism Sepolia。本参考涵盖公共和托管选项、常见故障模式以及如何选择适合您工作负载的基础设施。
快速决策指南:哪种 Optimism RPC 选项适合您的工作负载?
在将端点复制到配置之前,请确定您的应用实际需要什么。正确的选择取决于请求量、数据深度以及是否需要实时更新。
- 原型或低流量 dApp:公共端点适合测试和轻度使用,但在负载下可能受到速率限制或不稳定。请将其用于开发,而不是生产。
- 中等流量的生产应用:托管 RPC 服务提供可靠性、可扩展性和支持,而无需自己运行节点的开销。OnFinality 提供支持 HTTP 和 WebSocket 的托管 Optimism 端点。
- 高吞吐量或数据密集型工作负载:如果需要归档数据、trace 方法或一致的低延迟,请考虑专用节点。专用基础设施为您提供隔离资源,并避免嘈杂邻居问题。
- 自托管或自定义设置:运行自己的 op-node 和 op-geth 可让您完全控制,但需要持续维护、监控和同步管理。
对于大多数团队来说,托管 RPC 服务在成本和可靠性之间取得了适当的平衡。查看 RPC 定价 和 支持的网络,了解哪些符合您的预算和要求。
Optimism RPC 端点一览
Optimism (OP Mainnet) 是一个以太坊 Layer 2 rollup,使用乐观 rollup 来扩展交易。它有自己的 RPC 端点,遵循以太坊 JSON-RPC 标准,并附带一些 OP 特定的方法。
以下是 OnFinality 为 Optimism 网络提供的官方公共端点:
| 网络 | 链 ID | RPC URL | WebSocket |
|---|---|---|---|
| OP Mainnet | 10 | https://optimism.api.onfinality.io/public | wss://optimism.api.onfinality.io/public |
| Optimism Sepolia | 11155420 | https://optimism-sepolia.api.onfinality.io/public | wss://optimism-sepolia.api.onfinality.io/public |
这些端点是公共且免费的,但它们是共享的,可能有速率限制。对于生产环境,请考虑使用托管或专用端点。
OP Mainnet 和 Optimism Sepolia 的链设置
在钱包中添加 Optimism 或配置 dApp 时,您需要正确的链设置。以下是两个网络的详细信息:
| 设置 | OP Mainnet | Optimism Sepolia |
|---|---|---|
| 链 ID | 10 | 11155420 |
| 网络名称 | OP Mainnet | OP Sepolia 测试网 |
| 原生货币 | ETH | Sepolia Ether (ETH) |
| 区块浏览器 | https://optimistic.etherscan.io | https://sepolia-optimism.etherscan.io |
在将网络添加到 MetaMask 或其他钱包时,请使用这些值。
发出您的第一个 JSON-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":"0x...","id":1}
对于 Optimism Sepolia,请将 URL 替换为 https://optimism-sepolia.api.onfinality.io/public。
使用 ethers.js 或 viem 使用 Optimism RPC
在您的 JavaScript 应用程序中,您可以使用 ethers.js 或 viem 连接到 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("当前区块号:", 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 订阅
如果您的应用需要实时更新,请使用 WebSocket 而不是 HTTP 轮询。以下是订阅新区块头的示例:
const WebSocket = require('ws');
const ws = new WebSocket('wss://optimism.api.onfinality.io/public');
ws.on('open', function open() {
ws.send(JSON.stringify({
jsonrpc: '2.0',
method: 'eth_subscribe',
params: ['newHeads'],
id: 1
}));
});
ws.on('message', function incoming(data) {
console.log(data.toString());
});
WebSocket 非常适合需要即时响应区块链事件的应用,例如交易监控或实时仪表板。
常见的 Optimism RPC 故障模式及如何调试
即使使用可靠的端点,您也可能会遇到问题。以下是常见的故障模式以及如何诊断它们:
| 症状 | 可能原因 | 调试步骤 |
|---|---|---|
eth_blockNumber 返回过时数据 | 节点同步落后 | 检查 optimism_syncStatus 以了解同步进度 |
eth_getLogs 超时 | 查询范围过大 | 减少区块范围或使用分页 |
eth_call 失败并显示 execution reverted | 合约调用被还原 | 使用带 stateOverride 的 eth_call 进行模拟 |
| 速率限制错误 (429) | 超出请求限制 | 升级到托管或专用端点 |
| WebSocket 断开连接 | 网络不稳定或空闲超时 | 实现重连逻辑 |
对于 OP 特定的方法,您可以使用 optimism 命名空间。例如,optimism_syncStatus 返回节点的当前同步状态:
curl https://optimism.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"optimism_syncStatus","params":[],"id":1}'
运行自己的 Optimism 节点:何时有意义
运行自己的 Optimism 节点可让您完全控制并消除第三方依赖。您需要同时运行 op-node(共识层)和 op-geth(执行层)。官方文档提供了用于简单节点的 docker-compose 设置。
但是,自托管需要:
- 硬件:至少 8GB RAM 和 1TB SSD 的机器(用于全节点)或更多用于归档。
- 维护:定期更新、监控和处理同步问题。
- 网络:稳定、高带宽的连接。
如果您拥有专业知识并需要自定义基础设施,自托管是可行的。否则,像 OnFinality 的 专用节点 这样的托管服务可以节省时间和精力。
如何在公共、托管和专用 Optimism RPC 之间进行选择
在评估 Optimism RPC 提供商时,请考虑以下因素:
- 可靠性:寻找具有正常运行时间和低延迟记录的提供商。OnFinality 提供具有监控和故障转移的托管端点。
- 可扩展性:确保提供商能够处理您的请求量而不会受到速率限制。专用节点提供隔离资源。
- 数据深度:如果您需要历史数据,请检查提供商是否提供归档节点。OnFinality 支持 Optimism 的归档数据。
- WebSocket 支持:对于实时应用,请确认提供商支持 WebSocket 连接。
- 定价:根据您的预期使用量比较成本。OnFinality 的 定价 透明且灵活。
有关 RPC 提供商的详细比较,请参阅我们的 选择 RPC 提供商指南。
关键要点
- Optimism RPC 端点遵循以太坊 JSON-RPC,因此您可以使用熟悉的工具和库。
- 公共端点适合开发,但生产应用应使用托管或专用基础设施。
- 在将 Optimism 添加到钱包或应用时,始终验证链设置(链 ID、浏览器)。
- 使用 WebSocket 获取实时数据,并实现重连逻辑以增强弹性。
- 通过检查同步状态、减少查询范围和使用状态覆盖来调试常见问题。
- OnFinality 提供可靠的 Optimism RPC 端点,支持 HTTP 和 WebSocket,并提供专用节点选项。
常见问题解答
什么是 Optimism RPC 节点?
Optimism RPC 节点是允许您通过 JSON-RPC 调用与 Optimism 网络交互的服务器。它允许您读取区块链数据、发送交易和订阅事件。
如何获取 Optimism RPC 端点?
您可以使用公共端点(如 https://optimism.api.onfinality.io/public)进行测试,或注册托管服务以获取具有更高限制的私有端点。
Optimism 的链 ID 是什么?
OP Mainnet 的链 ID 为 10,Optimism Sepolia 的链 ID 为 11155420。
我可以将 Optimism RPC 与 ethers.js 一起使用吗?
是的,ethers.js 和 viem 都开箱即用地支持 Optimism。您只需提供 RPC URL。
全节点和归档节点有什么区别?
全节点存储整个区块链状态,但会修剪历史状态。归档节点存储所有历史状态,允许查询任何过去的区块。归档节点对于分析和调试很有用。
如何调试 Optimism 上失败的交易?
使用带 stateOverride 的 eth_call 模拟交易并查看还原原因。还要检查 nonce 和 gas 设置。
OnFinality 是否支持 Optimism Sepolia?
是的,OnFinality 为 Optimism Sepolia 提供公共和托管端点。有关详细信息,请参阅 Optimism 网络页面。
公共 Optimism RPC 端点的速率限制是多少?
公共端点有速率限制以确保公平使用。对于生产环境,请考虑使用托管或专用端点以避免达到这些限制。
如何监控我的 Optimism RPC 使用情况?
大多数托管提供商提供仪表板来监控请求量、延迟和错误。OnFinality 为您的端点提供使用分析。
我可以运行自己的 Optimism 节点吗?
是的,您可以使用官方 docker-compose 设置运行自己的节点。但是,这需要技术专长和持续维护。
有关 Optimism RPC 和基础设施的更多详细信息,请访问我们的 Optimism 网络页面 或探索 支持的网络。