How to manage ownership of a Multi-Owner Light Account

A MultiOwnerLightAccount has one or more ECDSA or SCA owners. This lets your account integrate with multiple signers at once, and supports recovering your account if one signer is lost.

The MultiOwnerLightAccount is able to:

  • Update (add or remove) owners for an account.
  • Show all owners of an account.
  • Validate signed signatures of ERC-4337 enabled user operations as well as regular transactions.

When you connect your MultiOwnerLightAccount to SmartAccountClient you can extend the client with multiOwnerLightAccountClientActions, which exposes a set of methods available to call the MultiOwnerLightAccount with the client connected to the account.

When using createMultiOwnerLightAccountAlchemyClient in @account-kit/smart-contracts, the SmartAccountClient comes automatically extended with multiOwnerLightAccountClientActions as defaults available for use.

1. Get all current owners of a MultiOwnerLightAccount

You can use the getOwnerAddresses method on the MultiOwnerLightAccount object, which can be accessed from a connected client.

1import { multiOwnerLightAccountClient } from "./client";
2
3const owners = await multiOwnerLightAccountClient.account.getOwnerAddresses();

2. Add or remove owners for a MultiOwnerLightAccount

You can use the updateOwners method on the multiOwnerLightAccountClientActions extended smart account client to add or remove owners from the MultiOwnerLightAccount.

1import { multiOwnerLightAccountClient } from "./client";
2
3const ownersToAdd = []; // the addresses of owners to be added
4const ownersToRemove = []; // the addresses of owners to be removed
5
6const opHash = await multiOwnerLightAccountClient.updateOwners({
7 ownersToAdd,
8 ownersToRemove,
9});
10
11const txHash =
12 await multiOwnerLightAccountClient.waitForUserOperationTransaction({
13 hash: opHash,
14 });