stablecoins_evm_activity_enriched table classifies each stablecoin transfer into an activity category (for example DEX, CEX, bridge, lending, issuer).
Premium dataset access
This dataset is part of a premium offering and requires additional access. Contact the Dune enterprise team to request access.
Why these enriched tables matter
Stablecoin analysis comes down to two fundamental questions:- Where are stablecoins right now? (balances)
- How did they get there? (activity)
What this dataset is designed to do
- Explain how stablecoin balances move through the ecosystem.
- Attribute transfer activity with transparent, reproducible logic.
- Provide a defensible foundation for flow analysis.
Table schema
| Column | Type | Description |
|---|---|---|
blockchain | VARCHAR | Chain name |
block_month | DATE | First day of month (partition column) |
block_date | DATE | Transaction date |
block_time | TIMESTAMP | Transaction timestamp |
block_number | BIGINT | Block number |
tx_hash | VARBINARY | Transaction hash |
evt_index | BIGINT | Transfer event index |
activity_evt_index | BIGINT | Matched activity event index (nullable) |
trace_address | VARCHAR | Trace address (nullable) |
token_standard | VARCHAR | Token standard (erc20) |
token_address | VARBINARY | Token contract address |
token_symbol | VARCHAR | Token symbol |
currency | VARCHAR | ISO 4217 code |
amount_raw | UINT256 | Raw transfer amount |
amount | DOUBLE | Decimals-adjusted amount |
price_usd | DOUBLE | USD price used for valuation |
amount_usd | DOUBLE | USD amount |
from_address | VARBINARY | Sender |
to_address | VARBINARY | Recipient |
category | VARCHAR | Activity category |
activity | VARCHAR | Activity label |
project_address | VARBINARY | Matched project address (nullable) |
project_name | VARCHAR | Matched project name (nullable) |
project_version | VARCHAR | Matched project version (nullable) |
unique_key | VARCHAR | Unique transfer identifier |
Value possibilities
Thecategory and activity columns are intentionally standardized so downstream models, dashboards, and monitoring can rely on deterministic value vocabularies.
category | Allowed activity values |
|---|---|
dex | dex_swap |
flashloan | flashloan_borrow, flashloan_repay, flashloan_unidentified |
issuer | issuer_mint, issuer_burn, issuer_peg_rebalance, issuer_unidentified |
cex | cex_deposit, cex_withdraw, cex_internal_transfer |
lending | lending_supply, lending_borrow, lending_repay, lending_withdraw, lending_unidentified |
bridge | bridge_deposit, bridge_withdraw, bridge_unidentified |
dex_liquidity | dex_liquidity_supply, dex_liquidity_withdraw, dex_liquidity_unidentified |
unidentified | unidentified_activity |
Methodology
Classification is done at the transfer level, not the transaction level.- Start from curated stablecoin transfer rows in
stablecoins_evm.transfers. - Build candidate matches for each transfer against activity-specific datasets (for example DEX, bridge, CEX, flashloan, lending, and issuer signals) using transfer-level keys such as
tx_hash, token identity, and amount context. - Resolve conflicts with a deterministic precedence order, so each transfer gets exactly one winning category.
- Write unmatched transfers as
unidentifiedto preserve full coverage instead of dropping rows.
Important interpretation details
- One transaction can map to multiple categories if it contains multiple stablecoin transfers.
project_address,project_name, andproject_versionare populated only when a protocol/entity match exists.- Priority rules improve consistency, but edge cases still exist when protocols emit similar transfer patterns in the same transaction.
Sample query
Notes
- One transfer maps to one output row (highest-priority match wins).
- For performance, filter by
blockchainandblock_month.