Operations
A permit entry identifies a token, a recipient or spender, an amount, and an operation mode.
The current interface uses
tokenKey, a bytes32 value. For an ERC-20 token, this is its address left-padded to 32 bytes. NFT token keys use a different encoding; see the Permit3 interface.
Authorization
Token approval and a Permit3 signature are separate requirements. For an ERC-20 transfer, the owner must first approve Permit3 in the token contract. The signature then authorizes the specified operation through Permit3. Signed permits include an owner, salt, deadline, timestamp, and permit hash. The EIP-712 domain usesname: "Permit3", version: "1", and chainId: 1, including when execution occurs on another chain. The permits themselves identify the execution chain.
For multi-chain permits, a Merkle root commits to the chain-specific permits. Submit the matching proof on each chain. Revoking or executing a permission on one chain does not itself submit a transaction on another.
Witnesses
Witness permits include additional typed data in the signature. Your application must validate what that data means before taking action. Adding a witness hash does not automatically enforce its business conditions.Deployment
The Permit3 repository lists0xEc00030C0000245E27d1521Cc2EE88F071c2Ae34 as the deterministic deployment address. Check that the expected contract is deployed on your execution chain before requesting approvals.
