Skip to main content
Balances are not stored anywhere. Two functions in the functions dataset compute them at query time from Balance changes, adding up every change recorded for one token. Each takes a chain, a token address and a token standard.

Functions

functions.calculate_latest_token_balances returns everyone holding the token right now: the last end-of-day balance per account, positive balances only. An account that sent everything away falls out rather than appearing at zero.
ParameterTypeDescription
p_chain_idSTRINGChain the token is deployed on, for example ethereum.
p_token_addressSTRINGContract address of the token.
p_token_typeSTRINGToken standard, such as erc20.
Return columnTypeDescription
account_addressSTRINGAccount holding a positive balance.
balanceBIGNUMERICLatest end-of-day balance in token units.
The order of the two steps matters. The function takes each account’s most recent row first, then drops the accounts sitting at zero. In the other order, an account that has since sent everything away comes back showing its last positive balance.

Sample queries

Each call adds up the entire balance-change history of one token. For a daily supply or holder-count series, the daily asset tables carry both for curated assets.
List the current holders of one token.

Notes

Address matching follows the chain’s own rules. EVM addresses are case-insensitive: they are stored lowercase and both functions lowercase their inputs, so a checksummed address copied from an explorer resolves. Solana addresses are base58 and case-sensitive: they are stored and matched verbatim. Balances are added up in exact whole-number arithmetic and scaled by the token’s decimals, so a drained account reads exactly zero and is not counted as a holder.