{"updated":"2026-10-10","sources":[{"id":"uniswap-uni-2020","name":"Uniswap UNI retroactive airdrop (Sept 2020)","kind":"airdrop","chain":"Ethereum","addressType":"evm","contract":"0x090D4613473dEE047c3f2706764f49E0821D256e","dataUrl":"https://raw.githubusercontent.com/Uniswap/mrkl-drop-data-chunks/main/chunks/mapping.json","claimUrl":"https://etherscan.io/address/0x090D4613473dEE047c3f2706764f49E0821D256e#writeContract","deadline":null,"deadlineNote":"No deadline: the MerkleDistributor has no expiry or sweep function (~12.5M UNI still unclaimed).","howVerified":"Uniswap's official Merkle data (github.com/Uniswap/mrkl-drop-data-chunks, same data as mrkl.uniswap.org) gives index/amount/proof; isClaimed(index) is read on-chain. Manual claim steps: gov.uniswap.org/t/learn-requirements-how-to-claim-your-400-uni/1025/10."},{"id":"merkl-ethereum","name":"Merkl reward distributions on Ethereum (incl. protocol incentives & recoveries such as Term Finance's vault recovery)","kind":"rewards","chain":"Ethereum","addressType":"evm","contract":"0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae","dataUrl":"https://api.merkl.xyz/v4/users/{address}/rewards/summary?chainId=1","claimUrl":"https://app.merkl.xyz/users/{address}","deadline":null,"deadlineNote":"Merkl rewards stay claimable from the Distributor; some campaigns set their own window (e.g. Term Finance recovery campaign: Oct 2 – Dec 1, 2026 23:59:59 UTC).","howVerified":"Merkl's official public API (developers.merkl.xyz, /v4/users/{address}/rewards/summary): amount minus claimed per token; only Merkl-verified, non-test tokens are counted."},{"id":"merkl-optimism","name":"Merkl reward distributions on Optimism (incl. protocol incentives & recoveries such as Term Finance's vault recovery)","kind":"rewards","chain":"Optimism","addressType":"evm","contract":"0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae","dataUrl":"https://api.merkl.xyz/v4/users/{address}/rewards/summary?chainId=10","claimUrl":"https://app.merkl.xyz/users/{address}","deadline":null,"deadlineNote":"Merkl rewards stay claimable from the Distributor; some campaigns set their own window (e.g. Term Finance recovery campaign: Oct 2 – Dec 1, 2026 23:59:59 UTC).","howVerified":"Merkl's official public API (developers.merkl.xyz, /v4/users/{address}/rewards/summary): amount minus claimed per token; only Merkl-verified, non-test tokens are counted."},{"id":"merkl-polygon","name":"Merkl reward distributions on Polygon (incl. protocol incentives & recoveries such as Term Finance's vault recovery)","kind":"rewards","chain":"Polygon","addressType":"evm","contract":"0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae","dataUrl":"https://api.merkl.xyz/v4/users/{address}/rewards/summary?chainId=137","claimUrl":"https://app.merkl.xyz/users/{address}","deadline":null,"deadlineNote":"Merkl rewards stay claimable from the Distributor; some campaigns set their own window (e.g. Term Finance recovery campaign: Oct 2 – Dec 1, 2026 23:59:59 UTC).","howVerified":"Merkl's official public API (developers.merkl.xyz, /v4/users/{address}/rewards/summary): amount minus claimed per token; only Merkl-verified, non-test tokens are counted."},{"id":"merkl-base","name":"Merkl reward distributions on Base (incl. protocol incentives & recoveries such as Term Finance's vault recovery)","kind":"rewards","chain":"Base","addressType":"evm","contract":"0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae","dataUrl":"https://api.merkl.xyz/v4/users/{address}/rewards/summary?chainId=8453","claimUrl":"https://app.merkl.xyz/users/{address}","deadline":null,"deadlineNote":"Merkl rewards stay claimable from the Distributor; some campaigns set their own window (e.g. Term Finance recovery campaign: Oct 2 – Dec 1, 2026 23:59:59 UTC).","howVerified":"Merkl's official public API (developers.merkl.xyz, /v4/users/{address}/rewards/summary): amount minus claimed per token; only Merkl-verified, non-test tokens are counted."},{"id":"merkl-arbitrum","name":"Merkl reward distributions on Arbitrum (incl. protocol incentives & recoveries such as Term Finance's vault recovery)","kind":"rewards","chain":"Arbitrum","addressType":"evm","contract":"0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae","dataUrl":"https://api.merkl.xyz/v4/users/{address}/rewards/summary?chainId=42161","claimUrl":"https://app.merkl.xyz/users/{address}","deadline":null,"deadlineNote":"Merkl rewards stay claimable from the Distributor; some campaigns set their own window (e.g. Term Finance recovery campaign: Oct 2 – Dec 1, 2026 23:59:59 UTC).","howVerified":"Merkl's official public API (developers.merkl.xyz, /v4/users/{address}/rewards/summary): amount minus claimed per token; only Merkl-verified, non-test tokens are counted."},{"id":"doppler-xdp","name":"Doppler Finance XDP Genesis Airdrop","kind":"airdrop","chain":"Base","addressType":"evm","contract":"0x13125738747498eef7b17ccd9a0cce395bab733f","dataUrl":"https://api.doppler.finance/v1/xdp-airdrop/status/{address}","claimUrl":"https://app.doppler.finance/airdrop","deadline":"2026-11-28T12:00:00Z","deadlineNote":"Claims close Nov 28, 2026 12:00 UTC (only wallets registered during the July 2026 registration).","howVerified":"Doppler's own claim-page API (/v1/xdp-airdrop/config and /status/{address}); config confirms claimChainId 8453, claim contract and claimEnd 1795867200000. viewStatus CLAIMABLE = open, COMPLETED = already claimed."},{"id":"etherdelta-eth","name":"EtherDelta (defunct DEX) leftover ETH balance","kind":"forgotten-balance","chain":"Ethereum","addressType":"evm","contract":"0x8d12A197cB00D4747a1fe03395095ce2A5CC6819","dataUrl":"on-chain: tokens(0x0, address)","claimUrl":"https://etherscan.io/address/0x8d12A197cB00D4747a1fe03395095ce2A5CC6819#writeContract","deadline":null,"deadlineNote":"No deadline: the owner can call withdraw(amount) from the contract at any time (~15,000 ETH still deposited).","howVerified":"Read-only eth_call tokens(address(0), user); bytecode contains withdraw(uint256)."},{"id":"tokenstore-eth","name":"Token.Store (defunct DEX) leftover ETH balance","kind":"forgotten-balance","chain":"Ethereum","addressType":"evm","contract":"0x1cE7AE555139c5EF5A57CC8d814a867ee6Ee33D8","dataUrl":"on-chain: tokens(0x0, address)","claimUrl":"https://etherscan.io/address/0x1cE7AE555139c5EF5A57CC8d814a867ee6Ee33D8#writeContract","deadline":null,"deadlineNote":"No deadline: the owner can call withdraw(amount) at any time.","howVerified":"Read-only eth_call tokens(address(0), user); bytecode contains withdraw(uint256)."},{"id":"idex-v1-eth","name":"IDEX v1 (retired contract) leftover ETH balance","kind":"forgotten-balance","chain":"Ethereum","addressType":"evm","contract":"0x2a0c0DBEcC7E4D658f48E01e3fA353F44050c208","dataUrl":"on-chain: tokens(0x0, address)","claimUrl":"https://etherscan.io/address/0x2a0c0DBEcC7E4D658f48E01e3fA353F44050c208#writeContract","deadline":null,"deadlineNote":"No deadline. Self-withdrawal uses withdraw(token, amount) once the account has been inactive for the contract's inactivityReleasePeriod.","howVerified":"Read-only eth_call tokens(address(0), user); bytecode contains withdraw(address,uint256) and inactivityReleasePeriod()."},{"id":"drift-dfx","name":"Drift DFX recovery token (April 1, 2026 incident: 1 DFX per 1 USDT of verified loss)","kind":"refund","chain":"Solana","addressType":"solana","contract":"dfxQsZjikuu5DGXPgX7yEpRog74HT5cJgytT3i5iLtw (mint)","dataUrl":"https://dfx.drift.trade/api/eligibility/{address}","claimUrl":"https://dfx.drift.trade/","deadline":"2028-01-01T00:00:00Z","deadlineNote":"Claim window closes 00:00 UTC Jan 1, 2028; unclaimed DFX is burned (Drift Foundation announcement).","howVerified":"Drift's official claim-page API (/api/eligibility, /api/distributors): claimable_amount per merkle tree; distributor clawback_start_ts = 1830297600."},{"id":"drift-recovery-assets","name":"Drift recovery distributions (USDC, SOL, JUP, DRIFT and other assets)","kind":"refund","chain":"Solana","addressType":"solana","contract":"Drift merkle distributors listed at dfx.drift.trade/api/distributors","dataUrl":"https://dfx.drift.trade/api/eligibility/{address}","claimUrl":"https://dfx.drift.trade/","deadline":"2027-07-01T00:00:00Z","deadlineNote":"Distributor clawback starts Jul 1, 2027 00:00 UTC (clawback_start_ts 1814400000).","howVerified":"Same official Drift API; each non-DFX merkle tree has its own mint and clawback time."},{"id":"capx-airdrop-3","name":"CAPX Airdrop 3 (final)","kind":"airdrop","chain":"Solana","addressType":"solana","contract":"7AoBuYcGKQYadxc9wmGxpuu29bpC1EDQezkoXACWZRFF (CAPX mint)","dataUrl":"https://airdrop.capx.ai/api/airdrop/allocation?wallet={address}","claimUrl":"https://airdrop.capx.ai/","deadline":"2026-10-15T03:00:00Z","deadlineNote":"Oct 14, 2026 8:00 PM PT (Oct 15 03:00 UTC). Claiming is a free message signature on the official page.","howVerified":"CAPX's own claim-page API (/api/airdrop/allocation): eligible + amount, registeredAt set = already claimed."},{"id":"polymarket-redeemable","name":"Polymarket winning positions not yet redeemed (resolved markets)","kind":"forgotten-balance","chain":"Polygon","addressType":"evm","contract":"Polymarket CTF 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045 (redeemPositions)","dataUrl":"https://data-api.polymarket.com/positions?user={address}&redeemable=true","claimUrl":"https://polymarket.com/portfolio","deadline":null,"deadlineNote":"No deadline: resolved winning shares can be redeemed for collateral at any time.","howVerified":"Polymarket's official public Data API (/positions?redeemable=true): only resolved positions with currentValue > 0 (winning side) are counted. EOAs are mapped to their Polymarket proxy wallet via gamma-api.polymarket.com/public-profile."},{"id":"solana-rent-empty-accounts","name":"SOL rent locked in empty token accounts (reclaimable by closing them)","kind":"forgotten-balance","chain":"Solana","addressType":"solana","contract":"SPL Token / Token-2022 programs (CloseAccount)","dataUrl":"on-chain: getTokenAccountsByOwner (jsonParsed), token balance 0","claimUrl":"https://spl.solana.com/token#closing-accounts","deadline":null,"deadlineNote":"No deadline: the owner can close an empty token account at any time and get its rent deposit (~0.002 SOL each) back.","howVerified":"Read-only Solana RPC getTokenAccountsByOwner for both token programs; counts accounts with a 0 balance that are not frozen and have no third-party close authority, summing their lamports."},{"id":"univ3-fees-ethereum","name":"Uniswap v3 LP positions on Ethereum: uncollected fees and withdrawn-but-uncollected tokens","kind":"forgotten-balance","chain":"Ethereum","addressType":"evm","contract":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88 (NonfungiblePositionManager)","dataUrl":"on-chain: balanceOf / tokenOfOwnerByIndex / positions / collect (static call from the owner)","claimUrl":"https://app.uniswap.org/positions","deadline":null,"deadlineNote":"No deadline: fees and owed tokens stay in the position until the owner collects them.","howVerified":"Read-only eth_call of collect(tokenId, owner, max, max) from the owner's address on Uniswap's official NonfungiblePositionManager returns exactly what a Collect would pay out. Only tokens with a DefiLlama price are counted (filters spam tokens). Positions staked in other contracts are not seen."},{"id":"univ3-fees-base","name":"Uniswap v3 LP positions on Base: uncollected fees and withdrawn-but-uncollected tokens","kind":"forgotten-balance","chain":"Base","addressType":"evm","contract":"0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1 (NonfungiblePositionManager)","dataUrl":"on-chain: balanceOf / tokenOfOwnerByIndex / positions / collect (static call from the owner)","claimUrl":"https://app.uniswap.org/positions","deadline":null,"deadlineNote":"No deadline: fees and owed tokens stay in the position until the owner collects them.","howVerified":"Read-only eth_call of collect(tokenId, owner, max, max) from the owner's address on Uniswap's official NonfungiblePositionManager returns exactly what a Collect would pay out. Only tokens with a DefiLlama price are counted (filters spam tokens). Positions staked in other contracts are not seen."},{"id":"univ3-fees-arbitrum","name":"Uniswap v3 LP positions on Arbitrum: uncollected fees and withdrawn-but-uncollected tokens","kind":"forgotten-balance","chain":"Arbitrum","addressType":"evm","contract":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88 (NonfungiblePositionManager)","dataUrl":"on-chain: balanceOf / tokenOfOwnerByIndex / positions / collect (static call from the owner)","claimUrl":"https://app.uniswap.org/positions","deadline":null,"deadlineNote":"No deadline: fees and owed tokens stay in the position until the owner collects them.","howVerified":"Read-only eth_call of collect(tokenId, owner, max, max) from the owner's address on Uniswap's official NonfungiblePositionManager returns exactly what a Collect would pay out. Only tokens with a DefiLlama price are counted (filters spam tokens). Positions staked in other contracts are not seen."},{"id":"univ3-fees-optimism","name":"Uniswap v3 LP positions on Optimism: uncollected fees and withdrawn-but-uncollected tokens","kind":"forgotten-balance","chain":"Optimism","addressType":"evm","contract":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88 (NonfungiblePositionManager)","dataUrl":"on-chain: balanceOf / tokenOfOwnerByIndex / positions / collect (static call from the owner)","claimUrl":"https://app.uniswap.org/positions","deadline":null,"deadlineNote":"No deadline: fees and owed tokens stay in the position until the owner collects them.","howVerified":"Read-only eth_call of collect(tokenId, owner, max, max) from the owner's address on Uniswap's official NonfungiblePositionManager returns exactly what a Collect would pay out. Only tokens with a DefiLlama price are counted (filters spam tokens). Positions staked in other contracts are not seen."}],"watchlist":[{"name":"Sonic (S) Season 1 & 2 airdrop","chain":"Sonic","deadline":"2026-10-15","officialUrl":"https://my.soniclabs.com/airdrop","note":"Unclaimed S burned after Oct 15, 2026 (Sonic Labs announcement)."},{"name":"Pharos (PROS) airdrop","chain":"Pharos","deadline":"2026-10-25","officialUrl":"https://claim.pharos.xyz/","note":"180-day claim window from Apr 28, 2026 (Pharos FAQ). Beware look-alike domains such as pharros.xyz."},{"name":"Pheasant Network PNT Season 1","chain":"Ethereum","deadline":"2026-10-27","officialUrl":"https://claim.pheasant.network/","note":"21-day window from Oct 6, 2026 12:00 UTC (docs.pheasant.network). Requires wallet sign-in, so we can't pre-check it."},{"name":"Grass Stage 2 rewards (paid in USDC)","chain":"Solana","deadline":"2027-01-22","officialUrl":"https://app.grass.io/dashboard/allocation","note":"Dashboard login required; Grass never runs checks on other sites."}]}