pub trait Mutate<AccountId>: Inspect<AccountId> {
// Required methods
fn set_freeze(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult;
fn extend_freeze(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult;
fn thaw(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
) -> DispatchResult;
// Provided methods
fn set_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
fortitude: Fortitude,
) -> DispatchResult { ... }
fn ensure_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
fortitude: Fortitude,
) -> DispatchResult { ... }
fn decrease_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult { ... }
fn increase_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult { ... }
}
Expand description
Trait for introducing, altering and removing locks to freeze an account’s funds so they never go below a set minimum.
Required Methods§
sourcefn set_freeze(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn set_freeze( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Prevent actions which would reduce the balance of the account of who
below the given
amount
and identify this restriction though the given id
. Unlike extend_freeze
, any
outstanding freeze in place for who
under the id
are dropped.
If amount
is zero, it is equivalent to using thaw
.
Note that amount
can be greater than the total balance, if desired.
sourcefn extend_freeze(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn extend_freeze( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Prevent the balance of the account of who
from being reduced below the given amount
and
identify this restriction though the given id
. Unlike set_freeze
, this does not
counteract any pre-existing freezes in place for who
under the id
. Also unlike
set_freeze
, in the case that amount
is zero, this is no-op and never fails.
Note that more funds can be locked than the total balance, if desired.
sourcefn thaw(asset: Self::AssetId, id: &Self::Id, who: &AccountId) -> DispatchResult
fn thaw(asset: Self::AssetId, id: &Self::Id, who: &AccountId) -> DispatchResult
Remove an existing lock.
Provided Methods§
sourcefn set_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
fortitude: Fortitude,
) -> DispatchResult
fn set_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, fortitude: Fortitude, ) -> DispatchResult
Attempt to alter the amount frozen under the given id
to amount
.
Fail if the account of who
has fewer freezable funds than amount
, unless fortitude
is
Fortitude::Force
.
sourcefn ensure_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
fortitude: Fortitude,
) -> DispatchResult
fn ensure_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, fortitude: Fortitude, ) -> DispatchResult
Attempt to set the amount frozen under the given id
to amount
, iff this would increase
the amount frozen under id
. Do nothing otherwise.
Fail if the account of who
has fewer freezable funds than amount
, unless fortitude
is
Fortitude::Force
.
sourcefn decrease_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn decrease_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Decrease the amount which is being frozen for a particular lock, failing in the case of underflow.
sourcefn increase_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn increase_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Increase the amount which is being frozen for a particular lock, failing in the case that too little balance is available for being frozen.