Go-Ethereum
通過 web3 從錢包地址獲取代幣餘額列表?
我正在使用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 呼叫。