Balance transfers are used to send a balance from one account to another account.

To start transferring a balance, we can use

Keep-Alive Checks

In Cere there are two main ways to transfer funds from one account to another:

Attempting to send less than the existential deposit to an account with 0 CERE will always fail, no matter if the keep-alive check is on or not.

For instance, attempting to transfer 0.1 CERE to an account you just generated (and thus has no balance) will fail, since 0.1 CERE is less than the existential deposit of 1 CERE and the account cannot be initialized with such a low balance.

Even if the transfer fails due to a keep-alive check, the transaction fee will be deducted from the sending account if you attempt to transfer.

Vested Transfers

CERE may have a lock placed on them to account for vesting funds. Like other types of locks, these funds cannot be transferred but can be used in other parts of the protocol such as voting in governance or being staked as a validator or nominator.

Vesting funds are on a release schedule and unlock a constant number of tokens at each block (linear vesting) or can unlock the full amount after a specific block number (cliff vesting). Although the tokens are released in this manner, it does not get reflected on-chain automatically since locks are lazy and require an extrinsic to update.

There are two ways that vesting schedules can be created.

Vesting schedules have three parameters:

The configuration of these three fields dictates the amount of funds that are originally locked, the slope of the unlock line and the block number for when the unlocking begins.