About 1.5 billion dollars was stolen from Bybit on or about 21 February 2025, according to the FBI, which held North Korea responsible. The money sat in a cold wallet protected by a multisig, the setup people are told to use for serious money. Several signers approved a transaction, and the one they signed was not the one the tampered interface showed them. A signature is only as safe as your ability to read it.
Your scale is smaller and the same rule applies. Knowing how to revoke token approvals matters because an approval you clicked in 2023 for a blockchain that runs exactly as written when it is called, holding and moving funds according to its code, without an intermediary able to change the outcome.">smart contract holding reserves of two or more tokens, supplied by users, that a decentralized exchange uses to execute trades automatically at a price set by a formula.">pool you have forgotten can still move your USDC today: approvals have no end date. That is one habit of this lesson, and there are five more: separate your wallets, read before you sign, check where you are before you connect, put large amounts behind several keys, and keep a written plan for the bad day. Setting it all up takes an afternoon. Keeping it going takes about ten minutes a month, by our estimate.
This lesson follows what DeFi cover can and cannot pay. Cover is the last line; this routine is what comes before it. It assumes you already hold a wallet and have used a protocol. If you are unsure about the place of user mistakes among the other dangers, see our map of DeFi risks.
Six attacks, six habits: what the numbers say
Wallet-drainer phishing on EVM chains cost users 83.85 million dollars in 2025, down 83 percent from 494 million in 2024, according to Scam Sniffer’s report of January 2026. That sounds like good news, and it partly is. The report calls its figure a lower bound and counts only drainers working through phishing sites. Direct hacks, exchange compromises and contract exploits are outside it, and so is address poisoning, which produced one of the largest personal losses of the past year.
| Year | Losses to drainers | Victims | Largest single theft |
|---|---|---|---|
| 2024 | 494 million dollars | 332,000 | 55.48 million dollars |
| 2025 | 83.85 million dollars | 106,106 | 6.5 million dollars (Permit signature, September) |
Each attack below has a dated case and the step that answers it.
| Attack | Dated case | Habit |
|---|---|---|
| Stale or malicious approval | 1,576 ETH lost, then 95 ETH and 158 ETH more (reported January 2024) | Step 3: revoke |
| Permit or Permit2 signature | 6.5 million dollars (September 2025) | Steps 2 and 3 |
| EIP-7702 batch signature | 1.54 million and 1 million dollars (August 2025) | Steps 2 and 3 |
| Address poisoning | About 50 million dollars (December 2025) | Step 4: check addresses |
| Tampered wallet software | About 7 million dollars, Trust Wallet extension (December 2025) | Steps 1 and 4 |
| Misleading multisig request | About 1.5 billion dollars, Bybit (February 2025); about 285 million dollars, Drift (April 2026) | Step 5: verify |
Step 1. Split your funds into a cold, a daily and a burner wallet
If the difference between software wallets and hardware devices is new, our guide to crypto wallets covers it. The idea here is narrower: give each wallet one job, so that one bad signature costs you one wallet and not everything.
The cold wallet holds what you do not plan to touch. It lives on a hardware device, set up as in our hardware wallet tutorial, and it never connects to an app you have not used before. The daily wallet talks to the few protocols you know and holds only what those positions need. The burner is for everything unproven: a new app, a mint, an airdrop claim. It stays close to empty, so a drainer that hits it finds almost nothing. That is why fake airdrops lose most of their sting when you check them from a burner.
- Create the burner with its own new seed phrase. An extra account derived from your main seed shares that seed, so it does not count as separate.
- Write down which wallet does what, using the table below as a model.
- Move long-term holdings to the cold wallet, starting with a small test transfer.
- Fund the burner from the daily wallet with just enough for gas and the action you want to try.
- Check the result: open a block explorer on the cold address and confirm that it shows no recent interaction with any app.
| Wallet (fictional example) | Device | Holds | May do |
|---|---|---|---|
| Cold | Hardware device, stored away | 20,000 dollars | Receive; send to the daily wallet |
| Daily | Browser or phone wallet with its own seed | 3,000 dollars | Use known protocols only |
| Burner | Second wallet with its own seed | 50 dollars | Try new apps, claims and mints |
The amounts are invented to show proportions, not a suggestion for your own split. Money should flow in one direction when testing: from daily to burner for the trial, and back only by a plain transfer, never through the app under test.

What a burner cannot protect you from
A burner limits the damage of a bad signature. It does nothing against malware on the machine, or against a seed that has left your control. Revoke.cash lists the usual routes: fake software, phishing sites, cloud backups of the phrase, terminal commands pasted from a stranger, and AI agents given access to the system. The rules for the phrase itself are in our seed phrase guide. The short version: no legitimate tool in this lesson will ever ask for it, and any site that does is the attack.
The Trust Wallet case shows how far this goes. Version 2.68.0 of its Chrome extension, released on 24 December 2025, carried malicious code, and the theft was put at about 7 million dollars, as BleepingComputer reported on 26 December. An analyst quoted there said the code fired when a seed phrase was imported. A second seed in the same extension is no protection against that, which is why the seed of the cold wallet is never typed into a browser.
Step 2. Simulate every transaction before you sign it
A simulation runs your transaction against the current state of the chain and shows what would happen, without sending anything. Tenderly documents this as running transactions against live mainnet or testnet state with no broadcast, and its result page lists the asset transfers. You rarely need it for ordinary use, because wallets now do much of the work. MetaMask says its estimated balance changes are on by default. Many other wallets show a preview too, so read your own wallet’s documentation to learn what it covers and on which networks.
The routine takes 30 seconds, and it has four parts.
- Read the balance changes: what leaves, what arrives, and in what amounts.
- Look for any approval in the preview and check its amount and its spender.
- If the preview fails or stays blank, stop. A wallet that cannot read the transaction is asking you to sign blind.
- Ask whether the result matches what you came to do. A claim that sends tokens out is not a claim.
When the preview lies
A preview is a snapshot, and sites can change what happens after it. Scam Sniffer described in January 2025 a victim who lost 143.45 ETH, about 460,895 dollars at the time. The phishing site altered the contract state, and the victim signed about 30 seconds later, on a preview that no longer held. So re-run it just before signing, and be wary of any “Claim” button that hurries you.
MetaMask has one answer to this. With what its support pages call Added protection, the simulated conditions are enforced on-chain and a mismatched transaction reverts, at the price of extra gas. The company said in September 2026 that this is limited to Ethereum and EVM apps on its extension. Everywhere else, a clean preview is one signal among several.
Blind signing and clear signing on a hardware device
A hardware wallet proves that you approved something. Whether you knew what that something was depends on its screen. Long hexadecimal strings tell you nothing, which is why Clear Signing exists: the ERC-7730 standard lets a protocol describe its contracts so the device can show the action in words. According to Ledger, stewardship of the standard moved to the Ethereum Foundation on 12 May 2026, and the descriptor registry now sits there. Two limits apply. It only renders a transaction and changes nothing in it, and it needs a descriptor for that contract. When your device falls back to raw data, treat that as a reason to slow down.
Step 3. How to revoke token approvals you no longer use
An approval is permission for a contract to spend one of your tokens. In the words of the ERC-20 standard, the spender may withdraw from your account “multiple times, up to the _value amount”. Many apps ask for an unlimited amount so that you pay the gas only once, as Revoke.cash explains. The permission stays after you leave the app. NFTs have their own version, which can cover a whole collection.
Approvals stay active indefinitely, so a project you used years ago can hurt you if it gets hacked today. The worst case is expensive. In a case Scam Sniffer documented in January 2024, a victim lost 1,576 ETH of Aave collateral through a phishing approval and did nothing further. The approval still allowed 107 ETH to be moved. The drainer later took 95 ETH, which pushed the position into liquidation, and another 158 ETH went with it.
The monthly review, step by step
- Type revoke.cash in the address bar or use your bookmark. Do not follow a link from a message or an ad.
- Paste your public address or ENS name to inspect it. Nothing needs to be connected at this stage, and no seed phrase is ever involved.
- Pick a network. Revoke.cash covers more than 80, and an approval on Base does not show up under Ethereum, so repeat for each chain you use.
- Sort by newest to oldest if you suspect a bad signature. For a routine review, read down the list and mark every spender you do not recognise.
- Connect the wallet concerned and press Revoke on each approval you no longer need, or use the pencil icon to lower the amount.
- Confirm in your wallet, read the preview as in Step 2, then reload the list and check that the line has gone.
Etherscan offers a second route: OpenSea support walks through its token approval checker at etherscan.io/tokenapprovalchecker, where you connect the wallet, browse the ERC-20, ERC-721 and ERC-1155 tabs and press Revoke. Either tool is fine. What matters is that you type the address yourself, because a frightened user searching for a revoke tool is an easy target.
Permit and Permit2: approvals that cost no gas
A permit is an approval signed off-chain. No transaction is sent, no gas is paid, and your wallet shows a message instead of a transaction, so it can feel harmless. EIP-2612 permits only work on tokens that support them. Permit2, built by the Uniswap team, gets around that: you give one unlimited approval to the Permit2 contract, and it then manages sub-approvals, each with an expiry. Revoke.cash notes the phishing risk this adds, since one approval can cover several tokens and is hard to read, and recommends revoking the approval to Permit2 itself once you stop using it.
Scam Sniffer counted permit and Permit2 signatures as 38 percent of losses in its 2025 cases of a million dollars or more: three cases, 8.72 million dollars. There is a catch for the monthly review. A permit lives off-chain until someone uses it, so Revoke.cash says it can never tell which signatures you gave. It lists potential ones on a Signatures tab, and cancelling one before it is used is possible but generally very hard. Once used, it becomes an ordinary approval you can revoke. Read a signature request as carefully as a transaction.
EIP-7702 delegations: the new thing to check
Since the Pectra upgrade of 7 May 2025, an ordinary Ethereum account can delegate its behaviour to a smart contract under EIP-7702. That allows batching and other useful tricks. Revoke.cash itself uses it for revoking several approvals at once. The EIP is blunt about the danger: “A poorly implemented delegate can allow a malicious actor to take near complete control over a signer’s EOA.” Scam Sniffer recorded two EIP-7702 batch cases in August 2025, of 1.54 million and 1 million dollars.
Accept a delegation only for a feature you asked for, inside an app or wallet you trust. Keep your cold wallet a plain account, as Revoke.cash advises, and use delegation only on daily wallets. Then review what exists: Revoke.cash shows delegations on a tab of your account page, but most wallets do not let outside apps change them, so you clear one inside your wallet application. At protocol level, the EIP clears a delegation when a new authorisation points to the zero address.
A warning on the stories of sweeper bots: Revoke.cash points out that they only work once the seed phrase is compromised, and at that point the wallet is already lost. That leads to the limit of this whole step: revoking removes a permission, and a thief who has your key needs no permission.
What revoking costs, and a free practice run
Revoking is an on-chain transaction, so it costs gas. We estimated both actions on Ethereum mainnet on 1 November 2026, about 10:00 UTC, through a public node, with USDC as the example. The approval is an unlimited one to Permit2 from an address with no allowance. The revoke figure comes from three addresses with a live USDC allowance. The cost column counts the base fee alone, with ETH at 2,269 dollars according to DefiLlama.
| Action on USDC | Gas estimated | At a base fee of 0.0509 gwei | In dollars |
|---|---|---|---|
| Unlimited approval | 56,650 | about 0.0000029 ETH | about 0.007 dollars |
| Revoke (approval set to zero) | about 38,900 | about 0.000002 ETH | about 0.005 dollars |
These are example figures for one quiet morning, and they moved while we measured: the base fee was 0.0407 gwei a quarter of an hour earlier. Fees rise with congestion and differ on each Layer 2, so read the amount your wallet shows before you confirm. Do not expect a price of under a cent on a busy day.
Practice once on the Sepolia testnet, which ethereum.org names as the default testnet for application development. Allow 20 minutes, by our estimate. The ETH there has no market value, so the exercise risks nothing.
- Create a new wallet for testing, with no real funds in it, and turn on test networks in its settings.
- Switch to Sepolia and check that the network name is on screen.
- Get free Sepolia ETH from a faucet, as the ethereum.org networks page describes. You give only your public address, and a faucet that asks for anything else is not one.
- Open the testnet version of a well-known app that you reach from its official site, and start an action that asks for a token approval.
- Read the preview, then approve. Note the spender and the amount.
- Open Revoke.cash, enter the address, select Sepolia and find the approval.
- Revoke it, then reload the page and check that the line has gone.
A testnet approval cannot touch your mainnet funds: signatures are tied to a chain ID, 11155111 for Sepolia and 1 for mainnet. Be careful with anything sold as a testnet reward, though. Revoke.cash warns that scammers use fake testnet airdrops to obtain real mainnet approvals or seed phrases. Nothing on a testnet pays out, and nothing there needs your main wallet.
Step 4. Check URLs, contracts and addresses before you act
Our guide to avoiding crypto scams covers the general patterns, and our rug pull explainer covers projects built to vanish. For a DeFi user, the practical habit is the bookmark. Visit each protocol once from its documentation, or from the official site listed on DefiLlama, save the page and use nothing else. Search results are not a safe entry point: in December 2023, Scam Sniffer traced about 58.98 million dollars of thefts by one drainer that spread through Google and X ads.
- Open protocols from your bookmarks only, never from a reply, a direct message or an ad.
- Before approving, copy the spender address from the preview and compare it with the protocol’s documentation.
- Open that address on a block explorer. Look for published source code, its age, its activity and whether it is a proxy.
- Save regular recipients in your wallet’s address book, and paste from there or from the original source.
- Compare every character of the address, including the middle.
- Update wallet extensions only from the official store, and treat a “security fix” sent to you by message as hostile.
The address step earns its place. In a case reported on 20 December 2025, a user sent 49,999,950 USDT, close to 50 million dollars, to a look-alike address. The victim had done a test transfer of 50 USDT to the right address. Minutes later, the attacker’s tiny transfer sat in the history, and the victim copied the address from there. The first three and last four characters matched. On 31 January 2026, Cryptopolitan reported, citing Scam Sniffer, that another victim had lost 4,556 ETH, about 12.25 million dollars, the same way. Address poisoning needs no approval from you, only your habit of copying from history. A test transfer protects you only if the large transfer goes to exactly the address you tested.
The right URL is not proof either. Bybit’s attackers worked through a legitimate front end, and Trust Wallet’s malicious build was a version of the real extension, not a lookalike. So the checks overlap: what the wallet previews, what the device screen shows and what the documentation says should agree before you sign.
Step 5. Put large amounts behind a Safe multisig, and verify what it signs
A multisig wallet needs several keys to move funds, so one stolen key is not enough. Safe, the best-known smart-contract wallet of this kind, gives two simple rules on thresholds: use more than one, so no single account can act, and stay below the total number of signers, so one lost key does not lock you out and the others can replace it. Its help centre describes a common setup for an individual: three signers, one MetaMask and two hardware wallets, with a threshold of two, the second hardware wallet locked away as a backup.
- Decide on a total that would justify the extra steps. Only you can set it, and we do not suggest a figure.
- Prepare the signers, each with its own seed. Never keep two signer seeds in one place.
- Create the Safe from the official site you bookmarked. Check the network, since a Safe lives on the chain where it was deployed.
- Set the threshold, for example two of three.
- Send a small amount, then move it out again using two signers. Deploying and executing cost gas, so read the figure in your wallet.
- Test the backup signer once a year, and review the list of signers each quarter.
A multisig reduces the risk of one stolen key. It does not reduce the risk of several people signing the same false picture, as the history of DeFi hacks shows. At Bybit, Sygnia traced the route to a Safe{Wallet} developer’s Mac, probably compromised through social engineering, and then to altered JavaScript in the interface. The code that created the malicious transaction “originated directly from Safe{Wallet}’s AWS Infrastructure”, in Sygnia’s words. The real transaction was replaced by a delegate call to a contract the attackers had deployed, and that gave them control of the cold wallet.
On 1 April 2026, Drift on Solana lost about 285.3 million dollars, by BlockSec’s analysis. The firm says the attacker induced two of the five Security Council signers to pre-sign malicious transactions, through phishing or misleading requests, without stealing their keys. The attacker then held those transactions with durable nonces, a Solana feature that keeps a signed transaction valid until used. The lesson for a small Safe is simple: a signature can outlive the moment you gave it.

How to check a Safe transaction before signing
Safe’s own guide has a rule worth keeping: “If you can’t verify it, don’t sign it.” Its checks take a few minutes and work on any size of Safe.
- Read the destination, value, data and nonce in the interface and note them.
- Check the same fields on the hardware device, and compare them with your notes.
- Confirm that operation is 0, a simple call. A value of 1 means delegatecall, which Safe calls dangerous: get a technical person to check it.
- For a Safe on version 1.3.0 or later, confirm that safeTxGas, baseGas and gasPrice are 0, and that gasToken and refundReceiver are the zero address.
- Compare the hash shown on the device with an independent tool, on another device. Safe names OpenZeppelin’s Safe Utils and the safe-tx-hashes-util command-line tool.
- Simulate the transaction in Tenderly, ideally from a separate machine.
A matching hash shows that the device is signing the transaction you examined. It says nothing about whether that transaction is a good idea, so read the data too. For a modest balance, a hardware wallet and these habits may be enough. A Safe adds steps, and steps skipped under pressure protect nobody.
Step 6. What to do during an incident: a plan for the first hour
Write this plan down now and keep it offline, because you will read it with shaking hands. You will find advice telling you to revoke first and advice telling you to move funds first. Each is right in one situation and can cost you money in the other, because a revoke removes a permission and a thief who holds your key needs none. So the first move is a decision, and it depends on what the evidence shows. The table follows the causes Revoke.cash sets out, with the last two rows and the pending-signature row added by us.
| What you see | Likely cause | First move |
|---|---|---|
| Several tokens gone across chains or addresses, or native tokens taken as soon as they arrive | Seed phrase or key exposed | Move first. Revoking is useless here |
| One asset gone after you signed an approval, and an unknown spender on Revoke.cash | Token approval | Revoke first, at once |
| A permit or Permit2 signature you regret, with nothing taken yet | Pending signature | Check the Signatures tab. If you cannot cancel, move that token to another wallet of yours |
| Several pre-approved assets gone at once, with functions such as MatchOrders or BulkExecute on the explorer | Marketplace signature | Cancel on the Signatures tab if there is time, then revoke marketplace approvals |
| One asset gone, with no unexpected approval | Direct transfer you signed | Nothing to revoke. Report it and tighten the routine |
| A delegation you do not recognise | Delegate may control the account | Move first, then clear it inside your wallet |
| You cannot tell | Assume the key is exposed | Move first |
The last row is deliberate. Moving funds that were never in danger costs you a fee and a new address. Spending your time on revokes while a thief holds your key can cost whatever is left. Once the valuables are safe, Revoke.cash offers a way to confirm the diagnosis: send a very small amount of the native token to the wallet, and if it is swept at once, the seed is exposed.
- Stop signing. Disconnect from the site and close it. Disconnecting does not cancel an approval, so this only stops further damage from that page. Do not click anything sent to you about the incident.
- Find your row in the table. Open your address on a block explorer and on Revoke.cash from your bookmark. Looking up an address needs no wallet connection.
- With an exposed key, or when you cannot tell, take a different, clean device and create a new wallet with a new seed, ideally on a hardware wallet. Never type the new seed on the suspect machine. Every address from the old seed is exposed, so plan to leave all of them.
- Move the most valuable assets you can first, while the old wallet still has gas. Do not top it up to pay for the rescue: Revoke.cash warns that sweeper bots take incoming funds, often in the same block, so sending ETH for gas rarely works.
- With a safe key, revoke at once: sort Revoke.cash by newest to oldest, close the malicious approval, including any made through Permit2, and repeat on every chain where you signed. Here a small ETH top-up from another wallet is fine if you lack gas. If it cannot arrive in time, moving the approved token to another wallet of yours also puts it out of reach, since an approval only touches what that address holds.
- Check for open positions. An approved attacker can take collateral, and a withdrawal can bring a liquidation, as in the 1,576 ETH case above. A position left in an exposed wallet stays exposed.
- Open the delegations tab and clear from inside your wallet anything you did not knowingly accept.
- Once the funds are out, clean the suspect device: Revoke.cash advises backing up files and wiping it completely, and changing your important passwords. If you have no second device, its order applies: wipe first, then create the new wallet and move funds.
- Record everything: addresses, transaction hashes, site addresses, screenshots and times.
- Tell the exchange if the funds reached one, and the affected protocol if the problem is on its side, using their official channels.
- Report it to the police (see below). Do this even for small sums, because it creates a record.
For a malicious delegation, SlowMist’s Yu Xian suggested in September 2025 replacing it with your own and moving tokens out. For a Safe, a single exposed signer is less urgent, as long as the threshold still needs other keys: use the remaining signers to replace it, as Safe’s help centre describes.
Then expect the second attack. After the Trust Wallet incident, BleepingComputer described a fake repair site that asked users for their recovery phrase. Expect replies offering help, “recovery” agents and people claiming to be police. Revoke.cash states there is no way of recovering stolen assets on the blockchain itself, and the FBI’s IC3 warns that it does not work with non-law enforcement entities, such as law firms or crypto services, to recuperate lost funds. Nobody who asks for your seed phrase or an upfront fee is helping you, and we point readers to no such service. Our guide to what can realistically be done after a theft goes through the rest.
Where to report a crypto theft
In the United States, file at the FBI’s Internet Crime Complaint Center, the central hub for reporting cyber-enabled crime, at complaint.ic3.gov. In England and Wales, GOV.UK points to Report Fraud, online or on 0300 123 2040; the service replaced Action Fraud on 4 December 2025. In Scotland, GOV.UK says to report the crime to Police Scotland. In France, 17Cyber, run by the Police nationale, the Gendarmerie nationale and Cybermalveillance.gouv.fr, gives a diagnosis and advice. In Italy, the Polizia Postale portal takes online reports. Elsewhere, go to your national police. Tax treatment of a stolen asset depends on your country and your case, so ask a tax adviser.
The whole routine on one page
The times below are our own estimates. The list is short on purpose, because a routine that takes an hour a week will not last until March.
| Habit | When | Time | Tool |
|---|---|---|---|
| Open protocols from bookmarks | Each session | 10 seconds | Browser |
| Read the preview before signing | Each signature | 30 seconds | Wallet preview, Tenderly |
| Fund the burner with only what the app needs | Each new app | 2 minutes | Second wallet |
| Review approvals and delegations | Monthly, and after each airdrop claim | 10 minutes | Revoke.cash, Etherscan |
| Review Safe signers and threshold | Each quarter | 15 minutes | Safe |
| Reread the incident plan and test a revoke | Once, then yearly | 20 minutes | Sepolia |
If you do one thing today, learn how to revoke token approvals on your own address: paste it into Revoke.cash and count the permissions you had forgotten. The next lesson moves from your wallet to the protocols themselves, and how to judge one before you trust it with money.



