subtensor
subtensor copied to clipboard
Convert to using balance locks in staking
Describe the bug
Currently staking is affected by existential deposit because it is using Currency::withdraw (and Currency::deposit for unstaking). Pallet balances has the locking mechanism for this, which does not affect the total balance of the account, but effectively locks the currency.
The staking/unstaking logic of working with balances is located in remove_balance_from_coldkey_account and add_balance_to_coldkey_account
To Reproduce
Stake full amount less transaction fees. Result: Staked amount is less by ED (or account is wiped, unsure).
Expected behavior
Staked amount can be full balance and account does not get dust-collected.
Screenshots
No response
Environment
Any
Additional context
No response
It is not possible to stake the full amount , as this deducts the freebalance. the Preservation ensures that the account is not reaped
/// The mode by which we describe whether an operation should keep an account alive.
#[derive(Copy, Clone, RuntimeDebug, Eq, PartialEq)]
pub enum Preservation {
/// We don't care if the account gets killed by this operation.
Expendable,
/// The account may not be killed, but we don't care if the balance gets dusted.
Protect,
/// The account may not be killed and our provider reference must remain (in the context of
/// tokens, this means that the account may not be dusted).
Preserve,
}