Go-Ethereum

通過 web3 從錢包地址獲取代幣餘額列表?

  • May 17, 2021

我正在使用web3在我的錢包地址中獲取單個令牌/合約地址的餘額。

如果我有一個令牌數組,例如

[
   "0x2a9718deff471f3bb91fa0eceab14154f150a385",
   "0xad90c05bc51672eedfee36e58b3ff1a78bbc146d",
   "0x33a3d962955a3862c8093d1273344719f03ca17c",
   "0x85102c0062aa918cb9e26d94a284aafca602df13"
]

是否有可能將該數組傳遞給一個呼叫來檢索每個呼叫的餘額?還是我們需要一個一個地遍歷列表?

您無法通過正常 JSONRPC 呼叫來做到這一點,但可以通過使用智能合約來限制所需的呼叫次數。您可以使用該庫eth-scan為您執行此操作。只需傳入地址數組,它就會通過智能合約獲取每個代幣的餘額eth-scan

預設情況下,庫將為每 1,000 個令牌執行一次呼叫,但這是可配置的。

例如:

import { getTokensBalance } from '@mycrypto/eth-scan';
import Web3 from 'web3';

// Get a Web3 provider from somewhere
const web3 = new Web3;

const address = "0x....";
const tokens = [
 // ...
];

// `eth-scan` can use a Web3 provider, but Ethers.js, HTTP URLs and EIP-1193 providers
// (e.g., `window.ethereum`) are also supported
getTokensBalance(web3, address, tokens)
 .then(console.log)
 .catch(console.error);

免責聲明:我是eth-scan.

您可以使用multicall將多個呼叫結果批處理到單個 RPC 呼叫。

引用自:https://ethereum.stackexchange.com/questions/98105