Methodology

How we know

Every figure on this site is derived from Solana mainnet or archived from X. Nothing is hand-entered. This page explains exactly how, so you can reproduce it or prove us wrong.

1. Transfers

We paginate the signature history of the campaign wallet’s associated token account AuA2VRui5JNWNWF79iyaSKpW7zMQLfzFZBjd2uS3YW2H — not the owner wallet FuP8dYQytaThMh9Fg2XNd1Z1eNHxMHW92kVUfWf3TnmD. This distinction matters: the owner wallet’s history is padded with unsolicited memecoin airdrops sent by strangers hoping to be noticed, while the token account contains only $TOAD activity.

Three rules govern the parse:

  • Pagination runs to exhaustion. There is no signature cap. An earlier version of this collector capped at 150 signatures while paginating newest-first, which silently discarded the oldest drops and lost the entire launch day — 55% of all tokens distributed.
  • Amounts are integers. We read the raw base-unit amount string and divide by 106 once, at render. Reading the floating-point uiAmount produces artefacts like 39999.99999999999.
  • Deltas come from balances, not instruction parsing. We diff preTokenBalances against postTokenBalances, which is independent of how any given transaction was constructed.

$TOAD is a Token-2022 mint (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb), not classic SPL. A parser that assumes SPL returns nothing at all, silently — which is worth knowing if you are reproducing this yourself.

2. The invariant

The build fails if this does not hold to the exact base unit — not “close”, but a residual of zero:

sum(inbound) − sum(outbound) == getAccountInfo(ATA).amount

This is both the site’s correctness test and its headline exhibit. If a single transfer were missed, the residual would be non-zero and no page would be published. It is also why we can state the distribution total without hedging: arithmetic closure means the transfer set is neither incomplete nor double-counted.

3. USD at drop

We value each transfer at the price of the minute it landed, not at today’s price. Candles come from the PumpSwap pool Nx9dcwNs3iJxM5YAxshMHE4aYJHdDyyGMhVcmaSgfu8, which is constant-product and sets spot. We deliberately do not price off the Meteora DLMM pool: it is concentrated-liquidity and its reserve ratio sits far from true spot, so a series built from it would be quietly wrong.

Minute granularity is not fussiness. The distribution window spans a 2.83× price swing. Bucketing by hour instead of minute introduces a median error of 5.55% and a worst case of 70.79% inside that window.

Prices are cross-checked against an independent pump.fun candle feed; the build asserts the two sources agree to within 2% median divergence before publishing.

Caveat we will not bury: sub-minute precision does not exist. Transfers land partway into their candle, so a true fill can differ from our figure by that candle’s range. We therefore publish rounded totals (“~$281,000”), never false precision (“$281,311”).

4. Held, reduced, and sold

We compare each recipient’s current balance against what they received. The distinction between these states is deliberate:

  • Sold requires evidence — the destination is a pool token account, or a DEX program appears in the transaction.
  • Reduced means tokens left the wallet without any of that evidence. Roughly a fifth of outbound recipient volume is plain wallet-to-wallet movement, which is not a sale.
  • Account closed is tracked separately from a zero balance. They are not the same event.

Where a value is genuinely unknown we render . We never display a computed-looking 0 in place of missing data. An earlier version of this site rendered “Held: 0%” for every recipient because the field was a hardcoded constant, which read as though all of them had dumped. That was wrong and it has been removed.

5. Whose wallet is it?

The campaign wallet is attributed to @mdudas at high confidence. It is not self-disclosed — he has never posted the address, and we will not claim otherwise. The attribution rests on a tweet-to-transaction match: a transfer landed in a token account created by that very transaction, giving the balance no other possible source, and the corresponding post appeared 63 seconds later showing exactly that balance. The evidence panel on the overview page lays out each link.

The pump.fun profile for this address currently exposes no verified X account. We render that null rather than hiding it.

6. What this site cannot know

  • Whether the person behind the wallet has sold elsewhere. Every claim here is scoped to this wallet, never to a person’s total position.
  • What happened downstream once tokens left a recipient. The redistribution tree is sampled, not complete.
  • Whether the wallet is self-custodied or app-custodied. The first buy was relayer-paid; later transfers are self-signed. We treat this as unknown.
  • That no phishing site exists. We can only list the copycat mints we have actually found. Absence of evidence is not evidence of absence.

7. Freshness

The campaign is live and every number moves. Each figure carries an as-of timestamp, and the footer stamps three separate capture times — chain, price, and posts — because they are collected independently and go stale at different rates. Treat every number as a snapshot, never a standing fact.

8. Reproduce it

The collectors live in scripts/collect/ and write their raw captures to data/raw/ before anything is derived. The mint is A13oRB9FFaiUjfi6LdCg6p9ka1u8SfGkUFs4SKvPpump. Everything above can be re-derived from a public RPC endpoint and free candle data — no paid key is required for any on-chain figure on this site.