摘要
Base 是基于 OP Stack 构建的以太坊 Layer 2,因此其 RPC 接口与以太坊工具链兼容 JSON-RPC。您只需将客户端指向链 ID 为 8453 的 Base 端点即可连接,大多数以太坊库几乎无需修改或只需少量修改即可使用。主要决策在于选择哪个端点、如何处理速率限制,以及如何在流量增长时保持请求可靠。
本页面涵盖 Base 主网和 Base Sepolia 链设置、可用的请求示例、常见故障模式,以及如何在公共端点、托管 RPC API 和专用节点之间做出选择。OnFinality 通过其 RPC API 服务 和 专用节点 选项提供 Base RPC。
Base 是基于 OP Stack 构建的以太坊 Layer 2。对于开发者来说,这意味着 RPC 接口看起来几乎与以太坊完全相同:相同的 JSON-RPC 方法、相同的 eth_ 命名空间以及相同的客户端库。如果您已有以太坊代码,连接到 Base 通常只需更改链 ID 和 RPC URL。
本页面是 Base 网络 RPC 的实用参考。它涵盖了您需要的链设置、可立即运行的请求示例、最常见的故障模式,以及随着流量增长如何在公共端点、托管 RPC API 和专用节点之间做出选择。
应使用哪个 Base 端点?
首先根据您的工作负载匹配端点。正确的选择更多地取决于您发送的流量大小、是否需要归档或追踪数据,以及停机对您造成的成本,而非链本身。
| 您的情况 | 合理的起点 | 需要注意什么 |
|---|---|---|
| 原型设计、脚本、一次性读取 | 公共 Base 端点 | 共享容量,无 SLA,适合低流量 |
| 有真实用户的 dApp | 带 API 密钥的托管 RPC API | 吞吐量限制、故障转移、方法覆盖 |
索引器、分析、大量 eth_getLogs | 带归档访问的托管 RPC | 日志范围限制和查询成本 |
| 交易、跨链桥、高请求量 | 专用 Base 节点 | 配置时间、监控、冗余 |
一个快速规则:如果请求失败意味着用户看到错误,那么您已经超出了共享公共端点的适用范围。如果请求失败意味着交易头寸或跨链桥转账面临风险,那么您应该考虑具有故障转移路径的专用基础设施。
OnFinality 通过其 RPC API 服务 提供 Base 的托管访问,并通过 专用节点 提供隔离容量。您可以在 RPC 定价 页面比较方案,并查看 支持的 RPC 网络 的完整列表。
Base 链设置一览
以下是您填入钱包、库或配置文件的数值。
| 设置 | Base 主网 | Base Sepolia(测试网) |
|---|---|---|
| 链 ID | 8453 | 84532 |
| 链名称 | Base | Base Sepolia Testnet |
| 原生货币 | ETH(18 位小数) | ETH(18 位小数) |
| 区块浏览器 | https://basescan.org | https://sepolia.basescan.org |
| 传输 | HTTP | HTTP |
| OnFinality 公共端点 | https://base.api.onfinality.io/public | https://base-sepolia.api.onfinality.io/public |
Base Sepolia 是您在发布到主网之前使用的测试网。它有自己的链 ID 和自己的水龙头生态系统,因此请确保您的配置不会混淆两者。OnFinality 的 Base 和 Base Sepolia 网络页面列出了您需要的端点和详细信息。
发出您的第一个 Base JSON-RPC 请求
Base 通过 HTTP 使用标准 JSON-RPC。最简单的检查是对公共端点进行 curl 调用。
curl -s https://base.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_blockNumber",
"params": []
}'
健康的响应会以十六进制返回最新区块高度。从那里开始,常用的以太坊方法都适用:eth_getBalance、eth_call、eth_getLogs、eth_getTransactionReceipt 等等。由于 Base 与 EVM 等效,大多数以太坊工具无需修改即可使用。
如果您使用的是带 API 密钥的托管端点,URL 通常将密钥作为路径或查询参数携带。请将该密钥排除在客户端代码和公共仓库之外。
使用 viem 从 JavaScript 连接
在实践中,您将通过库而不是原始 curl 进行连接。以下是 Base 主网的最小 viem 设置。
import { createPublicClient, http } from 'viem'
import { base } from 'viem/chains'
const client = createPublicClient({
chain: base,
transport: http('https://base.api.onfinality.io/public')
})
const blockNumber = await client.getBlockNumber()
console.log('Base block:', blockNumber)
对于托管端点,请将 URL 替换为您的带密钥端点。对于 ethers,模式相同:使用 Base RPC URL 和链 ID 构造提供程序,然后调用您常用的方法。重要的细节是配置中的链 ID 与您调用的端点匹配。将主网链 ID 指向测试网端点是最常见的设置错误之一。
将 Base 添加到钱包
支持自定义网络的钱包接受相同的值。典型的网络配置如下所示:
{
"chainId": "0x2105",
"chainName": "Base",
"nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
"rpcUrls": ["https://base.api.onfinality.io/public"],
"blockExplorerUrls": ["https://basescan.org"]
}
请注意,0x2105 是 8453 的十六进制形式。钱包期望十六进制值,而大多数 JavaScript 库接受十进制。如果钱包拒绝您的网络,请先检查链 ID 格式。
Base RPC 请求通常在哪里失败
大多数 Base RPC 问题属于少数几类。了解它们可以大大缩短调试时间。
| 症状 | 可能原因 | 尝试什么 |
|---|---|---|
429 或限流响应 | 共享端点速率限制 | 迁移到带密钥或专用端点,添加带退避的重试 |
eth_getLogs 返回错误 | 日志范围对端点来说太宽 | 缩小区块范围、分页或使用归档访问 |
| 数据为空或过时 | 链 ID 或测试网端点错误 | 确认链 ID 8453 与 84532 |
method not found | 该端点未启用该方法 | 检查方法覆盖,尤其是 trace 和 debug |
| 负载下超时 | 端点饱和 | 添加故障转移、提高客户端超时、使用专用容量 |
| 交易卡在待处理状态 | Nonce 或 gas 设置 | 检查 nonce 处理和 gas 估算 |
其中两个值得更详细说明。首先,eth_getLogs 是最可能触及限制的方法,因为宽区块范围可能意味着非常大的结果集。如果您正在索引 Base,请从一开始就规划分页,而不是在生产中发现限制。其次,Base 上的 nonce 和 gas 问题与以太坊上的行为非常相似;如果您正在调试卡住的交易,相同的 nonce 和替换规则适用。
公共、托管和专用:为生产环境选择
公共端点是开始的最快方式,也最容易超出适用范围。它是共享的,对您的流量没有承诺,是脚本、原型和偶尔读取的正确工具。
托管 RPC API 处于中间位置。您获得带密钥的端点、更可预测的吞吐量以及对大多数应用程序所需方法的支持。这是有真实用户的 dApp 的常见选择,此时可靠性很重要,但您不想自己运行基础设施。
专用节点为您提供隔离容量。您不与其他租户共享吞吐量,这对于高请求量、大量日志查询或请求失败有直接成本的工作负载很重要。权衡是您承担更多的运营责任,或者与为您管理它的提供商合作。
OnFinality 的 RPC API 服务 涵盖托管情况,专用节点 涵盖隔离情况。如果您仍在总体上权衡提供商,选择 RPC 提供商指南 更深入地介绍了标准。
Base 的生产就绪检查清单
在将真实流量指向 Base 端点之前,请确认以下内容:
- 您的链 ID 和端点匹配,并且主网和测试网配置清晰分离。
- 您有带退避的重试逻辑以应对暂时性故障。
- 您至少有一个故障转移端点,或有一个已记录的故障转移计划。
- 您的
eth_getLogs使用是分页且有界的。 - API 密钥仅在服务器端使用,并在需要时轮换。
- 您监控错误率和延迟,而不仅仅是正常运行时间。
- 您知道您依赖哪些方法,包括任何 trace 或 debug 调用。
如果缺少任何这些,值得在启动前修复,而不是在事故发生后。
监控和故障转移
简单的健康探测可以让您提前发现问题。按计划轮询最新区块号,如果停止推进或请求开始失败,则发出警报。
#!/usr/bin/env bash
RESP=$(curl -s -o /dev/null -w "%{http_code}" https://base.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}')
if [ "$RESP" != "200" ]; then
echo "Base RPC probe failed: $RESP"
fi
对于故障转移,请配置第二个端点,并在重复失败时切换,而不是在单个错误时切换。单次超时是正常的;连续超时是一个信号。
关键要点
- Base 是一个 OP Stack L2,具有以太坊兼容的 JSON-RPC 接口,因此现有的 EVM 工具只需极少的更改即可工作。
- Base 主网使用链 ID 8453;Base Sepolia 使用 84532。混淆它们会导致数据为空或错误。
- 公共端点适合原型,但它们是共享的,容易超出适用范围。
- 托管 RPC API 适合有真实用户的 dApp;专用节点适合高流量或延迟敏感的工作负载。
eth_getLogs是最可能触及限制的方法,因此从一开始就分页。- 始终规划故障转移并监控错误率,而不仅仅是可用性。
常见问题
Base 网络 RPC URL 是什么?
对于 OnFinality 的公共 Base 主网端点,请使用 https://base.api.onfinality.io/public。对于 Base Sepolia,请使用 https://base-sepolia.api.onfinality.io/public。对于生产工作负载,带密钥的托管端点或专用节点通常比共享公共 URL 更合适。
Base 链 ID 是什么?
Base 主网使用链 ID 8453,十六进制为 0x2105。Base Sepolia 使用 84532。
Base RPC 与以太坊 RPC 相同吗?
Base 与 EVM 等效并基于 OP Stack 构建,因此 JSON-RPC 方法与以太坊的基本相同。大多数以太坊库和工具只需更改链 ID 和 URL 即可在 Base 上工作。
为什么我的 Base RPC 请求返回 429?
429 通常意味着您触及了共享端点的速率限制。迁移到带密钥的托管端点或专用容量,并为暂时性情况添加带退避的重试。
Base 支持 WebSocket 订阅吗?
传输支持取决于端点。检查 Base 网络页面 了解可用的传输方式,如果您需要订阅,请确认您的提供商是否提供 WebSocket 访问。
如何获取 Base Sepolia 的测试网 ETH?
Base Sepolia 有自己的水龙头生态系统。使用公认的 Base Sepolia 水龙头为测试钱包提供资金,并将测试网密钥与主网密钥分开。
我可以使用 OnFinality 进行 Base 吗?
可以。OnFinality 通过其 RPC API 服务 和 专用节点 产品提供 Base RPC。有关方案详情,请参阅 RPC 定价,有关完整网络列表,请参阅 支持的 RPC 网络。