Every Ethereum account implements five functionalities:
An EOA implements them in a hardcoded way:
Account abstraction means adding programmatic logic to these five functionalities:
EIP-3074 aims to abstract Execution by supercharging the EOA with arbitrary execution logic through invokers. It has a unique property - extending the capabilities of an EOA without having to migrate assets to a new account. It does not need to address issues such as decentralized access because execution doesn’t affect this. The other four functionalities do, but they are outside the scope of EIP-3074.
ERC-4337 aims to abstract the entire account - all five functionalities. It’s a harder problem to solve if decentralization and censorship resistance are to be preserved. The focus of ERC-4337 is to mitigate DoS and griefing attack vectors enabled by abstracting the first four functionalities without resorting to centralized infrastructure. As an ERC it cannot extend the capabilities of an EOA, and requires migrating to a smart account.
The overlap between the two methods is minimal: only Execution abstraction.
In addition, each method aims to solve problems that the other doesn’t: EIP-3074 aims to serve existing EOAs and keep things as simple as possible. ERC-4337 aims to provide full Account Abstraction without sacrificing core properties of Ethereum, such as decentralization.
If one insists on comparing ERC-4337 to a previous proposal, the closest one is EIP-2938, not EIP-3074. EIP-2938 was a breakthrough in account abstraction, the first proposal to realize the difficulty of DoS mitigation in an AA mempool. ERC-4337 solves certain problems that EIP-2938 didn’t, but a full comparison is outside the scope of this document.
Both solve execution abstraction, and therefore enable the last category of the use cases above:
EIP-5003 complements EIP-3074 by letting the EOA revoke its ECDSA key and become a smart contract. As a contract it can abstract the rest of the account functionalities, e.g. replacing ECDSA with a different signature, rotate keys, apply access policies, etc. In that sense it is somewhat equivalent to proposals such as EIP-6913 and EIP-7377, but is superior to EIP-7377 because as an opcode it can use a gas abstraction system for the migration itself.
Once the EOA is converted to a smart contract, it can no longer transact directly and needs to be accessed through another EOA. This introduces the challenge that ERC-4337 is designed to solve. The user has two ways to transact with the account after migration:
The way to decentralize post-migration account access is to apply certain restrictions until the account pays the gas. This approach was taken by both EIP-2938 and ERC-4337. The @yoav/unified-erc-4337-mempool">ERC-4337 mempool offers a decentralized way to transact with the account.
TL;DR: No, it just highlights the need for ERC-4337.
It’s tempting for existing EOA users to migrate to a smart account in-place instead of transfering assets. However, it comes with certain vulnerability, some of which cannot be mitigated.
What could go wrong if the EOA key is compromised after it has been revoked?
The user could burn the private key after migration and hope that no copies are left, but then the user also can’t claim the same address on other chains.
Therefore migration should be used as a last resort when there’s a strong reason to keep the old address. By default, new accounts are best deployed with CREATE2 rather than migrated from an EOA, so that they are not linked to an EOA key on other chains.
The community tends to overemphasize the importance of EOA migration because most current users have EOAs. The next billion users could start with a smart account and not have to migrate from an EOA. We, the current EOA users, are a tiny fraction of that. Migration may be important for a while, for current users to migrate. It’ll become a seldom-used flow when account abstraction is the norm.
Yes, they could be @yoav/eip-3074-erc-4337-synergy">combined in interesting ways. If a chain adopts EIP-3074, projects that use ERC-4337 could use it to their benefit.
Both EIP-3074 and ERC-4337 are steps to get some of the benefits of full native account abstraction. The former focuses on getting all the benefits of execution abstraction and the latter focuses on getting all the benefits of account abstraction on all EVM chains but in a non-native way that is less efficient.
A chain that wishes its users benefit from full native account abstraction could adopt RIP-7560. It uses the same account and mempool architecture as ERC-4337 but works natively at the protocol level.
RIP-7560 doesn’t have to be adopted from day 1, and existing accounts will be able to migrate to it on chains that choose to adopt it any time in the future:
We are collecting feedback on RIP-7560 before proposing to enshrine it. If you’re interested in native account abstraction, please review the PR or join the discussion.
Every Ethereum account implements five functionalities:
An EOA implements them in a hardcoded way:
Account abstraction means adding programmatic logic to these five functionalities:
EIP-3074 aims to abstract Execution by supercharging the EOA with arbitrary execution logic through invokers. It has a unique property - extending the capabilities of an EOA without having to migrate assets to a new account. It does not need to address issues such as decentralized access because execution doesn’t affect this. The other four functionalities do, but they are outside the scope of EIP-3074.
ERC-4337 aims to abstract the entire account - all five functionalities. It’s a harder problem to solve if decentralization and censorship resistance are to be preserved. The focus of ERC-4337 is to mitigate DoS and griefing attack vectors enabled by abstracting the first four functionalities without resorting to centralized infrastructure. As an ERC it cannot extend the capabilities of an EOA, and requires migrating to a smart account.
The overlap between the two methods is minimal: only Execution abstraction.
In addition, each method aims to solve problems that the other doesn’t: EIP-3074 aims to serve existing EOAs and keep things as simple as possible. ERC-4337 aims to provide full Account Abstraction without sacrificing core properties of Ethereum, such as decentralization.
If one insists on comparing ERC-4337 to a previous proposal, the closest one is EIP-2938, not EIP-3074. EIP-2938 was a breakthrough in account abstraction, the first proposal to realize the difficulty of DoS mitigation in an AA mempool. ERC-4337 solves certain problems that EIP-2938 didn’t, but a full comparison is outside the scope of this document.
Both solve execution abstraction, and therefore enable the last category of the use cases above:
EIP-5003 complements EIP-3074 by letting the EOA revoke its ECDSA key and become a smart contract. As a contract it can abstract the rest of the account functionalities, e.g. replacing ECDSA with a different signature, rotate keys, apply access policies, etc. In that sense it is somewhat equivalent to proposals such as EIP-6913 and EIP-7377, but is superior to EIP-7377 because as an opcode it can use a gas abstraction system for the migration itself.
Once the EOA is converted to a smart contract, it can no longer transact directly and needs to be accessed through another EOA. This introduces the challenge that ERC-4337 is designed to solve. The user has two ways to transact with the account after migration:
The way to decentralize post-migration account access is to apply certain restrictions until the account pays the gas. This approach was taken by both EIP-2938 and ERC-4337. The @yoav/unified-erc-4337-mempool">ERC-4337 mempool offers a decentralized way to transact with the account.
TL;DR: No, it just highlights the need for ERC-4337.
It’s tempting for existing EOA users to migrate to a smart account in-place instead of transfering assets. However, it comes with certain vulnerability, some of which cannot be mitigated.
What could go wrong if the EOA key is compromised after it has been revoked?
The user could burn the private key after migration and hope that no copies are left, but then the user also can’t claim the same address on other chains.
Therefore migration should be used as a last resort when there’s a strong reason to keep the old address. By default, new accounts are best deployed with CREATE2 rather than migrated from an EOA, so that they are not linked to an EOA key on other chains.
The community tends to overemphasize the importance of EOA migration because most current users have EOAs. The next billion users could start with a smart account and not have to migrate from an EOA. We, the current EOA users, are a tiny fraction of that. Migration may be important for a while, for current users to migrate. It’ll become a seldom-used flow when account abstraction is the norm.
Yes, they could be @yoav/eip-3074-erc-4337-synergy">combined in interesting ways. If a chain adopts EIP-3074, projects that use ERC-4337 could use it to their benefit.
Both EIP-3074 and ERC-4337 are steps to get some of the benefits of full native account abstraction. The former focuses on getting all the benefits of execution abstraction and the latter focuses on getting all the benefits of account abstraction on all EVM chains but in a non-native way that is less efficient.
A chain that wishes its users benefit from full native account abstraction could adopt RIP-7560. It uses the same account and mempool architecture as ERC-4337 but works natively at the protocol level.
RIP-7560 doesn’t have to be adopted from day 1, and existing accounts will be able to migrate to it on chains that choose to adopt it any time in the future:
We are collecting feedback on RIP-7560 before proposing to enshrine it. If you’re interested in native account abstraction, please review the PR or join the discussion.