Skip to content

Creating a Validator

Before trying to create a validator, ensure you have the following task complete:

  1. Initialize your node

  2. Complete our intake form

  3. Receive UNO tokens

  4. Start your node

  5. Ensure your node has caught up to the network’s current height

Once all of these tasks are finished, you can continue with creating your validator.

How Delegations Will Work

To ensure quick update cycles of the testnet, we ask that you only have a self delegation of 1 UNO. The Union team will delegate more to you to ensure you and the other validators have a similar delegation. This will enable us to maintain the majority of the total voting power so that we can quickly conduct updates to the network.

As we get closer to a mainnet release, we will update staking and slashing parameters and ask for more realistic self delegations. For the meantime, we will ensure to testnet is configured to change quickly with minimum friction.

Creating your validator

Now that you’re ready to create your validator, you can follow the steps below:

1) Create a Validator JSON File

touch validator.json

Add the following content to the file:

{
	"pubkey": <PUBKEY>,
	"amount": "1000000muno",
	"moniker": "<MONIKER>",
	"identity": "optional identity signature (ex. UPort or Keybase)",
	"website": "validator's (optional) website",
	"security": "validator's (optional) security contact email",
	"details": "validator's (optional) details",
	"commission-rate": "0.1",
	"commission-max-rate": "0.2",
	"commission-max-change-rate": "0.01",
	"min-self-delegation": "1"
}

Replacing:

  • <PUBKEY> with the result of running uniond comet show-validator
  • <MONIKER> with your moniker
  • And the optional content with your preferred details

2) Create a Proof of Possession

Assuming your private validator key is in the default location:

export PRIV_KEY=$(jq -r '.priv_key.value' ~/.union/config/priv_validator_key.json)
export POSSESSION_PROOF=$(uniond prove-possession "$PRIV_KEY")

3) Run the Create Validator Command

Then you can submit this file using the create-union-validator sub-command:

uniond union-staking create-union-validator $VALIDATOR_JSON_PATH $POSSESSION_PROOF \
	--from $KEY_NAME \
	--chain-id union-testnet-8

Where VALIDATOR_JSON_PATH is the path to your validator.json

Epoch Staking & Validator Set Updates

Union uses Epoch Staking to perform validator set updates. This means that the validator set is only updated once per epoch.

If you successfully create your validator during the middle of an epoch, your validator will join the active set once it rotates at the end of the current epoch.