Overview
Learn how native account abstraction works on Abstract.
What Are Accounts?
On Ethereum, there are two types of accounts:
- Externally Owned Accounts (EOAs): Controlled by private keys that can sign transactions.
- Smart Contract Accounts: Controlled by the code of a smart contract.
By default, Ethereum expects transactions to be signed by the private key of an EOA, and expects the EOA to pay the gas fees of their own transactions, whereas smart contracts cannot initiate transactions; they can only be called by EOAs.
This approach has proven to be restrictive as it is an all-or-nothing approach to account security where the private key holder has full control over the account. For this reason, Ethereum introduced the concept of account abstraction, by adding a second, separate system to run in parallel to the existing protocol to handle smart contract transactions.
What is Account Abstraction?
Account abstraction allows smart contracts to initiate transactions (instead of just EOAs).
This adds support for smart contract wallets that unlock many benefits for users, such as:
- Recovery mechanisms if the private key is lost.
- Spending limits, session keys, and other security features.
- Flexibility in gas payment options, such as gas sponsorship.
- Transaction batching for better UX such as when using ERC-20 tokens.
- Alternative signature validation methods & support for different ECC algorithms.
These features are essential to provide a consumer-friendly experience for users interacting onchain.
However, since account abstraction was an afterthought on Ethereum, support for smart contract wallets is second-class, requiring additional complexity for developers to implement into their applications.
In addition, users often aren’t able to bring their smart contract wallets cross-application due to the lack of support for connecting smart contract wallets.
For these reasons, Abstract implements native account abstraction in the protocol, providing first-class support for smart contract wallets.
What is Native Account Abstraction?
Native account abstraction means all accounts on Abstract are smart contract accounts and all transactions go through the same transaction lifecycle, i.e. there is no parallel system like Ethereum implements.
Native account abstraction means:
-
All accounts implement an IAccount standard interface that defines the methods that each smart contract account must implement (at a minimum).
-
Users can still use EOA wallets such as MetaMask, however, these accounts are “converted” to the DefaultAccount, (which implements
IAccount
) during the transaction lifecycle. -
All accounts have native support for paymasters, meaning any account can sponsor the gas fees of another account’s transaction, or pay gas fees in another ERC-20 token instead of ETH.
Native account abstraction makes building and supporting both smart contract wallets & paymasters much easier, as the protocol understands these concepts natively. Every account (including EOAs) is a smart contract wallet that follows the same standard interface and transaction lifecycle.
Start building with Native Account Abstraction
View our example repositories on GitHub to see how to build smart contract wallets and paymasters on Abstract.
Was this page helpful?