mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 13:27:57 +00:00
[NPoS] Fix for Reward Deficit in the pool (#1255)
closes https://github.com/paritytech/polkadot-sdk/issues/158. partially addresses https://github.com/paritytech/polkadot-sdk/issues/226. Instead of fragile calculation of current balance by looking at `free balance - ED`, Nomination Pool now freezes ED in the pool reward account to restrict an account from going below minimum balance. This also has a nice side effect that if ED changes, we know how much is the imbalance in ED frozen in the pool and the current required ED. A pool operator can diligently top up the pool with the deficit in ED or vice versa, withdraw the excess they transferred to the pool. ## Notable changes - New call `adjust_pool_deposit`: Allows to top up the deficit or withdraw the excess deposited funds to the pool. - Uses Fungible trait (instead of Currency trait). Since NP was not doing any locking/reserving previously, no migration is needed for this. - One time migration of freezing ED from each of the existing pools (not very PoV friendly but fine for relay chain).
This commit is contained in:
@@ -20,7 +20,10 @@
|
||||
use codec::{Decode, Encode, FullCodec, MaxEncodedLen};
|
||||
use sp_arithmetic::traits::{AtLeast32BitUnsigned, Zero};
|
||||
use sp_core::RuntimeDebug;
|
||||
use sp_runtime::{traits::Convert, ArithmeticError, DispatchError, TokenError};
|
||||
use sp_runtime::{
|
||||
traits::{Convert, MaybeSerializeDeserialize},
|
||||
ArithmeticError, DispatchError, TokenError,
|
||||
};
|
||||
use sp_std::fmt::Debug;
|
||||
|
||||
/// The origin of funds to be used for a deposit operation.
|
||||
@@ -240,6 +243,7 @@ pub trait Balance:
|
||||
+ MaxEncodedLen
|
||||
+ Send
|
||||
+ Sync
|
||||
+ MaybeSerializeDeserialize
|
||||
+ 'static
|
||||
{
|
||||
}
|
||||
@@ -253,6 +257,7 @@ impl<
|
||||
+ MaxEncodedLen
|
||||
+ Send
|
||||
+ Sync
|
||||
+ MaybeSerializeDeserialize
|
||||
+ 'static,
|
||||
> Balance for T
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user