All Collections
Permit - 712 signed token approvals - and how they work on 1inch
Permit - 712 signed token approvals - and how they work on 1inch

How 1inch makes swapping easy with the replacement of token approvals

Natalia avatar
Written by Natalia
Updated over a week ago

The success of ERC-20 standard tokens and their associated utility are undeniable in the Ethereum ecosystem. However, on a protocol level, the functionality of these tokens remains quite limited due to lack of abstraction within their "approve" method.

Simply put, users have to hold ETH on their balance to be able to interact with any smart contract on Ethereum. ETH is required to pay gas costs while sending an additional transaction aka approval - a permission to a specific smart contract to spend your token.

This issue was addressed in the EIP-2612 and the solution comes in the elegant form of "permit" method added to the token structure.

Permits allow anyone to authorize and swap a token in one simple transaction.

The 1inch network user interface supports permit function on these tokens.

You can also check if a specific token supports this method by reviewing its contract on the block explorer:

From the user experience perspective, this innovation replaces an approval transaction (for the cases when an approval wasn't granted previously) with signing of a piece of data inside your wallet. It eliminates the need to pay additional gas fees and creates a much smoother swap experience.

Here is how the permit parameter works on 1inch:

  1. Set a pair of tokens you want to trade;

  2. If the "You Pay" token supports the permit method, and you haven't given an allowance to the 1inch smart contract, you will see the option "permit and swap" on the UI; hit the button;

4. Sign the data inside your wallet application;

5. After signing, the permit will be valid for 30 min - the period given to a user to execute a swap, so proceed with the swap;

See a full list of available permit tokens here.

Questions, comments, concerns?

Feel free to reach out to us in the live support chat

Did this answer your question?