Account Abstraction

Use Engine to deploy, manage, and transact with smart accounts on behalf of your users.

Deploy an account factory

To deploy smart accounts (referred to as "accounts" from here on), deploy an AccountFactory contract. This contract handles deploying individual Account contracts for your users.

Endpoint: POST /deploy/<chain>/deployer.thirdweb.eth/AccountFactory

Payload:

{
"constructorParams": [
"<default_admin>",
"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789"
] // <default_admin> should be your backend-wallet-address
}

Deploy user accounts

Once the factory is set up, deploy accounts for your users.

Endpoint: POST /contract/<chain>/<account_factory_address>/account-factory/create-account

Body:

{
"adminAddress": "0x..." // The user's wallet address to deploy a smart wallet for
}

This adds the adminAddress as the primary admin that can act on behalf of the newly deployed account.

To control the account with a backend wallet, specify the backend wallet in the adminAddress field.

Grant permissions and sessions

Grant & revoke admins on an account with the /contract/<chain>/<account_address>/account/admins endpoints.

Grant & revoke sessions on an account which allow specific wallets to interact with specified contracts for a given period of time with the /contract/<chain>/<account_address>/account/sessions endpoints.

Transact with an account

Make write calls with a smart account by calling a write endpoint and specify the x-backend-wallet-address and x-account-address headers.

The x-backend-wallet-address should be set to the engine backend wallet that is an admin over the account.

The x-account-address should be set to the deployed account address itself.

Write calls made using these headers will initiate a UserOperation sent from the specified account.