[][src]Crate pallet_balances

Balances Module

The Balances module provides functionality for handling accounts and balances.

Overview

The Balances module provides functions for:

Terminology

Implementations

The Balances module provides implementations for the following traits. If these traits provide the functionality that you need, then you can avoid coupling with the Balances module.

Interface

Dispatchable Functions

Usage

The following examples show how to use the Balances module in your custom module.

Examples from the FRAME

The Contract module uses the Currency trait to handle gas payment, and its types inherit from Currency:

use frame_support::traits::Currency;

pub type BalanceOf<T> = <<T as Trait>::Currency as Currency<<T as frame_system::Trait>::AccountId>>::Balance;
pub type NegativeImbalanceOf<T> = <<T as Trait>::Currency as Currency<<T as frame_system::Trait>::AccountId>>::NegativeImbalance;

The Staking module uses the LockableCurrency trait to lock a stash account's funds:

use frame_support::traits::{WithdrawReasons, LockableCurrency};
use sp_runtime::traits::Bounded;
pub trait Trait: frame_system::Trait {
	type Currency: LockableCurrency<Self::AccountId, Moment=Self::BlockNumber>;
}

fn update_ledger<T: Trait>(
	controller: &T::AccountId,
	ledger: &StakingLedger<T>
) {
	T::Currency::set_lock(
		STAKING_ID,
		&ledger.stash,
		ledger.total,
		WithdrawReasons::all()
	);
	// <Ledger<T>>::insert(controller, ledger); // Commented out as we don't have access to Staking's storage here.
}

Genesis config

The Balances module depends on the GenesisConfig.

Assumptions

Structs

Account

The balance of an account.

AccountData

All balance information for an account.

BalanceLock

A single lock on a balance. There can be many of these on an account and they "overlap", so the same balance is frozen by multiple locks.

DefaultInstance

Default module instance

GenesisConfig

Genesis config for the module, allow to build genesis storage.

Instance0

Module instance

Instance1

Module instance

Instance2

Module instance

Instance3

Module instance

Instance4

Module instance

Instance5

Module instance

Instance6

Module instance

Instance7

Module instance

Instance8

Module instance

Instance9

Module instance

Instance10

Module instance

Instance11

Module instance

Instance12

Module instance

Instance13

Module instance

Instance14

Module instance

Instance15

Module instance

Locks

Any liquidity locks on some account balances. NOTE: Should only be accessed when setting, changing and freeing a lock.

Module
NegativeImbalance

Opaque, move-only struct with private fields that serves as a token denoting that funds have been destroyed without any equal and opposite accounting.

PositiveImbalance

Opaque, move-only struct with private fields that serves as a token denoting that funds have been created without any equal and opposite accounting.

TotalIssuance

The total units issued in the system.

Enums

Call

Dispatchable calls.

Error
RawEvent

Events for this module.

Reasons

Simplified reasons for withdrawing balance.

Traits

Instance

Tag a type as an instance of a module.

Subtrait
Trait

Type Definitions

Event

RawEvent specialized for the configuration Trait