Account abstraction is a series of solutions proposed by the Ethereum community to unify the functionalities of externally owned accounts (EOAs) and contract accounts. The key aspect of account abstraction is to allow developers to validate the transactions through custom code logic.
Account abstraction is considered a crucial technology for the massive adoption of Web3. It aims to lower the barriers of user adoption, enhance user experiences, and provide developers with more innovation opportunities.
The account and state features in Move are naturally conducive to account abstraction, and Rooch has designed an account abstraction solution based on Move that provides the following features.
Multi-chain address mapping is a fundamental aspect of multi-chain settlement. Rooch supports the automatic mapping of L1 (Layer 1) addresses to Rooch addresses or the ability to bind an existing Rooch address to an L1 address.
Developers can create custom authentication validators to implement functionalities such as Web2 social logins, multi-signatures, and multi-factor authentication. Authentication validators are independent modules that users can add to their transactions to leverage their functionalities, without the need to deploy contracts. Multiple authentication validators can coexist, and users can add or disable them through transactions without compatibility concerns.
Developers can customize authentication validators that can be used to implement features such as Web2 social login, multi-signature, multi-factor authentication, and more. Authentication validators are standalone modules that allow users to simply add an validator and use the functionality provided by the validator without the need to deploy a contract. Multiple authentication validators are supported for the same account. Users can add or disable validators through transactions without worrying about compatibility issues caused by authentication validators switching.
Rooch natively supports session keys, which are temporary private keys used for signing transactions. These keys are stored within the application rather than in a wallet, enabling a better user experience by eliminating the need for wallet-based signatures for every transaction. Session keys have expiration times and permissions restrictions, such as being limited to transactions specific to certain applications, striking a balance between usability and security.
Rooch supports gas-free transactions, allowing developers to declare that gas fees will be paid by the contract account. This eliminates the need for users to pay gas fees, reducing the barriers for new users to participate.
For example, in the following scenarios:
- DeFi applications (Dex, Swap): Gas fees can be included in the transaction fees within the application itself, eliminating the need for users to worry about paying gas fees separately.
- Gaming applications: Developers can design mechanisms where gas fees can be offset using in-game items or currencies. This allows users to use their in-app resources to cover the gas fees without requiring them to have separate funds for gas.
These approaches allow developers to enhance user experiences and lower the barrier for new users by removing the requirement to directly pay gas fees.
For more details about the implementation of account abstraction in Rooch, please refer to the Design and Implementation of Account Abstraction.