You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BSC测试网合约地址缺失,调用balanceOf获取BNB余额返回0或报错

问题排查与解决

核心错误:用ERC20合约方法查询原生BNB余额

BNB是BSC链的原生代币,不属于ERC20标准代币范畴,不需要通过合约的balanceOf方法查询余额。你当前调用的合约地址对应某个ERC20代币,查询的是该代币的余额,而非钱包内的原生BNB,所以返回0是正常结果。

正确查询原生BNB余额的方法

直接使用Web3原生的get_balance方法获取,替换代码中的合约调用部分:

# 获取余额(单位:Wei)
balance_wei = w3.eth.get_balance(account.address)
# 转换为BNB单位(1 BNB = 10^18 Wei)
balance_bnb = w3.from_wei(balance_wei, 'ether')
print(f"BNB余额: {balance_bnb}")

如果确实要查询ERC20代币余额(非BNB),请检查以下几点

  • 合约地址正确性:确认0xfd5af95C12446b60d23e16A4EA95690cE942e5dC是BSC测试网目标代币的官方合约地址,不要混淆主网与测试网地址。
  • ABI匹配性:确保abi_testnet.json中的ABI与目标合约完全对应,ABI不匹配会导致调用错误或返回异常值。
  • 代币持有情况:你的钱包有0.1 BNB,但不一定持有该合约对应的ERC20代币,此时返回0是合理结果。

额外排查项

  • 确认RPC节点连接正常:检查代码输出是否为Disconnected,若连接失败可更换测试网RPC节点(比如https://bsc-testnet.publicnode.com)。
  • 助记词准确性:确保seed变量填入的是你持有BNB的钱包助记词,否则生成的账户地址错误,查询对象不对。
  • 钱包网络一致性:确认你的钱包确实连接的是BSC测试网,而非主网,避免地址或余额混淆。

内容的提问来源于stack exchange,提问作者san1rope

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 09:01:06