Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

如何使用类似 Chainlist 的目录来查找支持的 RPC 网络和端点?

摘要

类似 Chainlist 的目录的存在是为了解决一个问题:将链 ID 映射到可用的 RPC 端点,以便钱包和 dApp 无需猜测即可连接。本文解释了这些目录的结构、如何读取它们公开的网络元数据,以及如何在你将其部署到生产环境之前验证端点。

它还涵盖了公共目录端点在哪些情况下不再足够、当列出的端点失败时应该检查什么,以及当你需要在多个链上获得可预测行为时,托管的 RPC API 或专用节点如何适用。

类似 Chainlist 的目录是一个查找表,用于解决开发者经常需要的两件事:网络的链 ID 以及一个或多个为该链提供 JSON-RPC 服务的 RPC 端点。当你向 MetaMask 添加自定义网络、配置 viem 客户端或将后端索引器指向新链时,你实际上是在问“这个链的 ID 是什么,以及我该调用哪个 URL?”目录在浏览器中回答这个问题,而不是在分散的文档中。

本页解释了这些目录的组织方式、如何读取它们公开的元数据、如何在依赖端点之前验证它,以及何时公共目录条目不再是完成任务的正确工具。

快速建议:目录条目 vs 托管端点

当你探索链、测试钱包集成或编写一次性脚本时,使用公共目录条目。当端点位于真实用户依赖的请求路径上时,使用托管的 RPC API 或专用节点。

分界线不是“主网 vs 测试网”——而是失败的请求是否会破坏用户关心的事情。如果连接断开意味着付费用户的交易失败,那么目录列表就是错误的抽象。

情况目录端点可以转向托管/专用
首次向钱包添加链是—
本地脚本和一次性原型是—
针对测试网的 CI 检查通常可以如果 CI 不稳定
生产 dApp 读写—是
高容量 eth_getLogs 或归档查询—是
用于实时 UI 的 WebSocket 订阅—是
具有共享认证的多链后端—是

如果你已经过了探索阶段,请跳转到支持的 RPC 网络查看通过托管端点可用的链,以及RPC 定价了解使用量如何计量。

类似 Chainlist 的目录实际存储什么

目录条目是结构化的元数据,而不仅仅是 URL。对集成重要的字段在大多数目录中是一致的,因为它们映射到钱包已经理解的 EIP-3085 wallet_addEthereumChain 参数。

字段是什么错误时为何会破坏集成
chainId数字链标识符错误的 ID 会将交易发送到错误的网络
name人类可读的链名称外观问题,但不匹配会混淆支持
rpc一个或多个 HTTP/WS 端点失效或限速的 URL 会导致静默失败
nativeCurrency符号和小数位数错误的小数位数会破坏显示的余额
explorers区块浏览器 URL损坏的链接会减慢调试速度
shortNameCAIP-2 风格的短标识符某些工具用于链解析

目录的质量取决于其最后一次更新。端点会退役、速率限制会变化、链会分叉。将任何列表视为验证的起点,而不是保证。

在信任端点之前如何验证它

验证是一系列简短的 JSON-RPC 调用。在你从目录中提取任何端点并将其接入应用之前,请对其运行这些调用。

# 1. 确认链 ID 与目录声称的一致
curl -s -X POST https://bnb.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

# 2. 通过将区块高度与已知来源比较,确认节点已同步
curl -s -X POST https://bnb.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

# 3. 确认你实际需要的方法受支持
curl -s -X POST https://bnb.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_getLogs","params":[{"fromBlock":"latest","toBlock":"latest"}]}'

第 3 步是人们会跳过的。一个端点可以返回有效的 eth_chainId,但仍然拒绝 eth_getLogs、debug_traceTransaction 或归档查询。测试你的应用调用的确切方法,而不仅仅是握手。

如果你配置的是钱包而不是后端,相同的数据会进入网络配置对象:

await window.ethereum.request({
  method: 'wallet_addEthereumChain',
  params: [{
    chainId: '0x38',
    chainName: 'BNB Smart Chain Mainnet',
    nativeCurrency: { name: 'BNB Chain Native Token', symbol: 'BNB', decimals: 18 },
    rpcUrls: ['https://bnb.api.onfinality.io/public'],
    blockExplorerUrls: ['https://bscscan.com'],
  }],
});

保持链 ID、符号、小数位数和浏览器 URL 与你验证的来源一致。混合来自两个不同目录的值是“错误网络”错误的常见原因。

正确读取目录条目

当你打开一个列表时,按以下顺序处理:

  1. 首先匹配链 ID。 名称有歧义——多个网络共享相似的名称。数字 ID 是真相的来源。
  2. 检查端点传输方式。 有些条目仅支持 HTTP,有些公开 WebSocket,有些两者都支持。如果你的应用需要实时订阅,请在提交之前确认 ws 支持。
  3. 注意列出了多少个端点。 单个端点是单点故障。如果目录列出了多个,这暗示维护者期望轮换。
  4. 检查浏览器链接。 当交易行为异常时,可用的浏览器是你最快的调试工具。
  5. 寻找测试网对应项。 如果你正在构建,你需要一个具有相同结构的测试网条目,以便排练部署。

对于需要跨环境稳定端点的链,OnFinality 通过相同的 API 表面公开主网和测试网端点,因此你的客户端代码在它们之间不会改变。请参阅 BNB Chain 和 BNB Chain Testnet 作为这种配对的示例。

当列出的端点失败时

公共端点以可预测的方式失败。在开始更改代码之前,将症状与原因匹配。

症状可能原因首先检查
429 Too Many Requests共享速率限制请求量和突发模式
-32000 或 -32603 错误节点过载或方法不支持方法是否在节点支持集中
连接超时端点宕机或网络问题从你所在区域的可达性
区块高度陈旧节点不同步eth_blockNumber 与浏览器对比
eth_getLogs 返回空范围太宽或未启用归档区块范围和归档支持
WebSocket 反复断开空闲超时或端点不稳定重连逻辑和 ping 间隔

其中大多数不是你的代码中的错误。它们表明共享公共端点被要求执行生产工作。修复通常是将该流量移动到具有定义容量和支持路径的端点。

公共目录 vs 托管 RPC API vs 专用节点

这三个选项位于从“免费和共享”到“隔离并为你运营”的范围内。正确的选择取决于你的产品有多少依赖于该端点。

选项控制最适合权衡
公共目录端点无探索、原型无容量保证、共享限制
托管 RPC API (OnFinality)API 密钥、使用可见性生产应用、多链后端基于使用量的成本
专用节点 (OnFinality)隔离节点、自定义配置高吞吐量或归档密集型工作负载更高的固定成本

OnFinality 同时提供托管的 RPC API 服务 和 专用节点,因此你可以从共享基础设施开始,并随着负载增长将特定链迁移到隔离节点。提供商选择指南更详细地介绍了评估标准。

实用的迁移路径

你不必一次性迁移所有内容。分阶段的方法可以保持低风险:

  1. 清点。 列出你的应用触及的每个链及其调用的方法。注意哪些需要归档数据、跟踪或 WebSocket。
  2. 分类。 将每个链标记为“探索”、“生产读取”或“生产写入”。只有后两者需要托管基础设施。
  3. 试点一个链。 将单个生产链迁移到托管端点,保留公共端点作为后备,并比较一周的错误率。
  4. 添加故障转移。 配置辅助端点,以便单个提供商中断不会导致你的应用宕机。
  5. 扩展。 一旦试点模式得到验证,迁移剩余的生产链。

保留目录条目作为文档。即使你不再在生产中使用其端点,它对于新开发人员的入职也很有用。

关键要点

  • 类似 Chainlist 的目录将链 ID 映射到 RPC 端点以及钱包添加网络所需的元数据。
  • 在信任端点之前,始终使用 eth_chainId、eth_blockNumber 以及你的应用调用的特定方法验证它。
  • 公共目录端点适用于探索和原型,但它们缺乏生产流量的容量保证。
  • 当端点失败时,将症状与原因匹配——大多数失败是容量或方法支持问题,而不是代码错误。
  • 当端点位于关键请求路径上时,托管 RPC API 和专用节点为你提供定义的容量、使用可见性和支持路径。
  • 在你编写的每个配置中保持链 ID、符号、小数位数和浏览器 URL 一致。

常见问题

类似 Chainlist 的目录与 RPC 提供商相同吗?

不。目录是由各种运营商贡献的端点的参考列表。RPC 提供商运营端点背后的节点,并提供容量、监控和支持。目录帮助你发现端点;提供商帮助你在生产中运行它们。

我可以在生产中使用目录中的公共端点吗?

技术上可以,但有风险。公共端点通常是共享和限速的,没有关于可用性或方法支持的保证。对于任何面向用户的内容,请使用具有定义容量和后备的托管端点。

为什么端点返回有效的链 ID 但在其他调用上失败?

链 ID 是一个几乎任何节点都能回答的廉价调用。像 eth_getLogs、debug_traceTransaction 或归档查询这样的方法需要更多资源,并且可能在共享节点上被禁用或限制。始终测试你的应用实际使用的方法。

如何使用目录数据向钱包添加网络?

使用 wallet_addEthereumChain 方法,并提供目录条目中的链 ID、链名称、原生货币、RPC URL 和浏览器 URL。首先验证链 ID,因为名称可能有歧义。

当列出的端点开始返回 429 错误时我该怎么办?

这通常意味着你遇到了共享速率限制。如果可能,减少突发量,添加后备端点,并考虑将该流量移动到容量定义的托管 RPC API 或专用节点。

OnFinality 是否通过一个 API 支持多个链?

OnFinality 在一系列网络上提供 RPC API 访问。查看支持的 RPC 网络页面获取当前列表,以及RPC 定价了解使用量如何构建。

RPC 知识库

相关 RPC 内容

测试网 RPCBNB Chain

什么是BNB智能链测试网,如何连接?

# 什么是BNB智能链测试网,如何连接? BNB智能链测试网是一个开发环境,它镜像了BNB智能链主网,允许开发者部署和测试智能合约、dApp和交易,而无需使用真实的BNB。它采用相同的权益证明权威(PoSA)共识机制,并且完全兼容EVM,使得移植基于以太坊的项目变得容易。测试网拥有自己的原生代币tB...

区块链基础设施BNB Chain

运行 BNB Chain 节点需要哪些硬件和软件要求?

运行 BNB Smart Chain 节点需要满足 CPU、RAM、磁盘和网络带宽的特定硬件基线,并在全节点、归档节点和验证者节点配置之间做出选择。具体需求因你是同步全节点、提供历史数据还是验证区块而有显著差异。对于需要 BNB Chain RPC 访问但不想自行运营硬件的团队,OnFinality...

RPC 提供商选择Solana

什么让 Solana RPC 变快,以及如何为你的应用选择最快的端点?

Solana RPC 的速度不仅仅取决于原始吞吐量:地理距离、网络路径、硬件调优以及你调用的方法都会影响延迟。本文解释了决定 RPC 性能的关键因素,并提供了评估提供商的实用清单,以便你选择满足应用需求且不会过度付费的端点。...

网络 RPCSolana

如何为你的工作负载评估最快的 Solana RPC?

没有单一最快的 Solana RPC 端点,因为延迟取决于你的应用运行位置、调用的方法以及是否需要 WebSocket 或归档数据。实用的方法是从你自己的区域针对实际使用的方法测量往返时间,然后在共享 RPC 和专用 Solana 节点之间做出选择。OnFinality 提供 Solana RPC ...

RPC 提供商选择Solana

具有高级索引功能的Solana RPC提供商:应关注什么

Solana RPC提供商的高级索引功能超越了基本交易获取,能够高效查询历史数据、代币余额和程序状态。本文解释了需要评估的关键索引能力,例如getSignaturesForAddress、getTokenAccountsByOwner和增强过滤,以及它们如何影响您的dApp性能和用户体验。我们比较了...

网络 RPCBNB Chain

选择BNB Chain RPC提供商时应注意什么?

# 选择BNB Chain RPC提供商时应注意什么? 最佳的BNB Chain RPC提供商能为生产级dApp提供可靠的BNB RPC访问、清晰的请求限制、高可用性、实用的分析功能、测试网支持,以及在共享端点无法满足工作负载时提供专用BNB节点的路径。 BNB Chain被DeFi应用、交易所、钱...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始