Web3:从地址中检索 ERC20 代币的余额
Posted
技术标签:
【中文标题】Web3:从地址中检索 ERC20 代币的余额【英文标题】:Web3: retrieving the balance of an ERC20 token from an address 【发布时间】:2021-07-28 09:40:20 【问题描述】:ERR:返回值无效,是否已耗尽 Gas?如果您没有为从中检索数据的合约使用正确的 ABI、从不存在的块号请求数据或查询未完全同步的节点,您也可能会看到此错误。
阿比:https://github.com/creed-victor/frontend-test/blob/main/WeenusTokenABI.json
const tokenAddress = "0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA";
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(abi, tokenAddress);
const getTokenBalance = useCallback(async () =>
let tokenBalance = accounts && accounts.length > 0 ? await contract.methods.balanceOf(accounts[0]).call().then(receipt=> return receipt) : 'unknown';
setTokenBalance(tokenBalance);
, [accounts])
useEffect(()=>
getTokenBalance();
, [accounts, getTokenBalance])
合约没有响应函数调用。是阿比吗?有没有办法可以替代 abi 或改进它?
【问题讨论】:
【参考方案1】:更改const web3 = new Web3(
wss://mainnet.infura.io/ws/v3/$infuraProjectId)
给const web3 = new Web3(window.ethereum)
【讨论】:
以上是关于Web3:从地址中检索 ERC20 代币的余额的主要内容,如果未能解决你的问题,请参考以下文章
使用 web3 将 ERC20 代币从地址 A 转移到地址 B
转账ERC20代币失败:web3.exceptions.ContractLogicError:执行恢复:ERC20:从零地址转账