Are we “account abstraction” yet?

Almost. We have the blocks, but some are missing.

What is account abstraction and why does it matter?

On Tezos we have two kinds of accounts:

  • implicit account: linked to a manager which owns a private key and public key pair.
  • originated account (aka smart contract): created with an origination operation. They don’t have a private key and public key pair.

Blockchain security relies on cryptographic signatures to authenticate the author of an operation. Most wallets like Ledger, Temple, Airgap or Kukai are devices or applications vaulting your private keys in order to ease the use of blockchain with implicit accounts. So it ends with different capabilities between those wallets and Smart Contract wallets which are originated accounts.

Smart contract wallets can provide extra features like governance rules, programmable money spending or receiving, key recovery, pay the fees for a third party, etc…

Account abstraction is the idea of abstracting the kind of a wallet, so both implicit and originated accounts can be used by blockchain users in a transparent way.

I will use some emoji to visualize Tezos state for different items:

  • :white_check_mark:: Tezos is ready
  • :x:: Tezos is not ready
  • :soon:: Developments are ongoing

What is a wallet used for?

Every hardware or software wallet provides at least three essential functions:

  1. Logging into a decentralized application (dApp) :white_check_mark:
  2. Signing off-chain messages :white_check_mark:
  3. Signing blockchain operations :x:

For wallets linked to implicit accounts, each of these functions involves using a private key to sign data. This process verifies ownership of the corresponding public key linked to the wallet’s address.

Wallets linked to originated accounts lack a private key, necessitating an alternative method for data signing. Recently, Tezos introduced a new standard, known as Proof of Event and Simulated Proof of Event (incoming TZIP27). This standard establishes a mechanism allowing smart contract wallets to perform the first two functions: logging into dApps and signing off-chain messages.

The standard is already implemented by TzSafe, the multisig smart contract wallet by Marigold, and you can use Proof of Event to log-in on Tezos Domain, OBJKT or Akaswap, and sign messages on Akaswap.

On Tezos, the majority of smart contract wallets fall into two categories: multisig wallets or DAOs. These two categories primarily focus on governance, with implicit accounts serving as the participants. In this setup, participants do not directly sign operations from the originated account. Instead, the core functionality revolves around establishing governance protocols. These protocols define the conditions under which a participant is authorized to sign an operation, which is then executed on behalf of the multisig or DAO.

But what if a participant was an originated account?

What if we want to have other types of smart contract wallets?

This is not currently defined in the Tezos landscape.

If you want to read more, please visit: Are we “account abstraction” yet?