Skip to main content

How vesting accounts work

Individuals who previously held LUNA Classic (LUNA on the original Terra blockchain) will be entitled to a specified number of LUNA tokens on the new Terra blockchain based on the quantity of their holdings at specified snapshots of time. To learn more about the Terra Ecosystem Revival Plan, please click here.

30% of LUNA tokens received will be liquid and may be traded and transferred immediately upon receipt. 70% of these tokens will be vesting, meaning that these funds will be available in one's personal wallet, but may not be traded or transfered until a specified period of time. However, these funds may be delegated to validators at any time if the user chooses to do so.

Vesting tokens will be stored in a type of vesting account available in one's wallet. Vesting tokens will become vested, or available for trade and transfer, based on a predetermined schedule. We will go over 3 different types of vesting accounts, each with it's own unique vesting schedule.

One may view their respective vesting account information by adding their personal wallet address to the end of the below URL. For example, if one's personal wallet address were terra111111111111111111111111111111111111111, they would utilize the following URL to view their vesting account:


_1
https://phoenix-lcd.terra.dev/cosmos/auth/v1beta1/accounts/terra111111111111111111111111111111111111111

Note: Token amounts in the examples below will be given in microunits. To convert microunits to basic units, you can divide the specified quantities by 1,000,000. Time values utilized will be in Unix time. You may use this converter to translate from Unix time to a human-readable datetime.

Continuous Vesting Account

In a continous vesting account, a number of tokens will be vested per block based on a predetermined start and end time. One would have to wait until the specified start time for their tokens to start to become vested. At this point, tokens become vested per block until the end time is reached based on the following equation:


_1
tokens_vested_per_block = int(original_vesting * (block_time / (end_time - start_time)))

In the following example, 5,000,000 uLUNA (5 LUNA) will be vested within the 24 hour time period from 1654041600 Unix time (June 1, 2022 12:00:00 AM) to 1654128000 Unix time (June 2, 2022 12:00:00 AM).


_23
{
_23
"account": {
_23
"@type": "/cosmos.vesting.v1beta1.ContinuousVestingAccount",
_23
"base_vesting_account": {
_23
"base_account": {
_23
"address": "terra111111111111111111111111111111111111111",
_23
"pub_key": null,
_23
"account_number": "0",
_23
"sequence": "0"
_23
},
_23
"original_vesting": [
_23
{
_23
"denom": "uluna",
_23
"amount": "5000000"
_23
}
_23
],
_23
"delegated_free": [],
_23
"delegated_vesting": [],
_23
"end_time": "1654128000"
_23
},
_23
"start_time": "1654041600"
_23
}
_23
}

Given a block time, or the average amount of time it takes for a block to be added to the blockchain, of 6 seconds, we may calculate the number of tokens vested per block by substituting relevant variables in the tokens_vested_per_block equation with the specified values:


_1
tokens_vested_per_block = int(5000000 * (6 / (1654128000 - 1654041600)))

According to the above equation, ~347 uLUNA would be vested per block. Given the block time of 6 seconds and a difference between start and end time of 24 hours (86400 seconds), we may realize the total original vesting amount of 5,000,000 uLUNA utilizing the following equation:


_1
total_vesting_tokens = tokens_vested_per_block * (86400 / 6)

Periodic Vesting Account

Periodic vesting accounts work similarly to continuous vesting accounts except that vesting occurs over predefined vesting periods. Each period has a specified length corresponding to the number of seconds the period will last.

Below, we see an example of a periodic vesting account where 5,000,000 uLUNA will be vested over the 24 hour period referenced in the continuous vesting account example. During period 1, within the first 4 hours (14,400 seconds) after the start time, 1,000,000 uLUNA will be vested. During period 2, in the 6 hours (21,600 seconds) after period 1, 2,000,000 uLUNA will be vested. Finally, during period 3, in the 14 hours (50,400 seconds) after period 2, 2,000,000 more uLUNA will be vested.


_52
{
_52
"account": {
_52
"@type": "/cosmos.vesting.v1beta1.PeriodicVestingAccount",
_52
"base_vesting_account": {
_52
"base_account": {
_52
"address": "terra111111111111111111111111111111111111111",
_52
"pub_key": null,
_52
"account_number": "0",
_52
"sequence": "0"
_52
},
_52
"original_vesting": [
_52
{
_52
"denom": "uluna",
_52
"amount": "5000000"
_52
}
_52
],
_52
"delegated_free": [],
_52
"delegated_vesting": [],
_52
"end_time": "1654128000"
_52
},
_52
"start_time": "1654041600",
_52
"vesting_periods": [
_52
{
_52
"length": "14400",
_52
"amount": [
_52
{
_52
"denom": "uluna",
_52
"amount": "1000000"
_52
}
_52
]
_52
},
_52
{
_52
"length": "21600",
_52
"amount": [
_52
{
_52
"denom": "uluna",
_52
"amount": "2000000"
_52
}
_52
]
_52
},
_52
{
_52
"length": "50400",
_52
"amount": [
_52
{
_52
"denom": "uluna",
_52
"amount": "2000000"
_52
}
_52
]
_52
}
_52
]
_52
}
_52
}

Utilizing the equations given in the continuous vesting account example, we may evaluate the number of tokens which will be vested per block for each of the 3 periods given in our periodic vesting account example. We again utilize a block time of 6 seconds.


_3
tokens_vested_per_block_period1 = int(1000000 * (6 / 14400))
_3
tokens_vested_per_block_period2 = int(2000000 * (6 / 21600))
_3
tokens_vested_per_block_period3 = int(2000000 * (6 / 50400))

Following the conclusion of the vesting time period given by end_time, 5,000,000 uLUNA will have been vested and will be available for trading and transfers.

Delayed Vesting Account

In a delayed vesting account, vesting tokens will be fully vested when the end time is reached. In the below example, 5,000,000 uLUNA begin vesting at the genesis block. These funds remain locked until 1654041600 Unix time (June 1, 2022 12:00:00 AM), when the full amount of 5,000,000 uLUNA is then vested.


_22
{
_22
"account": {
_22
"@type": "/cosmos.vesting.v1beta1.DelayedVestingAccount",
_22
"base_vesting_account": {
_22
"base_account": {
_22
"address": "terra111111111111111111111111111111111111111",
_22
"pub_key": null,
_22
"account_number": "0",
_22
"sequence": "0"
_22
},
_22
"original_vesting": [
_22
{
_22
"denom": "uluna",
_22
"amount": "5000000"
_22
}
_22
],
_22
"delegated_free": [],
_22
"delegated_vesting": [],
_22
"end_time": "1654041600"
_22
}
_22
}
_22
}

Delegation

A user may choose to delegate their tokens to validators. This may be done with tokens that are vested or are still vesting. As such, vesting tokens which are delegated will be listed under delegated_vesting. Vested tokens which are delegated will be listed under delegated_free. Both are variable values which will change based on the amount being delegated and may be updated as more and more tokens become vested. If one chooses to undelegate, the undelegated tokens will be locked for 21 days. After the 21 day period has concluded, the proportion of the funds which are vested will be free to trade and transfer as desired. Funds which are undelegated, but are still vesting will become vested based on the vesting schedule provided by it's respective vesting account.