[英]How do I get a specific token balance from a user's wallet? Then set state based on that balance to create conditional renders?
[英]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.