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

BSC JSON-RPC 端点:链设置、钱包配置和调试

摘要

BNB Smart Chain (BSC) JSON-RPC 端点是您的应用指向以读取链状态和提交交易的 HTTP 或 WebSocket URL。对于主网,您需要链 ID 56、BNB 原生货币和可靠的 RPC URL;对于测试网,您使用链 ID 97 和 tBNB。本页涵盖确切的链设置、钱包和代码配置、您最常调用的 JSON-RPC 方法,以及如何调试首先出现的错误。它还解释了何时共享公共端点足够,以及何时专用 BNB Chain 节点更合适。

如果您正在将钱包、脚本或后端服务连接到 BNB Smart Chain,首先需要一个可用的 JSON-RPC 端点以及正确的链设置。把这两件事做对,大多数“无法连接”的问题就会消失。做错了,您会花一下午追逐那些实际上只是链 ID 不匹配或端点过时的错误。

本页先给出设置,然后是方法,最后是调试路径。它是为已经了解 JSON-RPC 是什么、想要 BSC 特定细节而无需重读通用介绍的开发者编写的。

链设置一览

在将 BNB Smart 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 URLhttps://bnb.api.onfinality.io/publichttps://bnb-testnet.api.onfinality.io/public
传输HTTP 和 WebSocketHTTP

主网在 OnFinality 端点上同时支持 HTTP 和 WebSocket 传输,如果您依赖 eth_subscribe 等订阅来获取新区块或待处理日志,这一点很重要。测试网仅支持 HTTP,因此轮询是那里的正确模式。

如果您需要不同的网络或想比较选项,支持的 RPC 网络页面列出了可用的网络,BNB Chain RPC 有网络特定的详细信息。

为您的负载选择正确的端点

在复制 URL 之前,先决定您要发送什么样的流量。适用于周末原型的端点并不总是您想要的生产服务背后的端点。

  • 只读脚本和仪表板。 共享公共端点通常没问题。您以低频率发送 eth_call、eth_getBalance 和 eth_blockNumber。
  • 有真实用户的钱包和 dApp。 您需要可预测的吞吐量和不会在您脚下改变的 URL。具有稳定主机名的托管 RPC API 是更安全的默认选择。
  • 扫描日志的索引器、机器人和后端。 在宽区块范围上调用 eth_getLogs 是 BSC 上最重的常见调用。这是共享端点开始吃力的地方,专用节点在这里证明了自己的价值。
  • 任何需要订阅的东西。 如果您依赖 WebSocket 推送而不是轮询,在围绕它构建之前,请确认您的端点确实支持 ws。

一个快速的判断方法:如果您的应用在端点对您限流时失败,说明您已经超出了共享层级。OnFinality 提供托管的 RPC API 服务 和 专用节点,当您需要隔离容量时。您可以在 RPC 定价 页面查看这些如何映射到成本。

配置钱包或客户端

大多数钱包接受自定义网络。字段直接映射到上面的表格。在代码中,相同的值放入您的客户端构造函数。

对于指向 BSC 主网的 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 block = await client.getBlockNumber();
console.log('Latest BSC block:', block);

如果您更喜欢原始 JSON-RPC,相同的调用看起来像这样:

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

两者都返回最新区块高度作为十六进制字符串。如果这能工作,您的端点和链设置就是正确的,您可以继续处理应用实际需要的方法。

您最常调用的 JSON-RPC 方法

BSC 与 EVM 兼容,因此方法集是标准的以太坊 JSON-RPC 接口。在实践中,少数几个调用完成了大部分工作。

方法用途注意事项
eth_blockNumber健康检查和同步位置开销低;适合首次连接测试
eth_getBalance原生 BNB 余额传入您想要的区块标签,不总是 latest
eth_call无需交易读取合约状态需要正确的 to、data 和区块标签
eth_getLogs拉取地址或主题的事件宽范围是超时的首要原因
eth_getTransactionReceipt确认交易并读取其日志在交易被挖出之前返回 null
eth_sendRawTransaction广播已签名交易需要正确签名、正确 nonce 的交易
eth_subscribe通过 WebSocket 推送新区块或日志HTTP 端点无法做到这一点

对于 eth_getLogs,保持区块范围适中并进行分页。针对共享端点调用数万个区块的范围通常会失败,即使端点健康,因为节点必须扫描大量状态才能回答。

调试您实际会看到的错误

大多数 BSC JSON-RPC 问题归结为少数几种症状。匹配症状,然后应用修复。

症状可能原因修复
钱包中 chainId 不匹配选择了错误的网络设置链 ID 56(主网)或 97(测试网)
eth_getLogs 超时区块范围太宽缩小范围、分页或迁移到专用节点
null 收据交易尚未被挖出轮询 eth_getTransactionReceipt 直到非空
nonce too low重复使用或过时的 nonce使用 pending 重新读取 eth_getTransactionCount
eth_subscribe 失败端点仅支持 HTTP使用支持 WebSocket 的端点
429 或限流共享端点负载过高添加重试/退避或迁移到专用容量
连接被拒绝错误的主机或网络重新检查 URL 和链设置表

其中两个值得仔细看看。首先,nonce 错误:当您重新发送交易时,使用 pending 区块标签读取账户 nonce,而不是 latest,否则您会不断与自己进行中的交易冲突。其次,限流:429 不是您代码中的错误,而是容量信号。对于偶发突发,使用指数退避重试,但如果它在正常流量上发生,共享层级就不适合该工作负载。

有关 nonce 行为的更深入讲解,请参阅区块链交易中的 nonce 是什么。

一个最小的监控探针

在责怪您的应用之前,确认端点健康。一个检查区块高度和延迟的简短探针会告诉您问题是端点还是您的代码。

async function probe(url) {
  const start = Date.now();
  const res = await fetch(url, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0', id: 1, method: 'eth_blockNumber', params: [],
    }),
  });
  const { result } = await res.json();
  const height = parseInt(result, 16);
  console.log('height', height, 'roundtrip', Date.now() - start, 'ms');
}

probe('https://bnb.api.onfinality.io/public');

定期运行此探针并记录高度。停止增长的高度是一个明确的信号,而往返时间向上漂移则告诉您端点承受压力,在用户注意到之前。

何时离开共享端点

没有一个数字说“现在切换”,但信号是一致的。当以下情况发生时,您就准备好使用专用容量了:

  • 在正常、非突发流量上遇到限流。
  • 在您需要的范围上 eth_getLogs 持续超时。
  • 您需要 WebSocket 订阅,并希望它们与其他租户隔离。
  • 您想要一个稳定、私有的端点,而不是共享的公共 URL。
  • 您的合规或可靠性要求意味着您不能依赖尽力而为的共享层级。

专用的 BNB Chain 节点为您提供隔离的吞吐量和私有端点。代价是成本以及您现在拥有更多运维表面。如果您不想自己运行节点,托管专用选项可以保持隔离而无需维护。在承诺之前,比较 专用节点 上的形态并查看 RPC 定价。

关键要点

  • BSC 主网使用链 ID 56 和 BNB;测试网使用链 ID 97 和 tBNB。混合使用它们是最常见的设置错误。
  • 主网支持 HTTP 和 WebSocket;测试网仅支持 HTTP,因此订阅需要支持 ws 的端点。
  • 在宽范围上调用 eth_getLogs 是最重的常见调用,也是共享端点失败的首要原因。
  • 429 是容量信号,不是代码错误。对于突发使用退避重试,但如果它在正常流量上发生,请迁移到专用容量。
  • 一个简单的区块高度探针可以在几秒钟内将端点问题与应用问题分开。

常见问题

BSC 主网链 ID 是什么? 56。测试网链 ID 是 97。在调试任何其他内容之前,始终确认您的钱包或客户端指向的是哪一个。

我可以对主网和测试网使用同一个端点吗? 不可以。它们是具有不同 URL 和链 ID 的独立网络。对链 ID 56 使用主网 URL,对链 ID 97 使用测试网 URL。

为什么 eth_getLogs 在 BSC 上失败? 通常是因为区块范围太宽,节点无法快速扫描。缩小范围、分页查询或使用具有更多余量的专用节点。

BSC 支持 WebSocket 订阅吗? 主网在 OnFinality 端点上支持,该端点同时支持 HTTP 和 WebSocket。测试网仅支持 HTTP,因此在那里轮询而不是使用 eth_subscribe。

如何知道是否需要专用节点? 如果您在正常流量上看到限流、反复出现 eth_getLogs 超时,或需要隔离的 WebSocket 容量,那么专用节点是合适的下一步。否则,托管的共享端点通常就足够了。

在哪里可以找到当前的端点 URL? 使用 BNB Chain RPC 和 BNB Chain 测试网 RPC 页面获取当前 URL 和设置,其他所有内容请查看支持的 RPC 网络页面。

RPC 知识库

相关 RPC 内容

网络 RPCPolygon

关于 Polygon PoS 端点,我应该了解哪些内容?

Polygon PoS 端点是你的应用用来读取链状态并向 Polygon 权益证明网络提交交易的 HTTP 和 WebSocket URL。主网链 ID 是 137,原生 Gas 代币是 POL,一个可用的端点需要支持你的工作负载实际调用的 JSON-RPC 方法。本页涵盖链设置、端点选项、请求示例...

网络 RPCBNB Chain

如何查找和配置 BNB Smart Chain 端点?

BNB Smart Chain(BSC)公开了 JSON-RPC 端点,用于读取区块链数据和发送交易。mainnet 端点是 https://bsc-dataseed.bnbchain.org,chain ID 为 56;testnet 端点使用 chain ID 97。公共端点适合原型开发,但存在...

网络 RPCAstar

Astar zkEVM RPC:如何连接和配置您的 dApp

Astar zkEVM 是一个基于以太坊的 Layer 2 解决方案,将 Astar 生态系统引入零知识 rollup。本文介绍如何使用正确的 RPC 端点、链 ID 和配置将您的 dApp 连接到 Astar zkEVM,以及如何为生产环境选择可靠的 RPC 提供商。...

RPC 提供商选择Efinity

Solana 顶级 RPC 解决方案与专用节点访问:如何评估?

专用 Solana 节点访问意味着你获得一个私有 RPC 端点,其背后是为你的工作负载预留的基础设施,而不是与其他流量共享公共或池化端点。这种区别在 Solana 上很重要,因为程序、索引器和交易系统通常需要一致的吞吐量、可预测的速率限制,以及访问像 `getProgramAccounts` 或 W...

RPC 提供商选择Solana

如何为初创企业选择具有竞争性定价和强大开发者工具的Solana RPC提供商

在Solana上构建的初创企业需要一个能够平衡可预测定价与加速迭代的开发者工具的RPC提供商。本指南分解了关键评估标准——定价模型、速率限制、WebSocket支持、存档数据和开发者体验——以便您在不超支或超出基础设施的情况下比较提供商。 我们涵盖了在Solana RPC提供商中应关注的内容,如何将...

网络 RPCAleph Zero

Aleph Zero RPC:端点、设置与提供商选择

本指南涵盖 Aleph Zero 主网和测试网的 RPC 端点、如何连接您的 dApp 或钱包,以及选择 RPC 提供商的关键标准。无论您是在 EVM 层还是原生 Substrate 链上部署,您都将找到实用的端点参考、配置示例以及评估可靠性、延迟和定价的决策清单。...

永远不用担心基础设施

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

开始