摘要
公共 Base RPC URL 是一个共享的、无需注册的 HTTP 端点,让你的应用可以读取 Base 链数据并广播交易。这是将钱包、脚本或原型连接到 Base 的最快方式,但它是共享基础设施,没有可用性承诺,因此最适合开发和轻量流量,而非生产工作负载。
本文解释了 Base 公共端点实际上是什么,如何将其添加到钱包,如何使用 curl 和 viem 调用它,以及何时迁移到托管或专用 RPC 基础设施(如 OnFinality)以获得可预测的生产行为。
公共 Base RPC URL 是一个共享的 HTTP 端点,让任何应用无需运行节点即可读取 Base 链数据并提交交易。你将其粘贴到钱包、脚本或 SDK 中,它就会响应 JSON-RPC 调用,例如 eth_blockNumber、eth_getBalance 和 eth_sendRawTransaction。这是连接到 Base 的最快方式,也是大多数团队最先淘汰的端点。
重要的不是定义,而是了解公共端点擅长处理哪些任务、不擅长哪些任务,以及当你的应用不再是原型时应该切换到什么。本页直接回答这些问题,然后提供连接详情、请求示例和迁移路径。
公共 Base RPC URL 是否适合你的工作负载?
在将任何内容接入你打算发布的代码库之前,请使用此快速分类。
| 你的情况 | 公共 Base RPC URL | 应迁移到 |
|---|---|---|
| 将 Base 添加到钱包以检查余额 | 可以 | 无需迁移 |
| 本地脚本、笔记本、一次性测试 | 可以 | 无需迁移 |
| 黑客松演示或内部原型 | 通常可以 | 任何公开发布前迁移到托管 RPC |
| 在 Base Sepolia 上进行测试网开发 | 适合迭代 | 用于 CI 和预发布的托管测试网 RPC |
| 有真实用户的生产 dApp | 不推荐 | 托管或专用 RPC |
| 索引器、机器人或高频轮询 | 不推荐 | 专用节点 |
归档查询或大量 eth_getLogs | 不推荐 | 支持归档的 RPC |
如果你处于前三行,公共端点确实是正确的工具,你可以在连接部分之后停止阅读。如果你处于后四行,本文的其余部分将解释会发生什么变化以及如何规划迁移。
“公共”对 Base 端点实际意味着什么
公共并不意味着没有规则。它意味着该端点是为一般用途而运营的,而不是为你的账户配置的。由此产生三个特性,它们解释了开发者使用公共端点时遇到的几乎所有问题。
它是共享的。 你的请求与其他所有人的请求竞争。吞吐量和延迟随总需求变化,而不是随你的应用需求变化。
没有可用性承诺。 公共端点按原样提供。它可能会限流、限制突发流量或在负载下返回错误。这对于演示是可以接受的,但对于结账流程则有风险。
没有支持途径。 如果请求在凌晨 2 点失败,没有工单,没有与你的账户关联的状态页面,也没有人可以升级处理。你需要自己调试。
这些都不会让公共端点变得糟糕。它只是使其成为一种具有特定范围的特定工具。
Base 链设置一览
这些是你将 Base 或 Base Sepolia 添加到钱包、SDK 或配置文件所需的值。保持链 ID 和原生货币与你目标网络一致,因为混合主网和测试网设置是最常见的设置错误之一。
| 设置 | Base 主网 | Base Sepolia 测试网 |
|---|---|---|
| 链 ID | 8453 | 84532 |
| 链名称 | Base | Base Sepolia Testnet |
| 原生货币 | ETH(18 位小数) | ETH(18 位小数) |
| 区块浏览器 | https://basescan.org | https://sepolia.basescan.org |
| 公共 RPC URL | https://base.api.onfinality.io/public | https://base-sepolia.api.onfinality.io/public |
有关特定网络的详细信息和传输支持,请参阅 Base RPC 页面 和 Base Sepolia RPC 页面。
将 Base 添加到钱包
大多数钱包接受自定义网络。字段直接对应上表:
Network name: Base
RPC URL: https://base.api.onfinality.io/public
Chain ID: 8453
Symbol: ETH
Explorer: https://basescan.org
对于测试网工作,切换到 Base Sepolia 的值并使用 Sepolia 浏览器。如果钱包报告链 ID 不匹配,你几乎肯定将测试网 RPC URL 与主网链 ID 粘贴在一起,或者相反。
使用 curl 和 viem 调用端点
最简单的健全性检查是原始 JSON-RPC 调用。这将返回当前区块高度:
curl -s https://base.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
成功的响应看起来像 {"jsonrpc":"2.0","id":1,"result":"0x..."}。如果你得到的是 JSON-RPC 错误对象,请先阅读 error.code 和 error.message 字段,然后再假设端点已关闭。
在应用代码中,同一个端点可以插入任何 EVM 客户端。使用 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 block = await client.getBlockNumber()
const balance = await client.getBalance({
address: '0x0000000000000000000000000000000000000000',
})
console.log({ block, balance })
由于传输层是纯 HTTP URL,你可以稍后通过更改一个字符串将其替换为托管或专用端点。这就是从第一天起将 RPC URL 保留在环境变量中而不是硬编码到多个文件中的主要原因。
公共端点开始失效的地方
公共 Base RPC URL 会以可预测的方式失败。识别症状可以告诉你这是代码错误还是基础设施限制。
| 症状 | 可能原因 | 初步修复 |
|---|---|---|
| 间歇性 429 响应 | 共享限流 | 减少轮询、批量请求或迁移到托管 RPC |
| 流量高峰期间请求超时 | 共享容量 | 添加带退避的重试,然后迁移出公共端点 |
eth_getLogs 返回范围错误 | 日志查询限制 | 缩小区块范围或使用支持归档的提供商 |
| 交易卡在待处理状态 | 拥堵或 nonce 问题 | 检查 nonce 处理和 gas 设置 |
| 本地正常,CI 中失败 | 无重试逻辑,无回退 | 添加第二个端点和重试策略 |
如果你看到前三行,端点是约束,而不是你的代码。这是规划迁移而不是进一步调整应用的信号。
迁移到托管或专用 RPC 时会发生什么变化
托管 RPC 为你提供一个与你的账户绑定的端点,具有支持途径和不与匿名流量共享的容量。专用节点基础设施更进一步:你获得为你的工作负载配置的节点,这对于索引、高频轮询、归档查询以及任何需要在负载下保持一致行为的情况都很重要。
OnFinality 在包括 Base 在内的多个网络上提供 RPC API 访问和专用节点基础设施。如果你正在评估选项,RPC 定价页面 展示了计划的结构,支持的网络列表 展示了可用的网络。有关结构化的评估方法,请参阅 如何选择 RPC 提供商。
实用的迁移清单:
- 如果 RPC URL 尚未在环境变量中,请将其移入。
- 添加回退端点和带指数退避的重试策略。
- 记录请求延迟和错误率,以便比较前后。
- 在切换之前,针对新端点测试归档和日志查询。
- 短暂并行运行两个端点,然后切换流量。
在 Base Sepolia 上进行测试网工作
Base Sepolia 在工具方面与主网行为类似,但具有不同的链 ID 和用于 gas 的水龙头。使用测试网端点进行 CI、预发布和合约部署演练,并将其与主网配置分开,这样配置错误的环境变量就不会将测试交易发送到生产环境。
一个有用的模式是按环境键控的单个配置对象:
const RPC = {
mainnet: 'https://base.api.onfinality.io/public',
testnet: 'https://base-sepolia.api.onfinality.io/public',
}
const rpcUrl = RPC[process.env.CHAIN_ENV ?? 'testnet']
这样,公共端点作为本地工作的合理默认值,同时使生产端点成为明确的选择。
关键要点
- 公共 Base RPC URL 是一个共享的 HTTP 端点,用于读取 Base 数据和发送交易,无需注册,也没有可用性承诺。
- 它是钱包、脚本、原型和测试网迭代的正确选择。
- 它不适合生产 dApp、索引器、机器人以及大量日志或归档查询。
- Base 主网使用链 ID 8453;Base Sepolia 使用 84532。将它们放在单独的配置中。
- 将 RPC URL 保留在环境变量中,这样迁移到托管或专用 RPC 只需更改一行。
- OnFinality 为 Base 和其他网络提供 RPC API 访问和专用节点基础设施;请参阅 RPC 定价 和 支持的网络。
常见问题
公共 Base RPC URL 是免费的吗? 它无需账户即可用于一般用途,这就是它便于开发的原因。它是共享基础设施,因此不适用于生产流量或需要一致容量的工作负载。
Base 链 ID 是什么? Base 主网使用链 ID 8453。Base Sepolia 测试网使用链 ID 84532。将错误的链 ID 与给定的 RPC URL 一起使用是钱包连接错误的常见原因。
我可以在生产中使用公共 Base RPC URL 吗? 可以,但你不应依赖它。共享端点在负载下可能会限流或节流,如果出现问题也没有支持途径。生产应用通常会迁移到托管或专用 RPC。
为什么 eth_getLogs 在公共端点上失败?
日志查询开销很大。公共端点通常限制单次调用中可以查询的区块范围。缩小范围或使用支持归档和宽范围日志查询的提供商。
如何从公共端点切换到托管端点? 更改配置中的 RPC URL。如果你将其保留在环境变量中并添加了重试逻辑,迁移就是配置更改而不是代码更改。
OnFinality 支持 Base 吗? 是的。OnFinality 为 Base 和 Base Sepolia 以及许多其他网络提供 RPC API 访问和专用节点基础设施。有关详细信息,请参阅 Base 网络页面。