摘要
了解如何使用 RPC API 连接 BNB 智能链(Binance Chain)。本指南涵盖链设置、公共端点,以及如何为您的 dApp 选择公共、托管或专用节点基础设施。
快速决策:哪种 BNB Chain API 设置适合您的项目?
在编写任何代码之前,请决定如何访问 BNB 智能链。正确的选择取决于您的工作负载、对速率限制的容忍度以及是否需要历史数据。
- 原型开发或轻量使用: 使用公共 RPC 端点,如
https://bnb.api.onfinality.io/public。它是免费的,适合开发,但它是共享的,可能有速率限制。 - 生产 dApp 或后端: 使用具有更高吞吐量和可靠性的托管 RPC 服务。OnFinality 提供托管端点,可访问归档数据和 WebSocket 支持。
- 高吞吐量或数据密集型工作负载: 考虑专用节点。如果您需要运行许多
eth_getLogs查询、处理大批量数据或需要一致的性能,专用基础设施可为您提供隔离的资源。
如果您不确定,请从托管服务开始,在达到限制时扩展到专用节点。有关评估提供商的更多详细信息,请参阅我们的选择 RPC 提供商指南。
什么是 Binance Chain API?
Binance Chain API 通常指 BNB 智能链(BSC)的 RPC 接口,BNB 智能链是与原始 Binance Chain 并行运行的 EVM 兼容区块链。开发人员使用此 API 读写链上数据:发送交易、查询余额、获取日志等。
BNB 智能链使用以太坊 JSON-RPC 标准,因此任何以太坊工具——ethers.js、viem、web3.js——都可以与 BSC 配合使用。主网的链 ID 为 56,测试网为 97。
链设置一览
以下是配置钱包或 dApp 以连接 BNB 智能链所需的关键参数:
| 参数 | 主网 | 测试网 |
|---|---|---|
| 链 ID | 56 | 97 |
| 网络名称 | BNB 智能链主网 | BNB 智能链测试网 |
| 原生货币 | BNB | tBNB |
| 区块浏览器 | bscscan.com | testnet.bscscan.com |
| 公共 RPC URL | https://bnb.api.onfinality.io/public | https://bnb-testnet.api.onfinality.io/public |
这些设置对于连接钱包、部署合约和运行脚本至关重要。
如何使用 ethers.js 连接 BNB 智能链
以下是一个使用 ethers.js 连接 BNB 智能链并读取最新区块号的简单示例:
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://bnb.api.onfinality.io/public");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("Latest block:", blockNumber);
}
getBlockNumber();
如需 WebSocket 支持,如果您的提供商提供 WebSocket URL,您可以使用它。OnFinality 支持 BNB 智能链上的 WebSocket;有关详细信息,请查看网络页面。
公共、托管与专用:开发人员应比较什么
当您搜索 Binance Chain API 时,您会找到公共端点、托管服务和专用节点产品。以下是它们的比较方式:
| 因素 | 公共端点 | 托管 RPC 服务 | 专用节点 |
|---|---|---|---|
| 成本 | 免费 | 按使用量或订阅 | 较高,可预测 |
| 速率限制 | 严格 | 更高,可配置 | 无(在节点容量内) |
| 可靠性 | 尽力而为 | SLA 支持 | 隔离资源 |
| 归档数据 | 通常没有 | 通常可用 | 可选 |
| WebSocket | 很少 | 是 | 是 |
| 最适合 | 开发 | 生产 dApp | 高吞吐量工作负载 |
公共端点很方便,但可能会限制您的请求。像 OnFinality 这样的托管服务在性能和易用性之间取得了平衡。专用节点让您完全控制,非常适合需要一致、高容量访问的应用程序。
使用 BNB Chain API 执行常见任务
以下是您可能使用 BNB Chain API 进行的一些常见 JSON-RPC 调用:
获取 BNB 余额
curl https://bnb.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xYourAddress","latest"],"id":1}'
获取交易收据
curl https://bnb.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xTransactionHash"],"id":1}'
订阅新区块(WebSocket)
如果您有 WebSocket 端点,您可以订阅新的区块头:
const { WebSocket } = require("ws");
const ws = new WebSocket("wss://your-websocket-endpoint");
ws.on("open", () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
method: "eth_subscribe",
params: ["newHeads"],
id: 1
}));
});
ws.on("message", (data) => {
console.log("New block:", JSON.parse(data));
});
常见陷阱及如何避免
- 使用错误的链 ID: 始终仔细检查您使用的是主网的
56还是测试网的97。混淆它们可能导致交易失败或被发送到错误的网络。 - 速率限制: 公共端点通常限制请求。如果您看到
429错误,请考虑升级到托管服务或专用节点。 - 缺少归档数据: 某些方法(如
eth_getLogs)在查询旧区块范围时需要归档节点。如果您需要历史数据,请确保您的提供商提供归档访问。 - 不支持 WebSocket: 并非所有端点都支持 WebSocket。如果您需要实时更新,请验证您的提供商是否支持。
在 BNB Chain 测试网上测试
在部署到主网之前,请在 BNB Chain 测试网上测试您的应用程序。使用测试网 RPC 端点 https://bnb-testnet.api.onfinality.io/public 并从水龙头获取测试 BNB。链 ID 为 97。
以下是如何为测试网配置钱包:
{
"chainId": "97",
"chainName": "BNB Smart Chain Testnet",
"nativeCurrency": {
"name": "BNB Chain Native Token",
"symbol": "tBNB",
"decimals": 18
},
"rpcUrls": ["https://bnb-testnet.api.onfinality.io/public"],
"blockExplorerUrls": ["https://testnet.bscscan.com"]
}
关键要点
- Binance Chain API 是 BNB 智能链的 RPC 接口,BNB 智能链是一个 EVM 兼容网络。
- 主网使用链 ID
56,测试网使用97。 - 公共端点适合开发,但生产应用程序应考虑托管或专用基础设施。
- OnFinality 为 BNB 智能链提供公共、托管和专用选项。有关更多信息,请参阅 RPC 定价 和 支持的网络。
- 在部署到主网之前,务必在测试网上进行测试。
常见问题解答
Binance Chain 和 BNB 智能链有什么区别?
Binance Chain 是用于快速交易的原生链,而 BNB 智能链是支持智能合约的 EVM 兼容链。Binance Chain API 通常指 BNB 智能链的 RPC。
我可以将以太坊工具与 BNB 智能链一起使用吗?
可以,因为 BNB 智能链与 EVM 兼容,您可以使用 ethers.js、viem、web3.js 和其他以太坊库。
如何获取测试网的测试 BNB?
您可以从水龙头获取测试 BNB。搜索“BNB testnet faucet”或查看 BNB Chain 测试网页面 获取资源。
什么是归档节点?
归档节点存储区块链的完整历史状态,允许查询旧区块的 eth_getLogs 等。托管服务通常提供归档端点,但需付费。
OnFinality 是否支持 BNB 智能链上的 WebSocket?
是的,OnFinality 支持 BNB 智能链上的 WebSocket。请查看 网络页面 获取 WebSocket URL。