Manage Validator Incentives Commission Rate
A validator can configure the commission taken on Incentives distributed to its $BGT boosters - users who Boost a validator with $BGT. In this guide, we'll walk through the process of changing a validator's commission.
Requirements
Before you begin, ensure you have the following:
- An RPC endpoint to Berachain
$BERA
to process the transactionOperator Address
of the validator wanting to change their commission- Foundry
- 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.
Option A - Change Validator Commission Using Foundry
The following will walk you through updating the Validator Commission rate via Foundry's CLI cast
.
Step 1 - Get Current Validator Commission Rate
# 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
The first step will be to determine the amount you would like to queue:
# 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
# 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 - Active Queud Validator Commission Rate
TIP
This can only be done after 16,382 Blocks
have passed, and this can be executed by anyone.
# Env Vars
BERACHEF_CONTRACT_ADDRESS=0xdf960E8F3F19C481dDE769edEDD439ea1a63426a
RPC_URL=https://rpc.berachain.com/
WALLET_PRIVATE_KEY=<0xYOUR_WALLET_PRIVATE_KEY>
VALIDATOR_PUBKEY_KEY=<0xVALIDATOR_PUBKEY>
COMMISSION_RATE=0.05e4 # 5% = 0.05e4 or 500, 100% 1e4 or 10000
# Command
cast send $BERACHEF_CONTRACT_ADDRESS \
"activateQueuedValCommission(bytes)" \
$VALIDATOR_PUBKEY_KEY \
--private-key $WALLET_PRIVATE_KEY \
--rpc-url $RPC_URL;