<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`) ![](https://hackmd.io/_uploads/SyJ5rnjVn.png) - try election where 20 candidates get 80% of the votes - calculate the ES --- <!-- .slide: style="text-align: left" --> ### Total Stake (`sum_stake`) ![](https://hackmd.io/_uploads/ryd9S3jE3.png) --- <!-- .slide: style="text-align: left" --> ### Variance (`sum_stake_squared`) ![](https://hackmd.io/_uploads/rJeir2iV3.png) --- <!-- .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}]"}
    386 views