Staking Update: August-September 2022
Updates to Polkadot's staking system for the months of August and September, 2022. Get the latest info on nomination pools and more.
See the full list of monthly staking updates here. These updates have been written by Kian Paimani and Ross Bulat from Parity Technologies.
Check out the new staking landing page at polkadot.network/staking!
Democracy Proposals
A number of noteworthy governance proposals and runtime upgrades have been proposed and/or executed in the last two months in the world of staking.
First, the motion to upgrade Polkadot to 9.28 is enacted and executed. This means that nomination pools code is live on Polkadot! However, no pools can be created yet and this will be up to the governance of the chain to decide.
This means that the nomination pools will be usable very soon on Polkadot! Those stakers who wish to join pools should consider starting the 28 day unbonding process.
That being said, we are preparing a new system to facilitate the migration of nominators to pools as well. Read more in the “Fast Unstake” section further down.
Next, a proposal was made to Kusama to increase the limits of the nomination pools deployment. Note that these limits were only set there in response to a number of bugs that were found earlier. Now, these limits can be removed as the aforementioned bug has been fixed in the 9.27 release.
Secondly, a suggestion has been made to Polkadot governance to slightly increase the limits of the nomination intention, namely to increase the minimum number of DOT needed from 10 to 50 DOT. The reason for this is twofold:
- Polkadot already has a lot of “inactive” nominators. Recall from our February update that active nominators are those who end up backing a validator, both earning rewards and being exposed to slashes. Inactive nominators are exactly the opposite of that: those who have had enough DOT to set their intention, but don’t have enough DOT to actually become active. A slightly higher DOT limit for nomination intention will hopefully prevent too many inactive nominators from being created.
- More importantly, now, with the enablement of nomination pools just around the corner, these inactive nominators can now join pools and actually participate in staking in a fruitful way. Therefore, it is sensible for Polkadot to adjust its staking parameters such that there is less incentive for inactive nominators to exist.
Fast Unstake
Speaking of inactive nominators wanting to migrate to pools, there is finally a PR that addresses a long anticipated feature in Polkadot’s staking system: Fast Unstake.
Don’t let this fool you: Polkadot’s staking system is still strict (and therefore secure) regarding slashing: Any staker who wishes to unstake needs to wait for the full bonding duration, because a historical slash might be detected. The point of the fast-unstake feature is to allow “those stakers who are known to NOT have actively backed any validator (i.e. have not been exposed) in the previous bonding duration” unbond in a quick way.
A typical example of this would be someone that bonds, but immediately changes their mind. Such a staker would ideally no longer have to wait a full 28 days. More importantly, all of the aforementioned inactive nominators also fall into the same category: they are almost certainly not actively backing any validators, and are therefore free to unstake quickly.
The fast unstake process is therefore as follows: Any stakers who are certain that they are not exposed in the full bonding duration can register themselves for the fast-unstake process. The checking process is beyond what can fit in a single block and is scheduled to happen over multiple future blocks (No ordering guarantees such as FIFO are provided by the pallet in case of congestion, and all unstake requests are processed in random order). If the check is successful, the staker is unbonded, and if configured to do so, they are automatically added to a nomination pool. If the staker is proven to actually have been exposed, they lose part of their bond as slash.
The fast unstake PR is still ongoing and we hope to see it go live on Polkadot soon, at which point it will be supported in the staking dashboard and can provide a swift 1-click migration path for inactive nominators to join nomination pools.
Nomination pools resources
Here is a short recap on everything you need to know about nomination pools:
- Polkadot Wiki page about nomination pools
- March Staking Update: Contains extensive details about pools
- April Twitter space recording
- Nomination Pools and The Story of The Polkadot's NPoS at Polkadot Decoded
- A lot of support articles around nomination pools
- Implementers' guide
- Nomination Pools Discussion room in Matrix
Notable contributors
The staking system of Polkadot, albeit being a critical system, has proudly been open to external contributors and has seen a lot of pull requests from the Polkadot community, many of which have been successfully reviewed and merged.
- https://github.com/paritytech/substrate/pull/11831 by https://github.com/Szegoo
- https://github.com/paritytech/substrate/pull/12185 and https://github.com/paritytech/substrate/pull/12058 by NingLin-P · GitHub
- https://github.com/paritytech/substrate/pull/12069 by hzy1919 (ZhiYong) · GitHub
See Substrate (Nominated) Proof of Stake project board to follow the development in more detail!
Staking dashboard updates
Additional functionality, advancements in existing modules and polished UX are the themes of this September update for the staking dashboard.
We’ll explore some of the notable updates including full nomination pool support, new nomination generation methods, and some nice UX updates to some key app components.
Nomination pools now fully supported
The Pools page interface for a pool owner on Westend
Nomination pools are now fully supported in the staking dashboard, and users can now play with the feature on Westend and Kusama.
When pools are enabled on Polkadot, the staking dashboard will be ready and allow users to create and join pools, along with all the management options of running/participating in a pool.
All nomination pool logic is natively hosted on-chain. Polkadot does not rely on a third party network, bridging, or layer-2 mechanisms like rollups to get pools working. Pools are a part of the Polkadot runtime, making them upgradable, secure and fully embedded as part of the Relay Chain.
So what else is there beyond joining or creating a pool? Let’s break down exactly what you can do in a pool.
What you can do in a Pool
Anyone can claim rewards
Pool rewards are generated per era. In fact, each pool has a stash address that is assigned as a nominator in exactly the same way as nominators do in solo staking. Pools are nominators.
So once a pool receives payouts, they are immediately claimable by all pool members. When claiming rewards you can either:
- Withdraw them to your account’s free balance.
- Re-bond the rewards back into the pool.
Anyone can bond and unbond
Bond more funds to the pool, or unbond down to the minimum required deposit. This amount differs between pool members and pool owners.
Unbonding from a pool is still subject to the unbond period, so once your unbond chunk is unlocked, you’ll be able to withdraw that chunk. This is exactly how solo staking works.
Pool owner can rename the pool
Renaming a pool actually sets the pool’s metadata attribute on-chain. This value is used as the pool’s display name. It supports any utf8 character including emojis, so pool owners can be creative in naming their pool.
Pool owner and nominator can nominate
When we say pool owner we are referring to the account who created the pool. The pool owner inherits the root and depositor roles of a pool, and these cannot be changed.
By default, the owner will also have the nominate role too, unless configured to another account on pool creation.
So the pool owner and whoever has the nominate role is able to, as the name suggests, manage the pool’s nominations. The tools staking dashboard offers for nominating have been updated this month — we’ll explore these nominating options further down.
Pool owner and state toggler can manage pool state
The state toggler is able to change the pool state to locked or destroying.
New members are not able to join while a pool is locked. The pool owner can also permissionlessly unbond and withdraw other pool members in this locked state.
The destroying state of a pool is the state a pool is changed to when it is being closed down. While a pool is in destroying state, members can be permissionlessly unbonded and withdrawn from the pool (minus the pool owner).
Once all members have left the pool and the pool is no longer nominating, the pool owner can then unbond and withdraw their funds from the pool — at which point the pool will be deleted from chain state.
The entire process of destroying a pool is now supported in the staking dashboard.
Pool owners can change the nominator and state toggler pool roles
As the title suggests, the nominator and state toggler roles can also be updated within the dashboard.
Other noteworthy nomination pool support
Along with the above management functions, the staking dashboard attempts to make pool management intuitive and useful with dedicated UI, such as:
- A step-by-step pool creation process, similar to the nominator setup process for solo staking.
- A pool stats module outlining the current state of the pool, featuring the total bond amount, total members, outstanding unclaimed rewards, and more.
- A list of all pools along with their member count, bonded funds, and the pool’s nomination status. This is very useful for determining whether a pool is actively earning rewards at a glance.
- Pools are searchable via a dedicated search bar alongside the pools list.
- Once you join (or create) a pool, a dedicated pool members tab allows you to browse all pool members, along with the amount they have bonded in the pool.
- The ability to delve into a pool’s nominations list and browse each of those nomination’s status, so users can view how many of the pool’s nominations are active.
- The ability to add favorite pools, that are housed in a separate tab on the pools page.
This is not an exhaustive list of nomination pool support within the dashboard, but hopefully communicates the attention and thought given to supporting pools as a 1st class citizen in the dashboard.
As always, nomination pool support will continue to improve and evolve with the rest of the dashboard.
Enhanced Methods of Generating Nominations
Staking dashboard attempts to make it easy to discover and nominate validators.
One of the problems of nominating on Polkadot is that of finding a balance between choosing a mix of active and inactive validators while maintaining a high probability of being an active nominator every era.
Economically, Polkadot rewards those who back less popular validators as the share of that validator will be larger than that of a popular validator. This is subject to a validator’s era points, but in general, the less nominators backing a validator, the greater your share of the payout.
So it makes sense to at least back some less active validators on Polkadot as part of your nomination strategy to maximize potential rewards. This was a consideration during this iteration of the nominate feature, with various options now present for generating and choosing validators.
Generation methods have now been expanded to 4 main methods:
Nomination generation methods in staking dashboard
Breaking down these methods:
- Optimal Selection selects a 75% share of currently active validators and a 25% share of currently inactive validators.
- Active Low Commission selects a range of currently active validators prioritizing low commission.
- From Favorites selects validators from your favorites list.
- Manual Selection does not generate any nominations, allowing the user to fine-tune their selection manually.
For validators to be a part of the generation process, they must have an on-chain identity, not be in blocked state, and not have 100% commission. Each generation method then adds additional requirements to be a part of the pool from which validators are randomly selected..
Once you have selected a generation method, you are then able to fine tune that selection. The following screenshot is what is presented after selecting the Optimal Selection method:
Interface for fine-tuning generated nominations
There are a few useful tools in this interface, most notably:
- The ability to re-generate the list using the same method, that totally replaces your nominations in one-click. This is done by the Re-Generate button above the validator list.
- The ability to select and remove validators from the list, and add from favorites; these functions were already present prior to this update.
- The ability to generate a single active parachain validator, a single active validator (non-parachain), or just a single random validator that could be active or inactive.
These buttons give users more tooling to mix up their nomination set in the way they see fit. If the maximum number of validators are met (16 in Polkadot’s case), or if there are no more validators available in a particular subset, then the corresponding buttons will be disabled.
Users can also cancel and start again with a new generation method if they choose to do so.
UX Enhancements
Various improvements have also been made to the staking dashboard UI this month. This section lists the most notable of them:
- A redesigned help modal, that rethinks how the previously featured Assistant modal should be implemented. The new interface solves accessibility and readability issues that the previous iteration highlighted.
A redesigned full-screen help overlay now replaces the Assistant button.
- A new Help icon that invokes the new help overlay is now present in the side menu.
- A dedicated Accounts button is now always present in the top right corner of the app. The account bubbles beside the button are no longer interactive, and simply provide guidance to which accounts are actively staking (both nominating or via pools).
- The “reserve amount” for transaction fees has been completely removed, and tx fees now dynamically adjust bond amounts and display warnings when tx fees cannot be fulfilled.
- Animated icons are being rolled out, the first of which now live in the side menu.
- The new Unbounded Polkadot font has been installed and applied to top page and modal headings.
- The main app font has been changed to Inter, a more screen-friendly font and keeps consistency with the main Polkadot branding.
- More border-radius and spacing consistency between the various button styles.
- The Validators page is now searchable with a dedicated search bar.
- The default validator list and pool list ordering is now shuffled on every page reload.
- The Community page is now populated with over 20 validator entities, providing their bios, social media links and list of validators.