Skip to main content

Join as a Validator

How to become a validator on IDEP Network

In order to become an active validator, you must have more stake than the bottom validator. You may still execute the following steps, but you will not be active and therefore won't receive staking rewards.

1. Run a new full node on a new machine.

In order to become a validator, you node must be fully synced with the network. You can check this by doing:

iond status

When the value of catching_up is false, your node is fully synced with the network.

"sync_info": {
"latest_block_hash": "7BF95EED4EB50073F28CF833119FDB8C7DFE0562F611DF194CF4123A9C1F4640",
"latest_app_hash": "7C0C89EC4E903BAC730D9B3BB369D870371C6B7EAD0CCB5080B5F9D3782E3559",
"latest_block_height": "668538",
"latest_block_time": "2020-10-31T17:50:56.800119764Z",
"earliest_block_hash": "E7CAD87A4FDC47DFDE3D4E7C24D80D4C95517E8A6526E2D4BB4D6BC095404113",
"earliest_app_hash": "",
"earliest_block_height": "1",
"earliest_block_time": "2021-09-15T14:02:31Z",
"catching_up": false
},

2. Set your `minimum-gas-price parameter

We recommend starting with 0.0125uidep per gas unit:

perl -i -pe 's/^minimum-gas-prices = .+?$/minimum-gas-prices = "0.0125uidep"/' ~/.iond/config/app.toml
sudo systemctl restart secret-node

Your validator will not accept transactions that specify --gas-price lower than the minimun-gas-price you set here.

3. Generate a new key pair for yourself (change <key-alias> with any word of your choice, this is just for your internal/personal reference):

ioncli keys add <key-alias>
caution

BACKUP YOUR MNEMONICS! Please make sure you also backup your validator

Note: If you already have a key you can import it with the bip39 mnemonic with ioncli keys add <key-alias> --recover or with ioncli keys export (exports to stderr!!) & ioncli keys import.

4. Transfer tokens to your delegator's address:

This is the idep wallet from which you delegate your funds to you own validator. You must delegate at least 1 IDEP (1000000uidep) from this wallet to your validator.

To create a secret wallet, run:

ioncli keys add <key-alias>

Make sure to backup the mnemonic you got from the above command!

Then transfer funds to address you just created.

5. Check that you have the funds:

ioncli q bank balances $(ioncli keys show -a <key-alias>)

If you get the following message, it means that you have no tokens yet:

ERROR: unknown address: account idep1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx does not exist

#6. Join the network as a new validator: replace <MONIKER> with the moniker you configured in step 3 of creating a full-node, and adjust the amount you want to stake

remember 1 IDEP = 1,000,000 uidep, and so the command below stakes 100 IDEP.

ioncli tx staking create-validator \
--amount=100000000uscrt \
--pubkey=$(iond tendermint show-validator) \
--identity={KEYBASE_IDENTITY} \
--details="To infinity and beyond!" \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--moniker=<MONIKER> \
--from=<key-alias>

7. Check that you have been added as a validator:

ioncli q staking validators | jq '.[] | select(.description.moniker == "<MONIKER>")'

Or run: ioncli q staking validators | grep moniker. You should see your moniker listed.

danger

Dangers in running a validator

There are a couple of scenarios that can lead to losing a precentage of your and your delegators' stake. These are called slashing events.

The following is updated as of APR 30, 2022.

Slashing for downtime

Conditions for downtime:

It's based on actual blocktime as opposed to being based on theoretical blocktime ie (SignedBlocksWindow & MinSignedPerWindow network parameters).

Signing less than MinSignedPerWindow blocks out of every SignedBlocksWindow window will result in a downtime slash. Blocktime tends to fluctuate on the network.

Parameters: 11250 blocks out of every 22500-blocks.

  • For a block time of 6.8 seconds, this roughly translates to being up for 21.25 hours out of every 42.5-hour window.

  • For a block time of 6.4 seconds, this roughly translates to being up for 20 hours out of every 40-hour window.

Penalties for downtime:

  • Slashing of 0.01% of your and your delegators' staking amount.
  • Jailing for 10 minutes of your validator node. You don't earn block rewards for this period and at the end must manually unjail your node with ioncli tx slashing unjail --from <key-alias>.

Slashing for double-signing

Conditions for double-signing:

  • Your validator signs the same block height twice.

  • Penalties for double-signing:

  • Slashing of 5% of your and your delegators' staking amount.

  • Jailing forever (tombstoned) of your validator node. You cannot earn block rewards anymore with this validator and you and your delegators must redelegate your stake to a different validator.

Protecting your validator agains DDoS attacks

See Sentry Nodes.

Staking more tokens

(remember 1 IDEP = 1,000,000 uidep)

In order to stake more tokens beyond those in the initial transaction, run:

ioncli tx staking delegate $(ioncli keys show <key-alias> --bech=val -a) <amount>uscrt --from <key-alias>

Editing your Validator

ioncli tx staking edit-validator \
--moniker "<new-moniker>" \
--website "https://idep.network" \
--identity 6A0D65E29A4CBC8E \
--details "We come in peace!" \
--chain-id <chain_id> \
--from <key_name> \
--commission-rate "0.10"

Seeing your rewards from being a validator

ioncli q distribution rewards $(ioncli keys show -a <key-alias>)

Seeing your commissions from your delegators

ioncli q distribution commission $(ioncli keys show -a <key-alias> --bech=val)

Withdrawing rewards

ioncli tx distribution withdraw-rewards $(ioncli keys show --bech=val -a `<key-alias>`) --from `<key-alias>`

Withdrawing rewards+commissions

ioncli tx distribution withdraw-rewards $(ioncli keys show --bech=val -a `<key-alias>`) --from `<key-alias>` --commission

Removing your validator

Currently deleting a validator is not possible. If you redelegate or unbond your self-delegations then your validator will become offline and all your delegators will start to unbond.

Changing your validator's commission-rate

You are currently unable to modify the --commission-max-rate and --commission-max-change-rate" parameters.

Modifying the commision-rate can be done using this:

ioncli tx staking edit-validator --commission-rate="0.05" --from <key-alias>

Slashing


Unjailing

To unjail your jailed validator

ioncli tx slashing unjail --from <key-alias>

Signing Info

To retrieve a validator's signing info:

ioncli q slashing signing-info <validator-conspub-key>

Query Parameters

You can get the current slashing parameters via:

ioncli q slashing params

Query Parameters

You can get the current slashing parameters via:

ioncli q slashing params