Trait polkadot_sdk_frame::traits::tokens::currency::LockableCurrency
pub trait LockableCurrency<AccountId>: Currency<AccountId> {
type Moment;
type MaxLocks: Get<u32>;
// Required methods
fn set_lock(
id: [u8; 8],
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons,
);
fn extend_lock(
id: [u8; 8],
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons,
);
fn remove_lock(id: [u8; 8], who: &AccountId);
}
Expand description
A currency whose accounts can have liquidity restrictions.
Required Associated Types§
type Moment
type Moment
The quantity used to denote time; usually just a BlockNumber
.
Required Methods§
fn set_lock(
id: [u8; 8],
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons,
)
fn set_lock( id: [u8; 8], 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.
fn extend_lock(
id: [u8; 8],
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons,
)
fn extend_lock( id: [u8; 8], 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
fn remove_lock(id: [u8; 8], who: &AccountId)
fn remove_lock(id: [u8; 8], who: &AccountId)
Remove an existing lock.
Object Safety§
This trait is not object safe.