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

调用ERC20合约查询地址余额返回无效值报错的排查咨询

ERC20余额查询报错排查与修复方案

问题原因定位

你遇到的报错不是仅由ABI错误导致,核心触发点包括:

  • 代码逻辑错误:你通过new web3.eth.Contract(abi, tokenAddress)实例化的合约对象名称是weenusContract,但调用balanceOf方法时用的是未定义的contract对象,这是最直接的报错原因。
  • ABI匹配问题:如果使用的ABI存在函数签名不匹配、字段缺失的情况,也会触发该类返回值校验错误。
  • 节点与链参数错误:需确认Infura节点为以太坊主网节点、目标合约地址0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA确实部署在以太坊主网,且节点同步状态正常。

ABI替换优化方案

不需要使用完整的合约ABI,仅用标准ERC20最小ABI即可完成余额查询,可完全避免自定义ABI的适配问题,标准balanceOf方法ABI如下:

[
  {
    "constant": true,
    "inputs": [{"name": "_owner", "type": "address"}],
    "name": "balanceOf",
    "outputs": [{"name": "balance", "type": "uint256"}],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  }
]

如果需要调用更多ERC20标准方法,可直接使用通用ERC20 ABI,无需依赖第三方提供的自定义ABI。

修正后代码示例

const tokenAddress = "0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA";
// 标准ERC20 balanceOf ABI
const erc20Abi = [
  {
    "constant": true,
    "inputs": [{"name": "_owner", "type": "address"}],
    "name": "balanceOf",
    "outputs": [{"name": "balance", "type": "uint256"}],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  }
];

const web3Context = useWeb3(`wss://mainnet.infura.io/ws/v3/${infuraProjectId}`);
const { networkId, networkName, accounts, providerName, lib  } = web3Context;
const web3 = new Web3(`wss://mainnet.infura.io/ws/v3/${infuraProjectId}`)
const weenusContract = new web3.eth.Contract(erc20Abi, tokenAddress);

const getTokenBalance = useCallback(async () => {
  let tokenBalance = 'unknown';
  if(accounts && accounts.length > 0) {
    try {
      // 修正合约对象调用名称
      tokenBalance = await weenusContract.methods.balanceOf(accounts[0]).call();
    } catch (e) {
      console.error("余额查询失败:", e);
    }
  }
  setTokenBalance(tokenBalance);
}, [accounts, weenusContract])

useEffect(()=>{
  getTokenBalance();
}, [accounts, getTokenBalance])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 22:24:08