Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

如何查找和配置 BNB Smart Chain 端点?

摘要

BNB Smart Chain(BSC)公开了 JSON-RPC 端点,用于读取区块链数据和发送交易。mainnet 端点是 https://bsc-dataseed.bnbchain.org,chain ID 为 56;testnet 端点使用 chain ID 97。公共端点适合原型开发,但存在速率限制和功能限制。

本指南涵盖链设置、如何使用 eth_chainId 验证端点,以及在生产环境选择公共或托管端点时需要注意的事项。它还解释了何时值得投资专用 BNB Smart Chain 节点。

BNB Smart Chain 端点决策清单

A BNB Smart Chain 端点是你的应用用来向 BSC 节点发送 JSON-RPC 请求的 HTTP 或 WebSocket URL。在做出选择之前,请先过一遍这份清单:

  • Mainnet 还是 testnet? Mainnet 使用 chain ID 56;testnet(Chapel)使用 97。只切换端点而不切换 chain ID 是交易失败的常见原因。
  • 公共端点还是托管端点? 像 https://bsc-dataseed.bnbchain.org 这样的公共端点适合快速测试和本地原型开发。生产环境应用通常需要 托管 RPC,以获得更高的速率限制和更好的诊断能力。
  • 你的工作负载需要日志或归档数据吗? 公共端点通常会禁用或限制 eth_getLogs,并且可能不提供归档数据。如果你构建分析、索引器或区块浏览器,你需要一个支持这些方法和历史数据的端点。
  • 你需要实时更新吗? 使用 WebSocket 端点进行 eth_subscribe,这样你就可以流式接收新区块和待处理交易,而不是轮询。
  • 在确定之前先测试。 对任何计划使用的端点运行 eth_chainId 和 eth_blockNumber。确认响应与你预期的网络一致。
  • 检查速率限制。 官方公共端点有公开的合理使用限制。对于流量峰值,专用节点 或付费 RPC 计划会更具可预测性。
  • 做好故障规划。 如果某个端点停止响应,你有备选方案吗?考虑使用多个提供商或故障转移设置。
  • 评估成本和支持。 在扩展之前,比较 RPC 定价 的付费层级、归档访问和 WebSocket 支持。

BNB Smart Chain 的链设置

如果你正在配置钱包、SDK 或中间件,请使用以下值:

网络Chain ID货币RPC URL
BNB Smart Chain Mainnet56 (0x38)BNBhttps://bsc-dataseed.bnbchain.org
BNB Smart Chain Testnet (Chapel)97 (0x61)tBNBhttps://data-seed-prebsc-1-s1.bnbchain.org:8545

其他公共端点列在 BNB Chain 官方文档中。端点列表会随着节点的加入或退役而变化,因此在生产环境中依赖它们之前,请先验证这些 URL。

区块浏览器:https://bscscan.com

一些提供商也提供 WebSocket 端点。例如,wss://bsc-rpc.publicnode.com 是一个社区维护的网关。在本文后面,我们将讨论这些选项与 OnFinality 和其他提供商的托管服务之间的取舍。

如何将 BNB Smart Chain 端点添加到钱包

大多数 EVM 钱包允许你添加自定义网络。MetaMask、Rabby 等钱包的操作过程类似:

  1. 打开钱包的 设置 或 网络 菜单。
  2. 选择 添加网络 或 添加自定义网络。
  3. 输入以下值:
    • 网络名称:BNB Smart Chain
    • RPC URL:https://bsc-dataseed.bnbchain.org
    • Chain ID:56
    • 货币符号:BNB
    • 区块浏览器 URL:https://bscscan.com
  4. 保存并切换到该网络。

手动添加端点时,请仔细检查 chain ID。许多 BSC 交易失败是因为将 chain ID 设置为 1(Ethereum mainnet)或 5(Goerli)而不是 56。如果你使用提供商的自定义 RPC URL,即使该 URL 属于第三方,chain ID 也必须保持为 56。

对于 testnet,请使用 chain ID 97、符号 tBNB 以及位于 https://testnet.bscscan.com 的 testnet 浏览器。如果你需要开发资金,可以从官方水龙头请求测试 BNB。

使用 JSON-RPC 验证端点

获得 URL 后,通过一个简单的 curl 调用来验证它是否可用:

curl -X POST https://bsc-dataseed.bnbchain.org \
  -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'

成功的响应会返回 0x38,这是十进制 chain ID 56 的十六进制表示:

{"jsonrpc":"2.0","id":1,"result":"0x38"}

你还可以确认最新区块:

curl -X POST https://bsc-dataseed.bnbchain.org \
  -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

在 JavaScript 应用中,使用 ethers.js 或 viem 进行连接:

const { ethers } = require("ethers");

const provider = new ethers.JsonRpcProvider("https://bsc-dataseed.bnbchain.org");

provider.getNetwork().then((network) => {
  console.log("Chain ID:", Number(network.chainId)); // 56
});

如果 chain ID 不是 56,你很可能指向了错误的端点。如果请求超时,请检查你的网络连接、防火墙规则以及端点的可用性。

公共端点与托管 RPC 服务

BNB Smart Chain 官方端点是 BNB Chain 团队和社区参与者运营的共享基础设施。它们免费且易用,但也存在一些限制:

  • 速率限制: 公共端点由所有开发者和 dApp 共享。官方文档指出,每个端点每 5 分钟的速率限制为 10,000 次请求,大约相当于每秒 33 次请求。这听起来可能很多,直到你的 dApp 开始广播交易和同步历史数据。
  • 功能限制: 一些公共 mainnet 端点为了保护节点性能会禁用 eth_getLogs。如果你依赖日志查询,则需要一个支持这些查询的端点。
  • 可用性: 公共端点可能在拥堵时期或网络升级更改服务器列表时变得不可用。没有你可以依赖的服务级别保证。

托管 RPC 服务运行自己的 BSC 节点集群,并以专用容量提供端点。OnFinality 等提供商同时为 BNB Smart Chain 提供共享的 RPC API 访问和 专用节点。主要优势包括:

  • 更强的 WebSocket 支持,用于实时订阅。
  • 访问归档数据和方法,改善索引和分析工作流。
  • 清晰的 定价 和请求统计,以便你规划增长。
  • 更好的隔离性:你的流量不会与同一公共端点上的其他所有开发者竞争。

对于小型测试脚本,公共端点就可以了。对于生产环境的 dApp,托管端点通常物有所值。

评估生产环境端点:需要检查什么

如果你在公共端点和托管端点之间,或在多个提供商之间做决定,可以使用下表来组织你的评估。

评估标准需要检查什么为什么重要
速率限制每秒钟或每月的文档化请求限制是多少?第一天看起来很大方的限制,可能会在用户激增时限制你的应用。
数据完整性端点是否提供归档状态、eth_getLogs 和 trace 方法?分析、索引器和支持工具依赖这些方法。
WebSocket 支持你能否通过 wss:// 订阅 newHeads 和 logs?实时 dApp 不应轮询;它们需要推送通知。
区域延迟节点托管在哪里?是否跨区域负载均衡?高延迟会使每次读取和交易确认变慢。
故障转移提供商是否提供多个 URL 或自动重试逻辑?单一端点是单点故障。
定价模型请求如何计费?是否有免费层级和超额费用?意外的计费问题可能会破坏应用预算。
支持与运维是否有状态页面、SLA 或直接支持渠道?当端点宕机时,你需要快速响应。

“合适”的端点是符合你工作负载的那个。DeFi 前端、数据索引器和交易机器人对延迟、历史数据和流式传输都有不同的要求。

调试常见的 BNB Smart Chain 端点故障

即使端点正确,开发者也会遇到问题。以下是最常见的问题及其解决方法。

  • 错误的 chain ID。 你的 RPC URL 指向 BSC,但钱包或 SDK 配置的是其他链。请始终在应用代码和钱包配置中将 chainId 设置为 56。对于 testnet,使用 97。
  • eth_chainId 返回 0x1 或其他意外值。 你可能正连接到一个 Ethereum 端点或一个重写请求的代理。切换到已知的 BSC 端点并重新运行检查。
  • 429 或“超出限制”错误。 你已达到公共端点的速率限制。添加退避和缓存,或迁移到限制更高的托管端点。
  • 不支持 eth_getLogs。 使用 WebSocket 连接订阅日志,或选择支持该方法的 托管提供商。
  • 发送交易后找不到区块。 BSC 的区块时间为 3 秒,但你的节点可能需要几秒钟来同步最新区块。再次轮询,并考虑等待几个确认区块后再向用户显示成功。
  • WebSocket 连接断开。 一些社区 WebSocket 端点不如 HTTP 可靠。对于生产环境流式传输,请使用具有专用 WebSocket 基础设施的提供商。

何时使用专用 BNB Smart Chain 节点

专用节点是为你的项目配置的单租户 BNB Smart Chain 节点。它为你提供:

  • 隔离的性能。 你的请求不会与共享流量池竞争。
  • 灵活的 RPC 配置。 你可以启用或禁用特定模块,将区块存储设置为归档模式,并调整同步设置。
  • 更高的请求量。 你可以调整 maxpeers 和其他节点参数以匹配你的工作负载。
  • 隐私。 请求不会被共享公共服务记录。

在以下情况下,专用节点很有用:

  • 你的 dApp 拥有大量用户或高频读写模式。
  • 你运行需要归档数据和重复日志查询的分析管道。
  • 你希望为后端使用私有端点,而不暴露使用模式。

在 OnFinality,你可以在 mainnet 或 testnet 上启动 专用 BNB Smart Chain 节点,如果你更喜欢共享但可扩展的端点,也可以使用 RPC API 服务。有关所有支持网络的概述,请参阅 支持的 RPC 网络。

关键要点

  • BNB Smart Chain 的 mainnet 端点是 https://bsc-dataseed.bnbchain.org,chain ID 为 56。
  • testnet 端点使用 chain ID 97 和 tBNB 代币。
  • 公共端点适合开发,但存在速率限制,并可能禁用 eth_getLogs。
  • 在将端点接入应用之前,始终使用 eth_chainId 进行验证。
  • 生产环境应用应评估速率限制、归档数据、WebSocket 支持、延迟和故障转移。
  • 当你的 dApp 发展到原型阶段之后,托管 RPC API 或专用节点是更具可预测性的选择。

常见问题

官方的 BNB Smart Chain RPC 端点是什么?

官方的 mainnet 端点是 https://bsc-dataseed.bnbchain.org。BNB Chain 团队还运行其他数据种子 URL,例如 bsc-dataseed1.bnbchain.org 和 bsc-dataseed2.bnbchain.org。有关当前官方列表,请查阅 BNB Chain 文档。

BNB Smart Chain testnet 端点是什么?

BNB Smart Chain testnet(Chapel)使用 chain ID 97,可以通过类似 https://data-seed-prebsc-1-s1.bnbchain.org:8545 的 URL 访问。可通过 BNB Chain 的官方开发者工具获取 testnet 水龙头。

为什么一些公共 BSC 端点会禁用 eth_getLogs?

日志查询对节点运营者来说成本很高,因为它们会强制进行大量扫描。公共端点会禁用或严格限制 eth_getLogs,以保持共享基础设施的稳定。托管提供商可以通过适当的索引和缓存来支持该功能。

我应该为 BNB Smart Chain 使用哪个 chain ID?

对于 mainnet 使用 56,对于 testnet 使用 97。在需要十六进制值的代码中,56 是 0x38,97 是 0x61。

我可以将 WebSockets 与 BNB Smart Chain 端点一起使用吗?

可以。多个提供商提供 wss:// 端点用于实时订阅。OnFinality 和其他托管 RPC 服务在其 BNB Smart Chain 端点上支持 WebSocket 连接,这对于流式传输新区块和交易日志非常有用。

常见问题

What is the BNB Smart Chain mainnet RPC URL?

The official public endpoint is https://bsc-dataseed.bnbchain.org. OnFinality also provides a public endpoint at https://bnb.api.onfinality.io/public. For production, use a private endpoint from a managed provider.

What is the chain ID for BNB Smart Chain?

Mainnet chain ID is 56 (hex 0x38). Testnet chain ID is 97 (hex 0x61). Always check eth_chainId to confirm the network.

Are public BNB Smart Chain RPC endpoints rate limited?

Yes, the official public endpoints have a rate limit of 10,000 requests per 5 minutes per IP, and eth_getLogs is disabled on some. OnFinality's public endpoint may have different policies; for high-volume apps, use a managed plan.

Can I use Ethereum tools like ethers.js and viem with BNB Smart Chain?

Yes, BNB Smart Chain is EVM-compatible, so standard Ethereum JSON-RPC methods and libraries work. Just change the RPC URL and chain ID.

How do I get a private BNB Smart Chain endpoint?

Sign up for an RPC provider like OnFinality, create a project, and copy your private endpoint from the dashboard. Replace the public URL in your wallet or app and keep the API key secure.

RPC 知识库

相关 RPC 内容

网络 RPCpeaq

Peaq RPC Endpoint: Chain Settings, Faucet, and Debugging

Find the official Peaq RPC endpoint, chain ID, native currency, and step-by-step setup for EVM-compatible wallets. Learn how to use the Peaq faucet, c...

测试网 RPCSolana

Solana Devnet RPC:端点设置、空投与调试

Solana devnet 是测试集群,您可以在接触主网之前验证程序、交易和客户端代码。本页介绍如何连接 Solana devnet RPC 端点、如何获取测试 SOL,以及如何调试开发过程中最常出现的故障。 它还涵盖了何时公共 devnet 端点就足够,以及何时托管或专用 RPC 服务(如 OnF...

RPC 故障排查Solana

为什么我的 Python Solana JSON-RPC 调用返回 429 Too Many Requests?

来自 Solana JSON-RPC 端点的 429 意味着提供方正在限制你的请求速率,而不是你的 JSON 负载格式错误。Python 客户端最常遇到这种情况是在紧密循环中轮询、批量请求过于激进,或者多个工作进程共享一个公共端点时。解决方法通常是结合客户端退避、请求整形,以及迁移到容量与你的工作负...

测试网 RPCArbitrum

Sepolia Ethereum RPC:端点设置、水龙头和调试

Sepolia 是以太坊主要的应用开发测试网,连接它需要一个与其链 ID(11155111)匹配并支持你的工具调用的方法的 JSON-RPC 端点。本参考涵盖了确切的网络设置、如何获取测试 ETH,以及如何调试最常见的 Sepolia 连接和交易失败。 它还解释了何时公共 Sepolia 端点就足够...

测试网 RPCBitcoin

什么是比特币测试网,如何使用它进行开发?

比特币测试网是一个公开的、并行的区块链,用于在不冒真实资金风险的情况下测试比特币应用。开发者使用它发送测试交易、验证钱包集成,并使用 bitcoind 和 bitcoin-cli 等工具进行练习。本指南解释了测试网与主网和 regtest 的区别,如何获取测试网币,以及如何将您的应用连接到可靠的测试...

网络 RPCPolygon

什么是 Polygon 最终性,它如何影响您的 dApp?

Polygon 最终性是指交易在 Polygon PoS 链上变得不可逆转的时刻。随着 Heimdall v2 升级,最终性现在大约在 5 秒内实现,而之前需要 1-2 分钟,这使得网络更适合支付和实时应用。对于开发者来说,理解最终性对于设计用户体验、处理重组以及选择合适的 RPC 基础设施来监控最...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始