When you hear about Polkadot, you inevitably also come across Nominated Proof-of-Stake (NPoS). Since Nominated Proof-of-Stake is such a central, yet complex topic, we wanted to distil its main aspects for this blog post.
Nominated Proof-of-Stake Definition
In a nutshell, Nominated Proof-of-Stake is the process of selecting validators to be allowed to participate in the consensus protocol. NPoS is a variation of Proof-of-Stake and used in Substrate-based Blockchains such as Kusama, Edgeware or Polkadot.
Different Roles within Nominated Proof-of-Stake
While there is a variety of different stakeholders in the Polkadot network, the main two actors involved in NPoS are Validators and Nominators.
Validators provide the infrastructure and maintenance for the network. They are responsible for the production of new blocks, the validation of parachain blocks, guaranteeing finality and ultimately the security of the network. They need to be responsive at all times and run secure, reliable infrastructure. Additionally, validators need tokens backing them, which incentivices them to abide by the rules since part of these tokens might be taken away otherwise (a concept called “slashing”). For their services, validators are paid in rewards denominated in the underlying network’s native token (e.g. DOT in Polkadot).
For validators to be able to perform their services for the network, they need to be in the active set. Validators in the active set take turns in proposing, validating and appending new blocks.
Nominators are token-holders who contribute to the security of the network by economically backing (aka “nominating”) up to 16 validators of their choice with their tokens (aka “stake”). Nominators share part of the rewards earned by the validators in the active set that they nominated. It is important to note that nominators are also subject to slashing in case of misbehavior by one of their nominated validators.
How Nominated Proof-of-Stake Works
NPoS can be compared to an election and was inspired by the sequential Phragmen method, which was introduced in the late 19th century to optimize the election of a set of a given number of persons from a larger set of candidates. The objective of NPoS is to ensure decentralization and fair representation through proportional justified representation as well as high security through maximin support.
Proportional justified representation ensures that slots are assigned to validators proportional to their nominations. Hence, the more nominations and ultimately the higher the amount of tokens backing a validator, the higher the likelihood of the validator to be elected into the active set. Validators are elected at the end of every Era (currently 1 Era = 4 Hours; later 1 Era = 24 Hours). This means that the active validator set changes every Era.
Once validators are elected to the active set according to their nominations, the maximin support provides for a distribution of nominated stake so that every validator in the active set has roughly the same amount of stake backing it. This increases the overall security of the network by raising the stakes backing the “weakest links” of the validator set, ultimately making it more resilient to attacks.
In NPoS all validators of the active set receive the same amount of rewards. From these rewards, the commission fee of the validator is deducted. The remaining rewards are distributed among the nominators proportional to their stake.
Consider the following example:
Rewards per era: 100 DOTs
Commission fee of the validator: 10%
Five nominators (A — E) with the following stake each:
- A: 5 DOTs
- B: 10 DOTs
- C: 10 DOTs
- D: 25 DOTs
- E: 50 DOTs
→ total stake backing the validator: 100 DOTs
Rewards: 100 DOTs (total rewards) — 10 DOTs (commission fee) = 90 DOTs (remaining for nominators)
Rewards per nominator:
- A: 90 DOTs (remaining rewards) x [5 DOTs (stake of A) / 100 DOTs (total stake of validator)] = 4,5 DOTs
- B: 90 DOTs (remaining rewards) x [10 DOTs (stake of B) / 100 DOTs (total stake of validator)] = 9 DOTs
- C: 90 DOTs (remaining rewards) x [10 DOTs (stake of C) / 100 DOTs (total stake of validator)] = 9 DOTs
- D: 90 DOTs (remaining rewards) x [25 DOTs (stake of D) / 100 DOTs (total stake of validator)] = 22,5 DOTs
- E: 90 DOTs (remaining rewards) x [50 DOTs (stake of E) / 100 DOTs (total stake of validator)] = 45 DOTs
Nominated Proof-of-Stake Best Practices
It is not guaranteed that all of your nominated validators will make it into the active set, hence we recommend nominating more than one validator. In case you do so and nominate, let’s say, 10 validators, but only 5 of them make it into the active set, your whole stake gets divided among the 5 who made it into the set.
Since rewards are distributed proportionally to the overall stake of the validator, your rewards are higher if you nominated smaller, less popular validators that have less stake backing them. Nevertheless, be aware that in Substrate-based chains, Nominators are also subject to slashing. So, in case you back a malicious validator and it gets slashed, you will lose part of your stake. In severe cases you might even lose all of it. Therefore we advise you to carefully check out each validator by e.g. looking at their on-chain ID and the links they provide there.
Nominated Proof-of-Stake — an example
In order to make matters more comprehensible, our technical lead, Florian, talks you through an example in this short video:
If you want to dig a bit deeper yourself, here are some more useful resources: