Summary
As proxy account implementation is currently a big focus for staking dashboard, I wanted to push the controller deprecation agenda and make progress in such a way that is leading us to the removal of the feature.
PR #14039 (WIP) has been opened to put a cap on new unique controllers. It changes 2 calls:
set_controller
: Removes thecontroller
argument, and changes the logic to always set the controller to a staker’s stash account.bond
: Removes thecontroller
argument, and also changes the logic to always set controller to the stash.
Making these 2 changes will ensure that new controller accounts moving forward will always be the same as the stash, and gives UIs the ability to offer a migration prompt for existing stakers to set their controller acount to their stash, via the updated set_controller
.
Stakeholders
Apps & Extensions (not exhaustive):
Todo: insert Github repo links.
- Staking dashboard (Ross)
- Ledger Live staking.
- Nova Wallet staking.
- Polkawallet staking.
- PolkaGate extension.
- Talisman & Subwallet extension staking.
- Fearless wallet staking (coming soon).
- Polkadot JS Apps Staking section.
Platforms:
- Revolut.
If there are staking UIs that are not on the above list, please post them and they will be added. This will be useful for future major staking updates, breaking changes or otherwise.
App Lead Communication
These changes are breaking changes on the UI side, and so prior to these changes taking place, we need to let UIs know of the upcoming changes. This communication is something that I can contribute to, and if we are lucky comms gurus like @Birdo.
I propose the following comms:
- Post a Github issue on each project’s repo notifying them of PR #14039.
- Also post an optional invitation to Element channel where we can also post updates.
- Post an update on each issue once PR #14039 is merged.
- Post an update when we know the date of the runtime upgrade, and again 24 hours before the runtime upgrade.
- Post upgrade, myself and other volunteers can test each UI to ensure they still have a working staking UI.
Rationale
beyond ED, controllers are essentially free proxies, whereby users are adding storage to the chain, indefinitely, without a deposit. This is not how most of the Polkadot features work - proxies, proposals, voting, tips, nfts, fast unstake - all requiring reserves or deposits.
Staking proxies solve this, not only abstracting over staking in place of controllers, but for the entire chain. Last time we ran the numbers, less than 10% of all stakers have a separate controller account to their stash - this lends credence to a notion that controllers are either a failed feature, or a niche feature, that only a minority of users wish to use.
For those users, proxies will be the better and more flexible option as they go beyond the staking pallet (fast unstake, nomination pools are all a part of the staking system that stakers will also interact with).
The deprecation of controller accounts is not a new idea - @kianenigma posted about it 3 years ago. So if we want to accelerate the adoption of proxies - something staking dashboard is pushing quite aggressively now - then controller accounts need to be resolved (removed).
While 20 DOT for an initial proxy deposit is not a trivial amount, the amount can be changed via governance. But for this to happen, proxies need interest and adoption - something that we as staking UI leads can push forward.
I want to stress also that using a separate controller account is something that the wikis and JS Apps prompt users to do, very directly. Even so, 90% of stakers still use the same stash address as their controller. This further suggests that controllers are niche / unwanted. Again, proxies offer the added security that controllers do, and do it better as they can span multi-pallet, and have the deposit mechanism at play.
From a UX standpoint, it also does not make sense to pollute our UIs with unwanted / unused features. In this case, there is a huge win in onboarding, whereby users do not need to learn this “stash” and “controller” abstraction. It will simply be either nominate directly or join a pool, with proxies added to the mix for advanced / security conscious users
Current Controller Deprecation Efforts on Staking Dashboard
Drawing down the unique controller accounts will take an unpredictable amount of time.
Staking dashboard from 1.0.7, beyond proxy account support, will provide a prompt to unique controllers that will give one-click access to updating it to the stash account: