摘要
BNB Smart Chain 测试网(链 ID 97)是您在接触主网之前验证合约、钱包和索引器的环境。本页面为您提供准确的网络设置、可用的公共端点、水龙头指南以及最浪费开发者时间的故障模式。您还会找到一个简短的检查清单,用于判断何时共享公共端点足够,何时专用节点更合适。
BNB Smart Chain 测试网是您计划在 BNB Chain 上发布的任何内容的演练环境。它运行与主网相同的 EVM 工具,但使用链 ID 97、独立的状态以及 tBNB 而非 BNB。如果您在这里,您可能需要以下三件事之一:一个可用的 RPC URL、准确的钱包网络设置,或者一种调试为什么在主网上有效的请求在测试网上失败的方法。
本页面直接回答这些问题,然后涵盖当您的测试网部署开始看起来像真实工作负载时出现的操作问题。
链设置一览
将这些复制到您的钱包、Hardhat 配置、Foundry 配置或后端环境中。它们与 OnFinality 使用的 BNB Chain 测试网网络定义匹配。
| 设置 | 值 |
|---|---|
| 网络名称 | BNB Smart Chain 测试网 |
| 链 ID | 97 |
| 原生货币 | tBNB(18 位小数) |
| 区块浏览器 | https://testnet.bscscan.com |
| 公共 RPC (HTTP) | https://bnb-testnet.api.onfinality.io/public |
在您连接任何东西之前,快速进行健全性检查:
curl -s https://bnb-testnet.api.onfinality.io/public \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
您应该得到 "0x61",即十六进制的 97。如果您得到不同的链 ID,说明您指向了错误的网络——这是“我的合约部署了但找不到”混淆的常见原因。
公共测试网端点是否足以满足您的工作负载?
大多数开发者可以从共享公共端点开始,并且停留的时间比预期更长。测试网流量通常是突发性的:这里部署一次,那里运行一次脚本,通宵的 CI 作业。决策不在于原始吞吐量,而在于出错时会发生什么。
将此作为快速过滤器:
| 您的情况 | 合理的起点 |
|---|---|
| 手动测试、钱包设置、小型脚本 | 共享公共端点 |
| 每次推送都部署和验证合约的 CI 管道 | 共享端点,并配置备用 URL |
| 索引器、日志密集型工具或长时间运行的机器人 | 专用节点或付费 RPC 计划 |
| 您需要在并行请求下可预测的行为 | 专用节点 |
| 您正在调试特定于提供商的问题 | 尝试第二个端点以隔离原因 |
如果您不确定,从公共端点开始并测量。当您发现自己重试失败的请求或想知道超时是您的代码还是端点时,这就是查看 RPC 定价 并比较共享与专用选项的信号。
将 BNB Smart Chain 测试网添加到钱包
在 MetaMask 中,打开网络选择器,选择 添加网络 → 手动添加网络,然后输入上表中的值。人们容易弄错的两个字段是链 ID(必须是 97,而不是 56)和货币符号(tBNB)。
如果您更喜欢以编程方式添加,这是标准的 wallet_addEthereumChain 调用:
await window.ethereum.request({
method: 'wallet_addEthereumChain',
params: [{
chainId: '0x61', // 97
chainName: 'BNB Smart Chain Testnet',
nativeCurrency: { name: 'tBNB', symbol: 'tBNB', decimals: 18 },
rpcUrls: ['https://bnb-testnet.api.onfinality.io/public'],
blockExplorerUrls: ['https://testnet.bscscan.com'],
}],
});
请注意,这里的 chainId 是十六进制,而大多数配置文件使用十进制。混合两者是静默错误配置的常见来源。
从水龙头获取 tBNB
水龙头是大多数人遇到的第一个真正障碍。测试网 BNB 是免费的,但水龙头通常通过验证码、最低主网余额或每个地址的每日上限来限制。
一些实用说明:
- 水龙头的可用性会随时间变化。如果一个水龙头干涸或限速,请尝试另一个,而不是假设测试网已关闭。
- 为您实际部署的地址提供资金。之后在账户之间转移 tBNB 会消耗您可能还没有的 gas。
- 保留少量缓冲。合约部署加上一些验证和交互交易比单次转账消耗得更快。
- 如果水龙头要求主网余额,那是反滥用措施,不是错误。
一旦您有了 tBNB,在开始调试其他任何东西之前,用 eth_getBalance 确认余额。这消除了一整类误报。
将端点接入您的工具
Hardhat 和 Foundry 都读取纯 RPC URL,因此同一个端点可以在您的整个技术栈中工作。
// hardhat.config.js
module.exports = {
networks: {
bscTestnet: {
url: 'https://bnb-testnet.api.onfinality.io/public',
chainId: 97,
accounts: [process.env.DEPLOYER_KEY],
},
},
};
对于 viem 或 ethers,定义一次链并重复使用:
import { createPublicClient, http } from 'viem';
const bscTestnet = {
id: 97,
name: 'BNB Smart Chain Testnet',
nativeCurrency: { name: 'tBNB', symbol: 'tBNB', decimals: 18 },
rpcUrls: {
default: { http: ['https://bnb-testnet.api.onfinality.io/public'] },
},
};
const client = createPublicClient({
chain: bscTestnet,
transport: http(),
});
将 URL 保存在环境变量中,而不是硬编码。当您以后迁移到专用端点或添加备用端点时,您只需更改一个值,而不必在代码库中搜索。
调试您实际会遇到的故障
测试网问题很少是奇异的。它们集中在少数几个原因上,而且大多数是配置问题而非基础设施问题。
| 症状 | 可能原因 | 首先检查 |
|---|---|---|
eth_chainId 返回 0x38 | 指向主网 | 将 RPC URL 替换为测试网端点 |
| 交易卡在待处理状态 | Gas 价格对于当前测试网条件太低 | 重新估算 gas;测试网基础费用会变动 |
insufficient funds for gas | 没有 tBNB,或账户错误 | 检查部署者地址的 eth_getBalance |
| 部署后找不到合约 | 部署到主网,或浏览器中链错误 | 确认链 ID 并搜索 testnet.bscscan.com |
| 负载下间歇性超时 | 共享端点在突发流量下 | 添加备用 URL,或迁移到专用节点 |
eth_getLogs 返回空 | 区块范围太宽,或地址/主题过滤器错误 | 缩小范围并重新检查过滤器 |
| 交易失败后出现 Nonce 错误 | 本地 nonce 缓存不同步 | 在钱包中重置账户,或使用 pending 查询 eth_getTransactionCount |
两个习惯可以防止大多数这些问题。首先,在启动时记录您的客户端实际连接的链 ID——它能立即捕获错误配置。其次,当请求失败时,在更改代码之前,先针对不同的端点重试一次。这一步就能告诉您问题是出在您的应用程序还是连接上。
测试网与主网:哪些会延续
测试网接近主网,但不完全相同,差异对规划很重要。
- 状态是可丢弃的。 测试网可以以主网无法做到的方式重置或重组。不要将测试网数据视为持久数据。
- Gas 行为不同。 费用通常更低且更不稳定。在测试网上调整的 gas 策略需要在主网之前重新审查。
- 归档和 trace 可用性不同。 如果您的工具依赖于历史状态或 trace 方法,请确认您计划使用的端点上的支持,而不是假设与主网对等。
- 拥塞模式不同。 测试网更安静,因此共享端点在那里可能感觉良好,但在真实主网负载下会挣扎。
最后一点是让团队措手不及的一点。一个完美运行的测试网设置在主网流量到来时可能仍需要重做。如果您正在为这种过渡做规划,BNB Chain 主网 RPC 页面涵盖了生产端设置,而 如何选择 RPC 提供商 则介绍了评估标准。
何时离开共享端点
共享公共端点确实有用,OnFinality 为 BNB Chain 测试网运行了一个,因此您无需账户即可开始。然而,它们并不是每个工作负载的长期归宿。
在以下情况下考虑专用节点:
- 您的 CI 或暂存环境产生稳定的并行流量。
- 您依赖日志查询、trace 方法或共享端点可能限制的归档数据。
- 您需要为演示、审计或合作伙伴集成提供一致的行为。
- 您希望与其他用户的流量模式隔离。
OnFinality 同时提供 RPC API 访问和专用节点基础设施,因此您可以从共享端点开始,然后迁移到专用节点,而无需更改应用程序代码——只需更改 URL。您可以查看完整的 支持的 RPC 网络 列表,了解 BNB Chain 测试网与您运行的其他链的对比。
关键要点
- BNB Smart Chain 测试网使用链 ID 97 和原生代币 tBNB。
- 一个可用的公共端点是
https://bnb-testnet.api.onfinality.io/public;通过eth_chainId返回0x61来验证它。 - 大多数测试网故障是配置问题——错误的链 ID、没有水龙头资金或过时的 nonce——而不是基础设施中断。
- 将您的 RPC URL 保存在环境变量中,并在需要之前配置备用端点。
- 共享端点适合手动测试和轻量 CI;专用节点适合持续、并行或日志密集型工作负载。
- 测试网行为不能完全预测主网行为,尤其是在 gas 和拥塞方面。
常见问题解答
BNB Smart Chain 测试网的链 ID 是什么?
97,十六进制为 0x61。如果您的客户端报告 56,则您连接到了 BNB Chain 主网。
BNB Smart Chain 测试网 RPC URL 是什么?
OnFinality 的公共端点是 https://bnb-testnet.api.onfinality.io/public。如果您需要隔离或更高的持续吞吐量,也可以使用专用端点。
如何获取测试网 BNB?
使用 BNB Chain 测试网水龙头。可用性和速率限制会变化,因此如果一个水龙头不可用,请尝试另一个。为您将部署的地址提供资金,并保留少量 gas 缓冲。
为什么我的交易在测试网上一直失败?
按顺序检查三件事:您的客户端连接的链 ID、您的 tBNB 余额和您的 nonce。这些占测试网交易失败的绝大多数。
我可以在主网和测试网上使用相同的代码吗?
可以,如果您将 RPC URL 和链 ID 放在配置中而不是硬编码。在切换到主网之前,请审查 gas 假设以及任何归档或 trace 依赖项。
OnFinality 支持 BNB Chain 测试网吗?
是的。有关端点详细信息,请参阅 BNB Chain 测试网网络页面,有关计划选项,请参阅 RPC 定价。