摘要
Smart Chain RPC URL 是你的钱包、dApp 或后端用来读取 BNB Smart Chain 状态并广播交易的 HTTP 或 WebSocket 端点。它承载 JSON-RPC 调用,例如 eth_blockNumber、eth_getBalance 和 eth_sendRawTransaction,并将这些调用发送到与网络同步的节点。
本页面涵盖了钱包配置所需的 BNB Smart Chain 主网和测试网设置,提供了一个可用的 curl 和 JavaScript 示例,并解释了何时公共端点足够,以及何时托管 RPC API 或专用节点更适合生产流量。
当开发者搜索“smart chain RPC URL”时,他们通常指的是 BNB Smart Chain (BSC),并且需要以下三样东西之一:一个粘贴到钱包中的 URL、一个用于 dApp 的链配置块,或者一个用于后端流量的可靠端点。本页面回答了所有这三个问题,然后解释了如何在公共端点和管理基础设施之间做出选择。
链设置一览
BNB Smart Chain 是一个 EVM 兼容网络,因此任何支持以太坊 JSON-RPC 的工具都可以与之配合使用。唯一的区别是端点 URL、链 ID 和原生代币。以下是主网和测试网所需的值。
| 设置 | BNB Smart Chain 主网 | BNB Chain 测试网 |
|---|---|---|
| 链 ID | 56 | 97 |
| 链名称 | BNB Smart Chain Mainnet | BNB Smart Chain Testnet |
| 原生货币 | BNB(18 位小数) | tBNB(18 位小数) |
| 区块浏览器 | https://bscscan.com | https://testnet.bscscan.com |
| OnFinality 公共 RPC | https://bnb.api.onfinality.io/public | https://bnb-testnet.api.onfinality.io/public |
| 传输方式 | HTTP, WebSocket | HTTP |
如果你正在配置钱包,请使用主网行。如果你在部署前测试合约,请使用测试网行,并从 BNB Chain 测试网水龙头为你的地址充值。链 ID 是防止钱包针对测试网端点签署主网交易的关键,因此请在配置中将两组值分开。
快速建议:公共端点还是托管 RPC?
大多数读者可以从公共端点开始,然后继续。只有当流量增长或单个请求开始失败时,这个决定才变得有趣。
- 使用公共 RPC URL 进行钱包设置、一次性脚本、黑客松原型和低容量读取调用。上面的 OnFinality 公共端点适用于此,且无需密钥。
- 使用托管 RPC API 当你的前端或后端发送稳定流量、需要 WebSocket 订阅,或需要归档和 trace 方法时。托管提供商处理节点升级、同步和故障转移,因此你无需操心。
- 使用专用节点 当你需要可预测的容量、自定义配置或与其他租户流量隔离时。这在交易所、索引器和高吞吐量机器人中很常见。
如果你不确定自己属于哪一类,RPC 提供商选择指南 更详细地介绍了评估标准。要快速了解 OnFinality 在 BSC 上具体提供什么,请参阅 BNB Smart Chain 网络页面。
使用 curl 和 JavaScript 连接
确认端点是否正常工作的最快方法是进行一次 JSON-RPC 调用。这会向节点请求最新的区块号。
curl -X POST https://bnb.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
健康的响应类似于 {"jsonrpc":"2.0","id":1,"result":"0x2a1f3c4"}。结果是十六进制编码的,因此将其转换为十进制以与 BscScan 上的当前区块进行比较。如果数字远落后于浏览器,则说明你正在与仍在同步的节点通信。
在 JavaScript 中,通过库进行相同的调用通常是你的应用会做的:
import { JsonRpcProvider, formatEther } from "ethers";
const provider = new JsonRpcProvider("https://bnb.api.onfinality.io/public");
const blockNumber = await provider.getBlockNumber();
const balance = await provider.getBalance("0xYourAddressHere");
console.log("Block:", blockNumber);
console.log("Balance:", formatEther(balance), "BNB");
对于 newHeads 或 logs 等 WebSocket 订阅,请将传输方式切换为 wss://,并针对支持它的提供商。BNB Smart Chain 主网在 OnFinality 上支持 HTTP 和 WebSocket,而测试网端点仅支持 HTTP,因此请相应地规划你的订阅代码。
将 BNB Smart Chain 添加到钱包
大多数钱包接受自定义网络表单。字段直接映射到上表:
Network name: BNB Smart Chain
RPC URL: https://bnb.api.onfinality.io/public
Chain ID: 56
Symbol: BNB
Explorer: https://bscscan.com
这里有两个常见错误。首先,在期望数字的字段中输入十进制字符串形式的链 ID,或者在期望十六进制的代码中反之。其次,复制测试网 RPC URL 但将链 ID 保留为 56。如果钱包显示你知道持有 BNB 的地址余额为零,请首先检查链 ID。
常见故障模式及如何解读
当 RPC URL 停止正常工作时,错误通常指向原因。下表将症状映射到可能的修复方法。
| 症状 | 可能原因 | 尝试方法 |
|---|---|---|
429 Too Many Requests | 公共端点速率限制 | 迁移到托管 RPC API 或专用节点 |
eth_getLogs 返回部分结果 | 区块范围对于端点来说太宽 | 缩小范围或使用支持归档的提供商 |
| 交易卡在待处理状态 | Nonce 或 gas 价格问题,而非 URL | 检查 nonce 处理和 gas 设置 |
method not found | 该端点未启用该方法 | 与提供商确认 trace/debug 支持 |
| WebSocket 断开连接 | 空闲超时或传输方式不支持 | 重连逻辑,或确认 wss:// 支持 |
| 区块号远落后 | 节点仍在同步 | 切换端点或等待同步 |
请注意,其中只有一些实际上与 URL 有关。卡住的交易或错误的 nonce 是应用程序错误,而不是端点问题。在轮换端点之前,请确认故障出在传输侧。
生产规模下会发生什么变化
公共端点是共享的。这没问题,直到你的流量增长,此时你开始与其他用户竞争相同的容量。症状起初很微妙:偶尔响应缓慢,然后间歇性 429,然后在网络拥塞期间请求失败。
托管 RPC API 通过为你提供一个带有更高限制和支持路径的密钥端点来解决这个问题。专用节点更进一步,为你的工作负载提供自己的节点,当你需要一致的吞吐量、归档数据或共享端点通常限制的 trace 方法时,这一点很重要。
OnFinality 在包括 BNB Smart Chain 在内的多个网络上提供托管 RPC API 访问和专用节点基础设施。你可以查看 RPC 定价 来比较层级,如果你的应用跨越多个链,请查看 支持的 RPC 网络 的完整列表。
迁移检查点
如果你正在从公共端点迁移到托管或专用端点,请完成以下检查点,以确保切换不会破坏任何东西:
- 清点你的方法。 列出你的应用调用的每个 JSON-RPC 方法。标记任何 trace、debug 或归档调用,因为这些是最可能需要不同层级的方法。
- 检查传输需求。 如果你使用 WebSocket 订阅,请在切换之前确认新端点支持
wss://。 - 先在测试网上测试。 将暂存环境指向 BNB Chain 测试网端点,并在那里运行集成测试。
- 添加故障转移。 配置一个辅助端点,以便单个提供商中断不会导致你的应用宕机。
- 切换后监控。 在最初几天跟踪错误率、延迟和区块滞后,并与基线进行比较。
一个简单的监控探针可以及早发现问题:
# 定期运行;如果区块号停止前进则发出警报
curl -s -X POST https://bnb.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
如果间隔一分钟的两次连续检查返回的区块号相同,则端点或其背后的节点可能已停滞。这是一个有用的信号,可以在用户注意到之前进行故障转移。
关键要点
- Smart Chain RPC URL 是你的钱包或应用通过 JSON-RPC 与 BNB Smart Chain 通信的端点。
- 主网使用链 ID 56 和 BNB 代币;测试网使用链 ID 97 和 tBNB。
- OnFinality 公共端点是主网的
https://bnb.api.onfinality.io/public和测试网的https://bnb-testnet.api.onfinality.io/public。 - 公共端点适用于钱包和原型;托管 RPC API 和专用节点更适合稳定的生产流量。
- 许多“RPC 错误”实际上是应用程序错误,例如 nonce 或 gas 问题,因此在轮换端点之前先诊断。
- 迁移时,清点你的方法,确认传输支持,在测试网上测试,并添加故障转移。
常见问题
Smart Chain RPC URL 与 BSC RPC URL 相同吗?
是的。“Smart Chain”和“BSC”指的是同一个网络,即 BNB Smart Chain。任何标记为 BSC 或 BNB Chain 的端点都可以使用,只要链 ID 匹配。
我应该使用哪个链 ID?
BNB Smart Chain 主网使用 56,BNB Chain 测试网使用 97。混合使用会导致签名和余额错误。
我可以在生产环境中使用公共端点吗?
可以,但公共端点是共享的,在负载下可能会受到速率限制。对于生产应用,托管 RPC API 或专用节点提供更可预测的容量和支持路径。
BNB Smart Chain 支持 WebSocket 吗?
主网在 OnFinality 上支持 HTTP 和 WebSocket。测试网端点仅支持 HTTP,因此请相应地规划订阅。
为什么 eth_getLogs 返回不完整的结果?
大区块范围通常超出共享端点在一次调用中能提供的范围。缩小范围或使用支持归档和宽范围日志查询的提供商。
我在哪里获取测试网 BNB?
在部署或测试合约之前,使用 BNB Chain 测试网水龙头为你的地址充值 tBNB。
后续步骤
如果你正在设置钱包或快速脚本,请从上表中复制主网 URL,就完成了。如果你在 BNB Smart Chain 上运行生产应用,请查看 RPC 定价 以选择层级,如果需要隔离,请查看 专用节点选项,如果你的应用涉及多个链,请浏览 支持的 RPC 网络。