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

BNB Smart Chain RPC 快速入门:端点、链 ID 和首次调用

摘要

本快速入门介绍如何通过 JSON-RPC 将应用程序连接到 BNB Smart Chain。内容涵盖主网链 ID(56)、原生 BNB 代币、BscScan 浏览器、钱包网络配置,以及大多数开发者最先进行的读取调用:链 ID、区块号、余额和日志。你可以将钱包或脚本指向公共端点以快速开始,然后随着流量和索引需求的增长,迁移到托管或专用端点。OnFinality 通过其 API 服务和专用节点选项提供 BNB Smart Chain RPC,使用与你现有相同的 JSON-RPC 方法。目标是在几分钟内建立可用的连接,并提供出现故障时所需的设置和调试步骤。

BNB Smart Chain 使用标准的以太坊 JSON-RPC。如果你之前连接过任何 EVM 链,那么相同的客户端库、相同的方法名和相同的请求格式都适用。不同之处在于链 ID、原生代币、浏览器,以及围绕出块时间和日志查询的一些操作细节。本快速入门将带你从零开始建立可用的连接,然后解释如何随着工作负载的增长保持连接健康。

首次请求前需要了解的链设置

正确设置这些值,大多数连接问题就会消失。它们与你粘贴到钱包、Hardhat 配置或 viem 客户端中的值相同。

设置主网测试网
链 ID5697
链名称BNB Smart Chain MainnetBNB Smart Chain Testnet
原生代币BNB(18 位小数)tBNB(18 位小数)
浏览器bscscan.comtestnet.bscscan.com
传输HTTP、WebSocketHTTP

在部署到生产环境时使用主网,在迭代合约或测试钱包流程时使用测试网。测试网 BNB 没有货币价值,通过水龙头分发,因此仅将其视为沙盒。

为你的阶段选择合适的端点

在编写代码之前,确定哪种端点适合你的任务。错误的选择是快速入门变成调试会话的最常见原因。

  • 本地节点。 完全控制且无第三方,但你需要负责同步时间、磁盘和升级。适合协议工作,对应用团队来说负担较重。
  • 公共端点。 测试单个请求的最快方式。适合脚本或演示,但不适合有真实流量的生产应用。
  • 托管 RPC API。 具有稳定 URL、受监控节点和仪表板的托管端点。这是大多数应用团队的选择。OnFinality 的 RPC API 服务 覆盖 BNB Smart Chain 以及许多其他网络。
  • 专用节点。 为你的工作负载预留的节点,当你需要可预测的吞吐量、归档访问或大量日志和跟踪查询时使用。请参阅 专用节点。

如果不确定哪个层级适合,请从托管端点开始,观察一周的请求模式后再决定是否使用专用容量。

一步配置钱包或客户端

大多数钱包接受自定义网络。粘贴上表中的值。对于 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 chainId = await client.getChainId()
const blockNumber = await client.getBlockNumber()
console.log({ chainId, blockNumber })

如果 chainId 返回 56,则你的传输指向主网。如果返回其他值,则说明你使用了错误的端点或错误的网络对象。

使用 curl 进行首次 JSON-RPC 调用

每个 EVM 方法的工作方式相同。以下三个调用涵盖了你最常运行的检查:确认链、读取最新区块和读取余额。

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

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

# 地址余额(十六进制 wei)
curl -s https://bnb.api.onfinality.io/public \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"eth_getBalance","params":["0x0000000000000000000000000000000000000000","latest"]}'

eth_chainId 返回 0x38,即十进制的 56。eth_blockNumber 返回十六进制的区块高度。eth_getBalance 返回十六进制字符串形式的 wei,因此除以 10^18 即可得到 BNB。

读取日志和事件而不超时

eth_getLogs 是大多数团队在 BNB Smart Chain 上遇到问题的调用。该链出块速度快,因此宽泛的区块范围可能返回大量结果集,要么超时,要么被提供商的区块范围限制拒绝。

实用规则:

  1. 保持区块范围狭窄,按区块高度分页,而不是一次性请求所有内容。
  2. 尽可能按合约地址和主题过滤。主题过滤器会大幅减少结果集。
  3. 对于回填和索引器,使用支持归档的端点,以便历史状态可用。
  4. 按区块范围缓存结果,这样重试时不会重新查询相同的数据。
const logs = await client.getLogs({
  address: '0xYourContract',
  fromBlock: 40_000_000n,
  toBlock: 40_000_500n,
})

如果你需要连续的事件流而不是轮询,请在端点支持的情况下使用 WebSocket 订阅,并在套接字断开时使用退避策略重新连接。

测试网设置和水龙头说明

测试网使用链 ID 97 和 tBNB 代币。将客户端指向测试网端点,并更新链对象,使浏览器链接和链 ID 匹配。

import { bscTestnet } from 'viem/chains'

const testClient = createPublicClient({
  chain: bscTestnet,
  transport: http('https://bnb-testnet.api.onfinality.io/public'),
})

水龙头分发少量 tBNB,用于合约部署和交易测试。由于水龙头的可用性会随时间变化,请查看当前的 BNB Chain 测试网文档以获取可用的水龙头,而不是硬编码一个。测试网状态可能会被重置或修剪,因此切勿将其视为持久存储。有关端点详细信息,请参阅 BNB Chain 测试网 RPC 页面。

故障模式及如何解读

大多数快速入门失败可归为少数几种症状。在更改代码之前,将症状与可能的原因对应起来。

症状可能原因首要修复
chainId 不是 56错误的端点或错误的链对象重新检查 URL 和链配置
429 或速率限制错误公共或共享端点负载过高迁移到托管端点或添加带退避的重试
eth_getLogs 超时区块范围太宽缩小范围并按地址/主题过滤
nonce too low先前发送导致的 nonce 过时重新发送前重新读取待处理 nonce
insufficient funds余额低于 gas 费用充值 BNB 或降低 gas 设置
WebSocket 断开连接空闲超时或网络中断添加带指数退避的重连逻辑

当调用失败时,记录完整的 JSON-RPC 错误对象。code 和 message 字段通常会告诉你问题是出在你的请求、端点还是链上。

生产就绪检查清单

快速入门证明了连接有效。生产环境还需要做好以下几件事。

  • 冗余端点。 配置主 URL 和备用 URL,这样单个端点问题不会导致应用宕机。
  • 带退避的重试。 将瞬时错误视为预期情况,并对幂等读取进行重试。
  • 监控。 按方法跟踪请求成功率、延迟和错误代码,以便及早发现回归。
  • 归档访问。 如果你查询历史状态或回填日志,请确认端点支持。
  • 速率规划。 估算每秒峰值请求数,并匹配相应的层级。有关层级如何映射到使用量,请参阅 RPC 定价。
  • 密钥管理。 将 API 密钥排除在客户端代码之外,并在泄露时轮换它们。

一个简单的健康探测可以让你对端点质量保持清醒:

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

定期运行此命令,并在状态代码或延迟偏离正常范围时发出警报。

OnFinality 的定位

OnFinality 将 BNB Smart Chain RPC 作为更广泛网络组合的一部分来运行。你可以从托管端点开始,当工作负载需要可预测的吞吐量或归档和跟踪访问时,迁移到专用节点。JSON-RPC 接口在不同层级之间不会改变,因此迁移主要是 URL 和密钥的更换,而不是重写。浏览 支持的 RPC 网络 查看还有哪些可用,并使用 BNB Smart Chain RPC 页面 获取当前端点和网络详细信息。

关键要点

  • BNB Smart Chain 主网使用链 ID 56 和 BNB 代币;测试网使用链 ID 97 和 tBNB。
  • 相同的以太坊 JSON-RPC 方法适用,因此现有的 EVM 工具只需新的端点和链配置即可使用。
  • eth_getLogs 需要狭窄的区块范围和过滤器;宽泛的范围是超时最常见的原因。
  • 将端点层级与你的阶段匹配:公共用于测试,托管用于应用,专用用于繁重或归档工作负载。
  • 生产环境需要冗余端点、带退避的重试、监控以及归档访问计划。

常见问题

BNB Smart Chain 的链 ID 是什么? 主网是 56,测试网是 97。使用 eth_chainId 确认,主网上返回 0x38。

我可以在 BNB Smart Chain 上使用以太坊工具吗? 可以。它与 EVM 兼容,因此 ethers、viem、Hardhat 和 Foundry 在正确的链配置和端点下均可使用。

为什么我的 eth_getLogs 调用失败? 通常是因为区块范围太宽或结果集太大。缩小范围并按合约地址和主题过滤。

我需要专用节点吗? 开始时不需要。当你需要可预测的吞吐量、归档访问或大量跟踪和日志查询时,再迁移到专用节点。

如何在不花费真实 BNB 的情况下进行测试? 使用测试网(链 ID 97)和水龙头获取 tBNB。将测试网状态视为临时的。

在哪里可以找到当前端点? 请参阅 BNB Smart Chain RPC 页面 获取端点和网络详细信息,以及 RPC 定价 了解层级选项。

RPC 知识库

相关 RPC 内容

网络 RPCSolana

Solana RPC 概览:端点、方法以及首先需要配置的内容

Solana RPC 是您的应用用来读取账户、发送交易和订阅链上事件的 JSON-RPC 接口。本概览涵盖端点形态、您最常调用的方法,以及从演示环境迁移到线上应用时通常最先出问题的设置。它还解释了何时共享端点足够,以及何时专用 Solana 节点是更合适的选择。...

网络 RPCPhala

Phala RPC 端点:链设置、连接指南和开发者资源

Phala Network 是一个 Polkadot 平行链,利用可信执行环境(TEE)提供机密智能合约。要与 Phala 交互,开发者需要可靠的 RPC 端点来读取链上数据、提交交易和部署 Phat Contracts。本文涵盖 Phala RPC 链设置、如何连接以及选择 RPC 提供商时的注意...

网络 RPCBNB Chain

关于BNB RPC端点,我需要了解什么?

# 关于BNB RPC端点,我需要了解什么? BNB RPC端点至关重要,因为Web3应用依赖于稳定的端点访问来进行读取、交易、仪表盘和后端工作流。正确的设置应匹配你的工作负载,支持你所需的网络和测试网,使限制可见,并在共享RPC不再足够时提供扩展路径。 对于BNB Chain的构建者、基础设施负责...

RPC 提供商选择Solana

2025年Solana验证者最佳API有哪些?

验证者需要用于监控、质押和RPC访问的API。本指南将介绍关键的API类别、评估标准,以及如何为您的验证者运营选择合适的基础设施。...

网络 RPCMantle

Mantle 端点:链设置、RPC URL 和调试

了解如何使用正确的链 ID、RPC 端点和浏览器设置连接到 Mantle 主网。本页涵盖公共和专用 RPC 选项、常见的 JSON-RPC 方法以及生产 dApp 的故障排除步骤。...

RPC 提供商选择Solana

你能推荐一个针对特定工作负载提供增强 API 的 Solana RPC 提供商吗?

可以。OnFinality 提供支持 HTTP 和 WebSocket 的 Solana RPC 端点,并为需要更可预测容量的团队提供专用节点选项。Solana 上的增强 API 访问通常不仅仅意味着基本的 JSON-RPC 端点:它包括 WebSocket 订阅、支持归档的历史查询,以及在不与整个...

永远不用担心基础设施

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

开始