Why am I not elected in the EPOS Committee

This document is to share a list of steps to help troubleshoot why your validator node is not elected in the EPOS committee.

EPOS medium document

https://harmony.one/epos

Now let’s get into action.

Non election in the EPOS committee are caused by two main issues :

  1. Your validator profile needs to have satisfactory conditions

    1. current total stake has to be among the 320 highest stake before the change of next epoch

    2. Active flag needs to be true

    3. The numbers of block signed per epoch needs to be above 66%

  2. Your node needs to be functional

    1. Fully synced

    2. Signing blocks

Validator profile need to satisfy the below

Bidding for a place in the EPOS committee

Verify the median stake

CLI
Staking Explorer
CLI
./hmy -n https://api.s0.os.hmny.io blockchain median-stake
{
"id": "0",
"jsonrpc": "2.0",
"result": 286000000000000000000
}
Staking Explorer

the CLI returned a value in wei, it can be converted online converter like https://eth-converter.com/

Total delegation is above the median stake

Visit https://staking.harmony.one/validators/<youroneaccount>

Example : https://staking.harmony.one/validators/one1u6c4wer2dkm767hmjeehnwu6tqqur62gx9vqsd

Validator Total stake

Your current total stake has to be among the 320 highest stake before the change of next epoch. For that, one way to make sure of it is to be near / above the median stake.

If you are not above the median stake then time to ask for more delegation or delegate yourself more ONE token following this doc on how to delegate more ONE token

Make sure your max-total-delegation is high enough and above the median stake so your added delegation works

Your validator node epos-eligibility-status flag needs to be active

Issue the command ./hmy -n https://api.s0.os.hmny.io blockchain validator information <ONE_VALIDATOR_ACCOUNT> | grep epos-eligibility-status

./hmy -n https://api.s0.os.hmny.io blockchain validator information one1u6c4wer2dkm767hmjeehnwu6tqqur62gx9vqsd | grep epos-eligibility-status
"epos-eligibility-status": "active",

If inactive, update it to active via the command ./hmy -n https://api.s0.os.hmny.io staking edit-validator --validator-addr <ONE_VALIDATOR_ACCOUNT> --active true --passphrase

OSTN
Partner Network
OSTN
./hmy -n https://api.s0.os.hmny.io staking edit-validator --validator-addr one1u6c4wer2dkm767hmjeehnwu6tqqur62gx9vqsd --active true --passphrase
Partner Network
./hmy -n https://api.s0.ps.hmny.io staking edit-validator --validator-addr one1u6c4wer2dkm767hmjeehnwu6tqqur62gx9vqsd --active true --passphrase

Finally check your signed blocked

using the command ./hmy -n https://api.s0.os.hmny.io blockchain validator information <ONE_VALIDATOR_ACCOUNT>

OSTN
Partner Network
OSTN
./hmy -n https://api.s0.os.hmny.io blockchain validator information one1u6c4wer2dkm767hmjeehnwu6tqqur62gx9vqsd
Partner Network
./hmy -n https://api.s0.ps.hmny.io blockchain validator information one1u6c4wer2dkm767hmjeehnwu6tqqur62gx9vqsd

and search for :

"current-epoch-signing-percent": {
"current-epoch-signed": 0,
"current-epoch-to-sign": 75,
"percentage": "0.000000000000000000"
},

the above explain why your validator became offline as the % needs to be above 66% (0.66). To fix the above, we have to make sure the node is working correctly and below are few pointers

Your node needs to be functional

Fully synced node

Compare your block height

./hmy blockchain latest-header | grep blockNumber

If the above doesn’t work and you have an error message similar to this: commit: v304-0e26945, error: dial tcp4 127.0.0.1:9500: connect: connection refused It means the harmony node binary is not running. Please follow this documentation on how to run the node.

and the network block height

OSTN
Partner network
OSTN
./hmy -n https://api.s0.os.hmny.io blockchain latest-header | grep blockNumber
Partner network
./hmy -n https://api.s0.ps.hmny.io blockchain latest-header | grep blockNumber

Make sure network height and your current height are very close or equal. Also, for non shard 0 node, you need 2 DBs to be synced, your non-shard 0 and the shard 0.

the above command is for network height on shard 0, change s0 to s1, s2, .. to match yours in the api URL

When you are fully synced and your validator profile is satisfactory you should start having BINGOs in your validator log file at epoch change.

You can check BINGOs via this command

tail -f latest/zero*.log | grep BINGO

And you’ll notice in your validator information that you started signing blocks

"current-epoch-signing-percent": {
"current-epoch-signed": 31,
"current-epoch-to-sign": 31,
"percentage": "1.000000000000000000"
},

If you fail to sign blocks, verify your machine/vps doesn't have CPU/memory/hard disk/internet issues. When you fail to sign more than 66% of the blocks in an epoch, you’ll be kicked out from the committee and your active flag will become false again.