subtensor icon indicating copy to clipboard operation
subtensor copied to clipboard

Convert to using balance locks in staking

Open gztensor opened this issue 1 year ago • 1 comments

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

gztensor avatar Apr 22 '24 16:04 gztensor

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,
}

distributedstatemachine avatar Apr 23 '24 13:04 distributedstatemachine