Closed mirceanis closed 3 weeks ago
I have looked into this for a bit and I am pretty confident this isn't a bug in this library. Instead it is a symptom of mixing the old and new behaviour of serializeError
in eth-rpc-errors
/ @metamask/rpc-errors
.
Most of the stack, including this library is using the new error serialization either directly through @metamask/rpc-errors
or through @metamask/json-rpc-engine
, but the extension is still using the old version: https://github.com/MetaMask/metamask-extension/blob/develop/app/scripts/metamask-controller.js#L18
As far as I can tell, simply bumping json-rpc-engine
in the extension should fix this: https://github.com/MetaMask/metamask-extension/pull/22875
I just tested this with https://github.com/MetaMask/metamask-extension/pull/22875 and it seems to have fixed it.
Since this is not a bug in this library, but rather a result of using it with an incompatible version of json-rpc-engine
, I will close this as fixed.
ENS resolution sometimes uses CCIP read (eip-3668) to resolve an address. That relies on a reverted execution being interpreted as a redirect. When the provider used to perform such a read is managed by this middleware, the read operation fails. My guess is that the reverted execution is somehow wrapped such that the error is no longer interpretable.
This bug showed up after the upgrade from v13 to v14 of this lib in the MetaMask extension.
The environment to reproduce it has
ethers@6.x
as a dependency, and a simple test to reproduce would go along the lines of: