mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-19 05:15:40 +00:00
Vesting pallet - make WithdrawReasons configurable (#12109)
* Vesting pallet - make WithdrawReasons configurable * Update `pallet-vesting` README Co-authored-by: parity-processbot <>
This commit is contained in:
@@ -7,7 +7,8 @@
|
||||
|
||||
A simple module providing a means of placing a linear curve on an account's locked balance. This
|
||||
module ensures that there is a lock in place preventing the balance to drop below the *unvested*
|
||||
amount for any reason other than transaction fee payment.
|
||||
amount for reason other than the ones specified in `UnvestedFundsAllowedWithdrawReasons`
|
||||
configuration value.
|
||||
|
||||
As the amount vested increases over time, the amount unvested reduces. However, locks remain in
|
||||
place and explicit action is needed on behalf of the user to ensure that the amount locked is
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
//!
|
||||
//! A simple pallet providing a means of placing a linear curve on an account's locked balance. This
|
||||
//! pallet ensures that there is a lock in place preventing the balance to drop below the *unvested*
|
||||
//! amount for any reason other than transaction fee payment.
|
||||
//! amount for any reason other than the ones specified in `UnvestedFundsAllowedWithdrawReasons`
|
||||
//! configuration value.
|
||||
//!
|
||||
//! As the amount vested increases over time, the amount unvested reduces. However, locks remain in
|
||||
//! place and explicit action is needed on behalf of the user to ensure that the amount locked is
|
||||
@@ -170,6 +171,10 @@ pub mod pallet {
|
||||
/// Weight information for extrinsics in this pallet.
|
||||
type WeightInfo: WeightInfo;
|
||||
|
||||
/// Reasons that determine under which conditions the balance may drop below
|
||||
/// the unvested amount.
|
||||
type UnvestedFundsAllowedWithdrawReasons: Get<WithdrawReasons>;
|
||||
|
||||
/// Maximum number of vesting schedules an account may have at a given moment.
|
||||
const MAX_VESTING_SCHEDULES: u32;
|
||||
}
|
||||
@@ -249,7 +254,9 @@ pub mod pallet {
|
||||
Vesting::<T>::try_append(who, vesting_info)
|
||||
.expect("Too many vesting schedules at genesis.");
|
||||
|
||||
let reasons = WithdrawReasons::TRANSFER | WithdrawReasons::RESERVE;
|
||||
let reasons =
|
||||
WithdrawReasons::except(T::UnvestedFundsAllowedWithdrawReasons::get());
|
||||
|
||||
T::Currency::set_lock(VESTING_ID, who, locked, reasons);
|
||||
}
|
||||
}
|
||||
@@ -569,7 +576,7 @@ impl<T: Config> Pallet<T> {
|
||||
T::Currency::remove_lock(VESTING_ID, who);
|
||||
Self::deposit_event(Event::<T>::VestingCompleted { account: who.clone() });
|
||||
} else {
|
||||
let reasons = WithdrawReasons::TRANSFER | WithdrawReasons::RESERVE;
|
||||
let reasons = WithdrawReasons::except(T::UnvestedFundsAllowedWithdrawReasons::get());
|
||||
T::Currency::set_lock(VESTING_ID, who, total_locked_now, reasons);
|
||||
Self::deposit_event(Event::<T>::VestingUpdated {
|
||||
account: who.clone(),
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
use frame_support::{
|
||||
parameter_types,
|
||||
traits::{ConstU32, ConstU64, GenesisBuild},
|
||||
traits::{ConstU32, ConstU64, GenesisBuild, WithdrawReasons},
|
||||
};
|
||||
use sp_core::H256;
|
||||
use sp_runtime::{
|
||||
@@ -87,6 +87,8 @@ impl pallet_balances::Config for Test {
|
||||
}
|
||||
parameter_types! {
|
||||
pub const MinVestedTransfer: u64 = 256 * 2;
|
||||
pub UnvestedFundsAllowedWithdrawReasons: WithdrawReasons =
|
||||
WithdrawReasons::except(WithdrawReasons::TRANSFER | WithdrawReasons::RESERVE);
|
||||
pub static ExistentialDeposit: u64 = 0;
|
||||
}
|
||||
impl Config for Test {
|
||||
@@ -96,6 +98,7 @@ impl Config for Test {
|
||||
const MAX_VESTING_SCHEDULES: u32 = 3;
|
||||
type MinVestedTransfer = MinVestedTransfer;
|
||||
type WeightInfo = ();
|
||||
type UnvestedFundsAllowedWithdrawReasons = UnvestedFundsAllowedWithdrawReasons;
|
||||
}
|
||||
|
||||
pub struct ExtBuilder {
|
||||
|
||||
Reference in New Issue
Block a user