A note from the Ethereum foundation states account abstraction as: “Account abstraction allows us to use smart contract logic to specify not just the effects of the transaction, but also the fee payment and validation logic. This allows many important security benefits, such as multisig and smart recovery wallets, being able to change keys without changing wallets, and quantum-safety”. With this article we want to go down the rabbit hole and explore why implementing it has been a long term “dream” for Vitalik Buterin and other Ethereum developer.
Before we explore account abstraction we need to understand how Ethereum accounts are working. As you may know, there are two different accounts on the Ethereum blockchain. Externally Owned Accounts (EOA) and Contract Accounts (CA). Let us start with EOAs in this article, which are user accounts.
EOAs have the three following attributes. A balance to represent the amount of ETH available to the account, a nonce to ensure that every transaction is unique and an address to uniquely identify the account on the network. It is only through transactions that the state of the blockchain, and therefore the state of an account, can be modified. Every transaction on Ethereum must be initiated by an EOA, as this trigger must come from outside of the blockchain. As a result, when an Ethereum Virtual Machine (EVM) executes a transaction, the first account touched must be an EOA, and the corresponding account must pay a fee to the validator.
So how do you prevent anyone from accessing your ETH? A signer is responsible for this, also called a keypair. It is made of two keys: the private key and the public key. The private key signs the message and the public key makes it possible for anyone to verify that a given signature was authored by its corresponding private key. Furthermore the account address associates an account with a signer and is retrieved from the public key of a signer.
Let us now summarize the things we have learned so far. An account on Ethereum has three attributes. A state containing a balance and a nonce, hardcoded logic to validate and execute a transaction from the account and an address. Then there’s the signer (keypair), that is coupled to the account, which basically means, that if you have a private key you also have an account at the associated address and to be the owner of the account you must be in possession of the corresponding private key.
This is an easy and simple to implement approach but coupling an account with a signer brings many problems with it.
The Challenges Of Ethereum Accounts
The most obvious and biggest problems of the current design is, that if you loose your key, you also loose your account or when someone else has your key, he also has access to your account with all of its token. There’s always the possibility to use a hardware wallet, write the keys on a piece of paper or metal and store it in a safe. But is this really web3 and the way for mass adoption?
Definitely not and now there’s a way to do better. How? By decoupling the account from the signer and turning accounts into smart contracts with their own logic to define what a valid transaction is. Or in short, account abstraction.
So by transforming every account into a smart contract, account abstraction breaks the account coupling and makes transaction authorization programmable. Account abstraction enables users to deploy and use accounts with custom authorization logic tailored to their needs.
So what possibilities does this bring to the table?
- You can have multiple signers to support fraud monitoring. Make sure all transactions follow defined security rules and prevent assets from being sent to scam addresses or incorrect contracts.
- Another signature scheme with a different elliptic curve. You can use simpler, more gas-efficient signature schemes or ones that are quantum-resistant instead. It is even possible to turn every phone into a hardware wallet by using the secure enclave of iOS and Android devices.
- Social recovery. Users can add mechanisms to wallets to replace their private keys in case they lose or compromise their private keys.
There are many more reasons why account abstraction can be the key for mass adoption of crypto but before we dive deeper into the benefits we need to understand why it hasn’t been implemented before.
Account Abstraction And Its Problems In The Past
Implementing full account abstraction is not an easy task. As we learned the correlation between the signer and the account is deeply implemented into the heart of the EVM. There were several proposals to implement features of account abstraction while requiring acceptable changes to the protocol in a way, that it could be accepted in the next fork. But each of these changes had limitations. Most of todays’ wallets are EOAs, which rely on seed phrases and have an UX and security, that can not be programmed.
With smart contract wallets you already have the chance to implement features like social recovery or multicall but they still live on a chain, where the native account is the EOA, which forces smart contract wallets on Ethereum to use tricks to replicate account abstraction properly. Also the whole Ethereum ecosystem is created around EOAs, which is why most Dapps are not compatible with smart contract wallets.
Until today it is not sure if Ethereum will ever implement full account abstraction, which would be one of the best ways to scale the user experience and receive wide adoption. This is one of the reasons why people are now focussing on bringing the full power of account abstraction to L2s like zkSync 2.0 and StarkNet.
The Future Benefits Of Account Abstraction
More and more users will experience the benefits account abstraction has to offer, since L2s like zkSync 2.0 and StarkNet are going to support it. This might lead to a conviction of the Ethereum community to implement account abstraction on the protocol itself and in the end to the decisive building block for a mass adjustment.
So before we finish this article let us have a look at the advantages of account abstraction.
- Session Keys; Blockchain games, in particular, benefit greatly from session keys. By pre-approving the rules for interacting with a Dapp, you can use it as much as you want within those rules without signing every single transaction. By restricting what the Dapp can and cannot do with your assets, you can enjoy using a Dapp while knowing your assets are protected. The goal is to maximize ease of use while minimizing risk.
- Multi-factor authentication; Account Abstraction lets you have accounts that require signatures from multiple keys just like with multi-signature wallets but even better, as it lets you customize it for your specific needs. You can for example integrate a list of scam addresses, that are getting blocked or block transactions to an incorrect contract.
- Fees; With account abstraction you can pay gas fees in any kind of token and don’t need a specific token for a specific transaction or projects can pay the gas fees for their users.
- Phones as hardware wallets; The secure enclave of iOS and Android devices could be used to create hardware wallets using a different signature scheme. Globally, there are more than 6 billion smartphones, making the hardware wallet market look vanishingly small.
- Plug-ins; An account can be made more flexible and modular by adding plug-ins. During the account creation process, third-party developers can build plug-ins to enable new features. Accounts can also be extended by allowing users to add and remove features after they have been created. Consider it like an app store for your account, where you can choose plug-ins for gaming, social recovery, and session keys.
And these are just some of many examples how account abstraction can add a massive amount of value to the Ethereum ecosystem. Since account abstraction as we envision it, is in its infancy, we can only guess what impact it will have on the future of Ethereum and crypto in general. However, as soon as a large part of the users realize the advantages, it can start a wave that will contribute significantly to the further development and mass adaptation of crypto.
Who We Are
Moonrock Capital is a Blockchain Advisory and Investment Firm, incubating and accelerating early stage startups since 2019.