# 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.
- 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
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:
Run a Full Node on the new server
After you have caught-up, stop the Validator Node and the Full Node
Replace the Full Node config folder with the Validator's
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 viaplugchaind 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.