EVM allowance
Understand EVM allowance methods for Omniston and choose between EIP-2612, Permit2, and native ERC-20 approve.
This document is the main entry point for choosing the right EVM allowance method for an Omniston integration.
It answers two questions:
Which allowance method should an integrator use for a given token or product flow?
Once that allowance method is chosen, which fields should be sent to Omniston?
This document is about EVM allowance methods and the corresponding Omniston payload fields. For signature shape rules based on wallet kind, see EVM Signature. For a dedicated explanation of what wallet kind means, see EVM Wallet kind.
Supported allowance methods
Omniston EVM swaps can rely on three different allowance methods:
1. EIP-2612
Official reference: ERC-2612
This is a token-native permit-based allowance method defined by the token contract itself.
the token exposes a
permit(...)functionallowance can be created from an EIP-712 signature
no separate approval transaction is needed for that allowance update
2. Permit2
Official reference: Permit2 overview
This is a generalized permit system provided by the Uniswap Permit2 contracts.
the token is first approved on-chain to the Permit2 contract
later spender permissions can be granted by Permit2 signed data
this is useful when the token does not support EIP-2612 but a signature-based allowance method is still desired
Permit2 is usually a hybrid flow:
one initial gas-paying token approval to Permit2
then off-chain permit signatures for later orders
3. Native ERC-20 allowance
Official reference: ERC-20
This is the baseline ERC-20 model.
the wallet sends an on-chain
approve(spender, amount)transactionthe spender later uses
transferFromno off-chain permit is attached to the Omniston order payload
This method is the fallback when no signature-based allowance method is available.
Choosing an allowance method
There are really two separate decisions:
Decision A: What does the token support?
If the token supports
EIP-2612, you can use token-native permit.If it does not support
EIP-2612, you can still usePermit2if your integration supports the Permit2 setup.If neither is available or desired, use native ERC-20
approve.
Decision B: What kind of user flow do you want?
Choose EIP-2612 when:
the token supports it
you want the most direct gasless allowance path
you prefer token-native semantics over an external permit system
Choose Permit2 when:
the token does not support
EIP-2612you still want orders to use signatures after initial setup
you are comfortable requiring a one-time approval to the Permit2 contract
Choose native ERC-20 approve when:
no signature-based path is available
the integration wants the simplest universal fallback allowance method
a normal on-chain approval transaction is acceptable
Allowance methods by wallet kind
Use this matrix as a compatibility shortcut after checking token support. For background on these wallet categories, see EVM Wallet kind.
Wallet kind
EIP-2612
Permit2
Native ERC-20 approve
EOA
yes, gasless
yes, gasless after initial approval
no
Delegated EOA
yes, gasless
no
yes
Contract wallet
no
no
yes
How Omniston interprets allowance data
From Omniston’s point of view there are only two payload modes:
Mode 1: Allowance already in place
Use this when allowance is already available through native ERC-20 approval.
In this case:
omit
encodedPermitDataomit
permitSignatureomit
usePermit2
Mode 2: Signed permit attached
Use this when the order should carry a signed permit.
In this case:
send
encodedPermitDatasend
permitSignaturesend
usePermit2
Meaning:
usePermit2 = falsemeans the permit is anEIP-2612permitusePermit2 = truemeans the permit is aPermit2allowance permit
Omniston payload examples
These examples focus on the allowance-method part of the integration, including permit-based flows where applicable, while keeping the setup code needed to understand each method end to end.
Example 1: EIP-2612
Not all ERC-20 tokens support EIP-2612, so support needs to be checked for each token individually.
This example uses pUSD on Polygon 0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB.
What this means:
encodedPermitDataencodes the signed token-native permit payloadpermitSignatureis the corresponding permit signatureusePermit2: falsetells Omniston that this is anEIP-2612permit
How to derive permitSignature from the wallet signature depends on wallet kind. See EVM Signature.
Example 2: Permit2
This example uses USDC on Base 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
This example uses the Permit2 contract 0x000000000022D473030F116dDEE9F6B43aC78BA3.
Permit2 usually has two parts in the integration flow:
one-time ERC-20 approval to the Permit2 contract
later off-chain Permit2 signature attached to the Omniston payload
Part 1: Approve the token to Permit2
Before using Permit2 signatures, the token usually needs a one-time ERC-20 approval to the Permit2 contract. That approval is still a regular on-chain transaction, so the wallet needs enough native gas token to submit it.
After this approval exists, later orders can use Permit2 signed data.
Part 2: Attach the Permit2 allowance permit to the Omniston payload
What this means:
encodedPermitDataencodes the signed Permit2 allowance payloadpermitSignatureis the corresponding Permit2 signatureusePermit2: truetells Omniston that this is a Permit2-based permit
How to derive permitSignature from the wallet signature depends on wallet kind. See EVM Signature.
Example 3: Native ERC-20 approve
Use this when the wallet already granted allowance by a normal on-chain approve.
What this means:
allowance is expected to already exist on-chain
Omniston does not receive permit data
Last updated