Understanding token balances across blockchain networks is essential for analysts, developers, and researchers diving into decentralized ecosystems. The tokens_.balances_daily table serves as a foundational dataset, capturing daily token holdings across all addresses on EVM-compatible blockchains. This resource enables deep insights into asset distribution, wallet activity, and economic behavior within Web3.
Whether you're evaluating token concentration, tracking portfolio shifts, or analyzing multi-signature treasury holdings, this guide breaks down everything you need to know about balance data structure, coverage, calculation logic, and practical querying techniques.
👉 Discover real-time blockchain analytics tools to enhance your research
What Data Does the tokens_.balances_daily Table Include?
The tokens_.balances_daily table aggregates daily snapshots of token balances for every address on supported networks. It covers four primary asset types:
- Native currencies (e.g., ETH, MATIC)
- ERC-20 tokens (fungible tokens like DAI, USDC)
- ERC-721 tokens (non-fungible tokens/NFTs)
- ERC-1155 tokens (semi-fungible or multi-token standards)
Each record reflects the end-of-day balance for a specific address-token pair, making it ideal for longitudinal studies and macro-level trend analysis.
This dataset is particularly valuable for:
- Assessing token holder distribution
- Identifying whale wallets and major stakeholders
- Monitoring treasury movements in DAOs or protocols
- Auditing smart contract balances over time
Supported Blockchain Networks
Balance data is available across a growing list of EVM-compatible chains, ensuring broad cross-chain analytical capability. Currently supported networks include:
- Arbitrum
- Avalanche C-Chain
- Base
- Ethereum Mainnet
- Gnosis Chain
- Optimism
- Scroll
- ZkSync
As layer-2 adoption accelerates and new rollups gain traction, this list continues to expand—providing consistent data structures across chains for seamless comparative analysis.
How Are Token Balances Calculated?
Accurate balance tracking relies on robust on-chain event parsing. The methodology varies slightly depending on the token standard:
Native Currency Balances
For native assets like ETH or MATIC, balances are derived from:
- Transaction logs (
from/tofields) - Trace data (internal transfers)
- Block rewards and validator payouts
- Withdrawal events (post-Merge Ethereum)
An address must appear in at least one of these sources to have its balance updated.
ERC-20 Token Balances
ERC-20 balances are calculated by analyzing transfer events from the tokens_ethereum_base_transfers model. Each Transfer event adjusts the sender and receiver balances accordingly.
⚠️ Known Limitations:
- Non-standard ERC-20 implementations that don’t emit
Transferevents may not be tracked. - Rebase tokens (e.g., stETH, AMPL) and ERC-4626 vaults can cause discrepancies due to dynamic supply changes.
We are actively improving detection mechanisms for these edge cases. If you encounter a token with custom event logic, please report it for potential integration.
ERC-721 & ERC-1155 (NFT) Balances
NFT holdings are tracked using the nft_ethereum_transfers model. Ownership changes are detected via Transfer, TransferSingle, and TransferBatch events.
Because NFTs are unique or semi-fungible, balances are typically counted per token ID rather than aggregate value—though floor price estimations may be used for USD valuation.
Note: Balance updates depend on upstream event processing latency in Dune’s Spellbook pipeline. There is typically a short delay (up to 2 hours) between real-time blockchain state and final data availability.
Granular Balance Tracking with tokens_.balances
For high-resolution analysis, the tokens_.balances table provides block-level balance changes. Unlike the daily-aggregated version, this table captures every balance update per block, enabling:
- Real-time tracking of wallet inflows/outflows
- Precision timing of large transactions
- Forensic analysis of exploit or hack scenarios
However, due to its size and complexity, it's not recommended for:
- Large time-range queries
- Multi-address balance lookups
- Lightweight dashboards or visualizations
Instead, use tokens_.balances_daily for scalable, efficient reporting.
👉 Access advanced blockchain data dashboards with powerful filtering options
Practical Query Examples
Below are reusable SQL templates to extract meaningful insights from the balance tables.
Retrieve Latest Fungible Token Balances for an Address
Use this query to get up-to-date ERC-20 and native token holdings for any wallet.
select
address,
token_symbol as symbol,
balance,
balance_usd,
token_address
from tokens_{{blockchain}}.balances_daily
where address = {{wallet_address}}
and day = date_trunc('day', now())
and (token_standard = 'erc20' or token_standard = 'native')
and balance_usd > 1
order by balance_usd desc💡 Tip: Filter by balance_usd > 1 to exclude negligible dust balances.
Track Daily Fungible Balances Over Time
Analyze how a user’s portfolio evolves across weeks or months.
select
b.day,
b.token_symbol,
b.token_address,
b.balance,
b.balance_usd
from tokens_{{blockchain}}.balances_daily b
where address = {{wallet_address}}
and (token_standard = 'erc20' or token_standard = 'native')
and b.day > date_trunc('day', now()) - interval '{{months}}' month
and balance_usd > 1
order by day desc, balance_usd descReplace {{months}} with your desired timeframe (e.g., '6' for six months).
Identify Top 50 Holders of an ERC-20 Token
Evaluate token distribution concentration on Ethereum Mainnet.
WITH RankedBalances AS (
SELECT
b.address,
b.balance,
ROW_NUMBER() OVER(PARTITION BY b.day ORDER BY b.balance DESC) AS rank
FROM tokens_ethereum.balances_daily b
WHERE token_address = 0xbaac2b4491727d78d2b78815144570b9f2fe8899
AND b.day = date_trunc('day', current_date)
)
SELECT
address,
balance
FROM RankedBalances
WHERE rank <= 50;This helps assess decentralization and detect potential centralization risks.
Frequently Asked Questions (FAQ)
Q: Why doesn't my address appear in the balance table?
A: Addresses only appear if they’ve participated in transactions, transfers, or mining activities. Inactive wallets or those interacting with non-standard contracts may not be indexed.
Q: Are rebasing tokens like stETH accurately reflected?
A: Not always. Due to supply adjustments not emitting standard transfer events, balances may lag. We’re enhancing support for such tokens.
Q: How often is the tokens_.balances_daily table updated?
A: Daily, based on end-of-day blockchain state. There’s typically a 1–2 hour processing delay.
Q: Can I track NFT collections with this table?
A: Yes—use token_standard = 'erc721' or 'erc1155' filters and group by token_address to analyze ownership distribution.
Q: Is cross-chain balance comparison possible?
A: Absolutely. With standardized schemas across chains, you can write unified queries to compare holdings on Arbitrum vs. Optimism, for example.
Q: What should I do if a token isn’t showing correct balances?
A: Check if it uses non-standard events. If so, submit feedback—custom event parsing may be added in future updates.
Final Thoughts
The tokens_.balances_daily table is a cornerstone of on-chain analytics, offering structured, reliable access to wallet-level token data across major EVM networks. From monitoring whale movements to auditing protocol treasuries, its applications span research, security, and investment strategy.
For deeper exploration and real-time insights:
👉 Explore blockchain analytics with powerful query and visualization tools