[][src]Trait frame_support::traits::LockableCurrency

pub trait LockableCurrency<AccountId>: Currency<AccountId> {
    type Moment;
    type MaxLocks: Get<u32>;
    pub fn set_lock(
        id: LockIdentifier,
        who: &AccountId,
        amount: Self::Balance,
        reasons: WithdrawReasons
    );
pub fn extend_lock(
        id: LockIdentifier,
        who: &AccountId,
        amount: Self::Balance,
        reasons: WithdrawReasons
    );
pub fn remove_lock(id: LockIdentifier, who: &AccountId); }

A currency whose accounts can have liquidity restrictions.

Associated Types

type Moment

The quantity used to denote time; usually just a BlockNumber.

type MaxLocks: Get<u32>

The maximum number of locks a user should have on their account.

Loading content...

Required methods

pub 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.

pub 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

pub fn remove_lock(id: LockIdentifier, who: &AccountId)

Remove an existing lock.

Loading content...

Implementors

Loading content...