Account abstraction on Ethereum: An introduction

Why do we need account abstraction on Ethereum?

Even if the future of Ethereum and crypto looks great, there is still a real worry about mass adoption. Even though crypto fans may not need help setting up and keeping their self-custodial Ethereum wallets secure, the user experience for new users could be better. This is especially important when setting up a wallet that doesn’t hold your money. The process of making and safely storing seed phrases is still quite complicated, and if a user loses access to his or her seed phrase, they might as well forget about the coins in their wallets because they won’t be able to get them back. Under these conditions, adding a billion new users will still be seen as a challenge. Developers at the Ethereum Foundation started to talk about the idea of Ethereum account abstraction as a way to improve the Ethereum tech stack and make it easier for new users to join.

Types of accounts

You need to make an Ethereum account in order to use the Ethereum network. A normal Ethereum account has a public address and a private key. You shouldn’t mix up Ethereum accounts and Ethereum wallets. Wallets are just a way to interact with tokens on the blockchain.

There are two main types of Ethereum accounts:

  1. Externally owned accounts (EOA)
  2. Contract accounts (CA).
Externally owned accounts (EOA)

An externally owned Ethereum account has a public address and a private key, can start transactions and interact with smart contracts, has no storage, and is shown as an empty code string on the EVM.

Contract Accounts (CA)

Contract accounts are a little different from EOAs because they are controlled by a code that is written on the EVM. They are also called “smart contracts.” Once this code is deployed, it can’t be changed, and it will define the types of transactions a contract account can do. In contrast to their EOA counterparts, CAs do not initiate transactions. Instead, they can only send transactions in response to those they received from EOA.

What is Ethereum account abstraction?

In the case of Ethereum, account abstraction tries to get rid of the two kinds of accounts by combining them into one. So, a single contract account will be able to deal with tokens and deploy contracts, bringing together the two types of accounts. Instead of being two different types of accounts, EOAs and CAs will be one type. With this change, transactions will move off the blockchain and onto the EVM, eliminating the difference between accounts.

Proposed EIPs for account abstraction

EIP-86 (Status: inactive)

EIP-86 is the first Ethereum Improvement Proposal (EIP) that aims to separate accounts. With these changes, users could create contract accounts that are not hard-coded to follow the traditional model but could be set up to use any signature or nonce scheme when processing transactions.

EIP-2938 (Status: inactive)

Account abstraction is made possible by EIP-2938, but only in a limited way. The idea was to make smart contracts work like EOAs so that they could start transactions and pay for gas. In EIP-2938, developers propose adding a new type of transaction and two new opcodes. They want to keep implementation simple and allow more complex features to be added over time. But this meant that the EVM had to be changed at its core. EIP-2938 is a simple proposal. As a result, it doesn’t work with some account abstraction features, like nonce abstractions and meta transactions, and it doesn’t get rid of EOAs.

EIP-3074 (Status: in review stage)

The approach taken by EIP-3074 differs from that of its forerunners. The goal of EIP-3074 is not to transform smart contracts into EOAs, but rather to modify existing EOAs in small ways to make them operate more like smart contracts. This proposal is for a system where users can sign a message using their account to give a contract access to their “regular” accounts. It is possible for an invoker (the smart target contract) to initiate transactions similar to EOAs with just the signed message and two new opcodes. For users with EOA accounts, enabling transaction sponsoring and multicall execution means they can reap the benefits of account abstraction without having to open new accounts or move their assets. Although it wouldn’t solve all security issues, the proposal could make some progress in that direction. It’s important to note that EIP-3074 users are still required to make a backup of their seed phrase.

EIP-4337 (Status: likely to be changed before activation)

EIP-4337 is a recent proposal with the goal of improving smart contract wallets. EIP-4337 is a big change from the usual way things are done. It makes it easier to build and maintain Ethereum smart contract wallets by splitting the work between on-chain and off-chain resources.

Achieving account abstraction through EIP-4337. (Source)‌ ‌

Users will no longer need to send transactions with EIP-4337, but rather a series of UserOperations which are just a bunch of signatures. The UserOperations are bundled into a single transaction before being sent to the EntryPoint contract, where it is processed and the bundlers are paid for their services. While EIP-4337 alleviates concerns about subsidized gas costs, it does not signal the end of Ethereum’s EOA era.

We will be discussing EIP-4337 in more depth in upcoming posts. For the time being, an introduction should suffice. In case of any queries, I am happy to have a chat. Reach out on my socials!

%d bloggers like this: