Death to MetaMask
And Gas, and Bad Web3 UX
José.virtual | Sep 27, 2023
Yesterday, I spent $14 and 45 minutes of my life across three platforms in an attempt to buy one thing. This is not bad UX, this is a catastrophe of a “permissionless, instant settlement layer” and it must end. Here’s how.
My User Experience
This section is an anecdotal example of why Web3 has no users. It’s a terrifying and relatable read, but if you’d like, skip to the next section to analyze serious conclusions.
It all started when I was buying a ticket to the Zuzalu network state. I loved my first time in Montenegro and was excited to go again and exchange ideas with crypto’s brightest minds. There was only one problem - upon finishing the application, I was presented with this screen:
Admittedly, I do not normally use crypto to pay for things because the opportunity so rarely presents itself. But when seeing this, I nearly jumped up out of my chair in excitement. I quickly clicked on the only option I had and reached the “choose network” screen to see Optimism.
I had never used Optimism, but I had USDC on Ethereum, so did not think this would be a problem. I was not prepared for the ordeal that I, and countless others, would go through.
I first switched my network from Polygon to Ethereum Mainnet and transferred USDC from Virtual Lab's Gnosis Safe to my MetaMask. Next, I signed the transaction on several devices and checked my wallet to see that I received the tokens after about a dozen seconds. Here’s a walkthrough of what I had to go through:
If you’re curious where steps 1, 5, 6, and 10 went, they are opening my wallet, confirming and signing on my other device, and checking my MetaMask balance, respectively. One might also observe that a lot of the complexity here is surrounding Gnosis Safe, not MetaMask. It’s at this point I admit that MetaMask actually has some of the best Web3 UX out there. Without Consensys, we would be confined to QR codes and physical USBs…yuck! But MetaMask having the best wallet experience out there is a giant problem, because it is still terrible.
Here’s another thing: THIS WAS ALL JUST TO GET USDC FROM ONE OF MY WALLETS TO ANOTHER WALLET! For those counting at home, I battled my way past 10 different screens, paid $1.66, and lost several minutes of my life in signatures. This doesn’t even address the anxiety I go through ensuring I’m sending money to the right wallet, my devices are secure, or the fact that MetaMask’s hash is not human-readable and I really have no idea what I’m signing.
Simply, this was a bad user journey designed for crypto natives at best or literal machines at worst. If crypto is supposed to compete with credit cards and banks as a medium of exchange, it is failing. Had Zuzalu supported card, my information would have autofilled, and I would have been done and onto my next task in literal seconds.
What’s worse is that I hadn’t even brought USDC to Optimism yet, so I kept going. I researched bridges to ensure they supported native USDC transfers and would not wrap my token or deliver USDC.e. This means that I not only had to take the time to connect (and trust) the right bridge, but I needed to have the awareness to even check for this pitfall. 99% of planet Earth would have missed this.
Faced with paying gas from my MetaMask now, I realized I did not have enough ETH. This meant redoing the entire 10-step Gnosis Safe process again to move just a fraction of an Ether.
Skipping over the process of making another wallet-to-wallet transaction, here are the highlights with regard to bridging.
I chose OMOSwap, I don’t even remember why. This is another source of friction as the fact that there are a plethora of possible infrastructure providers that consumers must research, choose, and trust is insane. Imagine if you needed to select AWS or Azure for every website you visited or had to verify what banks your wires went through. I’m not saying there should just be one bridge, but it should be a decision by consumer products, completely abstracted away from the user. A stance hard-line security geeks take is that cryptography should be presented nearest to its purest form to ensure transparency and decentralization among software providers to their users.
This sounds great on paper, but it manifests itself in MetaMask presenting literal computer code for users to sign and the burden of picking our own bridges. This level of security and bad UX is a disservice to the entire community because it is so complex as to prevent the majority from taking advantage of it. Good UX increases security because it lowers the barriers to entry for users to easily protect themselves and decentralize their assets.
Okay. Now I have gas and USDC in my MetaMask. Now what? Viewer discretion is advised:
It cost nearly $6. At a time when gas fees are at near multi-year lows. Bull prices would have been double or triple, even spiking at 10x during demand pulls.
But! After 15 minutes of waiting for the transaction to clear, I was ready with my USDC. I loaded up the Zuzalu app and was confronted with an error I’d never seen before
It finally went away after closing out all of Chrome tabs.
Then, to my horror, I opened the app to see “insufficient funds.” Despite a $200 balance, there was no way for someone else to sponsor me and thus no way to move the tokens. I had to bridge again.
At this point, my frustration overtook my desire to document the experience, so here’s a 30-second summary of a 30-minute debacle. I paid another $6 in gas to move a measly $.20 in ETH over to Optimsm. After waiting 15 minutes for settlement, I was still unable to complete the transaction. I learned that the USDC had not bridged correctly, so I would need to swap it for a “different” USDC. First, I had to manually find the USDC token address and add it to MetaMask, so I could view which token had been added. I received the right USDC and finally finished the transaction.
How many people would have the energy to figure this out? Next to none-and it’s why crypto is down 50% compared to the highly correlated S&P in the same time period.
The tragedy here is that this could and must be done in just one click, not five dozen, one screen, not 20, one cent, not $14, and one second, not nearly an hour.
The Problem: Revoking Permissions, Multiple Gas Tokens, Apps, and 45 Minutes Gone
The entire problem here is that it is wholly unreasonable to expect a user to tolerate this friction. Here is a breakdown of the problem on the user level with completing a blockchain transaction like the aforementioned:
- Too much time is required
- The barrier to entry of expertise is unreasonable
- The tolerance for fees is too high
- The amount of necessary applications one must have preloaded, such as MetaMask, SAFE, USDC whitelisted, and a bridge, are not realistic
This problem is quite clear. What is less clear is the landscape at a technical blockchain level:
- Multiple types of tokens cannot be transacted simultaneously
- Gas cannot be sponsored despite full balances
- Gas tokens can change during bridging
- These interactions cannot be bundled together
- The actions cannot be performed without the user while maintaining security
This does not even touch on the fact that additional apps must be trusted, and separate gas limits must be added, and then revoked. Most users do not remember to revoke their balance limits across various applications. Even if they do, they are rewarded with needing to set the limit again, and paying more in gas and in their time.
Crypto is a revolution because it is truly yours. There is a burden that comes with ownership. It is the reason banks exist. As Uncle Ben would say, “with great power comes great responsibility.” But if we can put man on the moon, we can have our cake and eat it too when it comes to security and accessibility.
Fun fact: it cost $257 billion, inflation adjusted, for the entire Apollo project. Web3 Funds have raised over $100 billion. This can be done.
One of blockchain’s core promises is interoperability. When designing a website, it is useful to plug in a crypto wallet not only in the site, but also with email messaging and on-chain functions. Let’s take Zuzalu as an example. Because the event is invite-only, sending the payment does not guarantee entry. Had this been over Visa, there would be no way to atomically provide a ticket and take payment.
But because of interoperability, my 200 USDC could be put into a smart contract and only withdrawn into Zuzalu’s wallet once the event listener detected I had been accepted. The user has guarantees too, as a rejection automatically returns their funds.
But even this benefit is not enough when compared with the accessibility of credit cards, not to mention their astronomically higher adoption. Crypto must build not only a comparable product, but a superior one, if it is to compete with traditional cash in its own game. Users will not tolerate $14 in fees or 45 minutes in waiting online, nor will they wait 30 seconds in the grocery store line, nor convince their grandmother to write down and not lose a seed phrase.
Death to MetaMask and birth of mainstream crypto will be achieved by a completely decentralized application where users can join without friction, transaction without worry, and pay less than they otherwise would.
The Solution: Account Abstraction, Intents, and State Channels
The obvious answer to the reduction of onboarding friction is account abstraction. Smart contract wallets are phenomenal and will be instrumental in onboarding the next billion users into Web3. I do have three suggestions, however, to AA platforms as they begin their takedown of the fox.
The first is that the platform is not consumer focused enough. Obviously, the product is seamless and built with the consumer in mind, but it is still a B2B product. There has not been a single smart contract wallet that has achieved product-market fit with a B2C wallet. I was surprised to learn that even Coinbase’s wallet is not abstracted, with users required to write down 12 important words.
The second critique I have of AA in its current form is that they do not go far enough in removing onboarding and bridging complexity. In some instances, like games, I argue that wallets ought to be generated upon the mere opening of a page, a sort of “sign in as guest.” And perhaps once the user has gained some asset or won, they can be shown what the balance in their account would be, encouraging them to create a wallet. Another way AA can go further is with bridging. Plain and simple, cross-chain compatibility should be built directly into abstraction protocols.
My final issue with smart contract wallets is that they merely abstract the problem, rather than eliminating it—simply, account abstraction is not enough and other technologies must be utilized as well. While unnecessary clicks and interfaces go away, gas and latency largely remain. Although a significant amount of waiting is removed from humans not needing to use multiple applications, block finality remains. So, bridging remains latent and painful, and high frequency applications still cannot be brought on chain. Also, while gas is slightly helped as the cost of sending around gas tokens is removed, most of the cost remains and is just moved from the user to someone else.
Wallet generation still adds friction to onboarding; games and social networks cannot be fully on-chain; and high gas and bad latency restrict mainstream adoption and use cases. AA is a great step forward, but it is not enough.
One idea that has recently come into focus as a potential improvement to user flows is intents. The common description is that intents ask “what” should happen and not “how” it should happen. Essentially, responsibility for gas optimization is offloaded from the user while aligning incentives. A hypothetical user might say she is willing to pay $200+gas for this Zuzalu ticket, giving her the cheapest and fastest route. As opposed to transactions, where I had to pave the road myself without all the information and ever-changing gas prices.
The implementation of intents has several effects. The first is a superior user experience and the elimination of some information asymmetry. This implies a delegation of responsibility without delegating too much power. Intents also allow for transaction batching, meaning spend permissions and swaps can be called at once, and perhaps even be revoked at the same time. Gas tokens are also abstracted away from the user, and USDC/USDT might be the only token needed in a consumer’s wallet.
There are some risks associated with intents that also need to be addressed. I recommend expert Uma Roy’s talk on the subject or Paradigm’s article to learn how these tradeoffs are managed as blockchain replaces transactions with intents.
This leads to the final piece of blockchain infrastructure that solves the Web3 UX problem and brings about Death to MetaMas: state channels.
At a high level, state channels involve depositing of funds into smart contract escrow accounts, so that transactions can be signed and sent over a P2P network to be cashed in later, bypassing intermediate steps in the blockchain. Because the collateral can not be moved, and the receiving party has a legitimate signature, there is no need to send the transaction to the blockchain.
The almost forgotten technology behind the Lightning Network is coming to life again through ZK state channels, which offer multiparty functionality and dynamic entering and exiting. ZK state channels can now be used to reduce frictions and solve Web3 user experience thanks to new techniques and innovative cryptography. To learn about the tech behind ZK state channels, check out this piece where I discuss a specific ZKSC, Virtual Lab’s Virtual Rollups.
ZKSCs enable three killer features: zero-gas, Web2-style UX, and instant finality.
This means that recurring transactions have no gas or latency and are virtually indistinguishable from a Web2 application, which is the goal. The problem before was that state channels could only support two users at a time, and those users had to be predefined, which greatly limited utility. Now, ZKSCs can handle unlimited users, infinite transactions, and allow players to leave and enter without on-chain transactions.
If UX was a puzzle of onboarding, continued use, latency, and cost, then AA, intents, zero-knowledge state channels and other innovative technologies must come together to deliver the experience that users are accustomed to in Web2. Blockchain has brilliant cryptographers that have secured our money and transferred ownership to the people for the first time in history. This got us to where we are, but to get us to where we need to go, Wozniak must step down and Jobs must stand up.
MetaMask must fix this, or we will.