Using ERC-4337

Using ERC-4337

The Module Sandbox provides a complete abstraction of the ERC-4337 flows. This page gives an overview of the different helper utilities that enable this and how you can use them.

Creating and executing a UserOperation

To create and execute a UserOperation, you can use the useCreateUserOp (opens in a new tab) hook. The hook can be used like a regular React hook:

const createUserOp = useCreateUserOp();

The main argument for creating a UserOperation is the actions array. It consists of a list of ExecuteAction objects, which have the following parameters:

type ExecuteAction = {
  target: Address;
  value: BigInt;
  callData: Hex;

The createUserOp object has a mutateAsync method that can be used to create a UserOperation:

userOp = await createUserOp.mutateAsync({
  name: `Display Name in the UI`,

Optionally, you can also provide additional parameters to the mutateAsync method:

  • account: The account to use for the UserOperation. If not provided, the active account will be used. (Type: Account (opens in a new tab))
  • validator: The validator to use for the UserOperation. If not provided, the active validator will be used. (Type: Validator (opens in a new tab))
  • callback: A callback function that will be called when the UserOperation is executed. (Type: () => void)