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

BNB智能链RPC端点:链设置、配置与调试

摘要

了解如何使用正确的RPC端点、链设置和JSON-RPC方法连接到BNB智能链(BSC)。本参考涵盖公共端点与托管端点、常见故障模式,以及如何为生产工作负载选择基础设施。

快速决策指南:应该使用哪个BNB智能链RPC端点?

在将端点复制到钱包或dApp之前,请决定哪种类型的RPC访问符合您的工作负载。选择会影响可靠性、成本以及您之后需要进行的调试工作量。

  • 原型开发或轻度使用: 公共端点(如 https://bnb.api.onfinality.io/public)足以用于钱包设置、小型脚本和测试交易。公共端点是共享的,可能会限制突发流量,因此不适合作为生产应用的稳定基础。
  • 生产dApp或索引器: 具有专用吞吐量和支持的托管RPC服务更安全。您可以获得一致的性能、访问归档数据,以及负责节点维护的团队。请参阅 RPC定价 了解选项。
  • 高吞吐量或数据密集型工作负载: 如果您轮询 eth_getLogs、运行索引器或服务大量用户,请评估专用节点。它们将您的流量与其他租户隔离,并降低速率限制的风险。

如果您仍在评估提供商,请阅读 如何选择RPC提供商 以获取更广泛的框架。有关BNB Chain的具体信息,本文其余部分将为您提供链设置、请求示例和您将遇到的故障模式。

BNB智能链概览

BNB智能链(BSC)是一个与以太坊虚拟机(EVM)兼容的区块链,与BNB Chain的质押链并行运行。由于它与EVM兼容,您可以使用标准的以太坊JSON-RPC方法、ethers.js和viem等工具,以及您已经熟悉的钱包配置模式。

RPC集成关键事实:

  • 链ID: 56(主网),97(测试网)
  • 原生代币: BNB(18位小数)
  • 浏览器: BscScan
  • 共识: 权益权威证明(PoSA),产生快速区块(约3秒)

快速的区块时间意味着您的应用程序每分钟发送的交易将比以太坊多,因此您的RPC端点需要处理更高的请求速率才能应对相同的用户活动。

钱包和dApp的链设置

当您将BNB智能链添加到MetaMask或配置dApp时,您需要正确的网络参数。下表显示了主网和测试网的值。

参数主网测试网
网络名称BNB智能链BNB Chain测试网
RPC URLhttps://bnb.api.onfinality.io/publichttps://bnb-testnet.api.onfinality.io/public
链ID5697
货币符号BNBtBNB
区块浏览器https://bscscan.comhttps://testnet.bscscan.com

使用测试网进行开发和预发布。测试网使用相同的RPC接口,因此在那里工作的代码应该只需更改端点和链ID即可在主网上工作。

钱包配置示例

如果您手动将BNB智能链添加到钱包,下面的JSON显示了钱包提供商使用的典型结构。

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

请注意,chainId 是十六进制:0x38 等于56。许多钱包错误源于在期望十六进制的字段中使用了十进制链ID。

发送您的第一个JSON-RPC请求

验证端点最快的方法是使用 curl 发送 eth_chainId 请求。这确认端点可达并返回预期的链。

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

成功的响应如下所示:

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

结果 0x38 是56的十六进制表示,确认您位于BNB智能链主网。

要获取最新区块号,请使用 eth_blockNumber:

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

使用ethers.js和viem

大多数开发者通过库与BNB智能链交互。以下是使用ethers.js v6读取最新区块的最小示例。

import { JsonRpcProvider } from 'ethers';

const provider = new JsonRpcProvider('https://bnb.api.onfinality.io/public');
const blockNumber = await provider.getBlockNumber();
console.log('Latest block:', blockNumber);

使用viem的相同示例:

import { createPublicClient, http } from 'viem';

const client = createPublicClient({
  chain: {
    id: 56,
    name: 'BNB Smart Chain',
    nativeCurrency: { name: 'BNB', symbol: 'BNB', decimals: 18 },
    rpcUrls: { default: { http: ['https://bnb.api.onfinality.io/public'] } }
  },
  transport: http()
});

const blockNumber = await client.getBlockNumber();
console.log('Latest block:', blockNumber);

两个库都为您处理JSON-RPC格式和错误解析,但您仍然需要配置正确的链ID和端点。

用于实时数据的WebSocket支持

如果您的应用程序需要实时更新,例如待处理交易或新区块,请使用WebSocket端点。BNB智能链支持WebSocket连接,OnFinality为该网络提供WebSocket URL。

使用ethers.js的WebSocket订阅示例:

import { WebSocketProvider } from 'ethers';

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

provider.on('block', (blockNumber) => {
  console.log('New block:', blockNumber);
});

WebSocket连接是有状态的,并且消耗更多服务器资源。对于生产环境,请确保您的提供商支持具有足够连接限制的WebSocket。有关传输支持的详细信息,请参阅 BNB Chain网络页面。

常见故障模式及如何调试

即使使用正确的端点,您也会遇到问题。以下是使用BNB智能链RPC时最常见的故障模式以及如何诊断它们。

症状可能原因调试步骤
eth_chainId 返回不同的值错误的网络或端点验证链ID是否为56(主网)或97(测试网)
nonce too low 错误交易nonce落后于账户的下一个预期nonce使用 eth_getTransactionCount 并设置 "pending" 获取正确的nonce
insufficient funds账户余额不足以支付gas使用 eth_getBalance 检查余额,并使用 eth_estimateGas 估算gas
请求超时网络拥塞或端点过载使用退避重试;对于生产环境考虑专用端点
速率限制错误(HTTP 429)对共享公共端点的请求过多降低请求速率或升级到托管/专用服务
execution reverted智能合约调用失败使用 eth_call 模拟交易并检查回滚原因

调试失败的交易

当交易失败时,第一步是获取交易收据并查看状态字段。状态为 0x0 表示交易已回滚。

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

如果收据显示回滚,请使用 eth_call 模拟交易并捕获回滚原因。许多库提供 call 方法,返回原因字符串。

公共端点与托管端点:生产环境的变化

公共端点便于开发,但会带来影响生产应用的权衡。

  • 共享资源: 公共端点被许多开发者使用。其他人的大量使用可能会减慢您的请求或导致速率限制。
  • 无SLA: 公共端点通常不提供正常运行时间保证或支持。如果端点宕机,您没有追索权。
  • 数据有限: 某些公共端点不支持归档请求或WebSocket订阅。

托管RPC服务,例如OnFinality的 API服务,提供具有定义限制、监控和支持的专用或共享基础设施。对于生产工作负载,您应该评估托管服务是否满足您的需求。

比较提供商时,请考虑:

  • 吞吐量和速率限制: 每秒最大请求数是多少?是否有突发限制?
  • 数据可用性: 您是否需要归档数据或trace方法?
  • WebSocket支持: 是否允许WebSocket连接,限制是什么?
  • 故障转移: 提供商是否自动绕过节点故障?
  • 支持: 当出现问题时,您能否联系到人工?

OnFinality为BNB Chain提供共享和 专用节点。专用节点为您提供隔离资源,这对于高吞吐量或延迟敏感的应用非常重要。

监控您的RPC健康状况

一旦您的应用程序上线,请监控RPC连接的健康状况。一个简单的健康检查是定期发送轻量级请求并测量响应时间。

while true; do
  start=$(date +%s%N)
  response=$(curl -s -X POST https://bnb.api.onfinality.io/public \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}')
  end=$(date +%s%N)
  echo "Response: $response"
  echo "Latency: $(( (end - start) / 1000000 )) ms"
  sleep 10
done

为延迟峰值、错误率和nonce错误设置警报。如果您看到重复的 nonce too low 错误,您的交易管理逻辑可能需要更仔细地处理待处理交易。

关键要点

  • BNB智能链与EVM兼容,因此标准的以太坊JSON-RPC方法和工具可以工作。
  • 使用正确的链ID(主网56,测试网97)和端点以避免配置错误。
  • 公共端点适合开发,但生产应用应考虑托管或专用基础设施以获得可靠性和支持。
  • 通过检查链ID、nonce、余额以及使用 eth_call 模拟交易来调试常见问题。
  • 使用简单脚本监控RPC健康状况,并为异常设置警报。

常见问题解答

BNB智能链的RPC URL是什么?

BNB智能链主网的公共RPC URL是 https://bnb.api.onfinality.io/public。对于测试网,请使用 https://bnb-testnet.api.onfinality.io/public。

BNB智能链的链ID是什么?

主网链ID为56,测试网为97。十六进制中,56是 0x38。

我可以将以太坊工具与BNB智能链一起使用吗?

可以,因为BNB智能链与EVM兼容。ethers.js和viem等库只需进行最少的配置更改即可工作。

如何获取测试网的测试BNB?

您可以从测试网水龙头请求测试BNB。请参阅 BNB Chain测试网页面 获取指导。

如果在公共端点上遇到速率限制,我该怎么办?

降低请求速率、实施缓存,或升级到具有更高限制的托管RPC服务。请参阅 RPC定价 了解选项。

OnFinality是否支持BNB智能链的WebSocket?

是的,OnFinality支持BNB智能链的WebSocket传输。使用WebSocket URL wss://bnb.api.onfinality.io/public 进行实时订阅。

有关支持的网络的完整列表,请访问 支持的RPC网络。

RPC 知识库

相关 RPC 内容

网络 RPCBNB Chain

Alchemy BNB Smart Chain RPC:如何评估和配置 BSC 端点

搜索 Alchemy BNB Smart Chain RPC 的开发者通常想要一个可用的 BSC 端点、正确的链设置,以及判断托管提供商是否适合其工作负载的方法。本页提供 BNB Smart Chain 主网和测试网参数、一个请求示例,以及区分共享端点与专用节点基础设施的标准。它还解释了何时像 On...

网络 RPCArbitrum

如何检查 Arbitrum One 的正常运行时间,这对你的 dApp 意味着什么?

Arbitrum One 的正常运行时间在官方 Arbitrum 状态页面上进行跟踪,该页面报告排序器、批量发布器、验证器和数据源等核心组件的健康状况。对于 dApp 开发者来说,了解这一正常运行时间很重要,因为它影响交易最终性、数据可用性和 RPC 可靠性。本指南解释了如何阅读状态页面、哪些正常运...

区块链基础设施Base

什么是 Base 节点基础设施,何时应该运行自己的节点?

Base 节点基础设施是指运行 Base 节点所需的硬件、软件和网络设置,包括执行客户端、共识客户端以及与网络的同步。运行自己的节点可以直接访问链,无需依赖第三方 RPC 提供商,但需要大量的运维工作。对于大多数生产级应用,使用像 OnFinality 这样的托管 RPC 服务,在可靠性、可扩展性和...

网络 RPCPolygon

Polygon区块链API:方法、SDK和最佳实践

Polygon区块链API包括用于直接节点交互的JSON-RPC端点、用于支付的REST API(如Open Money Stack)以及客户端SDK(如Matic.js和ethers.js)。选择合适的API取决于你的用例——是需要底层链访问、稳定币支付还是智能合约交互。本文涵盖了可用的API类型...

网络 RPCAvalanche

什么是 TON 网络 RPC URL,如何使用它?

TON 网络 RPC URL 是你的 dApp 或机器人用来与 TON 区块链通信的端点。本文解释了官方公共端点、如何在代码中配置它,以及何时应考虑使用像 OnFinality 这样的托管 RPC 服务用于生产工作负载。...

区块链基础设施Efinity

运行以太坊节点仍然有利可图吗?

运行以太坊节点仍然可能值得,但盈利与否取决于你把什么算作回报。全节点或归档节点很少能直接获得协议收入;它提供的是可靠访问、隐私和独立性。质押会增加奖励,但需要 32 ETH 和运维纪律。对大多数开发者和团队来说,真正的问题是:把硬件、带宽、维护和机会成本都算进去之后,自托管是否比付费使用托管 RPC...

永远不用担心基础设施

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

开始