Changing the Operational Address

Updating your operational address is an important maintenance step for validator security.
The operational account is responsible for signing attestations, while your staker account holds and manages your self-stake.
By separating these roles, you minimize risk and improve overall validator safety.

⚠️ Important:
After changing your operational address, don’t forget to update both the private key and operational address in your attestation service configuration file.
See the detailed instructions here.


Create a New Operational Account

First, create a new operational account.
(Assume your local RPC node listens on port 9545.)

sncast account create --name operation_account --url http://localhost:9545

After running this command, note the new operational address displayed in the output and export it as an environment variable:

export OPERATIONAL_ADDRESS=

Next, fund the new operational account with sufficient STRK to cover transaction fees and deploy it to the network:

sncast account deploy --name operation_account --url http://localhost:9545

Declare the New Operational Address

Now that your new operational account is deployed, you must declare it in the staking contract.

Use the new operational account to invoke the staking contract’s declare_operational_address function, providing your old validator (staker) address as an argument:

sncast --account=operation_account invoke \
    --contract-address=0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7 \
    --function=declare_operational_address \
    --arguments=$STAKER_ADDRESS \
    --url http://localhost:9545

Parameters:

  • 0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7 — Mainnet staking contract address
  • $STAKER_ADDRESS — Old operational (staker) address

Finalize the Change

Finally, use your old operational account to set the new operational address of the validator:

sncast --account=staker invoke \
    --contract-address=0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7 \
    --function=change_operational_address \
    --arguments=$OPERATIONAL_ADDRESS \
    --url http://localhost:9545

Parameters:

  • 0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7 — Mainnet staking contract address
  • $OPERATIONAL_ADDRESS — New operational address

Once completed, your validator will begin using the new operational account for attestations. Make sure to update your systemd service and restart the attestation process to apply the changes.