---
title: AddOperator
description: Provisions a new operator by creating their Operator PDA
---

Provisions a new operator by creating their `Operator` PDA. After this call, the
`operator` wallet can call `ReleaseFunds` and `ResetSmtRoot`.

## Accounts

| Account                          | Writable | Signer | Description                                                         |
| -------------------------------- | -------- | ------ | ------------------------------------------------------------------- |
| `payer`                          | ✓        | ✓      | Fee payer                                                           |
| `admin`                          |          | ✓      | Instance admin                                                      |
| `instance`                       |          |        | Instance PDA                                                        |
| `operator`                       |          |        | Operator wallet to provision                                        |
| `operator_pda`                   | ✓        |        | Operator PDA - auto-derived from `["operator", instance, operator]` |
| `system_program`                 |          |        | System Program                                                      |
| `event_authority`                |          |        | Event authority PDA                                                 |
| `private_channel_escrow_program` |          |        | Escrow Program                                                      |

## Parameters

| Parameter | Type | Description                                                                               |
| --------- | ---- | ----------------------------------------------------------------------------------------- |
| `bump`    | `u8` | Bump seed for the `operator_pda`. Optional: the `Async` client auto-derives it if omitted |

> The IDL contains a `discriminator: u8` argument (value `3`) that is auto-set
> by the generated client and should not be passed manually.

## Important Notes

- Use `getAddOperatorInstructionAsync`; it auto-derives `bump` and
  `operator_pda` when they are not provided. A synchronous
  `getAddOperatorInstruction` variant also exists if you already computed `bump`
  yourself
- After this call, the `operator` wallet can call `ReleaseFunds` and
  `ResetSmtRoot`
- Emits an event via `EmitEvent` CPI
