Permits and approvals

Contango requires permits and approvals to run a simulation of each trade and show users a firm quote on their entry or exit price, before they execute the final transaction.

Remember:

  • Anything shown on the UI before a permit or an approval is an estimated oracle value.

  • Anything shown after the signature of a permit or an approval is a firm quote and has a ✅ next to it.

When you open a position on Contango, by default you sign a gas-less permit. Contango uses permits wherever possible, to make the user experience smoother. You might still face the need to use approvals, e.g. when using a multisig or when permits are not available for some tokens.

Contango gives you the choice of selecting among Permit, Permit2, Approval: after clicking the ‘Review trade’ button, you can select your preferred option by clicking the dropdown arrow in the ‘Approve’ button.

Here below you have a quick overview of how permits and approvals are used on Contango (a more comprehensive explanation can be found on Ledger’s website):

What’s an Approval?

A token approval is a method to allow a smart contract or address to withdraw funds from your address. In other words, an approval is an on-chain permission that users grant to smart contracts to allow them to access a specific amount of their tokens without needing a wallet signature for individual transactions. It sets the so-called spending allowance. As the approval confirmation happens on-chain, there’s a gas fee associated with it.

On Contango, you can choose to use approvals, but this is not the default option. When using approvals you set the specific amount you want to approve: a high amount can help avoid further approvals later on and simplify your user experience, but at the same time you expose yourself to the risk of potential Contango exploits that could use this allowance and drain funds from your wallet. Revoke.cash is a useful tool to revoke any unwanted allowance.

What’s a Permit?

ERC-2612 introduced a new method of Ethereum token approvals known as Permit signatures. Permits allow you to grant token approvals by signing a message off-chain. In other words, it's a gas-less transaction that replaces an approval transaction by signing a piece of data inside your wallet. When using permits, the cost of setting an allowance will still be batched into the real transaction that you sign when opening a position, which results in a smoother user experience.

On Contango, permits are the default option for the majority of tokens. If a token does not support permits, Contango defaults back to Permit2. When signing a permit, this is only for the exact amount needed for the specific transaction you’re about to execute.

What’s a Permit2?

Permit2 is a new approval contract built by the Uniswap team that extends the benefits of ERC-2612 to all tokens. In other words, Permit2 allows you to use gasless approvals for any token, regardless of whether that token has integrated ERC-2612. In addition, Permit2 has automatic expiration built-in, eliminating the security risk that comes with lingering token approvals.

On Contango, permit2 is used as the best option to default to if permit is not available for a given token. Permit2 grant and infinite allowance once, just like approvals, but via an immutable and verified contract from Uniswap.

Last updated