Staking Update: Q1 2023
Updates to Polkadot's staking system for Q1 2023.
The following updates were written by the Staking Team at Parity Technologies. See the full list of regular staking updates here. To learn more about staking and participate, check out the staking page here!
Staking data
Stake in nomination pools
Over the past three months, the number of members in nomination pools has steadily increased, signaling that the community considers nomination pools a good alternative to direct nominations.
Fast unstake
Polkadot's fast unstake has been used over 30 times since its release and at the time of publication.
Core development
In this section, you'll find explanations of the major code contributions to the staking system.
Permissionless reward claim in nomination pools
A major update from the past two months has been the ability for pool members to allow anyone to claim their unclaimed rewards. Moreover, we are proud to see that this feature was not contributed by a core member of the team, but rather by an external contributor! Thanks to Doordaschon!
PR#12608 related to this work is merged, and it will go into an upcoming Polkadot release. Stay tuned for more updates about this on the staking dashboard side!
Nomination pool commission is now merged
Commission is now a feature of the nomination pool pallet and will soon be live on the Polkadot runtime (PR#13128).
It is now possible for a nomination pool to have a commission configuration that is managed by its root role. A commission alongside a payee account can be set for the pool, in addition to a maximum commission and a change rate - the maximum commission and the rate at which the commission can be changed respectively.
Importantly, both max commission and change rate can not be removed once set, and can only be set to more restrictive values (i.e. a lower max commission or a slower change rate) in subsequent updates.
Read more about this here.
All pool commissions are bound to a global maximum that can be set via governance. Even though pools can set commissions and maximum commissions above this value, commission will be capped to this global maximum at the time commission is actually factored into pending rewards.
Commission is applied to rewards based on the current commission in effect at the time the reward was transferred to the reward pool. This is to prevent the malicious behavior of changing the commission rate to a very high value after rewards are accumulated, and thus claim an unexpectedly high chunk of the reward.
In the event of a pool's dissolution, any pending commissions that have not yet been claimed will be transferred to the depositor.
State Toggler renamed to Bouncer
Nomination pools have a specific role in managing the state of the pool (open, blocked, and destroying), and to kick members in the latter 2 states. Prior to the latest runtime upgrade, this role was known as the “state-toggler” role. It has now been renamed to the “bouncer” role.
The pool “root” role can assign any account to act as the pool bouncer and carry out their duties.
Oversubscribed numbers dramatically reduced
PR#6230 for higher oversubscribed limits is in — we already have way fewer oversubscribed. That being said, we now have work for an unlimited number of rewards.
Minimum active bond is now on chain
The minimum active stake is now stored on-chain (PR#12889). This new storage item will simplify UIs and analytics tools implementation at a negligible on-chain cost.
New nomination pools and staking runtime APIs
There are new runtime APIs available for developers to use for nomination pools and staking (PR#13119). The nomination pools API now implements new balanceToPoints and pointsToBalance, which will be useful for wallets when estimating the nomination pool rewards for an account.
In addition, there is a new staking runtime API call, nominationQuota, which returns the maximum number of nominations for an account given its stake. Currently, the maximum number of nominations per account is fixed (16 and 24 for Polkadot and Kusama, respectively), but in the future, the nomination quota may change depending on the nominator’s stake (PR#12970). This runtime API will help wallets and UIs to handle the dynamic max number of nominations transparently.
The new runtime APIs have been released in Westend and will soon be available in Kusama and Polkadot.
Other contributions
- A new Admin origin in the staking pallet can manage less critical staking parameters that do not require root. The Admin origin can now set the minimum staking commission through a new extrinsic (PR#13018).
- Automatic withdrawal when unbonding and unlocking chunks can be released (PR#12582).
- Improvements to the NPoS Solver and council election pallet (PR#13453).
Upcoming
- Dynamic number of nominators: with PR#12970, the maximum number of nominators can be configured to depend on the stake of the nominator.
- Scalable rewards: with PR#13498, the rewards processing can be done in a multi-block fashion. This feature is a step further on the scalability of the staking system, as the maximum number of nominators per validator can be increased since the reward processing is not constrained to one block.
In governance
This section contains staking-related governance proposals and discussions.
Fast unstake is now enabled! Among other updates
Polkadot now supports fast unstake, and the community is already using it! Nominators can use fast unstake if the stake has not been active in the BondingDuration era in the past to unstake their funds without waiting for the unbonding period. After testing and running in it for a few months on Kusama, referendum #111 was proposed to enable fast unstake on Polkadot, among other nomination configuration updates.
For more details on fast unstaking, you can check PR#12129, this discussion on Polkadot forum, and this Twitter thread.
In addition to enabling fast unstake in Polkadot, the referendum also enacted the following nomination configuration updates:
- Increasing the minimum number of tokens to create a nomination pool from 200 DOT to 500 DOT;
- Increasing the bond size required to become a direct nominator from 100 DOT to 250 DOT;
- Increasing the number of validator candidates from 1200 to 1500 in anticipation of an increase in the active set of validators; and
- Increasing the number of pools to 256.
Other
- We published Polkadot: The Staking Paper which outlines a few possible directions for improvements in Polkadot staking for the next 1-2 years, namely nomination pools 2.0, multi-page NPoS, deprecating the controller account in staking, among others.
- The community-led proposal to run an incentive scheme for new and well-run nomination pools has been executed!
Staking Dashboard updates
This section contains updates from the Staking Dashboard development.
With each update to the underlying system, the Staking Dashboard's codebase becomes leaner and more efficient.
Since the last staking newsletter, 2 updates have been released for the dashboard. The first, 1.0.5, brings the following changes to users:
- The state-toggler role of nomination pools has been renamed to the bouncer role in the UI.
- Unclaimed rewards are now displayed as transparent bars in payout graphs. These rewards are labeled as “pending” until the payout is claimed.
- Unlock chunks now contain a live countdown timer, making it a lot clearer when the chunks will be available to unlock. The era at which the chunks will be unlocked is still displayed alongside the countdown.
- The account selection list has been simplified, removing mention of the controller account, and contains improved styling.
- We have re-enabled light client support with limited functionality. Light client support is still not supported in the Brave browser, so users are advised to treat it as an experimental feature.
- Various bug fixes and performance improvements.
The recently deployed, 1.0.6 release adds direct Ledger support to the dashboard. Now users can connect with a Ledger wallet and interact with the Staking Dashboard, without requiring any extension.
This marks the first Polkadot app that is fully Ledger-supported. Every extrinsic and nested extrinsic on the staking dashboard can be signed by Ledger devices, marking a milestone for the Polkadot & Ledger partnership.
In terms of the actual UI, the dashboard offers:
- An account import modal, which is accessible from the Connect modal (previously the Extensions modal).
- Accurate feedback from the Ledger device as users go through the account import process.
- Ability to fetch more accounts, rename them, and import them to the dashboard.
- If users wish to change Ledger device, they can press Reset in the account import window, which removes all their previously fetched and imported Ledger addresses.
- For signing transactions, a Sign button is now presented in the transaction submission bar.
The dashboard supports Ledger Stax, Nano X, Nano S Plus, and Nano S, and has been tested with all the devices minus the Ledger Stax.
Ledger support is now in Beta, with a final release coming once we are confident that the feature is stable. The initial release will include improved UI, Bluetooth connectivity, and better multi-device support. Click here to connect your Ledger wallet and try it out.
For more details about the new features in this release, check out the full release notes and this Twitter thread.