<style>
code.blue {
color: #337AB7 !important;
}
code.orange {
color: #F7A004 !important;
}
</style>
### NPoS Impacts, Critiques and Future Potentials in Polkadot
---
## Agenda
1. What is Nominated Proof-of-Stake (NPoS)?
2. Why does Polkadot use NPoS?
3. How does NPoS compare with other election schemes?
4. Future work
---
## 1. What is NPoS?
<code class="orange">N</code>ominated <code class="orange">P</code>roof-<code class="orange">o</code>f-<code class="orange">S</code>take
---
<!-- .slide: style="text-align: left" -->
## 1. What is NPoS?
- `C` *validator* candidates
- `N` *nominators*
- "Votes" on validators
- Locks and stakes DOT while supporting validators
- `W` winner validators per election
- `W` << `C`
- Winners and nominators that backed the winners earn rewards
- Slashes to validators propagate to nominators
The winner validators are scheduled to propose new blocks (et. al.)
---
<!-- .slide: style="text-align: left" -->
How to select a subset of winner validators from a set of candidates so that <code class="orange">Economic security</code> is maximized?
i.e. Winner validators have as much stake backing them as possible.
---
<!-- .slide: style="text-align: left" -->
How to select a subset of winner validators from a set of candidates so that:
- <code class="orange">Economic security</code> is maximized?
- <code class="orange">Capital efficiency</code> is maximized?
- <code class="orange">Fairness</code> is maximized?
- <code class="orange">User freedom</code> is maximized?
---
<!-- .slide: style="text-align: left" -->
#### <code class="orange">Economic security</code>
- Aligns incentives
- Validator self-stake and nominated stake
- More backing -> more economic security
---
<!-- .slide: style="text-align: left" -->
#### <code class="orange">Capital efficiency</code>
Ratio of stake used to secure the network to the total amount of stake locked for staking
- `active_stake / total_stake`
---
<!-- .slide: style="text-align: left" -->
#### <code class="orange">User freedom</code>
- Provide nominators the freedom of choice to nominate multiple validators they trust
- Allocate the nominated stake as efficienlty as possible
- Less risk to nominate "weak" validators
- No risk to non-exposure
- If at least 1 validator is selected -- rewarded
---
<!-- .slide: style="text-align: left" -->
#### <code class="orange">Fairness</code>
- New ~~nominators and~~ validators can bootstrap easily
- Avoid overrepresentation (!)
---
<!-- .slide: style="text-align: left" -->
How to select a subset of winner validators from a set of candidates so that:
- <code class="orange">Economic security</code> is maximized?
- <code class="orange">Capital efficiency</code> is maximized?
- <code class="orange">Fairness</code> is maximized?
- <code class="orange">User freedom</code> is maximized?
---
## 2. Why NPoS?
---
Maximized, maximized, maximized $$ \implies $$
<code class="orange">optimization problem</code>
---
Maximized, maximized, maximized $$ \implies $$
<code class="orange">NP-hard optimization problem</code>
---
<!-- .slide: style="text-align: left" -->
- Running optimization algorithms on-chain is not feasible with large enough inputs.
- Solution:
- 1. Run election off-chain
- 2. Verify the election result on-chain (trust but verify)
---
<!-- .slide: style="text-align: left" -->
[Great research result](https://arxiv.org/abs/2004.12990): Verification can be performed in linear time
- Verifier only needs the output of the election
- No trust requirements
Verification is feasible on-chain
---
<!-- .slide: style="text-align: left" -->
## Why NPoS
- <code class="orange">Economic security</code> is maximized!
- <code class="orange">Capital efficiency</code> is maximized!
- <code class="orange">Fairness</code> is maximized!
- <code class="orange">User freedom</code> is maximized!
- Linear time solution verification (feasible on-chain)
NPoS **perform better** than DPoS across all metrics
---
## 3. NPoS vs DPoS Comparison
Can we back the claims with real-world data?
---
<!-- .slide: style="text-align: left" -->
Can we back the claims with real-world data?
- Run previous election with NPoS and DPoS schemes (~1 year Polkadot data)
- Compare election results
- [Notes on reproducibility and data provenance](https://hackmd.io/4vOW-dN4ToeMH-R2Y1KPuw?view)
---
<!-- .slide: style="text-align: left" -->
But first, what is DPoS?
- Approval voting scheme
- Nominators may select multiple candidates
- Total stake per nominator is divided by the number of voted candidates
DPoS selects top `N` backed validators as winners
- Assumption: equal distributionof stake;
- Different approaches (Cosmos, etc)
---
<!-- .slide: style="text-align: left" -->
How to compare election results?
```rust!
pub struct ElectionScore {
// Stake of the "weakest" winner validator.
// Goal: Maximize.
pub minimal_stake: Balance,
// Total stake backing winner validator set.
// Goal: Maximize.
pub sum_stake: Balance,
// Variance of the stake amount of winner validators.
// Goal: Minimize.
pub sum_stake_squared: Balance,
}
```
- Variance is actually important (check other blockchains etc)
- Fairness
---
<!-- .slide: style="text-align: left" -->
### Minimal Stake (`min_stake`)

- try election where 20 candidates get 80% of the votes
- calculate the ES
---
<!-- .slide: style="text-align: left" -->
### Total Stake (`sum_stake`)

---
<!-- .slide: style="text-align: left" -->
### Variance (`sum_stake_squared`)

---
<!-- .slide: style="text-align: left" -->
## 4. Future Work
- Multi-block unbounded NPoS
- Operator-based NPoS
- Analysis: What if other nominator-based PoS blockchains would also use NPoS?
- Encouraging people to do comparisons and find ways to improve
- Code and data available
- Follow-up blogpost with more info
- etc
---
### NPoS Impacts, Critiques and Future Potentials in Polkadot
Thank you!
{"metaMigratedAt":"2023-06-18T04:13:58.951Z","metaMigratedFrom":"YAML","title":"Slides - NPoS Impacts, Critiques and Future Potentials in Polkadot","breaks":true,"contributors":"[{\"id\":\"46ac327a-d39a-47e3-badb-0f1a789408ee\",\"add\":7205,\"del\":3301}]"}