摘要
BNB RPC 节点是暴露 BNB 智能链 JSON-RPC API 的服务器,让钱包、dApp 和索引器读取链上状态并提交交易。本指南解释了公共端点和私有端点之间的区别,如何为你的应用配置主网和测试网,以及为生产工作负载选择基础设施时需要注意什么。
快速决策指南:你应该使用哪个 BNB RPC 节点?
在将端点复制到你的配置之前,先确定你的应用实际需要什么。答案取决于你是在原型开发、运行生产 dApp 还是操作高频交易机器人。
- 原型开发或黑客松:公共端点就足够了。你可以在几分钟内开始,无需 API 密钥。只需注意公共端点通常会限制请求频率,并可能禁用像
eth_getLogs这样的昂贵方法。 - 中等流量的生产 dApp:托管 RPC 提供商提供更高的速率限制、更好的可靠性和支持。你按请求或按月付费,并获得一个可以扩展的稳定端点。
- 高吞吐量或数据密集型工作负载:考虑专用节点。你拥有自己的 BNB 智能链节点,没有嘈杂的邻居,完全访问
eth_getLogs和trace_*等方法,并且能够调整性能。
如果你正在评估提供商,请根据下面的提供商评估矩阵中的标准进行比较。更深入的了解,请参阅我们的如何选择 RPC 提供商指南。
什么是 BNB RPC 节点?
BNB RPC 节点是运行 BNB 智能链客户端(通常是 go-ethereum 的分支)并暴露 JSON-RPC API 的服务器。此 API 允许外部应用程序读取区块链数据(余额、交易收据、合约状态)并提交新交易。当你将 MetaMask 等钱包连接到 BNB 智能链时,实际上是指向一个 RPC 端点。
BNB 智能链是一个兼容 EVM 的链,因此它支持标准的以太坊 JSON-RPC 方法(eth_blockNumber、eth_getBalance、eth_sendRawTransaction 等)以及一些 BSC 特定的扩展。主网的链 ID 是 56,测试网是 97。
链设置一览
以下是配置钱包或 dApp 所需的关键网络参数:
| 参数 | BNB 智能链主网 | BNB 智能链测试网 |
|---|---|---|
| 链 ID | 56 (0x38) | 97 (0x61) |
| 货币 | BNB | tBNB |
| 区块浏览器 | BscScan | BscScan 测试网 |
| 公共 RPC | https://bsc-dataseed.bnbchain.org | https://data-seed-prebsc-1-s1.bnbchain.org:8545 |
| WebSocket | wss://bsc-ws-node.nariber.org | wss://data-seed-prebsc-1-s1.bnbchain.org:8546 |
注意:公共端点有速率限制,可能不支持所有方法。对于生产环境,请使用托管提供商或您自己的节点。
如何连接到 BNB RPC 节点
钱包配置
要将 BNB 智能链添加到 MetaMask 或其他钱包,请使用上述链设置。大多数钱包都有一个“添加网络”表单,您可以在其中输入链 ID、RPC URL、符号和浏览器 URL。
JavaScript (ethers.js)
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider("https://bsc-dataseed.bnbchain.org");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("Current block:", blockNumber);
}
getBlockNumber();
curl JSON-RPC
curl -X POST https://bsc-dataseed.bnbchain.org \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
WebSocket 订阅
const ws = new WebSocket("wss://bsc-ws-node.nariber.org");
ws.onopen = () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
method: "eth_subscribe",
params: ["newHeads"],
id: 1
}));
};
ws.onmessage = (event) => {
console.log("New block:", JSON.parse(event.data));
};
公共与私有 BNB RPC 节点
公共端点很方便,但有局限性。它们被许多用户共享,因此可能很慢或受到速率限制。它们通常会禁用像 eth_getLogs 这样的昂贵方法来保护基础设施。对于生产环境,您需要私有端点。
私有 RPC 节点可以是共享(托管)端点或专用节点。共享端点更便宜且更容易扩展,但您与其他用户共享资源。专用节点为您提供完全控制和一致的性能,但您需要支付更多费用并负责监控。
提供商评估矩阵
在比较 BNB RPC 提供商时,使用此矩阵来构建您的评估:
| 标准 | 检查什么 | 为什么重要 |
|---|---|---|
| 速率限制 | 每秒/每分钟请求数、突发允许量 | 防止流量高峰期间的节流 |
| 方法支持 | eth_getLogs、trace_*、eth_subscribe | 某些提供商会禁用昂贵的方法 |
| 归档数据 | 历史状态的可用性 | 索引器和分析所需 |
| WebSocket 支持 | 稳定的 wss 端点 | 实时订阅所需 |
| 全球覆盖 | 多个区域、低延迟 | 提高全球用户的性能 |
| 故障转移 | 自动重试、多个端点 | 确保高可用性 |
| 定价模型 | 按请求付费与固定月费 | 影响成本可预测性 |
更详细的框架,请参阅如何选择 RPC 提供商。
常见陷阱及如何避免
1. 速率限制
公共端点通常将请求限制为每 5 分钟 10,000 次。如果您的应用超过此限制,您将收到 429 错误。使用具有更高限制的提供商或实现缓存。
2. eth_getLogs 被禁用
许多公共端点禁用 eth_getLogs,因为它消耗大量资源。如果您需要查询日志,请使用支持它的提供商或使用 WebSocket 订阅实时接收日志。
3. 链 ID 不匹配
确保您的应用使用正确的链 ID(主网为 56,测试网为 97)。不匹配将导致交易被拒绝。
4. WebSocket 断开
WebSocket 连接可能会断开。实现具有指数退避的重连逻辑。
何时运行自己的 BNB 节点与使用托管服务
运行自己的 BNB 智能链节点可以让您完全控制并避免按请求付费,但它需要大量的运维工作:硬件、存储、监控和维护。对于大多数团队来说,托管 RPC 服务更具成本效益和可靠性。
OnFinality 为需要一致性能和完整方法访问的团队提供托管 BNB 智能链 RPC 端点和专用节点。您可以从免费层开始,随着使用量的增长进行扩展。
关键要点
- BNB RPC 节点暴露 BNB 智能链的 JSON-RPC API,使钱包和 dApp 能够与链交互。
- 公共端点适合测试,但有速率限制和方法限制。
- 对于生产环境,根据您的流量和数据需求选择托管提供商或专用节点。
- 评估提供商时,始终验证链 ID、方法支持和 WebSocket 稳定性。
- OnFinality 提供BNB 智能链 RPC和测试网 RPC,具有灵活的定价。
常见问题解答
BNB 智能链 RPC URL 是什么?
BNB 智能链主网的官方公共 RPC URL 是 https://bsc-dataseed.bnbchain.org。对于测试网,使用 https://data-seed-prebsc-1-s1.bnbchain.org:8545。
BNB 智能链的链 ID 是什么?
主网的链 ID 是 56,测试网是 97。
我可以免费使用 BNB RPC 节点吗?
是的,公共端点是免费的,但它们有速率限制,可能不支持所有方法。对于生产环境,请考虑具有免费层的托管服务。
如何获取 BNB 测试网 RPC 端点?
您可以使用公共测试网端点,或从 OnFinality 等提供商获取专用测试网端点。有关详细信息,请参阅我们的BNB 测试网页面。
全节点和归档节点有什么区别?
全节点存储当前状态和最近的历史记录。归档节点存储所有历史状态,这对于访问旧数据的查询是必需的。归档节点需要更多存储空间,并且更昂贵。
如何在共享和专用 BNB RPC 节点之间选择?
共享节点更便宜且更容易扩展,但您共享资源。专用节点为您提供一致的性能和完整的方法访问。如果您有高流量或需要 eth_getLogs 和 trace_* 方法,请选择专用节点。