ERC-20 Permit: Signatures, Nonces and Deadlines
Understand permit-style token approvals, track nonce and deadline context, and avoid confusing an off-chain signature with an executed allowance change.

Overview
When translating these concepts into an integration, keep the scope described by the wallet history api with the result. The examples in wallet transaction history and smart contract event logs show how the same distinction affects neighbouring data questions.
Permit-style approval allows a signed message to authorise an allowance update under a token’s implementation. Producing a signature and successfully executing that authorisation are separate events.
Verify the signed domain
The domain binds a signature to context such as the verifying contract and chain. The owner nonce and deadline help constrain replay and validity. Implementations differ, so inspect the actual supported interface. A generic typed-data prompt should show which contract, spender, amount and deadline the user is being asked to authorise.
Worked example: a signature that expires
A user signs an approval with a deadline, but the permit transaction is submitted after that deadline. The signature existed, yet the allowance update can fail. Store the signing request separately from the receipt and resulting state. A UI must not report an active permission solely because a signature was obtained.
Model execution and revocation carefully
Check the nonce and allowance at the relevant block after execution. Test wrong-chain domains, reused signatures, deadline boundaries and contract-wallet compatibility where supported. Never log full reusable authorisation material unnecessarily. If a permission is later changed, retain the sequence of observations instead of rewriting the earlier signature record as if it had never existed.
A practical acceptance test
Test a valid signature before its deadline, the same signature after successful nonce consumption and a signature under another chain domain. Keep signing evidence separate from execution outcome. The allowance label should change only after the applicable accepted execution and state check, not when the application merely receives a signature-shaped string.
Questions about the topic
Frequently asked questions
Is a signed permit already an on-chain approval?
No. The authorised operation still needs successful execution.
Are all permit interfaces identical?
No. Validate the token’s actual signature and domain rules.
Standards & technical documentation