繁体   English   中英

window.ethereum.request get_balance 方法,如何获取特定代币的代币数量?

[英]window.ethereum.request get_balance method, how do I get the tokens amount of specific token?

我想知道,如何才能获得我想要的特定代币而不是以太坊的余额?

const getAccountBalance = (account) => {
        window.ethereum.request({method: 'eth_getBalance', params: [account, 'latest']})
        .then(balance => {
            setUserBalance(ethers.utils.formatEther(balance));
        })
        .catch(error => {
            setErrorMessage(error.message);
        });
    };

我使用 ethers.js 库。

当钱包连接到您的网站时,您也会连接到代币合约。

let provider;
let signer;
let signerAddress;

const tokenContractAddress = TOKEN_CONTRACT_ADDRESS;
const tokenABI = TOKEN_ABI;
let tokenContract;
let userTokenBalance;

const startFunction = async () => {
    //Connect to MetaMask
    await ethereum.request({ method: 'eth_requestAccounts'});
    //get provider
    provider = new ethers.providers.Web3Provider(window.ethereum);
    //get signer (I usually use signer because when you connect to contract via signer,
    //you can write to it too, but via provider, you can only read data from contract)
    signer = provider.getSigner();
    //Get connected wallet address
    signerAddress = await signer.getAddress();
    //Connect to contract
    tokenContract = await new ethers.Contract(tokenContractAddress , tokenABI , signer);
}
startFunction();

const getAccountBalance = async () => {
    userTokenBalance = await tokenContract.balanceOf(signerAddress);
    //Note that userTokenBalance is not a number and it is bigNumber
    console.log(userTokenBalance);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM