2 votes

Web3 Obtenir tous les tokens par adresse de portefeuille

J'essaie d'obtenir une liste des contrats de jetons détenus par une adresse de portefeuille, comme le fait bscscan, mais de manière programmatique. bscscan.com/apis n'a pas de point de terminaison, et web3 ne semble rapporter que le solde ETH.

C'est possible, puisque bscscan rapporte la liste et que de nombreux traqueurs de jetons (comme farmfol.io) semblent également obtenir cette information. Je n'arrive pas à trouver la bonne méthodologie. Toute aide est la bienvenue !

2voto

PetrHejda Points 1179

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();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X