The v1 contract is retired. File the wallet that held it by sending a small transaction from that wallet itself — gas only, no tokens move, no signature beyond the transaction. One filing per wallet, and the register is read straight from the chain, so everyone who opens this page sees exactly the same list — there's no database behind it to disagree with.
Connect the wallet that held v1. It's checked against the chain before you're asked to send anything, so you're never paying gas just to find out you're not eligible.
Loss is reconstructed per wallet from its v1 transfers and the value that moved against them in the same transactions. Anyone can rerun it; the inputs are public.
| # | Wallet | Filed | Bought | Sold | Still holds | Net loss | |
|---|---|---|---|---|---|---|---|
| Loading the register from the explorer… | |||||||
| Total | — | — | — | — | |||
For every transaction where a filed wallet's v1 balance changed, the counter-value on the other side of that same transaction is measured: ETH sent, ETH returned internally, gas paid, and any transfer of a token priced below.
net loss = spent − received − value still held
Acquisitions add to spent, including the gas paid to make the purchase. Disposals add to received, net of the gas paid to sell. A transfer that moved v1 without any payment in the same transaction — a wallet-to-wallet move, an airdrop, a liquidity-pool deposit or withdrawal — is counted at zero and flagged unpriced, because the chain alone cannot show what it was worth to you.
Where a wallet has enough unrelated activity to push its older v1 trades past the bulk read, those specific transactions are fetched individually rather than left blank — otherwise a real buy or sell would be silently valued at zero and quietly understate the loss. History incomplete therefore means something genuinely couldn't be resolved, not just that a list was long.
Only wrapped ETH is matched by its actual contract address, and both it and native ETH are priced using that specific transaction's own calendar-day historical rate — never today's — so a trade from months ago isn't valued at current prices. Stablecoins are matched by symbol alone, since a token can name itself "USDC" without being it; those are flagged symbol-matched. When a day's historical rate can't be retrieved, today's rate is used as a fallback and flagged est. rate. A wallet with more history than one read can retrieve is flagged history incomplete, meaning its number is a floor, not the final word. If a wallet's current balance specifically can't be read, that's flagged balance unknown rather than assumed to be zero. A leg is only called unpriced when no counter-value could be found at all — a real net cost or gain, like a sale whose gas exceeded its proceeds, is folded into the total rather than dropped just because it came out negative.
Per wallet, the calculator pulls its full transaction list, all token transfers, and all internal transfers in a handful of requests total — not one request per transaction. Multiple wallets are read in parallel. Everything is cached in your browser and can be recomputed from scratch at any time.
v1 is retired and priced at zero by default, so anything a wallet still holds counts fully as loss. Change either figure and the register recalculates.
Quote assets recognised