# Instructions

## What are Instructions? <a href="#what-are-instructions" id="what-are-instructions"></a>

Instructions define **what happens** when a proposal passes. A proposal without instructions is purely signaling, it doesn't execute any on-chain action.

### Adding Instructions to a Proposal <a href="#adding-instructions-to-a-proposal" id="adding-instructions-to-a-proposal"></a>

{% stepper %}
{% step %}

#### Create a Proposal

Navigate to your DAO and click **Create Proposal**.
{% endstep %}

{% step %}

#### Fill Proposal Details <a href="#step-2---fill-proposal-details" id="step-2---fill-proposal-details"></a>

Add a title and description explaining the purpose.
{% endstep %}

{% step %}

#### Add Instruction <a href="#step-3---add-instruction" id="step-3---add-instruction"></a>

Click **Add Instruction** and select the instruction type you need.
{% endstep %}

{% step %}

#### Submit <a href="#step-5---submit" id="step-5---submit"></a>

Review and submit the proposal for voting.
{% endstep %}
{% endstepper %}

### Instruction Types <a href="#instruction-types" id="instruction-types"></a>

#### Common Instructions <a href="#treasury-instructions" id="treasury-instructions"></a>

| Instruction              | Description                                 |
| ------------------------ | ------------------------------------------- |
| **Transfer Tokens**      | Send tokens from treasury to a recipient    |
| **Create Token Account** | Create a new token account for the treasury |
| **Burn Tokens**          | Burn tokens from treasury                   |
| **Update Metadata**      | Add or update DAO Metadata                  |

#### Treasury/ DeFi Instructions <a href="#token-instructions" id="token-instructions"></a>

| Instruction                              | Description                                                                         |
| ---------------------------------------- | ----------------------------------------------------------------------------------- |
| **DeFi Lending**                         | Earn yield on treasury assets by depositing on [Save Finance](https://save.finance) |
| **Staking (Stake, Deactivate, Unstake)** | Stake SOL from the treasury to a validator                                          |
| **Token22 Fees**                         | Claim fees from token22 token account                                               |

#### Streaming Instructions <a href="#streaming-instructions" id="streaming-instructions"></a>

| Instruction            | Description                                   |
| ---------------------- | --------------------------------------------- |
| **Create Stream**      | Set up token streaming to a recipient         |
| **Cancel Stream**      | Stop an active stream                         |
| **Lock Tokens**        | Locks token until a specific date             |
| **Cancel Lock Tokens** | Cancel an active token lock from the treasury |

#### Custom Instructions <a href="#custom-instructions" id="custom-instructions"></a>

| Instruction            | Description                                   |
| ---------------------- | --------------------------------------------- |
| **Base64 Instruction** | Execute any instruction using raw base64 data |
| **Empty Instruction**  | Signaling proposal with no execution          |

Use Base64 instructions for advanced use cases or protocols not yet integrated into the UI.

#### Governance Instructions <a href="#governance-instructions" id="governance-instructions"></a>

| Instruction                   | Description                  |
| ----------------------------- | ---------------------------- |
| **Set Governance Config**     | Modify DAO voting parameters |
| **Set Realm Authority**       | Change the realm authority   |
| **Set Realm Config**          | Update realm configuration   |
| **Add/Remove Council Member** | Manage council membership    |

#### Program Instructions <a href="#protocol-integrations" id="protocol-integrations"></a>

| Instruction               | Description                                 |
| ------------------------- | ------------------------------------------- |
| **Upgrade Program**       | Deploy a new version of a DAO-owned program |
| **Set Upgrade Authority** | Transfer program upgrade authority          |
| **Close Program Buffer**  | Clean up unused program buffers             |

### Multiple Instructions <a href="#multiple-instructions" id="multiple-instructions"></a>

A single proposal can contain multiple instructions. They execute in order when the proposal is approved.

Common multi-instruction patterns:

* Create token account → Transfer tokens
* Multiple treasury transfers in one proposal

### Instruction Hold-up Time <a href="#instruction-hold-up-time" id="instruction-hold-up-time"></a>

Each instruction can have a **hold-up time** a delay between approval and execution. This gives the community time to react before irreversible actions occur.

### Executing Instructions <a href="#executing-instructions" id="executing-instructions"></a>

After a proposal passes:

1. Wait for any hold-up time to expire
2. Click **Execute** on each instruction
3. Confirm the transaction

Anyone can execute approved instructions once the hold-up time passes. Instructions must be executed before they expire.

For developers wanting to add custom protocol instructions, please reach out.
