mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 11:57:56 +00:00
Introduces account existence providers reference counting (#7363)
* Initial draft * Latest changes * Final bits. * Fixes * Fixes * Test fixes * Fix tests * Fix babe tests * Fix * Fix * Fix * Fix * Fix * fix warnings in assets * Fix UI tests * fix line width * Fix * Update frame/system/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/system/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Fix * fix unused warnings * Fix * Update frame/system/src/lib.rs Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> * Update frame/system/src/lib.rs Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> * Fix * fix slash and comprehensive slash test * fix reserved slash and comprehensive tests * check slash on non-existent account * Revert "Fix UI tests" This reverts commit e0002c0f13442f7d0c95a054a6c515536328a4a0. * Fix * Fix utility tests * keep dispatch error backwards compatible * Fix * Fix * fix ui test * Companion checker shouldn't be so anal. * Fix * Fix * Fix * Apply suggestions from code review Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Update frame/balances/src/lib.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * return correct slash info when failing gracefully * fix missing import * Update frame/system/src/lib.rs Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> * Fix * Update frame/balances/src/tests_local.rs Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> * Fixes Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com> Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
This commit is contained in:
@@ -1222,6 +1222,8 @@ decl_error! {
|
||||
IncorrectHistoryDepth,
|
||||
/// Incorrect number of slashing spans provided.
|
||||
IncorrectSlashingSpans,
|
||||
/// Internal state has become somehow corrupted and the operation cannot continue.
|
||||
BadState,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1423,13 +1425,13 @@ decl_module! {
|
||||
Err(Error::<T>::InsufficientValue)?
|
||||
}
|
||||
|
||||
system::Module::<T>::inc_consumers(&stash).map_err(|_| Error::<T>::BadState)?;
|
||||
|
||||
// You're auto-bonded forever, here. We might improve this by only bonding when
|
||||
// you actually validate/nominate and remove once you unbond __everything__.
|
||||
<Bonded<T>>::insert(&stash, &controller);
|
||||
<Payee<T>>::insert(&stash, payee);
|
||||
|
||||
system::Module::<T>::inc_ref(&stash);
|
||||
|
||||
let current_era = CurrentEra::get().unwrap_or(0);
|
||||
let history_depth = Self::history_depth();
|
||||
let last_reward_era = current_era.saturating_sub(history_depth);
|
||||
@@ -2028,9 +2030,9 @@ decl_module! {
|
||||
}
|
||||
}
|
||||
|
||||
/// Remove all data structure concerning a staker/stash once its balance is zero.
|
||||
/// Remove all data structure concerning a staker/stash once its balance is at the minimum.
|
||||
/// This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone
|
||||
/// and the target `stash` must have no funds left.
|
||||
/// and the target `stash` must have no funds left beyond the ED.
|
||||
///
|
||||
/// This can be called from any origin.
|
||||
///
|
||||
@@ -2045,7 +2047,8 @@ decl_module! {
|
||||
/// # </weight>
|
||||
#[weight = T::WeightInfo::reap_stash(*num_slashing_spans)]
|
||||
fn reap_stash(_origin, stash: T::AccountId, num_slashing_spans: u32) {
|
||||
ensure!(T::Currency::total_balance(&stash).is_zero(), Error::<T>::FundedTarget);
|
||||
let at_minimum = T::Currency::total_balance(&stash) == T::Currency::minimum_balance();
|
||||
ensure!(at_minimum, Error::<T>::FundedTarget);
|
||||
Self::kill_stash(&stash, num_slashing_spans)?;
|
||||
T::Currency::remove_lock(STAKING_ID, &stash);
|
||||
}
|
||||
@@ -3007,7 +3010,7 @@ impl<T: Config> Module<T> {
|
||||
<Validators<T>>::remove(stash);
|
||||
<Nominators<T>>::remove(stash);
|
||||
|
||||
system::Module::<T>::dec_ref(stash);
|
||||
system::Module::<T>::dec_consumers(stash);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user