eth-permit
eth-permit copied to clipboard
How can we check whether a token supports permit?
I'm developing a dapp with a smart contract that can receive ERC20 tokens. What's the best way for a dapp (using ethers
or web3
) to check whether a token has the permit
function, so that execution can fall back to using approve
if not?
I had just tried signERC2612Permit
with WETH on Rinkeby and it succeeded to create signature values, however when the smart contract tries to call permit
the transaction is reverted without a reason. I then checked WETH and found that that WETH doesn't have permit
.
Should signERC2612Permit
check for permit
before returning signature values, throwing an error if it doesn't exist?
What I do now is call contract.functions.nonces(DUMMY_ADDRESS)
and contract.functions.DOMAIN_SEPARATOR()
and see if they don't throw + return expected values (zero for nonces
and non-zero bytes for DOMAIN_SEPARATOR
.