Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Check the token balances of a wallet for multiple tokens.
- Pass 0x0 as a "token" address to get ETH balance.
- Possible error throws:
- - extremely large arrays for user and or tokens (gas cost too high)
- Returns a one-dimensional that's user.length * tokens.length long. The
- array is ordered by all of the 0th users token balances, then the 1th
- user, and so on.
- */
- function balances(address[] users, address[] tokens) external view returns (uint[]) {
- uint[] memory addrBalances = new uint[](tokens.length * users.length);
- for(uint i = 0; i < users.length; i++) {
- for (uint j = 0; j < tokens.length; j++) {
- uint addrIdx = j + tokens.length * i;
- if (tokens[j] != address(0x0)) {
- addrBalances[addrIdx] = tokenBalance(users[i], tokens[j]);
- } else {
- addrBalances[addrIdx] = users[i].balance; // ETH balance
- }
- }
- }
- return addrBalances;
- }
Add Comment
Please, Sign In to add comment