Learn more
Introducing the Dynamic Global Wallet Kit: A powerful toolset for developers to build ecosystems around their apps or chains!
Table of contents
Today, we'll unpack the buzz around 'Account Abstraction' and its implications for developers.
TL;DR
In this post, we'll skip most of the technical jargon and focus on some of the use cases and benefits that AA offers you. In the following posts, we’ll deep dive into the technical aspects of Smart Contract Wallets or you can see our prior post on EIP-4337.
Anyone familiar with the DApp ecosystem knows the pain points - gas fees for every little action, repeatedly having to sign every transaction, and so forth. These barriers often deter new users and can hinder the adoption of DApps.
Let’s walk through a few examples to illustrate the point:
Imagine a new user first embarking on their web3 journey. The user onboards with email or social, not even realizing that they are in web3. A wallet is magically created behind the scenes. But out of nowhere, they’re confronted with the puzzling requirement to pay for gas fees (a user may wonder what gas fees are). It's akin to entering a store and paying an entrance fee just to view a complimentary brochure.
If they’re new to web3, they would most likely have to go through a KYC process with an onramp provider to fund the gas fees. Building on the above analogy, this would be akin to entering a store, having your ID checked against a DMV database after filling out a form with all your personal information, and then paying an entrance fee just to view a complimentary brochure.
Sheesh.
To solve some of these problems, AA introduces one of its more popular features: gas sponsorship.
Note: It’s a misnomer to say gasless transactions since someone has to pay. With AA, this can be the developer or the company to help make the user experience better for new users.
When signing up for a service such as ZeroDev or Alchemy, developers can add their credit cards and configure what’s called a Paymaster. The paymaster will allow the developer to set certain rules around how gas can be sponsored on their site. If a company or developer is willing to sponsor these gas fees, then the end user no longer has to fund a wallet or maintain a balance to complete a transaction.
With Account Abstraction, a company can sponsor the gas for that first purchase, and then that user doesn’t need to fund any wallet (assuming the purchase is something like a free NFT) nor do they even need to know what gas is!
Imagine you’re playing a game that requires frequent interaction with the blockchain (like buying items or moving characters, and each action is a transaction). Normally, every transaction would require you to sign off with your private key. This would be like your game pausing every few seconds for you to enter your password – annoying, right?
With AA, instead of the constant interruptions, the game asks you once to create a special "session key." This is like a temporary, limited power of attorney. You grant permission to the game to only do specific things (like buying items under a certain value) without asking you to confirm every time. Now, the game can execute these actions smoothly for the duration of your session, improving the experience.
Or let’s say you’re using a financial app that can make smart investment decisions based on market conditions. You want it to buy or sell stocks for you, but you can’t always be online to approve each trade. With session keys, you create a session key that you give to the app. This is like giving a trusted friend a key to your house to water your plants while you’re away, but you can restrict them from redecorating the living room. You define exactly what trades or actions the app can make (like selling a stock if it drops to a certain price) and it will use this key to carry out those actions even when you’re offline, without requiring a confirmation from you.
In both scenarios, session keys are a way to delegate limited powers to an application to act on your behalf, following rules you’ve agreed to, without having to ask for your permission every time.
Imagine you're online shopping and decide to buy a variety of items: a book, a pair of shoes, and a cool art piece. Each item is from a different vendor on the same shopping platform. Typically, in web3, you would have to:
This would mean going through the payment process three separate times, which is not only tedious but could also involve higher processing fees since each transaction is treated individually.
With AA, envision a system where your shopping platform bundles all these purchases into one transaction - just like how Amazon does it today. You add all your items to the cart, and when you check out, the system intelligently combines these into a single payment process.
This is particularly useful, since you not only can reduce the steps and hassle of confirming each step, but since you pay just once, you potentially can reduce the service costs (gas).
Translating this to a Web3 context, Account Abstraction could allow you to bundle multiple smart contract interactions in one go. For instance, you could:
All in a single transaction. It simplifies the user's experience by abstracting away the complexity of multiple transactions, just like the single checkout process does in our online shopping example
Don’t worry, Account Abstraction is not just a fancy term or some new incrementally better protocol.
Account Abstraction is a significant step forward in making web3 feel more similar to a regular web2 experience since it abstracts away a significant amount of hurdles that typically haunt good web3 experiences:
We just scratched the surface of what Account Abstraction can offer and we’ll continue diving into this subject in future blog posts. But what I hope you realize is that Account Abstraction can truly change the dynamic, no pun intended, of the experiences that developers create on the web.
If you're aiming to integrate Account Abstraction without figuring out the complexities of setting all this up, Dynamic can get you set up in minutes. To try out AA, all you have to do is turn on a toggle and then test it out.
Features for Developers:
Share this article