> ## Documentation Index
> Fetch the complete documentation index at: https://docs.berachain.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage Incentives Commission

> Set and change the validator incentives commission rate (0–20%) via BeraChef; queue and activation delay.

A validator can configure the commission taken on Incentives distributed to its `$BGT` boosters — users who Boost a validator with `$BGT`. In this guide, you'll walk through the process of changing a validator's commission.

<Frame>
  <img src="https://mintcdn.com/berachain-422fce37/BkBk8vRdRQK2xmQj/images/nodes/berachain-change-validator-commission-rate-process.png?fit=max&auto=format&n=BkBk8vRdRQK2xmQj&q=85&s=e2f59f3f44954673c96d60d1d95edad0" alt="Berachain change validator commission rate process flow" width="2800" height="1328" data-path="images/nodes/berachain-change-validator-commission-rate-process.png" />
</Frame>

## Requirements

Before you begin, ensure you have the following:

* An RPC endpoint to Berachain
* `$BERA` to process the transaction
* `Operator Address` of the validator wanting to change their commission
* [Foundry](https://book.getfoundry.sh/getting-started/installation)
* BeraChef Contract Address: `0xdf960E8F3F19C481dDE769edEDD439ea1a63426a`

## How validator commissions are updated

When Incentives are activated, all commission rates for Validator Incentives are defaulted to **5%** — meaning Validators receive 5% of all Incentives. This is defined by `DEFAULT_COMMISSION_RATE` in `BeraChef.sol`.

For a validator to change their commission rate, they must first queue the change, wait for the `MAX_COMMISSION_CHANGE_DELAY` of **16,382 blocks**, and then activate the new commission. If a commission rate is already queued, it must be activated before a new commission rate can be proposed.

<Tip>**Anyone** can activate a queued commission rate, not just the validator.</Tip>

## Option A - Change validator commission using Foundry

The following walks you through updating the Validator Commission rate via Foundry's CLI `cast`.

### Step 1 - Get current validator commission rate

```bash theme={null}
# Env Vars
BERACHEF_CONTRACT_ADDRESS=0xdf960E8F3F19C481dDE769edEDD439ea1a63426a
RPC_URL=https://rpc.berachain.com/
VALIDATOR_PUBKEY_KEY=<0xYOUR_VALIDATOR_PUBKEY>

# Command
cast call $BERACHEF_CONTRACT_ADDRESS \
    "getValCommissionOnIncentiveTokens(bytes)(uint96)" \
    $VALIDATOR_PUBKEY_KEY \
    --rpc-url $RPC_URL;
```

### Step 2 - Queue new validator commission rate

Determine the amount you would like to queue:

```bash theme={null}
# Env Vars
BERACHEF_CONTRACT_ADDRESS=0xdf960E8F3F19C481dDE769edEDD439ea1a63426a
RPC_URL=https://rpc.berachain.com/
OPERATOR_WALLET_PRIVATE_KEY=<0xYOUR_OPERATOR_WALLET_PRIVATE_KEY>
VALIDATOR_PUBKEY_KEY=<0xYOUR_VALIDATOR_PUBKEY>
COMMISSION_RATE=0.05e4 # 5% = 0.05e4 or 500, 100% = 1e4 or 10000

# Command
cast send $BERACHEF_CONTRACT_ADDRESS \
    "queueValCommission(bytes,uint96)" \
    $VALIDATOR_PUBKEY_KEY \
    $COMMISSION_RATE \
    --private-key $OPERATOR_WALLET_PRIVATE_KEY \
    --rpc-url $RPC_URL;
```

### Step 3 - Verify queued validator commission rate

```bash theme={null}
# Env Vars
BERACHEF_CONTRACT_ADDRESS=0xdf960E8F3F19C481dDE769edEDD439ea1a63426a
RPC_URL=https://rpc.berachain.com/
VALIDATOR_PUBKEY_KEY=<0xYOUR_VALIDATOR_PUBKEY>

# Command
cast call $BERACHEF_CONTRACT_ADDRESS \
    "getValQueuedCommissionOnIncentiveTokens(bytes)((uint96,uint64))" \
    $VALIDATOR_PUBKEY_KEY \
    --rpc-url $RPC_URL;
```

### Step 4 - Activate queued validator commission rate

<Info>
  This can only be done after **16,382 blocks** have passed, and this **can be executed by anyone**.
</Info>

```bash theme={null}
# Env Vars
BERACHEF_CONTRACT_ADDRESS=0xdf960E8F3F19C481dDE769edEDD439ea1a63426a
RPC_URL=https://rpc.berachain.com/
WALLET_PRIVATE_KEY=<0xYOUR_WALLET_PRIVATE_KEY>
VALIDATOR_PUBKEY_KEY=<0xVALIDATOR_PUBKEY>

# Command
cast send $BERACHEF_CONTRACT_ADDRESS \
    "activateQueuedValCommission(bytes)" \
    $VALIDATOR_PUBKEY_KEY \
    --private-key $WALLET_PRIVATE_KEY \
    --rpc-url $RPC_URL;
```
