Skip to main content

Overview

Permit2 combines two contracts, SignatureTransfer and AllowanceTransfer, into a unified system. The SignatureTransfer contract facilitates signature-based transfers, bypassing token allowances and granting spend permissions only for the duration of the transaction. Conversely, the AllowanceTransfer contract manages token allowances, granting spenders permission to use a specified amount for a defined duration. Transfers conducted through the AllowanceTransfer contract are contingent upon proper permissions being set.

Resources​

For a comprehensive understanding of the Permit2 contract and its practical applications, refer to this explanation with examples.

Approving Permit2​

Before contracts can request users' tokens through Permit2, users must approve the Permit2 contract via the specific token contract. This is typically achieved by calling something like:

USDC.approve(permit2Address, totalAmount);

To fully leverage the benefits of Permit2, users should perform a max approval on the contract, where:

totalAmount = type(uint256).max;