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

RPC BNB:如何连接 BNB Smart Chain 并选择正确的端点?

摘要

本页面解释了 BNB Smart Chain(BNB Chain)的 RPC 端点是什么,如何连接主网和测试网,以及如何在公共、共享和专用基础设施之间进行选择。它涵盖了链设置、一个可用的 JSON-RPC 示例、WebSocket 支持以及开发者最常遇到的故障模式。在将钱包、后端服务或索引器连接到 BNB Chain 时,可将其作为参考。

如果你搜索了“RPC BNB”,你可能想要以下两件事之一:连接到 BNB Smart Chain 的确切设置,或者一种明确的方法来决定为你的应用使用哪个端点。本页面为你提供了两者。它从可以粘贴到钱包或配置中的链设置开始,然后逐步介绍端点选项、一个可用的请求示例,以及团队从快速测试转向真实流量时最常出现的故障模式。

BNB Smart Chain(通常称为 BSC,是更广泛的 BNB Chain 生态系统的一部分)是一个 EVM 兼容网络。这意味着任何支持标准以太坊 JSON-RPC 的工具——ethers、viem、web3.js、Hardhat、Foundry、MetaMask——只要将其指向 BNB Chain RPC URL,就可以与之通信。你会注意到的主要区别是链 ID、原生代币、区块浏览器,以及某些工作负载(日志查询、归档读取)在负载下的行为方式。

链设置一览

在将 BNB Smart Chain 添加到钱包、后端配置或部署脚本时,请使用这些值。它们与 OnFinality 为 BNB Chain 发布的网络配置相匹配。

设置BNB Smart Chain 主网BNB Smart Chain 测试网
链 ID5697
链名称BNB Smart Chain MainnetBNB Smart Chain Testnet
原生货币BNB(18 位小数)tBNB(18 位小数)
区块浏览器https://bscscan.comhttps://testnet.bscscan.com
公共 RPC(OnFinality)https://bnb.api.onfinality.io/publichttps://bnb-testnet.api.onfinality.io/public
传输方式HTTP, WebSocketHTTP

关于此表的一些实用说明:

  • 链 ID 是最常导致“错误网络”错误的字段。如果钱包或 SDK 在 56 上,但你的合约部署在 97 上,交易将失败或落在错误的链上。
  • 原生代币符号对于 gas 估算和任何显示余额的内容都很重要。在测试网上,它是 tBNB,而不是 BNB。
  • 上面的公共端点适用于开发、脚本和低容量读取。对于生产流量,请计划使用托管或专用端点——请参阅下一节。

公共端点何时足够,何时不够

这是大多数读者实际需要做出的决定。正确的答案更多地取决于你的工作负载形态,而不是网络本身。

公共端点通常在以下情况下足够:

  • 你正在进行原型设计、运行本地脚本或测试合约部署。
  • 你每分钟读取少量余额或调用几个视图函数。
  • 你在连接其他任何东西之前验证链设置是否正确。

在以下情况下,请转向托管或专用端点:

  • 你运行一个为许多用户提供服务的后端、一个机器人或一个索引器。
  • 你依赖 eth_getLogs 在宽区块范围内进行查询,这对任何共享节点都是沉重的负担。
  • 你需要归档数据(历史状态)或 trace/debug 方法。
  • 你需要 WebSocket 订阅,并希望获得稳定的连接而不是共享连接。
  • 你想要可预测的吞吐量,并在出现问题时有一个明确的地方寻求帮助。

OnFinality 提供 BNB Chain RPC 作为托管 API 服务和专用节点基础设施。对于大多数团队来说,托管 API 是更快的途径;当你需要隔离、自定义配置或特定的容量配置时,专用节点才有意义。你可以在 RPC 定价页面 上比较计划,并查看 支持的 RPC 网络 的完整列表。

如果你仍在一般性地决定提供商,RPC 提供商选择指南 更深入地介绍了评估标准。对于 BNB Chain 具体而言,BNB Chain 网络页面 列出了端点和传输详细信息。

发出你的第一个请求

确认端点是否正常工作的最快方法是单个 JSON-RPC 调用。这会向节点请求当前区块号:

curl -X POST https://bnb.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

健康的响应看起来像一个十六进制区块号:

{"jsonrpc":"2.0","id":1,"result":"0x2a1f3c4"}

如果你得到 result 字段,则你的端点和链设置正常工作。如果你得到错误对象,请跳转到下面的故障排除部分。

在 JavaScript 中,通过 viem 的相同调用如下所示:

import { createPublicClient, http } from 'viem'
import { bsc } from 'viem/chains'

const client = createPublicClient({
  chain: bsc,
  transport: http('https://bnb.api.onfinality.io/public'),
})

const blockNumber = await client.getBlockNumber()
console.log(blockNumber)

对于钱包,网络配置是相同的数据,但形式不同:

{
  "chainId": "0x38",
  "chainName": "BNB Smart Chain Mainnet",
  "nativeCurrency": { "name": "BNB", "symbol": "BNB", "decimals": 18 },
  "rpcUrls": ["https://bnb.api.onfinality.io/public"],
  "blockExplorerUrls": ["https://bscscan.com"]
}

注意 0x38 是十六进制的 56。钱包期望十六进制形式;大多数 SDK 接受十进制形式。混合两者是常见的混淆来源。

WebSocket 和订阅支持

BNB Chain 支持 HTTP 和 WebSocket 传输。HTTP 是请求/响应:你请求,节点回答,连接关闭。WebSocket 保持连接打开,以便节点可以向您推送事件——新区块、待处理交易或匹配过滤器的日志。

在以下情况下使用 WebSocket:

  • 实时响应新区块(例如,对每个区块采取行动的机器人)。
  • 日志订阅,而不是定时轮询 eth_getLogs
  • 对于高频读取,降低开销,因为每次打开新的 HTTP 连接是浪费的。

使用 ethers 的最小订阅如下所示:

import { WebSocketProvider } from 'ethers'

const provider = new WebSocketProvider('wss://bnb.api.onfinality.io/public')

provider.on('block', (blockNumber) => {
  console.log('new block', blockNumber)
})

两个操作注意事项。首先,WebSocket 连接可能会断开;你的客户端应该重新连接并重新订阅,而不是假设流是永久的。其次,如果你运行许多订阅,这表明你可能需要专用端点而不是共享端点。

常见故障模式及如何解读

大多数“RPC BNB”问题都属于少数几类。以下是如何快速区分它们。

症状可能原因检查内容
chainId 不匹配或钱包中显示“错误网络”钱包设置为不同的链确认链 ID 56(主网)或 97(测试网)
method not found该节点层级不支持该方法先尝试标准方法;检查是否需要归档或 trace 支持
eth_getLogs 超时区块范围对于共享节点来说太宽缩小范围,或迁移到专用端点
间歇性 429 / 速率错误共享端点负载过高减少轮询、批量请求或升级计划
旧状态返回空结果节点不是归档节点如果需要历史状态,请请求归档访问
WebSocket 断开连接空闲或不稳定的连接添加带退避的重连逻辑

出现问题时快速诊断顺序:

  1. 运行上面的 eth_blockNumber curl。如果失败,问题在于连接性或端点,而不是你的合约。
  2. 运行 eth_chainId 并确认主网返回 0x38。如果不是,则你指向了错误的网络。
  3. 如果简单调用有效但日志查询失败,问题通常是查询形态或节点层级,而不是端点本身。
  4. 如果本地一切正常但生产环境失败,请比较两个环境之间的请求量和并发性。

在共享、托管和专用之间选择

一旦你完成了原型设计,决定主要涉及隔离、容量以及你希望承担多少运维工作。

选项最适合需要权衡的取舍
公共端点脚本、测试、低容量读取共享容量;不适合持续的生产负载
托管 RPC API(OnFinality)大多数生产应用、机器人、后端你共享基础设施,但获得托管的可靠性和支持
专用节点(OnFinality)高吞吐量、归档、trace 或隔离工作负载成本更高;你获得可预测的、隔离的容量
自托管节点有特定控制或合规需求的团队你负责同步、升级、监控和待命

一个有用的经验法则:如果你的应用有用户在等待响应,或者有一个不能错过区块的机器人,不要将其运行在公共端点上。首先迁移到托管 API,只有当你能指出具体原因——归档读取、trace 调用、持续高请求率或需要隔离时——才使用专用节点。

发布前的操作检查清单

在将生产流量指向任何 BNB Chain 端点之前,请确认以下内容:

  • 每个环境(主网和测试网)中的链 ID 和原生代币正确。
  • 你有一个备用端点或提供商,以防主端点出现问题。
  • 你的日志查询使用有界区块范围,并且不会在每次调用时扫描整个链历史。
  • WebSocket 客户端自动重新连接并重新订阅。
  • 你监控错误率和延迟,而不仅仅是正常运行时间。
  • 你知道你的工作负载需要哪些方法(标准、归档、trace),并且你的端点支持它们。

一个可以按计划运行的简单监控探针:

#!/usr/bin/env bash
RESP=$(curl -s -X POST https://bnb.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}')
echo "$RESP" | grep -q '"result"' && echo "OK" || echo "FAIL: $RESP"

从与你的应用相同的区域运行类似这样的命令,以便你测量的延迟反映实际情况。

关键要点

  • BNB Smart Chain 与 EVM 兼容,因此一旦设置了正确的链 ID(主网 56,测试网 97)和 RPC URL,标准的以太坊 JSON-RPC 工具就可以工作。
  • 公共端点适用于开发和低容量读取;生产应用、机器人和索引器应使用托管或专用端点。
  • WebSocket 支持对于实时区块和日志订阅很重要;请计划重连。
  • 大多数故障可追溯到链 ID 不匹配、不支持的方法、宽日志查询或共享端点速率限制。
  • OnFinality 提供 BNB Chain RPC 作为托管 API 和专用节点;有关详细信息,请参阅 RPC 定价支持的网络

常见问题解答

BNB Smart Chain 的 RPC URL 是什么? OnFinality 为主网发布了公共端点 https://bnb.api.onfinality.io/public,为测试网发布了 https://bnb-testnet.api.onfinality.io/public。对于生产环境,请使用来自 BNB Chain 网络页面 的托管或专用端点。

BNB Chain 的链 ID 是什么? BNB Smart Chain 主网使用链 ID 56(十六进制为 0x38)。BNB Smart Chain 测试网使用链 ID 97(十六进制为 0x61)。

BNB Chain RPC 支持 WebSocket 吗? 是的。OnFinality 的 BNB Chain 主网端点支持 HTTP 和 WebSocket 传输。在发布的配置中,测试网仅支持 HTTP。

为什么 eth_getLogs 在 BNB Chain 上超时? 宽区块范围开销很大。共享节点可能会拒绝或超时大范围查询。缩小范围、分页,或者如果需要广泛的历史查询,请迁移到专用端点。

我需要为 BNB Chain 使用归档节点吗? 仅当你需要历史状态时——旧区块的余额或合约存储。标准端点提供最近状态;归档访问是一项单独的能力。

我可以将 MetaMask 与 BNB Chain RPC 端点一起使用吗? 是的。添加一个自定义网络,链 ID 为 56,RPC URL 和 BscScan 浏览器 URL。上面的钱包配置示例显示了确切的字段。

如何在不花费真实 BNB 的情况下测试 BNB Chain? 使用 BNB Smart Chain 测试网(链 ID 97),从水龙头获取 tBNB,并将你的应用指向测试网端点。请参阅 BNB Chain 测试网页面

何时应从公共端点迁移到专用节点? 当你具有持续的请求量、需要归档或 trace 方法、需要隔离或想要可预测的容量时。在此之前,托管 API 通常是正确的下一步——请参阅 专用节点 了解何时隔离是值得的。

RPC 知识库

相关 RPC 内容

网络 RPCSolana

什么是 Solana 免费 API,如何使用它?

Solana 免费 API 让开发者无需支付节点基础设施费用即可读写 Solana 区块链。公共端点非常适合原型开发,但通常有速率限制和可靠性问题,可能影响生产应用。本指南介绍免费 Solana API 包含的内容、如何开始使用,以及何时迁移到托管或专用 RPC 提供商。...

网络 RPCAcala

Acala RPC:如何连接Acala网络端点

Acala是一个专注于DeFi的Polkadot平行链,它同时提供Substrate RPC和EVM+接口。本文介绍了可用的Acala RPC端点,如何配置钱包和dApp,以及如何为生产工作负载选择公共、认证和专用节点基础设施。...

测试网 RPCBNB Chain

如何将BNB智能链测试网添加到MetaMask?

本指南介绍如何将BNB智能链测试网添加到MetaMask,涵盖链设置、使用tBNB充值以及常见配置陷阱。它还解释了如何为测试网开发选择可靠的RPC端点,以及何时使用托管RPC服务是合理的。...

测试网 RPCEthereum

Sepolia Beacon RPC:端点、方法及使用方法

Sepolia Beacon RPC 暴露了 Sepolia 测试网的共识层,让您可以查询验证者、区块和最终性数据。本页介绍关键端点、常用方法以及如何为您的测试网开发选择可靠的提供商。...

网络 RPCStatemine

什么是 Statemine,如何连接它?

Statemine 是 Kusama 网络上的一条公益平行链,为 Kusama 网络提供资产中心。它支持以低费用和快速最终性创建和管理资产、NFT 及其他代币标准。本文解释了什么是 Statemine,如何通过 RPC 端点连接它,以及如何为你的应用选择合适的基础设施。...

测试网 RPCEthereumBase

Base Sepolia RPC 端点:链设置、水龙头与调试

Base Sepolia 是基于 OP Stack 构建的 Base L2 网络的测试网,使用 Sepolia ETH。本页面提供官方 RPC 端点、链配置、水龙头链接以及开发者在 Base Sepolia 上测试 dapp 时的常见故障排除技巧。...

永远不用担心基础设施

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

开始