I have been thinking a lot about what the future of wallets look like and how we streamline the on-boarding of new users and I’ve come up with a few thoughts. I would like to start a dialogue with everyone and see how others in the space see the future. I also feel like there is a lot of fragmented and duplicate work is going on right now and it would be great to consolidate our efforts a bit.
I believe smart contract wallets will eventually account for the majority of wallets in use. I think Universal Login is a great example of how we’ll use smart contract wallets in the future. I foresee smart contract wallets becoming what we know today as our bank account and it will be ubiquitous with storing money.
We’re a long way from that and I think there are a couple core issues that need to be overcome to reach this.
First off, on-boarding needs to be easy. It is unrealistic to get new users into dapps and expect them to signup for the dapp and a wallet at this time. The dapp should be able to create a contract wallet for their user and store an ephemeral key on their device. Once the user decides its time to upgrade to a real wallet, that contract should either be able to plug directly into a real wallet interface or it should be able to be migrated to a more fully featured contract like Gnosis Safe.
All wallet contracts should implement a core set of features. Every dapp on the planet should be able to interact with any smart contract wallet, regardless of what extra modules / feature are included. In this same vein, smart contract wallets should be mobile. If one day the wallet provider I use does something I don’t like, I should be able to pack up my contract and move everything over to a different provider with little friction. I imagine it like being able to move all your money / personal info / history from one bank to another at the press of a button.
In order to address the issues I’ve raised, it seems like there are two avenues we can take: migrations & interoperability. I’d argue we need both.
Interoperability (between dapps and wallet UIs) is the ideal route to take, because it doesn’t rely on issuing a new contract wallet. However, I think that if this is the only route we explore we will end up in a corner by ourselves with a bunch of modules. I believe that also setting a standard for migrating between contract wallets early will avoid this and allow development to continue and improve the experience without restrictions.
This was a bit of a brain dump, I look forward to hearing what some others in this space are thinking! Please direct me to any existing EIPs or discussions that may be relevant.