要获取一个以太坊地址持有的所有ERC20代币,有几种方法可以实现: 方法一:使用区块链浏览器
输入地址后,点击"Token"标签页 可以查看该地址持有的所有ERC20代币及其余额
专门用于查看地址的Token持有情况 提供更详细的代币信息
方法二:使用APIEtherscan API javascript
// 获取地址的ERC20代币余额const apiKey = 'YOUR_API_KEY';const address = '0x...';const url = `https://api.etherscan.io/api?mod ... okentx&address=${address}&startblock=0&endblock=99999999&sort=asc&apikey=${apiKey}`;fetch(url) .then(response => response.json()) .then(data => console.log(data.result));
Alchemy/Infura API javascript
const { Alchemy, Network } = require("alchemy-sdk");const config = { apiKey: "YOUR_API_KEY", network: Network.ETH_MAINNET,};const alchemy = new Alchemy(config);async function getTokenBalances(address) { const balances = await alchemy.core.getTokenBalances(address); console.log(balances);}
方法三:使用Web3库查询javascript
const Web3 = require('web3');const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_PROJECT_ID');// ERC20标准ABI(简化版)const erc20Abi = [ { "constant": true, "inputs": [{"name": "_owner", "type": "address"}, "name": "balanceOf", "outputs": [{"name": "balance", "type": "uint256"}, "type": "function" };async function getTokenBalance(tokenContract, userAddress) { const contract = new web3.eth.Contract(erc20Abi, tokenContract); const balance = await contract.methods.balanceOf(userAddress).call(); return balance;}// 示例:查询USDT余额const usdtAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7';const userAddress = '0x...';getTokenBalance(usdtAddress, userAddress).then(console.log);
|