ERC-20 (et les ERC-20-like tels que les TRC-20 , BEP-20 etc.) Le solde de jetons de chaque adresse est stocké dans la base de données du contrat du jeton .
Les explorateurs de la blockchain analysent chaque transaction à la recherche de Transfer()
et si l'émetteur est un contrat de jetons, il met à jour le solde des jetons dans sa propre base de données. Le solde de tous les jetons pour chaque adresse (provenant de cette base de données distincte) est ensuite affiché en tant que solde de jetons sur la page de détail de l'adresse.
Etherscan et BSCScan ne fournissent actuellement pas d'API permettant d'obtenir les soldes de jetons par adresse.
Afin d'obtenir tous les soldes de jetons ERC-20 d'une adresse, la solution la plus simple (à part trouver une API qui renvoie les données) est de parcourir en boucle tous les contrats de jetons (ou seulement les jetons qui vous intéressent), et d'appeler leur balanceOf(address)
fonction.
const tokenAddresses = [
'0x123',
'0x456',
];
const myAddress = '0x789';
for (let tokenAddress of tokenAddresses) {
const contract = new web3.eth.Contract(erc20AbiJson, tokenAddress);
const tokenBalance = await contract.methods.balanceOf(myAddress).call();
}