首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用onboard.js查询钱包数据返回异常错误

使用onboard.js查询钱包数据返回异常错误
EN

Stack Overflow用户
提问于 2021-05-16 13:40:09
回答 1查看 512关注 0票数 0

我使用的是来自Onboard.js的代码:

代码语言:javascript
复制
import ethers from 'ethers'
import erc20 from './erc20'

function tokenBalance({ tokenAddress, minimumBalance, tokenName }) {
  let ethersProvider;
  let tokenContract;

  return async stateAndHelpers => {
    const {
      wallet: { provider },
      address,
      BigNumber
    } = stateAndHelpers;

    if (!tokenContract) {
      ethersProvider = new ethers.providers.Web3Provider(provider);
      tokenContract = new ethers.Contract(tokenAddress, erc20, ethersProvider);
    }

    const tokenDecimals = await tokenContract.decimals();
    const divideBy = new BigNumber(10).pow(tokenDecimals);
    const tokenBalanceResult = await tokenContract
      .balanceOf(address)
      .then(res => res.toString());
    const tokenBalance = new BigNumber(tokenBalanceResult).div(divideBy);

    if (tokenBalance.lt(minimumBalance)) {
      return {
        heading: `Get Some ${tokenName}`,
        description: `You need to have at least ${minimumBalance} ${tokenName} to interact with this Dapp. Send some more ${tokenName} to this address or switch to another address that has a higher ${tokenName} balance.`,
        eventCode: "tokenBalance",
        icon: `
            <svg 
                height="18" 
                viewBox="0 0 429 695" 
                width="18" xmlns="http://www.w3.org/2000/svg"
            >
                <g 
                    fill="currentColor" 
                    fill-rule="evenodd"
            >
                 <path d="m0 394 213 126.228516 214-126.228516-214 301z"/>
             <path d="m0 353.962264 213.5-353.962264 213.5 353.962264-213.5 126.037736z"/>
            </g>
           </svg>
        `
      };
    }
  };
}

const defaultWalletChecks = [
    { checkName: 'connect' },
    { checkName: 'network' },
    { checkName: 'balance', minimumBalance: '100000' }
]

const tokenBalanceCheck = tokenBalance({tokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f', tokenName: 'Dai', minimumBalance: 5})

const onboard = Onboard({
    //... other options
    walletCheck: [...defaultWalletChecks, tokenBalanceCheck]
})

我得到了这个错误:Error: call revert exception (method="balanceOf(address)", errorSignature=null, errorArgs=[null], reason=null, code=CALL_EXCEPTION, version=abi/5.1.0)

唯一的区别是,我使用的是从外部获得的erc20 abi格式。我还检查了我的网络和地址是否正确。不知道为什么我会得到这个错误,所以任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2021-05-19 10:57:34

当您的智能合约尚未部署时,会发生此错误(CALL_EXCEPTION)。

等待事务结束:

代码语言:javascript
复制
await contract.deployTransaction.wait()

只有在这之后,你才能用契约来做一些事情,因为你得到了它的平衡。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67553494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档