Allocating tokens
Tokens may be distributed on Genesis. RollApp deployers input an address and the amount of tokens will be distributed on the first block of the RollApp (i.e., genesis block).
Rolldrop template
Provided here is a Rolldrop website template that allows developers to customize their website while providing a framework for sign-less airdrop claiming. Addresses with the same coin type (i.e coin type 60 for EVM RollApps) key derivation do not need to sign messages.
Dymension stakers
Provided here is a continually updated list of DYM
stakers on the Dymension blockchain. This data is meant to reduce the overhead of compiling address lists for the genesis distribution. This list may be modified to distribute tokens in any type of form (e.g. pro-rata distribution, capped distributions...).
Adding genesis accounts
- Accounts
- Balances
- Standard account
- Continous vesting account
- Delayed vesting account
- Periodic vesting account
Accounts with no locked tokens are standard accounts.
Via CLI:
$EXECUTABLE add-genesis-account <ADDRESS> [AMOUNT][DENOM]
Add to JSON:
Non-EVM RollApp
{
"@type": "/cosmos.auth.v1beta1.BaseAccount",
"address": "rollapp3ca6dtt5m9nw4sxwhswf7x679x8m4h58237mtra",
"pub_key": null,
"account_number": "0",
"sequence": "0"
},
EVM RollApp
{
"@type": "/ethermint.types.v1.EthAccount",
"base_account": {
"address": "rollapp1q94320qqqqtk7tp5z3nfekwof3c9l522drg0tqhcm",
"pub_key": null,
"account_number": "0",
"sequence": "0"
},
"code_hash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
},
Continous vesting, where coins begin to vest at start-time and vest linearly with respect to time until end-time is reached.
Via CLI:
$EXECUTABLE add-genesis-account <ADDRESS> [AMOUNT][DENOM] --vesting-amount=<AMOUNT> --vesting-start-time=<UNIX-TIMESTAMP> --vesting-end-time=<UNIX-TIMESTAMP>
Add to JSON:
"accounts": [
{
"@type": "/cosmos.vesting.v1beta1.ContinuousVestingAccount",
"base_vesting_account": {
"base_account": {
"address": "rollapp102e743ckfk9ye2l740g88ww35vqy0wv9r6wdaf",
"pub_key": null,
"account_number": "0",
"sequence": "0"
},
"original_vesting": [
{
"denom": "arollapp",
"amount": "1000000000000"
}
],
"delegated_free": [],
"delegated_vesting": [],
"end_time": "1861832800"
},
"start_time": "1930296800"
},
]
Delayed vesting, where all coins are vested once end-time is reached. Unlike the continous vesting account above, we only specify the end-time for delayed vesting accounts.
Via CLI:
$EXECUTABLE add-genesis-account <ADDRESS> [AMOUNT][DENOM] --vesting-amount=<AMOUNT> --vesting-end-time=<UNIX-TIMESTAMP>
Add to JSON:
"accounts": [
{
"@type": "/cosmos.vesting.v1beta1.DelayedVestingAccount",
"base_vesting_account": {
"base_account": {
"address": "rol1dw5svmwnplnrmf0ed5mcnksfqfket2yrskm4d3",
"pub_key": null,
"account_number": "0",
"sequence": "0"
},
"original_vesting": [
{
"denom": "atake",
"amount": "1000"
}
],
"delegated_free": [],
"delegated_vesting": [],
"end_time": "2712554025"
}
},
]
A vesting account implementation that vests coins according to a custom vesting schedule. Periodic vesting accounts require calculating the coins released during each period for a given time.
Example
Releasing 900000000000arollapp after a one year cliff and 100000000000arollapp every month for two subsequent months.
Add to JSON:
"accounts": [
{
"@type": "/cosmos.vesting.v1beta1.PeriodicVestingAccount",
"base_vesting_account": {
"base_account": {
"address": "rol1dyxmw3c0s329523dnlefw3h7vfmeza68etghaxw",
"pub_key": null,
"account_number": "0",
"sequence": "0"
},
"original_vesting": [
{
"denom": "arollapp",
"amount": "1100000000000"
}
],
"delegated_free": [],
"delegated_vesting": [],
"end_time": "1946694000"
},
"start_time": "1912530000",
"vesting_periods": [
{
"length": "31536000",
"amount": [
{
"denom": "arollapp",
"amount": "900000000000"
}
]
},
{
"length": "2628000",
"amount": [
{
"denom": "arollapp",
"amount": "100000000000"
}
]
},
{
"length": "2628000",
"amount": [
{
"denom": "arollapp",
"amount": "100000000000"
}
]
},
]
},
]
Each address added to the accounts section must have a corresponding balance in the bank
, this is automatically added when accounts are added via the CLI.
Decimals | Base denom prefix |
---|---|
Address balances
Example
"bank": {
...
"balances": [
{
"address": "rollapp3200p8n2a79ncnbfjerw6nwh3en3urn0l737t28ewq",
"coins": [
{
"denom": "arollapp",
"amount": "10000000000000000000"
}
]
},
]
}
Denom metadata
Providng denom metadata allows clients to utilize denoms greater than the base denom in transactions.
Example
$EXECUTABLE tx bank send <ADDRESS> 10ROLL
"denom_metadata": [
{
"description": "Native staking token of the RollApp: ROLL (aroll)",
"base": "aroll",
"denom_units": [
{
"aliases": [],
"denom": "aroll",
"exponent": 0
},
{
"aliases": [],
"denom": "ROLL",
"exponent": 18
}
],
"display": "ROLL",
"name": "ROLL",
"symbol": "ROLL"
}
]
Total supply
When adding user balances the total supply will increase in the bank
. After all accounts are added check that the supply
equals the expected amount.
"supply": [
{
"denom": "arollapp",
"amount": "10000000000000000000"
}
],
Module balances
Modules may hold balances, this is particularly useful for starting the RollApp's community pool with a balance on genesis.
$EXECUTABLE query auth module-accounts