Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Directly stake staking rewards to some nominator, RewardDestination::AccountTryStaked<AccountId> #282

Open
rossbulat opened this issue Feb 28, 2022 · 3 comments
Labels
I5-enhancement An additional feature request. T1-FRAME This PR/Issue is related to core FRAME, the framework.

Comments

@rossbulat
Copy link

Directly stake staking rewards to some nominator, RewardDestination::AccountTryStaked<AccountId>

Currently we can send a staking reward to an AccountId. It would be useful in multi-account management scenarios to stake rewards directly to another nominator. In the event the reward-receiving account is not currently a nominator stash, then the variant logic can fall back to RewardDestination::Account. (hence the name AccountTryStaked). Doing this semi-automates the process of delegating additional staked funds across a pool of managed accounts.

Scenario: Imagine a multi-account management setup where a user wishes to actively maintain 3 nominators. Account 3 is lacking funds and urgently requires additional staked DOT to meet reward targets. Account 1 and Account 2 are well-funded and are comfortably above their reward targets.

Reward target here can refer to a minimum payout threshold the user wants to achieve for their managed nominators.

Application Side: A “Stake All Rewards To” button alongside an account within an account list will initiate extrinsics that will update all selected accounts in the list to stake their rewards on behalf of the destination account (assumed to be a nominator stash). This can tie in with in-app announcements or notifications pertaining to reaching a target payout limit for such accounts.

• This strategy becomes more effective the more active nominators the user has under their control.
• This feature allows a more automated approach for applications to bolster, bootstrap or maintain a nominator, and could be offered as a service at the “enterprise” level.

Limitations: The main downside to this approach from a user’s perspective is having to sign a separate set_payee extrinsics for each account's RewardDestination to be updated. However, callbacks can update UI as soon as an extrinsic is signed, and can add spinners, in-progress labels etc to the already-signed accounts. Beyond the scope of this Issue though, we could abstract some form of account group on-chain to give permissions to organise such reward delegation.

Proposal

  • Add an additional RewardDestination variant, AccountTryStaked<AccountId> that allows staking rewards from one account to be automatically staked to another account, or fallback to RewardDestination::Account if that account is not a nominator stash.
  • Amend make_payout to account for the new variation.
@emostov
Copy link

emostov commented Mar 3, 2022

Whats the rational for supporting this at the protocol level vs just suggesting someone uses RewardDestination::Account and a script that regularly calls bond_extra?

This will be a relatively heavy op since we have to update the staking ledger.

@kianenigma
Copy link
Contributor

@rossbulat This seems like a reasonable addition to me.

@rossbulat
Copy link
Author

This can also be applied to pools - stake my rewards to a pool. TryBondPool.

@juangirini juangirini transferred this issue from paritytech/substrate Aug 24, 2023
@the-right-joyce the-right-joyce added I5-enhancement An additional feature request. T1-FRAME This PR/Issue is related to core FRAME, the framework. and removed J0-enhancement labels Aug 25, 2023
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 10, 2024
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 10, 2024
jonathanudd pushed a commit to jonathanudd/polkadot-sdk that referenced this issue Apr 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I5-enhancement An additional feature request. T1-FRAME This PR/Issue is related to core FRAME, the framework.
Projects
Status: ⌛️ Sometime-soon
Status: Backlog
Development

No branches or pull requests

5 participants