In 2017 I pivoted my little company, Balance, from fintech back to Ethereum when I watched $ETH increased 1000x in value. We focused on the wallet problem again and made huge progress.
Balance pushed out beautiful web interfaces, the WalletConnect standard, a proof-of-concept mobile app, and lots of new design patterns to the Ethereum community.
Almost 8 years later, I am still thinking about wallets—why?
This summer Apple announced something that totally changed the game for the mobile web: an open API for extending mobile Safari. The mobile web for iOS users is dominated by the default Safari browser that ships with every version of Apple’s mobile operating system.
I had not realised how big of a deal this would be until I tried the 1Password Extension on iOS 15 inside Safari on my iPhone. 1Password went from being a sideshow app that I needed to bounce into to a system that was interwoven with the websites I was using.
The password entry API Apple created a few years ago was a reasonable solution but it was always fairly restrictive. The Safari Extensions API allowed the 1Password team to fully express themselves and ship something magical.
It instantly became clear to me that someone was going to build an Ethereum wallet that takes advantage of this new system. Of course, my brilliant friend Faraaz had figured it out the minute the API was announced months before.
I started mocking up a prototype and shared it on Twitter. The response from the community was absolutely fantastic. We got a bunch of people into a Quill Chat and started hacking away.
Within 2 weeks, Dimitar Nestorov had hacked together a working prototype by forking MetaMask and putting it inside an Extension.
This totally de-risked the project. We know it can be done and now we need to do it well. That will take more time and resources which I am happy to invest.
MetaMask launched in 2016 as a Chrome Extension. It linked Ethereum to the desktop web through the browser. It changed everything.
5 years on, I believe wallets that launch with Safari Extensions will have the same impact. Ethereum is coming to the mobile web. We are going to weave together the phone and the protocol seamlessly.
Gas costs are too high for regular people. There are lots of efforts to fix it from many amazing teams. They have delivered blazing fast systems with lots of security, speed, and cost trade-offs. Wallets have not kept up. It is almost impossible to use Ethereum Layer 2’s and sidechains on your iPhone. We need to fix this ASAP. We need to interact with multiple protocols with ease.
I recently visited Launch House in LA and had the pleasure of meeting one of the founders of Internet Camera. He was using IPFS for storage (Arweave soon!), Ethereum Name Service for identity, and Polygon for smaller interactions. He is blending together multiple protocols to make a great product—it is amazing!
Today, wallets need to switch between networks. You have to manually add the details of the network and then opt into each one every single time. It is ridiculous. We need wallets that smoothly communicate with every Ethereum-secured and EVM-based protocol. You should be able to get the job done and the wallet can figure out the complexities on the backend. Just like you do when you interact with top quality web applications today.
Designing for the merge, a sharded base layer, optimistic roll-ups, side chains, zero knowledge systems, and all kinds of new protocol upgrades is going to be a monumental task. It cannot be done by a single company. It will have to be done by a community.
Ethereum is an open source project to its core. Today, there is not a canonical open source client for iOS written in native code (Swift / Objective-C) for interacting with Ethereum with a normal wallet setup:
All of these teams have made a set of trade-offs based on their biases and incentives. I respect nearly all of them. Shipping secure wallets is really damn hard.
However, I still find myself wanting to tinker with a wallet tool that is truly open source and native to iOS. I want to explore and play. I cannot do that today and neither can curious developers.
Want to join us?
Send me a DM on Twitter.