Trait frame_support::traits::tokens::currency::LockableCurrency
source · pub trait LockableCurrency<AccountId>: Currency<AccountId> {
type Moment;
type MaxLocks: Get<u32>;
// Required methods
fn set_lock(
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
);
fn extend_lock(
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
);
fn remove_lock(id: LockIdentifier, who: &AccountId);
}
Expand description
A currency whose accounts can have liquidity restrictions.
Required Associated Types§
Required Methods§
sourcefn set_lock(
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
)
fn set_lock( id: LockIdentifier, who: &AccountId, amount: Self::Balance, reasons: WithdrawReasons )
Create a new balance lock on account who
.
If the new lock is valid (i.e. not already expired), it will push the struct to
the Locks
vec in storage. Note that you can lock more funds than a user has.
If the lock id
already exists, this will update it.
sourcefn extend_lock(
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
)
fn extend_lock( id: LockIdentifier, who: &AccountId, amount: Self::Balance, reasons: WithdrawReasons )
Changes a balance lock (selected by id
) so that it becomes less liquid in all
parameters or creates a new one if it does not exist.
Calling extend_lock
on an existing lock id
differs from set_lock
in that it
applies the most severe constraints of the two, while set_lock
replaces the lock
with the new parameters. As in, extend_lock
will set:
- maximum
amount
- bitwise mask of all
reasons
sourcefn remove_lock(id: LockIdentifier, who: &AccountId)
fn remove_lock(id: LockIdentifier, who: &AccountId)
Remove an existing lock.