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 内容

网络 RPCBittensor

什么是 Bittensor 子网 123,如何与之交互?

Bittensor 子网 123 是 Bittensor 生态系统中一个专门的子网络,旨在激励特定的机器学习或数据相关任务。本文解释了子网 123 的功能、它在 Bittensor 架构中的位置,以及开发者如何使用 RPC 端点连接它、注册矿工或验证者,并监控性能。...

网络 RPCPolygon

什么是 MATIC RPC 节点,如何连接到 Polygon 主网?

MATIC RPC 节点是通过 JSON-RPC 暴露的 Polygon PoS 端点,用于读取链状态和广播交易。本参考涵盖 Polygon 主网和 Amoy 链设置、如何使用 curl 测试端点,以及如何比较公共 RPC 与托管提供商和专用节点。 使用此处的检查清单和链 ID 来避免最常见的 Po...

网络 RPCAcala

什么是Acala Network,如何连接?

Acala Network是基于Polkadot构建的去中心化金融(DeFi)中心,提供跨链流动性、流动性质押和EVM兼容的智能合约平台。本指南涵盖Acala的架构、如何通过RPC端点连接,以及开发者在Acala上构建时的关键考量。...

测试网 RPCEthereum

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

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

网络 RPCGnosis

Gnosis RPC:端点、提供商与最佳实践

# Gnosis RPC:端点、提供商与最佳实践 Gnosis Chain(原 xDai)是一个兼容 EVM 的 L1 区块链,以其稳定的 gas 代币(xDAI)和低交易成本而闻名。为了与 Gnosis Chain 交互,开发者和应用程序需要一个可靠的 RPC(远程过程调用)端点。本指南涵盖了您需...

测试网 RPCSui

Sui 测试网 RPC 与 gRPC:端点、水龙头与开发者配置

Sui 测试网 RPC 为开发者提供了以 gRPC 为先的途径来查询检查点、对象和余额;模拟和执行交易;并使用 OnFinality 托管端点流式传输实时活动。现代工作流使用 LedgerService 获取检查点数据,使用 StateService 读取对象和余额,使用 TransactionEx...

永远不用担心基础设施

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

开始