-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Staking::{bond, set_controller} to set controllers to stash only. #14039
Conversation
bot bench $ pallet dev staking |
@rossbulat https://gitlab.parity.io/parity/mirrors/substrate/-/jobs/2748302 was started for your command Comment |
@rossbulat Command |
putting the hat of the devil here, how would you evaluate this against just not supporting it in the UI? this would probably be a breaking change for Ledger, Nova, PJS Apps and so on.
Would be good to get opinion from other Staking UI stakeholders as well. perhaps this can all be coordinated offchain. As a side technical note, if you are to do this, you should also remove the controller argument upon |
I would also prefer the proxy solution being supported first on UI before deprecating it on runtime level.
As a first step of deprecation, may be we can require deposit for setting controller (non-stash account) that is larger than proxy deposit to encourage other Staking UI/wallets to start supporting proxies but avoid being a breaking change for them. If governance allows, we could then retroactively apply deposit for existing users with controllers as well incentivising them to migrate to proxy instead. |
The proxy solution is already supported on staking dashboard. It will be deployed next week. I am of the view that a well-coordinated update process with the staking UIs is the best way forward here. This PR (with the Adding more steps such as deposits and what-not will ultimately not avoid the eventual outcome of adjusting these calls. And the larger the staking system grows, the harder it will be to move the controllers - the sooner we do this, the better. I will be mentioning this PR soon in a forum post with all my notes & steps forward, to rally all the staking UIs and ensure that they are aware of the updates. Worst case scenario is that UIs will not update, users begin reporting that the app is not working, so they will then push a fix in quick-time. So I am confident market factors will work themselves out. Saying this, large stakeholders, Ledger, Talisman, should be very aware of this leading up to a runtime upgrade, and we should do our best to communicate any planned changes to them prior to the upgrade happening. |
This pull request has been mentioned on Polkadot Forum. There might be relevant details there: https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748/1 |
I think a better option here, for less breaking changes, is to keep the function signature for set controller the same, but have it always return an error. Basically, removing the call's functionality. This avoids both a change to the function signature, which is breaking for downstream apps, and also eliminates a subtle change in behavior which could look like a false positive. If you instead make the function signature the same and it just returns an error, all existing UIs should at least be able to handle that appropriately. If you want a function to set controller to self, a new one can be introduced, as an off-boarding ramp for the new proxy behavior. |
We could return an error, for The issue though, for I think the scenario of the api call erroring out (different signature) also would not be the worst thing - there would be an error provided by Polkadot API saying |
I agree that basically all approaches are about equal, and at some point there will be something breaking. So really up to how you want to coordinate with community. |
Hey everyone! Nova team here. We want to point out that rolling out an update that fixes breaking changes on mobile is not a fast process since users are not forced to update to newer versions. Given that, as well as how critical this breaking change is, we would highly appreciate it if this change would be released on Kusama/Polkadot at least one month after its release on Westend, where we will be able to perform end-to-end testing (a few days) and then roll out the update (takes 2-3 weeks for majority of userbase to update) |
Noted. Once we know the runtime version you could do a conditional to ensure no breakages:
|
bot rebase |
Branch is already up-to-date |
bot merge |
This pull request has been mentioned on Polkadot Forum. There might be relevant details there: https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748/12 |
Westend now reflects the changes of
|
…ritytech#14039) * update set_controller * clone * bond uses `stash` * remove controller from bond(), chill_other test works * remove ctlr from testing_utils & dead ctlr -> dead payee * mvs controllers to stashes for 3 tests * migrate mock bond fns & fix 1 test * mvs controllers to stashes for 7 tests * mvs controllers to stashes for 9 tests * remove double_controlling_should_fail * remove double_staking_should_fail * mvs controllers to stashes for 10 tests * mvs controllers to stashes for 2 tests * remove payout_creates_controller * mvs controllers to stashes for 27 tests * remove println! * fix rewards_should_work * fix test_payout_stakers * fix bond benchmark * clone * rm unused import * rm unused var * rm controller from create_offender * fix GenesisConfig stakers * fix controllers in consensus pallets * fix unqiue controller in chain_spec * fmt * fix create_offender * fix set_controller benchmark * add TODO * create_unique_stash_controller * staking benchmarks working * fmt * fix args * rm println * import * import * fix fast unstake tests * fix staking-tests-e2e * fix root-offenses * fmt * differentiate controller to stash * bring back change_controller_works w. unique ctrl * bring back double_staking_should_fail * double_controlling_attempt_should_fail * bring back payout_creates_controller * add commnet to controller balances * + set_controller call description * fmt * rm clones * fmt * clippy fixes * fmt * update README * small fixes * use controller_to_be_deprecated * .comment * comment * bump zombienet version * ci --------- Co-authored-by: parity-processbot <> Co-authored-by: Javier Viola <javier@parity.io>
This PR updates the staking pallet's
set_controller
andbond
calls to not take thecontroller
argument.set_controller
andbond
always set the controller to the stash account and signer respectively.Doing this turns off the taps to new unique stash & controller pairs, aiding in the controller account deprecation and migration to proxy accounts.
set_controller
.bond
.