sunshine-protocol / sunshine

Governance + Bounty Platform
Other
43 stars 16 forks source link

DrainableCurrency #145

Open 4meta5 opened 4 years ago

4meta5 commented 4 years ago
pub trait DrainableCurrency<AccountId, Weight> {
    fn drain_to_accounts(
        from: &AccountId,
        to_accounts: OrderedSet<AccountId>,
    ) -> DispatchResult;

    fn drain_to_accounts_weighted(
        from: &AccountId,
        to_weighted_accounts: OrderedSet<(AccountId, Weight)>,
    ) -> DispatchResult;
}

We use this logic in

donate requires a remainder_recipient input for collecting the remainder. We could add

  1. implementation that chooses an AccountId from recipient_accounts at random to send the remainder
  2. implementation that spreads the remainder among a random subset of the recipient_accounts

The remainder will exist in most cases so the question is what to do with it...