DNS Smart Wallets: Account Abstraction on Tezos
In our previous post on Social Rollups, we caught up with Marigold developer Daniel Hines (since publication, Daniel announced he is leaving Marigold and will be starting his own project). During that chat, we discussed account abstraction and smart wallets. The notion of identity encompasses a lot more concepts than just a wallet address. We'll dive into what account abstraction is, why it's important, and how we've incorporated that into what we simply call Smart Wallets.
Wallet creation is intimidating. You're given a giant seed phrase you're told to remember and keep safe forever or else you're going to lose all your money. People with more experience keep saying things like "not your keys, not your crypto" so managed, custodial wallets sound terrifying.
With account abstraction, you can make it easy to create a user friendly experience for wallets that are easy to remember and mange. They can add multiple wallets to their account. You can help first timers make a safer, cold wallet and an active hot wallet. Everyone can get a username that covers all their wallets.
My current wallets work just fine, why change?
Right now in Web3, many people run with the notion that your identity is the wallet address. However, using it as an identity breaks down at every step you interact with it like that.
You are more than just a wallet
When you create a wallet, you get an address you can't even remember. Imagine if our names worked like this. No one can remember the addresses and these are supposed to be their identity. Of course you could buy a Tezos domain, to make it easier to remember your wallet address, but the reality is doing that is still an extra step and you're likely to have more than one wallet. What do you do then, buy multiple domains? Which domain is really you?
"On Tezos one private key equals one account" - Daniel Hines
Every web3 service treats each wallet as a separate account
The next problem is each time you want to use a blockchain service, you have to log in with this wallet, but these blockchain apps and services assume you're just that one wallet. If you have to juggle things between wallets, you have to do that on your own and probably incur gas fees. This is a huge hassle because logging into one wallet is hard enough. You already have to use additional tools like browser extensions and phone apps to even sign in and manage your wallets because you can't remember the seed phrase you need to use to sign in. Why would people choose this if they have alternatives?
Treating wallets as separate accounts doesn't work for the majority of users because the average cryptonative has 3 wallets. They're managing between cold storage and active wallets for their crypto and NFTs. Often they hold crypto across different blockchains and not all wallets work for every chain people might use. People will spin up burner wallets whenever they're testing out services as it's a best practice to avoid potentially malicious contracts that would have drained all of their assets.
You can't use wallet addresses like names
If you want to send some crypto or an NFT to a friend, you have to remember their wallet address. But no one knows their addresses, so you have your friend copy, paste, and verify it is an exact match through some other texting app. You don't want to accidentally send valuables to the wrong address; you can't undo it because it's immutable. That was the whole point of blockchain in the first place, right? Everything is jumping through a bunch of hoops so only the most dedicated people stick with it.
Wallets and ledgers of transactions don't work socially
Regular people set up accounts on Venmo, Paypal, or Zelle to pay each other. On Venmo I can send money to @Shokunin, but on crypto it's not so simple. Regular people trust payment apps because those accounts have been set up using an email or phone number, the bank accounts have been verified, and profiles people understand. On those profiles, they show the user's name in the app, contact information they recognize, and usually a profile photo. People don't have to bogged down with any of the technical details in order to do what they came to do.
The way we treat wallets as identity right now would get you labeled crazy in real life. At a very basic level, wallets resemble your bank account statements, and we understand using your bank statement as if it were an ID card doesn't fly. Just like a bank statement, with wallets there's a string of numbers and letters you can barely read and never remember, and then a ledger of transactions. You would never go up to someone in public waving around the bank statement saying: "This is me! You know who I am based on all these transactions. Send money to this account and routing number and know when you get money from this account number that it is me!" If you actually did this, you might get social workers called out for a basic welfare check. This is not going to work for onboarding more people into blockchain.
Wallets make everything about finance when it shouldn't be
Crypto is hyper-financialized because all of our things are mixed in with our finances. - 0xDesigner
Wallets make it sound like they're only about finance. You send money. Receive money. Buy and sell NFTs. YOLO into yield farming. It's no surprise that so many of the apps people make right now support basically trading and selling, and they look and behave like eBay. This doesn't work because people already use wallets to also store digital items and data as well as money and the use cases will only continue to expand. There's little to no ways to deal with things that aren't money in wallets. No one is viewing that Bored Ape NFT from inside the wallet.
What should we have instead of just wallets?
Account abstraction enables building the user experiences people already have in online services and will expect in Web3. Further, it makes it possible to create an on-ramp for the crypto curious to get started, and upgrade their set-ups as they build more confidence and knowledge of how it all works. If we want to onboard more people into blockchain, it's necessary to satisfy the spectrum of needs from the most sophisticated cryptonatives to grandma trying it out for the first time.
Account abstraction gives us what users already expect
Abstracting the concept of wallets into a more encompassing notion of an account resolves the issues that wallets as identity give us. Account abstraction, as it's called, lends itself for more natural, user-friendly categories for the content these wallets can contain. For example, music can be contained in libraries, galleries for art, profiles for social, inventories for in-game consumables, and wallets for financial products and currencies. This informs and aligns the product designs with the needs of users because it focuses on the intent: wallets are for spending, you preserve valuables in collections, and express through galleries.
Here's what it looks like if we rethink wallets as accounts:
Empowers users with more control
"It is frustrating when you want someone to operate something on your behalf. Smart contract wallets make that easier” - Daniel Hines
Account abstraction enables features for users to take control of all of their stuff and experiences across different web3 sites. They can assign and grant permissions to others to manage their funds and NFTs. Users can easily separate out funds across wallets from one spot if they have personal wallets and business wallets. If they want to make galleries out of their wallets, they can easily organize their NFTs across wallets. Account abstraction enables developers to make a single sign-in simple across the ecosystem. No more juggling multiple apps and wallets. Further, with accounts and user sessions, we can have saved settings across apps and web3 enabled websites. One day, we might never have to click on website cookie settings again.
How does DNS Smart Wallets improve the Web3 experience?
“If I’m new to crypto, I just want to sign in with Google and buy the NFT I came for. As I learn more, I want the ability to broaden and harden my base of trust. Say my wife buys me a hardware wallet. Ok let’s move my key to Ledger, and add social recovery. … But I need an easy onramp. Magic.link is a great onramp but there’s no offramp.” - Daniel Hines
At it's core, we've made it as simple as possible for people trying out blockchain for the first time, and integrated it all together as a seamless experience.
- It's trivial to combine multiple wallets under one smart contract
- We give users a single unifying ID with a Tezos domain: [username].dns.tez.
- Social login for simple creation of non-custodial wallets
- Cross device login for access to your account from anywhere, anytime
- Gas-free wallet actions with tickets and permits
Users get total control with Smart Wallets
Our Smart Wallets are built on smart contracts that users own and can give permission to control any number of their wallets. It contains logic for mint, transfer, and updating metadata, which takes a message from an account you control, polling it every 10 minutes. Because users own the contract, they can upgrade and rewrite the contract to make it do whatever they choose.
Simple, Non-Custodial Wallets
You can easily spin up a wallet with a Twitter or Google account and have the account level data persist whether logging in from your iPhone or laptop. That social login wallet is non-custodial, and as users level-up their crypto-know-how, they can export the key to any wallet of their choosing. They can continue using this wallet regardless whether or not that social account is still active.
If you're curious, come join our Discord, reach out to us on Twitter, and sign up for the waitlist and get your own Smart Wallet!