Gasless approvals via signed messages.
Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\x19\x01DOMAIN_SEPARATOR// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Permit {
bytes32 public immutable DOMAIN_SEPARATOR;
// TODO PERMIT_TYPEHASH
constructor() { DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256("EIP712Domain"), block.chainid, address(this))); }
function digest(address owner, address spender, uint256 value, uint256 nonce, uint256 deadline) external view returns (bytes32) {
// TODO
}
}