I have seemingly metamask related problems when executing one function of one of our contracts.
This is a ERC721 contract, following closely the specification found here : htt***ps://eips.ethereum.org/EIPS/eip-721
I can basically call every function of this contract, but the approve function. Calling the approve function trigger metamask, and then, it get stuck on the loading screen right before allowing us to confirm the transaction.
Our contract is here : htt***ps://github.com/Perpetual-Altruism-Ltd/myNFT-Bridge/blob/master/Codebase/Bridge_Contracts/contracts/manipulator/721/IOU.sol
I tried with remix to rule out our own web3 implementation.
I tried with different browsers (brave, firefox, chrome).
I tried to downgrade metamask version to 10.10.2 and 10.0.0 and it worked fine. But no luck with the 10.13.0 one.
Here what happen when calling approve. Just stuck there.
htt***ps://ibb.co/99h2DPc
It get even weirder, is if i rename the function, let’s say “approveMe”, without changing a thing in it, it go through.
There is a workaround, but will need you to redeploy / update your contracts if by chance they support some kind of upgradable proxy (1538, diamonds …).
See htt***ps://github.com/MetaMask/metamask-extension/issues/14518 discussion thread.