Skip to content
🚧 Under Development! May be incomplete.Some pages/links may be incomplete or subject to change.

Change Your Validator Operator Address Programmatically

The following will walk you through the process of changing your operator address utilizing Foundry cast.

What Is An Operator Address?

The Operator Address is the BERA wallet address that is associated with a validator node.

It is responsible for receiving block rewards and is the sole address that has permission to change the Reward Allocation to distribute $BGT emissions to Reward Vaults.

Requirements

Before you begin, ensure you have the following:

  • Operator Address Private Key
  • Your Validator Withdraw Credential Address (If Different Than Operator Address)
  • BeaconKit Binary (For Validator PubKey)
  • $BERA to process the transaction
  • Foundry

Steps To Change Your Operator Address Via Foundry

WARNING

This process revokes the current operator's permissions to receive block rewards and change the validator's Reward Allocation.

Step 1 - Get Your Validator PubKey

bash
# FROM: /path/to/beacond

# BeaconKit Configuration - Example `$HOME/.beacond` or `/.beacond`
YOUR_BEACOND_HOME_DIR="<YOUR_BEACOND_HOME_DIRECTORY>";

# Withdraw Credential Address - Can be the same as the Operator Address
YOUR_VALIDATOR_WITHDRAW_CRED_ADDRESS="<0xYOUR_VALIDATOR_WITHDRAW_CRED_ADDRESS>";

# Genesis Configurations - DO NOT CHANGE THESE
GENESIS_VALIDATORS_ROOT="0x053397d1ddb01f3910e91ef762070a075e4b17ba3472c3c4dd391a68bd5d95a1";
GENESIS_FORK_VERSION="0x04000000";
VAL_DEPOSIT_GWEI_AMOUNT="32000000000";
DEPOSIT_CONTRACT_ADDRESS="0x4242424242424242424242424242424242424242";

DEPOSIT_OUTPUT=$(./beacond deposit create-validator $YOUR_VALIDATOR_WITHDRAW_CRED_ADDRESS $VAL_DEPOSIT_GWEI_AMOUNT $GENESIS_FORK_VERSION $GENESIS_VALIDATORS_ROOT --home $YOUR_BEACOND_HOME_DIR);
echo $DEPOSIT_OUTPUT;

# [Expected Similar Output]:
# 7:00AM INF Deposit Message CallData amount=0x773594000
# pubkey=0xYOUR_VALIDATOR_PUBKEY
# signature=0x...
#withdrawal credentials=0x010000000000000000000000YOUR_VALIDATOR_WITHDRAW_CRED_ADDRESS...

YOUR_VALIDATOR_PUBKEY=$(echo "$DEPOSIT_OUTPUT" | grep "pubkey=" | awk -F'pubkey=' '{print $2}' | awk -F' ' '{print $1}');
echo $YOUR_VALIDATOR_PUBKEY;

# [Expected Similar Output]:
# 0xYOUR_VALIDATOR_PUBKEY_92CHARS_INCLUDING_0X

Step 2 - Check Your Current Operator Address

This will double check your current operator address.

bash
# RPC URL assumed to be local but can use https://rpc.berachain.com/
cast call 0x4242424242424242424242424242424242424242 "getOperator(bytes)" <0xYOUR_VALIDATOR_PUBKEY> --rpc-url http://localhost:8545;

# [Expected Similar Output]:
# 0x000000000000000000000000YOUR_CURRENT_OPERATOR_ADDRESS

Step 3 - Change Your Operator Address

This will change your operator address.

bash
# RPC URL assumed to be local but can use https://rpc.berachain.com/
cast send 0x4242424242424242424242424242424242424242 "requestOperatorChange(bytes,address)" <0xYOUR_VALIDATOR_PUBKEY> <0xYOUR_NEW_OPERATOR_ADDRESS> --rpc-url [<rpc_url>](http://localhost:8545) --private-key <0xYOUR_CURRENT_OPERATOR_PRIVATE_KEY>;