pub trait MultiTokenLockableCurrency<AccountId>: MultiTokenCurrency<AccountId> {
type Moment;
type MaxLocks: Get<u32>;
// Required methods
fn set_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
);
fn extend_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
);
fn remove_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId
);
}
Expand description
A currency whose accounts can have liquidity restrictions.
Required Associated Types§
Required Methods§
sourcefn set_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
)
fn set_lock( currency_id: Self::CurrencyId, 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(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
)
fn extend_lock( currency_id: Self::CurrencyId, 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(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId
)
fn remove_lock( currency_id: Self::CurrencyId, id: LockIdentifier, who: &AccountId )
Remove an existing lock.