Transaction-level on-chain analysis across all 20 Grail token pools on Base
● Updated just now · all tabs refresh together · auto-updates every hour
A trader is new in the period of their first-ever trade (of the selected token; for "All Tokens", their first Grail trade), returning if they traded before.
Mean realized + unrealized P&L per trader, all-time, for each token — across all non-bot traders of that token (not just the top wallets). A quick read on which tokens have been profitable for their traders on average.
Classification based on tx.to — the first contract each user's wallet called. Pick a token above to filter.
Count of unique non-bot traders whose primary venue is each platform (full population, not just top wallets).
Primary trading venue of the wallets that currently hold this token (snapshot).
Last ~24 hours (43,200 blocks). Pick a token above to filter.
Count of unique non-bot traders by primary venue in the last 24h.
Primary trading venue of the wallets that currently hold (snapshot — same across windows).
Classification by tx.to — the first contract each wallet called. Pick a token above to filter.
Unique non-bot traders by primary venue (full population).
Primary trading venue of current holders (snapshot — same across windows).
Classification by tx.to — the first contract each wallet called. Pick a token above to filter.
Unique non-bot traders by primary venue (full population).
Primary trading venue of current holders (snapshot — same across windows).
Volume and unique traders by front-end, for the token picked above.
Total Traders = unique real-user wallets. Excludes bots — wallets that call a swap router directly with no frontend (tx.to == sender). Relayed (gasless) and ERC-4337 smart-wallet trades are resolved back to the real user, so each person counts once. The table shows the top wallets by volume; pick a token to filter. Click an address for DeBank.
Last ~24 hours — volume and unique traders by front-end, for the token picked above.
Last ~24 hours (43,200 blocks). Total Traders = unique real-user wallets, excluding bots (direct router callers); relayed & smart-wallet trades resolved to the real user. Pick a token to filter.
Volume and unique traders by front-end, for the token picked above.
Volume and unique traders by front-end, for the token picked above.
Where this token's current holders trade (by primary venue). A snapshot of current balances, so it doesn't change between All Time / 24h.
Current on-chain balances from all ERC-20 Transfer events. Uniswap pools (liquidity) excluded. Balances also include tokens locked inside un-redeemed card NFTs, attributed to the NFT owner (🎴 sub-note) — they sit in the pack vault until redeemed but the owner effectively holds them. "All Tokens" ranks wallets by how many distinct Grail tokens they hold. Trading columns cross-reference each holder's swap activity. Click any address for DeBank.
Pack size varies by series — most are 3 card draws, newer ones may be a single card. "Draws" = individual card NFTs; packs = draws ÷ that series' pack size. Price is per pack (read from each series, not assumed). Revenue is actual on-chain USDC paid (pack contract 0x36b1…d738).
| Series | Packs | Draws (NFTs) | Revenue |
|---|---|---|---|
| 2026 Young Kings | 3,951 | 11,853 | $59,265 |
| 2026 POKEMANIA | 2,250 | 6,750 | $33,750 |
| ELON LAUNCH | 225 | 225 | $15,525 |
| 2026 Pokemania | 250 | 750 | $3,750 |
| TEST | 4 | 8 | $60 |
In NFTs = tokens still locked in un-redeemed/un-drawn NFTs (held by the pack vault 0x36b1…d738) · Treasury = Grail treasury / LP / minter · Pool = Uniswap liquidity · Users = redeemed into wallets (held or sold). Out. NFTs = outstanding (un-redeemed) card NFTs, counted on-chain via totalSupply() across every fractional-card contract.
| Token | Minted | Distribution | In NFTs | Treasury | Pool | Users | Out. NFTs |
|---|---|---|---|---|---|---|---|
| WEMBY | 500,000 | 10% | 62% | 4% | 23% | 155 | |
| YAMAL | 210,000 | 2% | 36% | 9% | 53% | 188 | |
| MBAPPE | 150,000 | 0% | 64% | 12% | 23% | 0 | |
| PIKA | 100,000 | 17% | 28% | 12% | 43% | 834 | |
| CHAR | 100,000 | 29% | 31% | 12% | 28% | 878 | |
| ELON | 100,000 | 11% | 8% | 18% | 63% | 62 | |
| OHTANI | 50,000 | 0% | 0% | 64% | 36% | 0 | |
| MONK | 50,000 | 0% | 43% | 25% | 32% | 0 | |
| BRUNSON | 50,000 | 0% | 20% | 15% | 65% | 0 | |
| KOBE | 40,000 | 0% | 67% | 6% | 26% | 0 | |
| CADE | 40,000 | 0% | 36% | 29% | 36% | 0 | |
| PULISIC | 40,000 | 0% | 58% | 12% | 30% | 0 | |
| RONALDO | 30,000 | 0% | 1% | 27% | 72% | 0 | |
| MJ | 20,000 | 0% | 90% | 6% | 4% | 0 | |
| BRADY | 20,000 | 0% | 50% | 30% | 20% | 0 | |
| BRON | 20,000 | 0% | 73% | 7% | 21% | 0 | |
| SHAI | 20,000 | 0% | 17% | 22% | 61% | 0 | |
| ISHOWSPEED | 20,000 | 0% | 3% | 5% | 91% | 0 | |
| MESSI | 10,000 | 0% | 0% | 9% | 91% | 0 | |
| DOUE | 10,000 | 0% | 23% | 2% | 75% | 0 |
Of the wallets that bought a pack, the front-end they used to sell the token (the tx.to of their sell, router-aware so aggregator-routed sells attribute to the wallet). Pick a pack; export the full address list as CSV.
| Metric | Rule |
|---|---|
| Venue of a trade | The front-end / router the wallet came through — the first contract it called (tx.to) — e.g. Grail, Fomo, GMGN, OKX, the Uniswap app. This is not where the swap executed: every Grail token's only liquidity is its Uniswap V3 pool, so ~100% of volume executes on Uniswap regardless of front-end (that's why "Uniswap App" — people using uniswap.org directly — is small, while aggregators that route into Uniswap show up under their own name). We've since pulled the named aggregators out of "Other" (Banana Gun, KyberSwap, 1inch, LI.FI, Paraswap, OpenOcean, Odos, CoW Swap, Socket, Bebop, Maestro, Zerion, Rainbow, Sigma), and split the remaining unbranded front-ends into Unknown Apps A/C/D — so "Other / Unknown" is now just a small residual long tail. Shared infra (0x Exchange Proxy) is disambiguated by the pool-level sender; identifications cross-checked vs Basescan / Blockscout / DefiLlama labels, Nansen & Arkham, OpenSea, and on-chain receipts. (See the breakout tables below.) |
| Grail volume | (a) Gasless meta-tx that pay Grail's affiliate fee to 0x9f66…d431 — ground truth (100% of Grail trades pay it, 0% of other venues); plus (b) 0x-API trades by confirmed Grail users (Privy list), since Grail's external-wallet flow is feeless. Conservative: other non-fee external trades are not counted (Grail is a floor). Pending dev confirmation on external-wallet routing. |
| Total Traders | Excludes bots — wallets that call a swap router directly with no frontend (tx.to == sender). Relayed (gasless) and ERC-4337 smart-wallet trades are resolved back to the real user via on-chain logs / transfer tracing, so each person is counted once (not the relayer/bundler). |
| P&L | Average-cost basis. Realized = sell proceeds − cost basis of tokens sold (profit taken); unrealized = tokens still held × (current price − avg cost). Total = realized + unrealized. Tokens acquired by transfer/airdrop have no on-chain cost basis, so they show "—". |
| Holders | Current balances from all ERC-20 Transfer events. Uniswap pools and router/settler infra are excluded. "Where Holders Trade" = the primary trading venue of a token's holders. Token prices from each pool's slot0. |
| Grail user | Matched against Grail's Privy export — GRAIL ✦ embedded (account made on Grail), GRAIL external wallet connected via Privy. Identity (basename/ENS/Farcaster/OpenSea/X) from web3.bio + OpenSea. |
Each venue is identified by the contract a wallet calls (tx.to), cross-checked against Basescan / Blockscout / DefiLlama labels, deployer analysis, function-signature databases, and EOA patterns. Shared infra (0x Exchange Proxy) is disambiguated by the pool-level sender.
| Venue | Key Contracts (tx.to) | How Identified | Confidence |
|---|---|---|---|
| Grail | 0x68a1...da7bBaseSettlerMetaTxn + 0xDef1C0 (Exchange Proxy) when sender=settler | Gasless meta-transactions via the 0x SettlerMetaTxn contract; every such trade pays Grail's affiliate fee to 0x9f66…d431 (verified: 100% of Grail trades, 0% of other venues). Plus trades through the 0x API by confirmed Grail users (from the Privy list) are attributed to Grail. | Confirmed |
| Fomo | 0x5ff1...2789EntryPoint v0.6 0x0000...a032EntryPoint v0.7 0x4337...0108EntryPoint v0.8 0xb92f...4fRelayRouterV3 + 0xDef1C0 when sender=BaseSettler | ERC-4337 account abstraction via Biconomy bundler — consistent with a mobile app using smart wallets. Relay infrastructure for gasless transactions. 9 overlapping bundler addresses confirmed across contracts. | Likely |
| GMGN | 0xd8ba...a4e2SwapX Proxy 0xcfba...9d17SwapX | GMGN.ai — meme token trading terminal. Uses "SwapX" as proprietary routing backend. Confirmed via GMGN API docs (src accepts "gmgn"/"swapx"). Not related to SwapX on Sonic. |
Confirmed |
| OKX Wallet | 0xc8f6...9265DexRouter 0x5e2f...9801DexRouter v2 | Basescan tags as "OKX: Dex Router 2". Listed in OKX's official DEX smart contract docs. | Confirmed |
| Uniswap App | 0x2626...e481SwapRouter02 0x3328...4e49UniversalRouter + 5 other official routers | Official Uniswap router contracts, all Basescan verified. Users interacting with uniswap.org directly. | Confirmed |
| 0x API | 0xdef1...25effExchange Proxy 0x0000...2734AllowanceHolder | 0x Exchange Proxy trades NOT from Grail or Fomo senders. Includes Matcha, Rabby, and other wallets using 0x API for routing. | Confirmed |
| Named aggregators | Banana Gun, KyberSwap, 1inch, LI.FI, Paraswap, OpenOcean, Odos, CoW Swap, Socket, Bebop, Maestro, Zerion, Rainbow — each now broken out into its own venue (no longer in "Other"). Contract addresses in the Named aggregators & routers table below. | Confirmed | |
| Unknown Apps A/C/D | Four distinct unbranded front-ends that route into the Uniswap pools — pulled out of "Other" and labeled individually. Details + funding trails in the Unknown Apps table below. | Distinct apps | |
| Bots / Direct |
Transactions where tx.to equals the pool-level sender — the user called the swap router directly with no frontend. Typically MEV bots, trading scripts, or advanced DeFi users.
|
N/A | |
| Other / Unknown |
Residual unidentified tx.to addresses (50 unique) — what's left after the named aggregators and Unknown Apps A/C/D above are pulled out. Long tail of one-off contracts and minor bot infrastructure, each a tiny share of volume.
|
N/A | |
These used to sit inside the "Other" bucket; each now gets its own venue. Identified by tx.to against Basescan / Blockscout / DefiLlama labels, official router docs, and each protocol's canonical contract registry. All of them route into the same Uniswap V3 pools — they're front-ends, not separate liquidity.
| Venue | Key Contracts (tx.to) | How Identified | Confidence |
|---|---|---|---|
| KyberSwap | 0x6131…37b5 0x6131…b77b | KyberSwap MetaAggregationRouter — Basescan / DefiLlama labeled, official docs. | Confirmed |
| 1inch | 0x1111…0582 0x1111…2a65 | 1inch Aggregation Router v5 / v6 — canonical 0x1111… deployments. | Confirmed |
| LI.FI | 0x1231…4eae | LI.FI Diamond swap/bridge router — canonical address. | Confirmed |
| Paraswap | 0x6a00…1068 | ParaSwap Augustus v6 router. | Confirmed |
| OpenOcean | 0x6352…4e64 | OpenOcean Exchange router — canonical address. | Confirmed |
| Odos | 0xd63b…1026 0x19ce…95a1 | Odos Router v2 — Basescan / DefiLlama labeled. | Confirmed |
| CoW Swap | 0xca42…9680 | CoW Protocol GPv2Settlement. | Confirmed |
| Socket | 0x327d…5d86 | Socket / Bungee gateway router. | Confirmed |
| Bebop | 0x80e3…5c69 | Bebop settlement router. | Confirmed |
| Banana Gun | 0xb300…028d | Banana Gun Telegram trading-bot router (0xb300… vanity). | Confirmed |
| Maestro | 0x20f6…860c | Maestro Telegram trading-bot router. | Confirmed |
| Sigma | 0x8cc6…4c35 0x5e83…cc81 | Sigma multi-chain Telegram trading bot — identified by its SigmaSwap(bytes) method (0x08c1284c); both contracts share Sigma's deployer 0x107f250e, called by Sigma's backend executor. One of the top venues selling gELON. | Confirmed |
| Zerion | 0xd7f1…696f | Zerion wallet swap router. | Confirmed |
| Rainbow | 0x0000…10e2 | Rainbow wallet router (0x0000… vanity). | Confirmed |
Distinct tx.to contracts that route real user volume into the Uniswap pools but that we could not tie to a known brand via Basescan / Blockscout / DefiLlama / Nansen / Arkham / OpenSea labels or deployer analysis. Each is a separate app (its own contract + funding trail), so we surface them individually rather than bury them in "Other." (Former "App B" is now identified as Sigma and moved to the table above.)
| Venue | Key Contracts (tx.to) | What we found | Status |
|---|---|---|---|
| Unknown App A | 0xd0a4…e4bf | Creator wallet funded by a Binance hot wallet. Routes into the Uniswap V3 pools. Confirmed NOT Grail and NOT PancakeSwap — across 30 sampled trades, 0 pay Grail's affiliate fee and 0 touch the 0x settler. Most likely a proprietary trading app / bot front-end. | Distinct app · brand unconfirmed |
| Unknown App C | 0xafa8…f5fd | Funding trail traces back to ChangeNOW (a non-custodial instant-swap service). Unbranded router into the Uniswap pools. | Distinct app · brand unconfirmed |
| Unknown App D | 0x013b…9060 | A distinct unbranded front-end routing into the Uniswap pools. | Distinct app · brand unconfirmed |
Swap events across all 16 Grail token pools on Base (chain ID 8453).tx.to — the first contract the user's wallet called — revealing the actual wallet, app, or frontend that initiated the trade.0xDef1C0) is shared by Grail, Fomo, Matcha, Rabby, etc. Trades through it are disambiguated using the pool-level sender.tx.to == sender with no known label — the user called the swap contract directly.