From 865cdb0e5c3797586ef7f5dbecb0e3d3bb03101f Mon Sep 17 00:00:00 2001 From: Michael De Luca Date: Fri, 1 Mar 2024 06:14:44 -0500 Subject: [PATCH] feat: nonces increment optimization --- src/ERC20Extended.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ERC20Extended.sol b/src/ERC20Extended.sol index e526a3e..6db0a5c 100644 --- a/src/ERC20Extended.sol +++ b/src/ERC20Extended.sol @@ -146,14 +146,14 @@ abstract contract ERC20Extended is IERC20Extended, ERC3009 { ) internal virtual returns (bytes32 digest_) { _revertIfExpired(deadline_); - uint256 nonce_ = nonces[owner_]; // Cache `nonce_` to stack. + _approve(owner_, spender_, amount_); unchecked { - nonces[owner_] = nonce_ + 1; // Nonce realistically cannot overflow. + // Nonce realistically cannot overflow. + return + _getDigest( + keccak256(abi.encode(PERMIT_TYPEHASH, owner_, spender_, amount_, nonces[owner_]++, deadline_)) + ); } - - _approve(owner_, spender_, amount_); - - return _getDigest(keccak256(abi.encode(PERMIT_TYPEHASH, owner_, spender_, amount_, nonce_, deadline_))); } }