Oh metamask....

Bumps in the road and silver linings...

Oh metamask....
Photo by charlesdeluvio / Unsplash

Contact stealmycrypto@notmetamasksupport.gg for speady resolution....

First of all, it's been a while! Sorry about that. Things have been busy. How are things with you?

I'm glad to hear it. Or I'm sorry that happened. But I did ask, and I do care.

Pushing out a short update to share a (minor) annoyance with you all. A bump on the road.

Metamask recently pushed out version 10.22.2 of the world's most popular browser extension crypto wallet. v 10.22.2 is probably awesome, there may be all sorts of amazing features there.

But ONE feature that most interests me is this: you can no longer transfer ERC20s with 0 decimals.

I am 99.99% sure this is a bug, not an intended feature. Having 0 decimals is clearly unusual, but is  mathematically perfectly acceptable (decimals are just a convention for our convenience after all, everything on-chain is an integer).

And I know for sure one token that uses it: the EPS API (pseudo)token that allows our headless protocol!

You know, this guy:

So, I contact metamask to let them know about the issue. I figure it's going to be simple. I'm not expecting a bug bounty or anything, just a developer reporting an issue. My experience went something like this...

[20 minutes trying to find how to contact them, punctuated by trying a tweet even though I KNOW that will unleash the bot-hordes of Hades].

Jump through some hoops, am finally talking on chat with a person!

Me: Hi! In v10.22.2 you've introduced a bug where trying to transfer a token with 0 decimals hangs the extension.

Metamask support: You are having trouble with a transfer?

Me: Well, sorta, but also no. Metamask can't handle 0 decimals anymore. I've created stub contracts on testnet that prove this if you want the addr...

Metamask support: Can I have your wallet address please.

Me: Which wallet?

Metamask support: Your wallet.

Me: Which one, the one I did the testing with?

Metamask support: The one with the stuck transaction.

Me: There is no stuck transaction.

Metamask support: Sir, if there is no stuck transaction then why are you here.

Me: That's just it, I can't even get to the point the transaction is stuck because Metamask can no longer send the transaction far enough for it to get stuck.

Metamask support: Can I have your wallet address please.

Me: Sure, it's <insert here>

Metamask support: Thank you. Do you have the transaction number for the stuck transfer?

Me: Umm... No?

Metamask support: I can send you instructions to reset your wallet, that often helps with stuck transactions.

Me: And I will keep those instructions to hand for whenever I have a stuck transaction. In the meantime can I just send you a few sentences that you pass on to second level support?

Metamask support: Please try the instructions I send you first.

Me: *sad face*

This went on for a while, and then to the person's credit they allowed me to describe the fault with Metamask and created a ticket to push up the foodchain.

OK, I thought. This is progress!

48 hours later I got an email with instructions on how to reset my wallet to help clear my stuck transaction. . .

DIY

Photo by OPPO Find X5 Pro / Unsplash

I had a sudden epiphany: this was going to take a long time to get sorted, wasn't it?

If indeed it *gulp* ever get's sorted...

So, with that in mind, I did the only sensible thing. I spun up VS code and gave the EPSAPI token 18 decimals, ran some tests, wrote a migration script to pull existing registrations from the old register, and redeployed to mainnet.

Metamask you owe me about 0.1 ETH in gas fees...

But some good news!! While waiting to see if Metamask would sort the issue I did some salt mining for a good create2 salt for the new register, and we now have a sweet many-leading-zeros address for EPS:

0x0000000000000aF8FE6E4DE40F4804C90fA8Ea8F

Geeky? Yes. But we all have a weakness.

If you added the old EPS address to your wallet you can go ahead and remove it and replace with the new one. Your proxy records are all intact having been migrated to the new register.

There is now even a handy button on the EPS app to add the EPSAPI token for you (app.eternalproxy.com).

If you press this Metamask (and other wallets) will ask if you want to add that ERC20 to your wallet. This doesn't connect your wallet to the app in anyway, it's entirely at arms length, with the EPS app remaining the world's first crytpo app you don't connect to.

Stay safe out there!