摘要
BNB Chain(BNB Smart Chain)提供标准的 EVM JSON-RPC 接口,因此大多数与以太坊兼容的工具只需更改链 ID、RPC URL 和符号即可在此使用。本页面涵盖主网和测试网的链设置、如何将端点接入钱包和库,以及需要规划的速率限制和工作负载模式。
将其作为工作参考:复制链设置,使用 curl 测试请求,然后决定共享公共端点、托管 RPC API 还是专用节点更适合您的流量。如果您需要比公共端点允许的更多余量,OnFinality 提供 BNB Chain RPC API 访问和专用节点基础设施。
BNB Chain(BNB Smart Chain)是一个 EVM 兼容网络,这意味着其 RPC 接口与您已经用于以太坊的 JSON-RPC 接口相同。实际工作不是学习新的 API——而是正确设置链参数、将端点接入钱包或库,并了解速率限制和请求模式如何随着流量增长影响可靠性。
本参考涵盖主网和测试网设置、可用的设置路径,以及从快速测试转向生产流量时重要的限制和工作负载问题。
您应该从哪个 BNB Chain 端点开始?
根据您当前正在做的事情选择起点,而不是根据以后可能做的事情。
| 您的情况 | 合理的起点 | 原因 |
|---|---|---|
| 阅读文档、测试脚本、一次性查询 | 公共 RPC 端点 | 无需注册,适合低流量和手动测试 |
| 具有稳定流量的 dApp、机器人或后端 | 托管 RPC API | 可预测的访问、更好的余量、监控和支持 |
大量 eth_getLogs、归档查询或持续吞吐量 | 专用节点 | 隔离容量,无共享池的噪声邻居影响 |
| 需要大规模 WebSocket 订阅 | 支持 WS 的托管或专用 | 公共端点通常限制或节流订阅 |
如果您仍在探索,请从公共端点开始,一旦遇到第一个速率限制或超时就继续前进。如果您已经知道将运行生产流量,请跳过公共层并尽早评估托管 RPC API——以后迁移比一开始就选择好要花费更多时间。
有关更广泛的框架,请参阅如何选择 RPC 提供商。
BNB Chain 网络设置一览
这些是您粘贴到钱包、.env 文件或框架配置中的值。将主网和测试网分开——混合它们是最常见的设置错误之一。
| 设置 | BNB Smart Chain 主网 | BNB Smart Chain 测试网 |
|---|---|---|
| 链 ID | 56 | 97 |
| 原生货币 | BNB(18 位小数) | tBNB(18 位小数) |
| 区块浏览器 | https://bscscan.com | https://testnet.bscscan.com |
| 传输 | HTTP 和 WebSocket | HTTP |
| 典型用途 | 生产 dApp、机器人、索引器 | 开发、暂存、水龙头测试 |
OnFinality 为两个网络提供公共端点:
- 主网:
https://bnb.api.onfinality.io/public - 测试网:
https://bnb-testnet.api.onfinality.io/public
这些是共享公共端点,因此将其视为起点而非生产保证。有关更高限制的托管访问,请参阅 BNB Chain RPC 和 BNB Chain 测试网 RPC。
将 BNB Chain 添加到钱包
大多数 EVM 钱包接受自定义网络。字段直接映射到上面的设置:
{
"chainId": "0x38",
"chainName": "BNB Smart Chain Mainnet",
"nativeCurrency": {
"name": "BNB Chain Native Token",
"symbol": "BNB",
"decimals": 18
},
"rpcUrls": ["https://bnb.api.onfinality.io/public"],
"blockExplorerUrls": ["https://bscscan.com"]
}
请注意,钱包配置中的 chainId 是十六进制:十进制 56 是 0x38,十进制 97 是 0x61。如果钱包拒绝您的网络,通常原因是十六进制链 ID 错误。
使用 curl 测试端点
在将任何内容接入应用程序之前,确认端点响应并报告您期望的链:
curl -s https://bnb.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
正确的主网响应返回 0x38。要检查节点是否已同步,调用 eth_blockNumber 并与区块浏览器比较:
curl -s https://bnb.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
如果 eth_chainId 返回错误值,则您指向了错误的网络。如果 eth_blockNumber 远远落后于浏览器,节点可能正在追赶或端点可能已降级。
将 BNB Chain 接入 JavaScript
使用 ethers 或 viem,一旦有了端点,设置只需更改一行:
import { JsonRpcProvider } from "ethers";
const provider = new JsonRpcProvider(
"https://bnb.api.onfinality.io/public",
{ chainId: 56, name: "bnb" }
);
const block = await provider.getBlockNumber();
console.log("Latest BNB Chain block:", block);
对于测试网,将 URL 替换为 https://bnb-testnet.api.onfinality.io/public 并设置 chainId: 97。将这些值保存在环境变量中,而不是硬编码,以便无需重新部署即可轮换端点。
速率限制如何实际影响 BNB Chain 应用
速率限制通常表示为每秒或每分钟的请求数,但仅凭数字并不能说明端点是否能承受。重要的是您的工作负载如何映射到这些限制。
- 方法权重。 像
eth_blockNumber和eth_chainId这样的廉价调用消耗的容量远少于eth_getLogs、针对复杂合约的eth_call或跟踪方法。对于区块轮询来说感觉宽松的限制在日志查询下可能很快消失。 - 突发与持续。 许多提供商允许短暂突发超过持续速率。一个在一秒内发出 200 个请求然后空闲的机器人与一个永远每秒发送 20 个请求的机器人行为非常不同。
- 共享与隔离。 公共和共享端点在所有用户之间池化容量,因此当池繁忙时,您的有效吞吐量可能会下降。专用节点消除了这种可变性。
- 负载大小。 大的
eth_getLogs范围返回大响应。一些提供商无论请求数量如何都限制结果大小或区块范围。
一种实用的规划方法:测量您的真实请求组合,而不是猜测。记录一天的方法名称和计数,然后根据最重的方法而不是平均值来确定端点大小。
将工作负载匹配到端点类型
| 工作负载模式 | 什么给端点带来压力 | 适合的端点类型 |
|---|---|---|
| 钱包或仪表板读取余额 | 低流量,偶尔 eth_call | 公共或共享托管 |
| 交易机器人轮询区块和内存池 | 持续请求速率,低延迟 | 托管 RPC API |
| 索引器扫描事件日志 | 大的 eth_getLogs 范围,归档数据 | 具有归档访问权限的专用节点 |
| 具有 WebSocket 订阅的 dApp | 持久连接,事件扇出 | 支持 WS 的托管或专用 |
| 暂存和 CI 测试运行 | 突发、不可预测 | 测试网端点,与生产分开 |
如果此表中的行落在“专用”,则决策更多是关于隔离和可预测容量,而不是速率限制。有关该模型的工作原理,请参阅专用节点。
常见设置和限制问题
链 ID 错误。 配置为 0x1(以太坊)而不是 0x38 的钱包或库将连接但返回令人困惑的结果。始终使用 eth_chainId 验证。
生产中的测试网密钥。 测试网 tBNB 没有价值。如果部署静默指向链 97,交易将看似成功但永远不会在主网上结算。
eth_getLogs 范围太宽。 许多端点拒绝或截断非常大的区块范围。将查询拆分为更小的窗口并分页。
负载下的 429 响应。 429 Too Many Requests 突然激增通常意味着突发流量超出了计划。添加带退避的重试,如果反复出现,考虑更高层级或专用节点。
WebSocket 断开。 长期订阅可能被中间人关闭。实现重连逻辑并在重连时重新订阅,而不是假设套接字保持打开。
区块高度陈旧。 如果 eth_blockNumber 停止前进,端点可能正在重新同步。故障转移到第二个端点,而不是重试同一个。
在生产中运行 BNB Chain RPC
一旦完成设置,操作问题就会改变。三件事最重要:
- 故障转移。 配置至少两个端点,并在错误或延迟时切换。无论提供商如何,单个端点都是单点故障。
- 监控。 跟踪请求成功率、延迟百分位数和区块高度延迟。在用户注意到之前对延迟发出警报。
- 容量规划。 在每次主要功能发布后重新测量您的请求组合。日志密集型功能比用户增长更能改变您的配置文件。
OnFinality 为需要比公共端点更可预测容量的团队提供 BNB Chain RPC API 访问和专用节点基础设施。在 RPC 定价 上比较选项,如果您跨多个链运行,请查看支持的 RPC 网络。
关键要点
- BNB Smart Chain 使用链 ID 56(主网)和 97(测试网),具有标准的 EVM JSON-RPC 方法。
- 公共端点适合测试;生产流量需要可预测的限制和故障转移。
- 速率限制取决于方法权重和突发模式,而不仅仅是每秒请求数。
eth_getLogs和归档查询是限制和超时问题的最常见来源。- 在调试其他任何内容之前,验证链 ID 和区块高度。
- 托管 RPC API 和专用节点以成本换取隔离和余量。
常见问题
BNB Chain 主网 RPC URL 是什么?
OnFinality 的公共主网端点是 https://bnb.api.onfinality.io/public。有关托管访问,请参阅 BNB Chain 网络页面。
BNB Smart Chain 使用什么链 ID?
主网为 56(十六进制 0x38),测试网为 97(十六进制 0x61)。
BNB Chain RPC 支持 WebSocket 吗? 主网支持 HTTP 和 WebSocket 传输。检查具体端点和计划,因为公共端点可能限制订阅。
为什么我会收到 429 错误? 您可能超出了突发或持续速率限制。添加带退避的重试,降低请求频率,或迁移到更高层级或专用节点。
我可以对测试网和主网使用同一个端点吗? 不可以。它们是具有不同链 ID 和端点的独立网络。将它们保存在单独的配置中。
如何知道端点是否已同步?
调用 eth_blockNumber 并与区块浏览器比较。大的差距表明节点正在追赶或已降级。