Account Abstraction

Introduction

Account Abstraction simplifies blockchain interactions by allowing smart contracts to serve as user accounts, merging contract capabilities with account management. The Titan upgrade opens the door for Account Abstraction to become reality on Cronos Testnet. Account Abstraction opens up possibilities for numerous use cases such as multi-signature transactions, social recovery, contract whitelisting, custom gas tokens, subsidizing gas fees, and much more. It expands the use-case potential of DApps and enables a more intuitive user experience. \

Key components are provided to support Account Abstraction development:

  • User Operations: A new transaction object type that includes additional data, allowing for custom transaction and security configurations.

  • JSON-RPC API debug_traceCall: Enables simulation of User Operations before they are executed on-chain.

  • Bundlers: Crucial nodes that bundle unsigned User Operations into a single package for signing and subsequent publication on the mainnet. Bundlers estimate transaction fees.

  • Entry Point Contract: an audited and trusted singleton contract, is functional and can process the execution and validating User Operations.

Account Abstraction is natively supported on Cronos, and developers can leverage these features for their own use cases. There are also application-level account abstraction solutions available for developers who need Account Abstraction functionality now, such as Cometh. Please contact Cronos Labs if you would like to be introduced to the relevant developer tool platforms.

Send a UserOperation using userop.js

In this guide, we will go through how to send a userop transaction with subsidized gas fee. Here we are using userop.js to send UserOperations but you can use any library you like, even using curl .

We will create a new project for sending transactions

mkdir userop-test
cd userop-test
yarn init -y
yarn add userop
yarn add dotenv

In the root directory, create a new file .env

Create a new index.mjs

Now send the userop by running:

If successful, you will see the above logs including transaction hash and userOpHash printed out.

We can now verify with this tx hash on the block explorer, that we have successfully sent out a TX, and the gas fees were funded by the account address 0x6813Eb9362372EE...19671cBA69.

Last updated

Was this helpful?