A web application to revoke ERC-20 token approvals across multiple EVM chains in batch transactions.
- Scan and display all active token approvals across 8 EVM chains
- Batch revoke multiple approvals in a single transaction
- On-chain verification of allowances using multicall
- Automatic filtering of phishing/scam tokens and spenders
- Real-time transaction status updates
- Caching to reduce API calls
- Ethereum
- Base
- Arbitrum
- Avalanche
- Optimism
- Unichain
- Zora
- zkSync
Important: This app uses EIP-5792 (Wallet Call API) for batch transactions. Wallets may use EIP-7702 under the hood to enable smart account batching for EOAs.
Compatible Wallets:
- Ambire Wallet (Recommended)
- Coinbase Wallet
- MetaMask (with Smart Account enabled)
If your wallet doesn't support these standards, you'll see an error prompting you to install a compatible wallet.
- React + Vite
- wagmi v2 + viem
- RainbowKit for wallet connection
- Routescan API for approval discovery
- Alchemy RPC for on-chain verification
cd frontend
npm installCopy the example environment file and fill in your API keys:
cp .env.example .envRequired environment variables:
VITE_WALLETCONNECT_PROJECT_ID=your_walletconnect_project_id
VITE_ALCHEMY_API_KEY=your_alchemy_api_key
ROUTESCAN_API_KEY=your_routescan_api_keyNote:
ROUTESCAN_API_KEYhas noVITE_prefix because it's server-side only, protected by the/api/approvalsproxy.
npm run devnpm run buildPush your code to a GitHub repository.
Import the repository in Vercel Dashboard.
In Vercel project settings, add these environment variables:
| Variable | Description |
|---|---|
VITE_WALLETCONNECT_PROJECT_ID |
WalletConnect project ID from cloud.walletconnect.com |
VITE_ALCHEMY_API_KEY |
Alchemy API key from alchemy.com |
ROUTESCAN_API_KEY |
Routescan API key from routescan.io (server-side only) |
Security Note:
ROUTESCAN_API_KEYis protected by the/api/approvalsproxy and never exposed to the browser. Restrict your Alchemy API key to your production domain in the Alchemy dashboard.
vercel --prod- Connect your EIP-5792 compatible wallet using RainbowKit
- Click "Scan All Chains" to fetch all your token approvals
- The app verifies each approval on-chain using multicall
- Select the approvals you want to revoke
- Click "Revoke Selected" to batch revoke in a single transaction
- The app verifies the revocations on-chain
- Phishing and scam tokens/spenders are automatically filtered out
- All revocations are verified on-chain before and after execution
- The app only calls
approve(spender, 0)- it cannot transfer your tokens - No private keys are stored or transmitted
- API keys are restricted to your production domain
- Public RPCs are used for wallet network additions (not domain-restricted)
- Routescan CDN API: Token approval discovery across all supported chains
- Alchemy RPC: On-chain allowance verification via multicall
MIT