Skip to main content
Permit2 is a universal token approval contract that enables signature-based approvals and transfers. Developed by Uniswap Labs, it improves upon EIP-2612 by providing a single contract for managing token permissions across all ERC20 tokens, even those that don’t natively support permits. Contract Address: 0x000000000022D473030F116dDEE9F6B43aC78BA3 Deployment Status: Default preinstall Audit Reports: Multiple audits available

Key Benefits

  • Universal Compatibility: Works with any ERC20 token
  • Gas Savings: One-time approval to Permit2, then signature-based transfers
  • Enhanced Security: Granular permissions with expiration times
  • Better UX: Gasless approvals via signatures
  • Batching Support: Multiple token operations in one transaction

Core Concepts

Two-Step Process

  1. One-time Approval: User approves Permit2 to spend their tokens
  2. Signature Permits: User signs messages for specific transfers

Permission Types

  • AllowanceTransfer: Traditional allowance model with signatures
  • SignatureTransfer: Direct transfers using only signatures

Core Methods

Allowance Transfer

Signature Transfer

Usage Examples

Basic Permit2 Integration

Batch Operations

Handle multiple tokens in one transaction:

Gasless Approvals

Enable gasless token approvals using meta-transactions:

Advanced Features

Witness Data

Include additional data in permits for complex protocols:

Nonce Management

Permit2 uses unordered nonces for flexibility:

Expiration Handling

Set appropriate expiration times:

Security Considerations

Best Practices

  1. Validate Signatures: Always verify signature validity
  2. Check Expiration: Ensure permits haven’t expired
  3. Nonce Tracking: Prevent replay attacks
  4. Amount Limits: Set reasonable amount limits
  5. Deadline Checks: Validate signature deadlines

Common Attack Vectors

  • Signature Replay: Mitigated by nonces
  • Front-running: Use commit-reveal or deadlines
  • Phishing: Educate users about signing
  • Unlimited Approvals: Set specific amounts

Integration Patterns

DEX Integration

Payment Processor

Comparison with Alternatives

Common Issues

Libraries and SDKs

Further Reading