Permit2 and EIP-712 signature inspector
Paste an EIP-712 typed-data payload and read what you would actually be authorising: which token, which spender, how much, and for how long.
Why this matters
A Permit2 signature is an off-chain approval, so it costs no gas and produces no transaction for you to review afterwards. That is what drainers exploit: an unlimited (MAX_UINT256) allowance with a deadline decades out lets a spender move the whole balance of that token whenever it likes, from one signature you clicked through.
Load an example
What you would be signing
| Field | Value | What it controls |
|---|---|---|
| Primary type | PermitSingle | Which message structure is being signed |
| Verifying contract | 0x000000000022d473030f116ddee9f6b43ac78ba3 | The contract that will execute this signature |
| Token | 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 | The ERC-20 the allowance applies to |
| Spender | 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD | The address allowed to move that token for you |
| Amount | Unlimited (type(uint256).max) | Unlimited — the entire balance of this token, now and in future |
| Deadline | 1924905600 (Tue, 31 Dec 2030 00:00:00 GMT) | Effectively permanent until you revoke it |
| Nonce | 0 | Stops the same signature being replayed |
| Chain ID | 1 | The network it is valid on; a mismatch enables replay |
If you have already signed something like this
- Revoke the permit now, on Revoke.cash or Etherscan's token approval checker. An unlimited allowance stays live until revoked.
- Check the spender against the router you meant to use. Uniswap's Permit2 is
0x000000000022d473030f116ddee9f6b43ac78ba3; anything else claiming to be it is not. - Confirm the chain ID matches the network you are on, or the signature can be replayed on another chain.