Make claimWithSignature (see how UniSwap does it) Basically recover signer, then check mapping nonce[signer] and make sure current nonce is larger than last one, and save it in that same slot.