dmihal / eth-permit

Lightweight library for signing ERC-2612 permit signatures.
https://www.npmjs.com/package/eth-permit
139 stars 30 forks source link

How can we check whether a token supports permit? #10

Open tab00 opened 2 years ago

tab00 commented 2 years ago

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?

rkalis commented 1 year ago

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.