Talking: Account Abstraction on ZK-rollup and Ethereum

While today our crypto wallets can be used to access and manage our cryptocurrencies, NFTs, and staking, I think there is a lot more that can be done from an account standpoint. StarkNet and zkSync follow Vitalik’s vision with a long-term feature: account abstraction.

What is abstraction?

Abstraction is the practice of hiding information. This increases the ability of the computer system to be used at a higher level with little knowledge of the underlying processes.

In programmer PoV, we assume that it hides all data of an object, but keeps only its related data, which reduces complexity and increases efficiency.

Talking: Account Abstraction on ZK-rollup and Ethereum

Definition of Account Abstraction

Talking: Account Abstraction on ZK-rollup and Ethereum

On the Ethereum network, there are currently two types of accounts.

  • EOA: External accounts are wallets that exist outside of the EVM (Ethereum Virtual Machine) for sending and receiving cryptocurrencies: cold wallets such as Ledger, MetaMask, Phantom, etc.

Talking: Account Abstraction on ZK-rollup and Ethereum

  • Contract accounts are “smart contracts” that exist in the EVM. For example, pools on Uniswap are basically smart contracts.

The goal of the Ethereum account abstraction is to reduce the two account types to one, the contract account. A single account type will have the functionality to handle tokens and contracts. Developers and users will no longer need to differentiate between account types, as transactions will be moved entirely into the EVM and out of the blockchain protocol.

External Account Accuracy

EOA has three properties:

  • Represents the balance of available ETH in the account.
  • Make sure each transaction is a unique random number.
  • An address that uniquely identifies an account on the network.

It is worth mentioning that on Ethereum, every transaction must be initiated from EOA. This means that when a transaction is executed by the Ethereum Virtual Machine (EVM), the first account touched must be EOA, and the corresponding account must pay the miner to execute the entire transaction.

Every account on Ethereum is associated with a cryptographic object called a Keypair:

  • Private Key: Used to sign digital messages.
  • Public Key: Allows anyone to verify that a given signature is indeed the signature of its corresponding private key.

Account abstraction on StarkNet and zkSync

As of today, StarkNet and zkSync 2.0 are state-of-the-art in account abstraction, and they both manage to implement account abstraction in specific ways.

Account abstraction has two main goals:

  • Signature abstraction: Allows different account contracts to use different signature verification schemes.
  • Payment abstraction: Allows for different transaction payment models. For example, being paid by another party/contract or using a token other than ETH.

The StarkNet Account model is still represented by contracts, the so-called “account contracts”. Simply put: any Cairo smart contract deployed on StarkNet can be an Account, the only requirement is that they must conform to a specific interface that has methods to validate and execute transactions.

Talking: Account Abstraction on ZK-rollup and Ethereum

On the zkSync side, an account also needs to implement two functions: validateTransaction and isValidSignature.

Talking: Account Abstraction on ZK-rollup and Ethereum

Through this abstraction, we can directly see:

  • Use multiple key pairs to verify transactions (simply integrate multi-signature together).
  • Change our account Keypair.
  • Use a different signature scheme than ECDSA.

What can it bring?

This is probably the most important part of the story: let’s discuss the use case of account abstraction in more depth. We can divide these use cases into two distinct areas:

  • User simplification
  • Technology use case

User Simplification: Session Keys

Suppose we are playing an on-chain game: currently we need to sign every transaction ourselves. This means that every time an action is performed (such as when collecting rewards, moving a character, sending a message), a transaction needs to be signed.

A session key is the idea of ​​authorizing a player to play a game for a specific amount of time. We generated a session key, kept it in the browser’s local storage, and only authorized it to sign transactions for 10 minutes. After 10 minutes, the key will be revoked and we will need to create a new key and authorize again.

With this extension, we can also imagine creating batch transactions: the same abstraction as choosing a product in a supermarket and paying only once at the end.

User simplification: transaction automation and split permissions

Using abstract accounts, it is possible to change the primary signing key for a given wallet, and even manage multiple signing keys. We could keep our own admin keys in cold wallets while other keys are kept on less secure devices, and these will only be authorized to perform certain actions.

A cool example:

The most secure keys I don’t use very much are the only ones that can transfer or send over $1k to another account, however, I can also use those insecure keys on my computer to perform operations such as in Claim rewards on certain dapps, or perform any transactions in on-chain games.

Now let’s assume that these keys are kept in the server that performs automated transactions/runs our own bot: we can ensure that these keys can only be used to perform actions we set ourselves and increase security.

A final utility might be a protocol that identifies DCA as a recurring transaction on our behalf.

Technology Use Case: Paying for Others

This is one of the most interesting things we can do with account abstraction. Imagine how exciting it can be to have one account pay for another.


We have seen how account abstraction can be a game-changer in the future of blockchain. I personally believe that account abstraction will usher in a new era of use cases, especially in the video game industry chain.

Posted by:CoinYuppie,Reprinted with attribution to:
Coinyuppie is an open information publishing platform, all information provided is not related to the views and positions of coinyuppie, and does not constitute any investment and financial advice. Users are expected to carefully screen and prevent risks.

Like (0)
Donate Buy me a coffee Buy me a coffee
Previous 2022-08-01 11:41
Next 2022-08-01 11:42

Related articles