摘要
BNB Chain RPC 端点允许应用程序在 BNB 智能链上读写数据。本文解释了链设置、如何将 BNB Chain 添加到钱包,以及如何为生产工作负载评估 RPC 提供商。
快速决策指南:应该使用哪个 BNB Chain RPC?
在将端点复制到钱包或应用程序之前,请确定您对 RPC 提供商的需求。对于简单的钱包交互或轻量级 dApp 使用,公共端点可能就足够了。对于依赖稳定吞吐量、低延迟和可靠历史数据访问的生产应用程序,托管 RPC 服务或专用节点通常是更安全的选择。
问自己以下问题:
- 您是否需要处理高请求量? 公共端点通常有速率限制,可能会限制您的应用程序。如果您预计流量激增,选择具有可扩展计划的提供商更好。
- 您是否需要 WebSocket 支持以获取实时更新? 许多公共端点提供 WebSocket,但可靠性可能有所不同。对于交易机器人或实时仪表板,建议使用具有专用 WebSocket 支持的提供商。
- 您是否需要归档数据或 trace 方法? 如果您的应用程序查询历史状态或使用
debug_traceTransaction,您需要归档节点。并非所有提供商都提供归档数据,而且通常成本更高。 - 您是否需要遵守数据隐私或地理要求? 一些提供商在特定区域或具有隐私功能提供端点。请考虑您的用户所在位置。
如果您正在构建生产应用程序,请根据正常运行时间、吞吐量和支持来评估提供商。OnFinality 为 BNB Chain 和许多其他网络提供托管 RPC 端点,具有灵活的定价和支持的网络列表。
BNB Chain 网络设置一览
BNB 智能链(BSC)是一个兼容 EVM 的区块链,因此它使用与以太坊相同的 JSON-RPC 接口。以下是配置钱包或应用程序所需的关键网络参数:
| 参数 | 值 |
|---|---|
| 网络名称 | BNB 智能链主网 |
| 链 ID | 56 (0x38) |
| 货币符号 | BNB |
| 区块浏览器 | https://bscscan.com |
| RPC URL(公共) | https://bsc-dataseed.bnbchain.org |
| WebSocket URL(公共) | wss://bsc-ws-node.nariber.org |
对于测试网,链 ID 为 97 (0x61),浏览器为 https://testnet.bscscan.com。您可以在 BNB Chain 测试网页面 上找到更多详细信息。
将 BNB Chain 添加到 MetaMask 或其他钱包
要与 BNB Chain dApp 交互,您需要将网络添加到您的钱包。以下是在 MetaMask 中手动添加的方法:
- 打开 MetaMask,点击顶部的网络下拉菜单。
- 点击 添加网络。
- 填写网络详细信息:
- 网络名称:BNB 智能链
- 新的 RPC URL:
https://bsc-dataseed.bnbchain.org - 链 ID:
56 - 货币符号:
BNB - 区块浏览器 URL:
https://bscscan.com
- 点击 保存。
您也可以使用 ChainList 自动添加网络。访问 chainlist.org/chain/56 并连接您的钱包。
发出您的第一个 JSON-RPC 请求
获得端点后,您可以使用简单的 curl 命令进行测试。以下示例向公共 BNB Chain RPC 发送 eth_blockNumber 请求:
curl -X POST https://bsc-dataseed.bnbchain.org \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
您应该会收到类似以下的响应:
{"jsonrpc":"2.0","id":1,"result":"0x6d8b8a"}
结果是十六进制的当前区块号。您可以使用 JavaScript 中的 parseInt(result, 16) 将其转换为十进制。
使用 ethers.js 或 viem 连接 BNB Chain RPC
对于 JavaScript 应用程序,您可以使用 ethers.js 或 viem 等库连接到 BNB Chain。以下是使用 ethers.js 的示例:
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://bsc-dataseed.bnbchain.org");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("Current block number:", blockNumber);
}
getBlockNumber();
使用 viem:
import { createPublicClient, http } from 'viem';
import { bsc } from 'viem/chains';
const client = createPublicClient({
chain: bsc,
transport: http('https://bsc-dataseed.bnbchain.org')
});
const blockNumber = await client.getBlockNumber();
console.log(blockNumber);
了解速率限制和公共端点
公共 BNB Chain 端点是免费的,但有速率限制。官方文档规定每个 IP 每 5 分钟 10,000 次请求的限制。此外,某些公共端点禁用 eth_getLogs 以防止滥用。如果您的应用程序依赖获取日志,您应该使用支持此方法的提供商,或使用 WebSocket 订阅实时接收新日志。
公共端点也可能在网络活动高峰期变得拥塞,导致响应变慢或超时。对于生产应用程序,仅依赖公共端点是有风险的。
评估 BNB Chain 的 RPC 提供商
为 BNB Chain 选择 RPC 提供商时,请考虑以下标准:
| 标准 | 检查内容 | 重要性 |
|---|---|---|
| 吞吐量 | 请求限制、突发容量 | 防止流量高峰期间限流 |
| 延迟 | 地理分布、响应时间 | 影响用户体验,尤其是对时间敏感的应用程序 |
| 可靠性 | 正常运行时间历史、冗余 | 确保您的应用程序保持可用 |
| 数据访问 | 归档数据、trace 方法、WebSocket | 分析、调试和实时功能所需 |
| 支持 | SLA、文档、社区 | 帮助快速解决问题 |
| 定价 | 免费层、按需付费、专用选项 | 符合您的预算和扩展需求 |
OnFinality 为 BNB Chain 提供托管 RPC 端点,具有多个区域和灵活的计划。您可以查看 BNB Chain 网络页面 了解更多详细信息,或探索 RPC 定价 以找到适合您工作负载的计划。
常见陷阱和故障排除
- 错误的链 ID:使用错误的链 ID(例如,测试网使用 97)将导致交易失败或被发送到错误的网络。
- 速率限制:如果您收到
429 Too Many Requests,说明您已达到速率限制。考虑升级您的提供商计划或实施缓存。 eth_getLogs被禁用:某些公共端点禁用此方法。使用支持它的提供商或切换到 WebSocket 订阅。- WebSocket 连接断开:如果您的 WebSocket 连接频繁断开,请检查您的网络稳定性,并考虑使用具有专用 WebSocket 支持的提供商。
- 找不到区块:当查询太新的区块时,节点可能尚未同步。等待几秒钟后重试。
何时考虑专用节点
如果您的应用程序需要高吞吐量、低延迟或访问归档数据,专用 BNB Chain 节点可能是正确的选择。专用节点让您独占访问节点,消除了与其他用户的争用。这对于处理大量交易或需要查询大量历史数据的应用程序尤其重要。
OnFinality 为 BNB Chain 和其他网络提供专用节点服务。您可以选择适合您需求的硬件和配置,并随着应用程序的增长进行扩展。
关键要点
- BNB Chain 是一个兼容 EVM 的网络,链 ID 为 56,原生货币为 BNB。
- 公共 RPC 端点是免费的,但有速率限制,并且可能禁用某些方法,如
eth_getLogs。 - 对于生产应用程序,请根据吞吐量、延迟、可靠性、数据访问和支持来评估提供商。
- 使用 WebSocket 获取实时数据,并考虑使用归档节点进行历史查询。
- OnFinality 为 BNB Chain 提供托管 RPC 和专用节点选项,具有透明的定价和支持的网络列表。
常见问题解答
BNB Chain RPC URL 是什么?
BNB 智能链主网的公共 RPC URL 是 https://bsc-dataseed.bnbchain.org。对于测试网,使用 https://data-seed-prebsc-1-s1.bnbchain.org:8545。
如何将 BNB Chain 添加到 MetaMask?
转到设置 > 网络 > 添加网络,然后输入网络详细信息:链 ID 56,RPC URL https://bsc-dataseed.bnbchain.org,符号 BNB,浏览器 https://bscscan.com。
为什么我的 BNB Chain RPC 请求失败?
检查您的互联网连接,确保您使用正确的端点,并确认您没有超过速率限制。如果问题仍然存在,请尝试其他提供商。
我可以将 WebSocket 与 BNB Chain 一起使用吗?
是的,BNB Chain 支持 WebSocket 端点。例如,wss://bsc-ws-node.nariber.org 是一个公共 WebSocket 端点。对于生产环境,请考虑使用具有专用 WebSocket 支持的提供商。
OnFinality 支持 BNB Chain 吗?
是的,OnFinality 为 BNB Chain 提供托管 RPC 端点。访问 BNB Chain 网络页面 了解更多信息。