In the dynamic and evolving world of cryptocurrency, enhancing the user experience in interacting with blockchain applications and making web3 more intuitive and competitive with conventional web2 applications is key. The paradigm shift from "will crypto survive?" to "how can we bring the next billion users into the web3 ecosystem?" is taking center stage. One proposition that has sparked considerable interest is "account abstraction". This post delves into the intricacies of account abstraction, tracing its evolution, present state, and future trajectory, while addressing key questions revolving around this topic.
Account Abstraction(AA), a concept that might initially seem complex in the realm of web3, is a proposal aiming to augment the flexibility in the management and behavior of Ethereum accounts. It achieves this by introducing account contracts—special-purpose smart contracts that define and manage a user's Ethereum account, now termed as a smart account.
In the current setup, users interact with Ethereum using Externally Owned Accounts (EOAs), which are the only way to start a transaction or execute a smart contract. This method limits how users can interact with Ethereum. For instance, it makes it challenging to perform batches of transactions and requires users always to keep an ETH balance to cover gas. Account abstraction, as a solution, allows users to flexibly program more security and better user experiences into their accounts, thereby solving these issues.
From a network-level perspective, "account abstraction" implies that the specifics of account types are concealed from the Ethereum protocol. Every account, including self-custodial accounts, is simply a smart contract, with users having the freedom to determine how individual accounts are managed and operated.
From a user-level perspective, "account abstraction" suggests that certain technical specifics about interacting with Ethereum accounts are veiled behind higher-level interfaces. This enhancement can significantly reduce the complexity of using web3 applications and improve wallet designs. Account abstraction does not necessarily remove accounts from the users' purview, even if they are abstracted from the protocol. Users still maintain a wallet address to receive funds and a signing key to ensure that only they can spend those funds. From the user's perspective, account abstraction is akin to utilizing a smart account that abstracts some details about interacting with the blockchain. For instance, account abstraction can eliminate the need for storing seed phrases/private keys, paying gas for transactions, or even setting up an on-chain account independently.
Account abstraction mitigates most of the friction associated with using web3 wallets and interacting with dapps, thereby moving web3 closer to the user-friendly ideal of web2 where all users—both novice and experienced—can benefit from the same degree of flexibility, security, and ease of use. Notably, account abstraction carries significant implications for the future of self-custody. With the features provided by account contracts, using a web3 wallet will emulate the experience of using a bank account or application without the need to trust the bank.
There are two general methodologies for achieving account abstraction: enabling EOAs to execute EVM code and allowing smart contracts to initiate transactions. Many account abstraction proposals either want EOAs to behave as smart contracts or contract accounts to act as EOAs. The former approach supercharges EOAs and transforms them into smart accounts, setting the stage for native account abstraction. The latter approach provides another route to achieving account abstraction by introducing "supercharged contracts" that can act as EOAs. This resolves a pressing issue in Ethereum: the lack of support for contract wallets at the protocol level.
The potential benefits of account abstraction, particularly with the advent of smart contract wallets, are significant. Users can define their own flexible security rules, recover their account if they lose the keys, share their account security across trusted devices or individuals, pay someone else's gas, or have someone else pay theirs. Moreover, it enables batch transactions and opens up new avenues for dapp and wallet developers to innovate on user experiences.
The current paradigm is such that only externally-owned accounts (EOAs) can start transactions. EOAs are simply public-private key pairs that grant absolute control to the holder of the private key within the rules of the Ethereum Virtual Machine (EVM). If the private key is lost, it can't be recovered, and stolen keys give thieves instant access to all the funds in an account.
Smart contract wallets provide a solution to these problems, but today they are challenging to program because any logic they implement must be translated into a set of EOA transactions before they can be processed by Ethereum. Account abstraction enables smart contracts to initiate transactions themselves, allowing any user-desired logic to be coded into the smart contract wallet itself and executed on Ethereum. Ultimately, account abstraction improves support for smart contract wallets, making them easier to build and safer to use. Users can enjoy all the benefits of Ethereum without needing to fully understand the underlying technology.
Today's accounts are secured using private keys calculated from seed phrases. Anyone with access to a seed phrase can discover the private key protecting an account and gain access to all the assets it protects. If a private key and seed phrase are lost, they can never be recovered, and the assets they control are frozen forever. Securing these seed phrases is awkward, even for expert users, and seed phrase phishing is one of the most common ways users get scammed.
Account abstraction solves this problem by using a smart contract to hold assets and authorize transactions. These smart contracts can then be decorated with custom logic to make them as secure and tailored to the user as possible. Backup keys can be added to a wallet so that if the main key is lost or accidentally exposed, it can be replaced with a new, secure one with permission from the backup keys. This makes it much harder for a thief to gain full control over your funds. Similarly, you can add rules to the wallet to reduce the impact if your main key gets compromised. For example, low-value transactions could be verified by a single signature, whereas higher-value transactions require approval from multiple authenticated signers.
Account abstraction also allows for the creation of whitelists, which block every transaction unless it is to a trusted address or verified by several pre-approved keys. It offers other security enhancements, such as multisig authorization, account freezing, account recovery, transaction limits, and more. The possibilities are almost endless, and the freedom to design these custom security measures is one of the most significant benefits of account abstraction.
Account abstraction not only offers improved security but also a superior overall user experience, as it adds support for smart contract wallets at the protocol level. The enhanced freedom for developers of smart contracts, wallets, and applications allows them to innovate the user experience in ways we may not yet be able to anticipate.
Account abstraction enables transaction bundling for speed and efficiency, allows users to maintain an ETH balance for funding transactions, and offers the potential for trusted sessions, which could be transformative for applications like gaming where large numbers of small transactions might need approval in a short time. It also paves the way for a more familiar online shopping experience where a user could fill a "basket" with items and click once to purchase all at once, with all the necessary logic handled by the contract, not the user.
While smart contract wallets exist today, they rely on wrapping relatively complex code around standard Ethereum transactions because the EVM does not natively support them. Ethereum can change this by allowing smart contracts to initiate transactions, handling the necessary logic in Ethereum smart contracts instead of off-chain. Putting logic into smart contracts also increases Ethereum's decentralization since it removes the need for "relayers" run by wallet developers to translate messages signed by the user to regular Ethereum transactions.
The way forward in implementing account abstraction is currently under intense discussion. Several proposals aim to change the Ethereum protocol to accommodate account abstraction or to upgrade EOAs so they can be controlled by smart contracts. However, many of these proposals are not active due to the community's current preference for proposals such as EIP-4337, which implement account abstraction without requiring large-scale changes to the Ethereum protocol.
The future of account abstraction is promising. With the features provided by account contracts, using a web3 wallet will emulate the experience of using a bank account or application without the need to trust the bank. The way forward in implementing account abstraction is currently under intense discussion. Several proposals aim to change the Ethereum protocol to accommodate account abstraction or to upgrade EOAs so they can be controlled by smart contracts. The advent of account abstraction will undoubtedly play a pivotal role in shaping the future of the Ethereum ecosystem.