Ethereum Accounts: What is Account Abstraction

It has been widely discussed that the user experience for Ethereum accounts can be improved. We shouldn't expect our financial system to rely on people storing 12 words on a piece of paper. Fortunately, there are many initiatives underway to improve this experience. Many of these initiatives relate to a concept called account abstraction. Technically speaking, account abstraction is the idea of creating an account using a smart contract wallet. This wallet can be controlled by a key, multiple keys, or some other mechanism that is encoded into the contract. In other words, we allow accounts that are controlled by code. I will cover this more below, but this enables us to code additional features for the end user into the account (ex: account recovery).

Types of accounts

Currently, there are two forms of accounts on Ethereum, externally owned accounts (EOAs) and smart contract accounts. The majority of people interacting with Ethereum today do so with an EOA. An ECDSA key is a public/private key pair that controls an EOA. The private key is essentially your password, and your public key is your account address. The private key deterministically generates the public key and is needed to take action on behalf of the account (e.g. sending eth from one account to another). Only the account owner should know the private key, and if you lose access to it, you lose access to your account. Alternatively, if the private key gets stolen, the account is compromised, and you are no longer the sole owner of the account.

The second type of account mentioned is a smart contract account. This account relies on a smart contract which enables custom logic for the account. This differs from an EOA because transactions between EOAs can only be ETH/token transfers. Alternatively, smart contract account transactions can trigger code that can execute many actions. Additionally, contracts don't need private keys. Smart contract accounts can implement their own validation logic. For example, you can set up a form of social login, like the ones familiar to most of us today.

Account Abstraction

Now that we know what Ethereum accounts are, it'll be easier to understand account abstraction (AA). Account abstraction is the idea of decoupling the accounts from their authorization technique and functionality. As described above, an EOA account requires an ECDSA private key to do anything (authorization technique). And it can only send ETH/tokens to other accounts (functionality). So account abstraction aims to achieve this decoupling using a smart contract account controlled by a key, multiple keys, or an arbitrarily complex mechanism encoded in the contract. So account abstraction is really a straightforward concept. It's just the idea of making smart contract accounts the default rather than EOAs.

Since smart contract accounts already exist, why is it that recently there has been a lot of hype about account abstraction? This is due to the standard ERC-4337 that has been proposed. Up until now, the adoption of account abstraction has been slow because each smart contract wallet differs. This makes it difficult to build dApps that work well with them. In fact, due to this difference, most dApps require the user to have an EOA account. While ERC-4337 is still in draft, it attempts to create a standard interface for everyone to work with. This is extremely important because it means that dApps can assume that any ERC-4337 complaint wallet will behave in a certain way. In my mind, this will be one of the biggest user experience improvements to Ethereum in a while.

What does account abstraction enable?

Since smart contract wallets are all custom code that is deployed to the blockchain, developers can enable new features for users that you don't get with traditional EOAs. And because we now have a standard (ERC-4337) that normalizes how applications can interact with these wallets, it's reasonable to expect some new experiences for end users in dApps soon. Some of these are listed below.

  • Social sign-in
  • Social recovery
  • Multi-sig wallets
  • Batching transactions
  • Spending limits
  • Gasless transactions (sponsored transactions)

I'm sure you have probably seen some of these features in existing smart contract wallets today. However, each of those wallets currently has its own implementation and interface for interacting with them. This is the exciting part about ERC-4337. Once this is finalized, dApps will know exactly how to interact with any wallet that implements the standard. It's not known when the standard will come out of draft status. However, I think it's reasonable to expect it to happen mid to late this year.

Misconceptions

There are some common misconceptions about account abstraction and ERC-4337 that I think are worth mentioning.

ERC-4337 requires a hard fork - False

  • ERC-4337 is not an EIP. It is a request for comment and doesn't require a change to the protocol. It's likely that in the future, we will have protocol-level account abstraction. However, it is a great first step to achieve AA with smart contracts as it allows the ecosystem to get consensus on an implementation much faster.

EIP-4337 is not Account Abstraction because a transaction can't start from any arbitrary authorization policy - False

  • Any arbitrary authorization policy is allowed.

Account Abstraction requires private keys - False

  • This is because accounts can set their own validation logic. As mentioned above, something like social login is enabled because of AA. So you might see sign-in with your google account in the near future, and it actually gives you an Ethereum account behind the scenes.

ERC-4337 needs to be deployed - False

  • As mentioned before, ERC-4337 is creating a standard and does not require a change to the protocol. Also, you can currently deploy a smart contract wallet that is compliant with the draft. However, since the standard is still in draft mode and being reviewed, you must realize that there may still be changes.

What's next

Overall I'm extremely excited about what's coming with account abstraction. As mentioned before, we will probably see ERC-4337 come out of draft mode sometime this year. There are already a lot of companies developing account abstraction solutions; I'll list some of them below. However, I think I'm most excited to see some of the features that account abstraction companies offer showing up in products that end users will see.