Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Validating on PoC 2

Chevdor edited this page Aug 1, 2018 · 22 revisions

This guide follows Validating on PoC-1. The following information has been updated to match versions 0.2.2, released August 1st 2018.

Introduction

Being a validator on the Polkadot network is simple but there are a few caveats and you need to make it right to ensure your validator will behave itself and earn you DOTs.

Motivation

Validators are the heart of the network: they validate new blocks in a similar way Bitcoin miners create new blocks on the Bitcoin blockchain. Polkadot however, is not based on Proof Of Work. Validators do not need high performance computers but they need to met a few conditions.

As a validator, you may earn testnet DOTs when following the rules and keeping your node up and running. For this reason, the choice of the computer running your node is important and you may prefer a hosted VM to your home computer.

Risk

If you are elected validator and don´t behave properly (node not online/reachable, wrong software version, etc...), your node´s balance will be slashed: you will lose testnet DOTs.

Setting a validator node in a nutshell

The next chapter goes into more details but here is the recipe. It is advised to do the following in the right order to avoid issues:

  • install an appropriate polkadot version
  • start it without any flag until your node is synced
  • create an account using the Polkadot UI, save your seed and take note of your account´s address
  • get testnet DOTs in your account
  • restart your polkadot client with polkadot --validator --key <seed>
  • check that your authority key matches
  • Extrinsics/staking/stake() your account
  • check that you show up in the Storage/staking/intentions() list
  • wait until you show up in the Storage/session/validators() list
  • observe your balance going hopefully up!

Validator Requirements

In order to be a validator you need the following:

  • A node running a proper version of the polkadot client
  • A node started with both --validator and --key .... More on that below
  • Some testnet DOTs
  • Having staked

You can find more information regarding the installation of polkadot in the readme:

Proper version

At the time of writing the cutting edge latest version is not appropriate and should not be used by validators. Only versions 0.2.1 and 0.2.2 work.

--validator

That´s easy, just run polakdot with --validator.

--key

First open the UI at https://poc-2.polkadot.io/#/accounts. Create a new account. Save the seed and take note of the account´s address.

You can now start your node using polkadot --validator --key <your seed here>.

When polkadot starts, it will confirm and display the address of the validator´s account. Look for a log similar to Using authority key 5CFch3..... when polkadot starts. This MUST match the address of your validator´s account. If this is not the case, do not stake your account, you will get slashed.

Some testnet DOTs

In order for your validator account to be granted the right to validate, you will need testnet DOTs in that account, enough in regards to the other validator candidates.

You may ask for testnet DOTs on Riot in #polkadot-watercooler:matrix.org).

Staking

In order for your validator to effectively run, you will need to stake your account. You can do so here. Select your account, category staking, extrinsic stake() and send the transaction.

If you did it right, you should see your account´s address showing in the intensions list. You find the list here under staking/intensions().

Free slot

You are now almost good to go. You may be elected validator if there are enough free slots and your stake (balance) is higher than the other validator candidates.

Currently, there are 5 slots available. The dev team is operating 4 validators with high stake. That leaves one slot free for community validators. The number of available slots will likely vary over time. To check the current value, use the UI at Storage/staking/validatorCount().

Clone this wiki locally