# Validator FAQ

TIP

For general concepts, please refer to General Concepts

# General Questions

# How to Become an Plug Chain Hub Validator

Refer to Join The Mainnet

It is also recommended to test your validator setup on the Testnet before launch

TIP

To earn more delegation for your validator, you are advised to:

  • Undergo a security audit
  • Open-source some dev tools and workflow
  • Setup your own website to build your own image

# What are hardware requirements

The minimum hardware requirements are mentioned here: Hardware Requeirment

# What are the different states a validator can be in

After a validator is created with a create-validator transaction, they can be in three states:

  • bonded: Validator is in the active set and participates in consensus. Validator is earning rewards and can be slashed for misbehaviour.
  • unbonding:
    • Validator misbehaved and is in jail, i.e. outisde of the validator set. If the jailing is due to being offline for too long, the validator can send an unjail transaction in order to re-enter the validator set.
    • Validator is out of the top 100 bonded and become a Candidate, the validator can delegate more plugchaind to himself to be in top 100, then he will get bonded automatically.
  • unbonded: Validator is not in the active set, and therefore not signing blocks. Validator cannot be slashed, and does not earn any reward. It is still possible to delegate to this validator.

# What are the different types of keys

In short, there are two types of keys:

# Tendermint Key

This is a unique key used to sign consensus votes.

  • It is generated when the node is created by plugchaind init

  • Query the associated public key prefixed with gxvalconspub

    plugchaind tendermint show-validator
    
  • Query the associated bech32 address prefixed with gxvalcons

    plugchaind tendermint show-address
    
  • Query the associated hex address

    plugchaind status 2>&1 | jq -r .ValidatorInfo.Address
    

    It is also stored in the config/priv_validator.json

# Application key

This key is created from plugchaind and used to sign transactions. Application keys are associated with a public key prefixed by gxpub and an address prefixed by gx. Both are derived from account keys generated by plugchaind keys add.

Note: A validator's operator key is directly tied to an application key, but uses reserved prefixes solely for this purpose: gxvaloper and gxvaloperpub.

# How to backup the validator

It is really IMPORTANT to backup your validator private key carefully, it's the only way to restore your validator. Note the validator private key is a Tendermint Key

If you are using the software sign (which is the default signing method of tendermint), your Tendermint Key is located in <plugchaind-home>/config/priv_validator.json. The easiest way is to backup the whole config folder.

Or you can use a hardware to manage your Tendermint Key much more safely, such as the YubiHSM2 (opens new window)

# How to migrate the validator

There are many ways to migrate your validator, the most recommended way is:

  1. Run a Full Node on the new server

  2. After you have caught-up, stop the Validator Node and the Full Node

  3. Replace the Full Node config folder with the Validator's

  4. Start the new Validator Node

# What is 'self-delegation'? How can I increase my 'self-delegation'

Self-delegation is delegation from a validator to himself. This amount can be increased by sending a delegate transaction from your validator's operator account which you used to create the validator.

# Is there a minimum amount of plugchaind that must be delegated to be an active (=bonded) validator

The minimum mortgage 1pc, on the chain is 1*10^6 uplugcn, you can create a validator, but whether you can become an active validator depends on whether the number of your mortgage (including delegated) exceeds the 100th validator.

# Can a validator run away with their delegators' funds

By delegating to a validator, an user delegates voting power. The more voting power a validator has, the more weight they have in the consensus and governance processes. This does not mean that the validator has custody of their delegators' funds. By no means can a validator run away with its delegator's funds.

Even though delegated funds cannot be stolen by their validators, delegators are still liable if their validators misbehave.

# How often will a validator be chosen to propose the next block? Does it go up with the quantity of bonded plug

The validator that is selected to propose the next block is called proposer. Each proposer is selected deterministically, and the frequency of being chosen is proportional to the voting power (i.e. amount of bonded plug) of the validator. For example, if the total bonded stake across all validators is 100 plugchaind and a validator's total stake is 10, then this validator will propose ~10% of the blocks.

# What is the incentive to stake

Please refer to Staking Rewards

# What is the incentive to run a validator

Validators earn proportionally more revenue than their delegators because of commissions.

Validators also play a major role in governance. If a delegator does not vote, they inherit the vote from their validator. This gives validators a major responsibility in the ecosystem.

# What are validators commission

Revenue received by a validator's pool is split between the validator and their delegators. The validator can apply a commission on the part of the revenue that goes to their delegators. This commission is set as a percentage. Each validator is free to set their initial commission, maximum daily commission change rate and maximum commission. The Plug Chain Hub enforces the parameter that each validator sets. Only the commission rate can change after the validator is created.

# What is the formula to calculate the rewards

Please refer to Staking Rewards Calculation Formula

# How to query my validator address

There are 2 kinds of validator addresses:

  • Validator operator address, which is an Application Key that you used to create the validator

    To query a validator's operator address(gxvaloper...) and pubkey(gxvaloperpub...):

    plugchaind keys show MyKey --bech=val
    
  • Validator node address, which is a Tendermint Key.

    To query the associated address(gxvalcons...) and consensus pubkey(gxvalconspub...), please refer to the Tendermint Key

# Common Problems

# BondStatus

BondStatus is the status of a validator.

Name Number Description
BOND_STATUS_UNSPECIFIED 0 UNSPECIFIED defines an invalid validator status.
BOND_STATUS_UNBONDED 1 UNBONDED defines a validator that is not bonded.
BOND_STATUS_UNBONDING 2 UNBONDING defines a validator that is unbonding.
BOND_STATUS_BONDED 3 BONDED defines a validator that is bonded.

# The verifier information is similar to the following:

commission:
  commission_rates:
    max_change_rate: "0.010000000000000000"
    max_rate: "0.200000000000000000"
    rate: "0.100000000000000000"
  update_time: "2021-07-27T13:19:37.983601182Z"
consensus_pubkey:
  '@type': /cosmos.crypto.ed25519.PubKey
  key: 5TTh7vhc3RvibPttF29r2iC6qSNfGbJdY9sVsQHBT8w=
delegator_shares: "8813835048395.526196202816719238"
description:
  details: ""
  identity: ""
  moniker: My Validator
  security_contact: ""
  website: ""
jailed: true
min_self_delegation: "1000000"
operator_address: gxvaloper19quyxaq87dpsxt9w2q23c4d8x3fck4fzh4u8es
status: BOND_STATUS_UNBONDING
tokens: "8466534803455"
unbonding_height: "831092"
unbonding_time: "2021-09-02T18:02:44.032627007Z"

# My validator has voting_power: 0

Your validator has become jailed or out of the top 100 bonded validators.

If you got jailed, you can get your voting power back to your validator. First, if plugchaind is not running, start it up again:

plugchaind start --minimum-gas-prices 0.0001uplugcn

Wait for your full node to catch up to the latest block. Then, you can unjail your validator if you have been jailed over the DowntimeJailDuration

Lastly, check your validator again to see if your voting power is back.

plugchaind status

You may notice that your voting power is less than it used to be. That's because you got slashed!

# My plugchaind crashes because of too many open files

The default number of files Linux can open (per-process) is 1024. plugchaind is known to open more than 1024 files. This causes the process to crash. A quick fix is to run ulimit -n 4096 (increase the number of open files allowed, only effective for the current session) and then restart the process with plugchaind start. If you are using systemd or another process manager to launch plugchaind this may require some configuration at that level.

  • A sample systemd file to fix this issue is below:

    # /etc/systemd/system/plugchaind.service
    [Unit]
    Description=Plug Chain Hub Node
    After=network.target
    
    [Service]
    Type=simple
    User=ubuntu
    WorkingDirectory=/home/ubuntu
    ExecStart=/home/ubuntu/go/bin/plugchaind start
    Restart=on-failure
    RestartSec=3
    LimitNOFILE=65535
    
    [Install]
    WantedBy=multi-user.target
    
  • A sample to update the global ulimit on Ubuntu:

    # Edit limits.conf
    vim /etc/security/limits.conf
    
    # Append the following lines at the bottom
    * hard nofile 65535
    * soft nofile 65535
    root hard nofile 65535
    root soft nofile 65535
    
    # Reboot the system
    reboot
    
    # Re-login & Check whether ulimit is updated to 65535
    ulimit -n
    

# You'd better have backed up your Tendermint Key

then you can do these:

  • Stop the node
  • Replace the current <plugchaind-home>/config/priv_validator.json with the one you backed up
  • Confirm the Consensus Pubkey is correct via plugchaind tendermint show-validator --home=<plugchaind-home>
  • Start the node
  • Check voting_power should now be greater than 0: plugchaind status

# What if I lost my Tendermint Key

That means you have Lost Your Validator Forever! You can only create a new one and redelegate all of your shares to the new Validator.