diff --git a/contracts/UniswapV2ERC20.sol b/contracts/UniswapV2ERC20.sol index b925ffb..1c8b89d 100644 --- a/contracts/UniswapV2ERC20.sol +++ b/contracts/UniswapV2ERC20.sol @@ -74,19 +74,12 @@ contract UniswapV2ERC20 is IUniswapV2ERC20 { return true; } - function permit( - address owner, address spender, uint value, uint nonce, uint deadline, uint8 v, bytes32 r, bytes32 s - ) - external - { - require(nonce == nonces[owner]++, "UniswapV2ERC20: INVALID_NONCE"); + function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, "UniswapV2ERC20: EXPIRED"); - require(v == 27 || v == 28, "UniswapV2ERC20: INVALID_V"); - require(s <= 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0, "UniswapV2ERC20: INVALID_S"); bytes32 digest = keccak256(abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, - keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonce, deadline)) + keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) )); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, "UniswapV2ERC20: INVALID_SIGNATURE"); diff --git a/contracts/interfaces/IUniswapV2ERC20.sol b/contracts/interfaces/IUniswapV2ERC20.sol index fa1f5d4..b3ba001 100644 --- a/contracts/interfaces/IUniswapV2ERC20.sol +++ b/contracts/interfaces/IUniswapV2ERC20.sol @@ -19,8 +19,5 @@ interface IUniswapV2ERC20 { function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); - function permit( - address owner, address spender, uint value, uint nonce, uint expiration, uint8 v, bytes32 r, bytes32 s - ) - external; + function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; }