Wallet cleaner · Robinhood Chain
Skim the dross.
Keep the metal.
Every launch you bought into left a standing approval behind, and most of them are still live. Dross reads the chain for the permissions you granted and the tokens you are left holding, then lets you close them out one signature at a time.
- ◆ Non-custodial
- You sign every action
- No contracts of ours
- Chain 4663
MetaMask only, on Robinhood Chain. Reading your wallet signs nothing and costs no gas.
Live approvals
not scanned
Connect MetaMask and the figures resolve. Reading the chain signs nothing.
Scan depth
Permissions you granted
| Token | Spender | Allowance | Action |
|---|---|---|---|
| Connect MetaMask to scan for approvals. | |||
An Unlimited allowance lets that spender move your entire balance of the token, at any time, until you revoke it. Revoking sets the allowance to zero and costs one transaction in gas.
What you are holding
| Token | Balance | Quote | Action |
|---|---|---|---|
| Connect MetaMask to list what you hold. | |||
Quote reads “not priced” for every row, and that is not a placeholder. The only DEX on this chain is Uniswap V4, where a quote needs the pool’s full key — both currencies, fee tier, tick spacing and hook address. None of that is derivable from a token address alone, so Dross will not print a number it cannot stand behind. Burning is offered; selling is not.
The bench
Four tools. One clean wallet.
Each one is a plain ERC-20 call you approve in MetaMask. Dross deploys no contract of its own, so nothing of ours sits between you and the token.
Live now
Revoke
Finds the approvals you granted, confirms each against the token’s current allowance, and sets the ones you pick to zero.
Slag heap
Sends a dead token’s whole balance to the dead address. Permanent, and confirmed twice before your wallet ever opens.
Not built
Dust to ETH
Needs a price. Uniswap V4 quoting requires a pool key that a token address does not reveal, so this is absent rather than guessing.
Mass send
One transfer per token is the honest version of this on an EVM chain, which is what the holdings tab already does. No batching yet.
The second column is listed because a bench with two tools and no explanation reads like a bench with two tools missing. Nothing there is coming on a date we can promise.
How it works
Read, decide, sign.
Three passes, and the only one that costs anything is the last.
Read the chain
Dross asks MetaMask for your address and nothing else, then reads the public RPC directly for Approval and Transfer logs touching it. No signature, no gas, and the wallet is not asked to fetch anything.
Confirm against state
A log only proves something happened once. Every hit is re-read with
allowance() or balanceOf() at the current block,
so a permission you already revoked never shows up as live.
Sign what you chose
Revoking sends approve(spender, 0). Burning sends the balance
to the dead address. Both are single ERC-20 calls to the token itself, and
MetaMask’s prompt is the authority on what you are signing.
The scan
Why a scan has an edge.
Robinhood Chain produces a block roughly every tenth of a second — about 849,000 a day, and over 62 million so far. No browser can read all of that, so Dross scans a recent window and tells you exactly which blocks it covered.
| Constraint | What Dross does about it | Value |
|---|---|---|
| Block time | Converts the window into hours so a block count means something | ~0.10s |
| Matched-log cap | Reads logs in chunks instead of one wide query | 10,000 |
| Chunk size | Walks back from the tip and narrows itself when a chunk overflows | 200k → 3k |
| Default depth | About 17 hours of chain, always reported as a block range | 600k blocks |
| Request bucket | One paced queue for every read; widens itself when the node pushes back | 5 calls / request |
| Dross fee | You pay network gas on a write, and nothing to us | None |
A chunk the node refuses is never treated as “nothing found”. It is counted, and the console says how much of the window is missing. An empty result and a failed lookup are different answers.
Limits
What Dross will not do.
A burn cannot be undone
Sending a token to the dead address destroys it. If it ever trades again, you will hold none of it. Dross confirms twice, spells out the amount both times, and never batches a burn with anything else.
Nothing here is priced
A Uniswap V4 quote needs the pool’s full key, which a token address does not give you. So there is no “worth selling” verdict on any row — only what you hold and what you have approved.
The scan has an edge
It covers a recent window of blocks, not your whole history. A token you received a week ago may not appear. The console prints the exact block range so you can see what was and was not read.
We never hold anything
No accounts, no deposits, no custody, and no contract of ours in the path. There is no balance of yours here to withdraw, and nothing for us to freeze or lose.
Questions
Straight answers.
Is it safe to connect?
Connecting authorises one thing: Dross reading your address. Every chain read then goes straight to the public RPC over HTTPS, not through your wallet, so there is no signature and no gas to look at your own state. Writes are ordinary ERC-20 calls you approve in MetaMask, and you can stop at any point.
Dross is unaudited. Treat that as a reason to read every MetaMask prompt rather than as a claim in either direction.
Why does it only find some of my tokens?
Because the chain is too fast to read end to end from a browser. Blocks land about every tenth of a second, so history is over 62 million blocks deep. Dross reads back about 600,000 blocks — roughly the last 17 hours — and states the exact range it covered. It also caps how many rows it resolves per pass, because the node meters requests and a wallet with thousands of approvals would otherwise never finish. Anything outside that is unexamined, which is different from not existing.
Why can’t it sell my dust?
The only DEX on this chain is Uniswap V4. Unlike V2 or V3, a V4 pool is addressed by a key made of both currencies, the fee tier, the tick spacing and the hook contract. None of that can be derived from a token address, so a sell path would mean guessing at a pool and quoting a price that might not exist. Burning is offered instead, and the quote column says “not priced” rather than showing a fabricated number.
What does revoking actually change?
It sets that spender’s allowance on that token to zero, so the contract can no longer move the token out of your wallet. It does not undo past transfers, does not affect your balance, and does not need the spender to cooperate. One transaction per approval, and gas is the only cost.
Will cleaning up cost me an airdrop?
It might. Some programs read a current balance or wallet history, and burning a token means you no longer hold it. Dross cannot see any program’s rules and will never tell you a holding is safe to destroy. If a token might matter later, keep it.
Which wallets work?
MetaMask only, on Robinhood Chain (chain 4663). If MetaMask is on another network, Dross offers to switch it and will add the chain if your wallet does not know it yet. Other wallets are not detected rather than half-supported.
Do you keep any of this?
No accounts and no server holding your data. The scan runs in your browser against a public RPC, and nothing is stored once you close the tab.
Check what you left open.
See which contracts can still move your tokens. The scan is free, reads nothing but public chain state, and signs nothing.
Read this first. Burning a token destroys it permanently and cannot be reversed. A scan covers a recent window of blocks, not your whole history, so treat an empty result as “nothing found here” rather than proof. Nothing on this page is priced. Dross is unaudited software — you sign every transaction yourself, and what MetaMask displays at signing time is what will happen.