An awesome, must-have toolkit and a protocol for the Genesis launch. This toolkit provides a launch protocol to cosmos-based networks. A recommended workflow and the necessary tools for the compilation of
genesis.json. It also includes a crisis protocol.
The network launch is a complex process with many complex factors. It starts with distribution development and does not conclude with the first block of the network.
This repo is an example of a working launch process of cyber. It is not a unique method for launching all types of projects, but the experience that we share can be very useful to others.
The protocol has three zones:
The Genesis preparation zone is used for collecting addresses for distribution, distribution parameters, network parameters, and genesis transactions. All the collected data is integrating into
genesis.json, using the
This zone is also about set upping a DAO as a future, governing entity.
The network and contracts running zone is the stage between block #1 of the launch and the latest block of the network. The latest block is defined by the results of the takeoff donation round. In other words: the latest block should come after all of the pending DAO commitments. This zone is defined as a danger zone because of a possible fault risk of the network, the contracts or both of them.
This zone contains three major events:
The finalization zone should be used after token distribution (as pended commitment). The main event of this zone is preparing for the mainnet.
Develop your distribution for the launch. This is the most important step in this guide. What is the total genesis supply? Which communities should be involved? How to distribute tokens? What method for distribution you want to use? How many tokens you want to distribute to the foundation, team, donors, inventors and so on. You can see our example at the distribution directory.
According to your distribution, set up the
manual_distribution.json files with the necessary values. More about that in the distribution directory.
Set the parameters for the network. In the params directory you are welcome to open discussions about your great params decisions. Put all the params inside of the
Select a set of tools for preparing the genesis accounts. This refers to communities gifts if your distribution includes any gifts for communities (like ours). There are two ways to include a group of addresses in the genesis file:
In the first case, you just need a
.csv file with the addresses and the native chain balances. The genesis-generator tool will parse the distribution files and apply the quadratic function for this group.
Notice. The addresses should be converted into the format that is suited to your network. For further details, see the provided converter.
In the second case, you can calculate the balances as you wish, and the genesis generator tool just inserts it in the right format. But you should take care of the distribution sum by yourself. This sum should be compatible with the values at
cyber_distribution.json. More technical details in the genesis-generator-tool.
genesis-generator-tool/dataand start the genesis generation.
ETH -> cosmos-basedaddresses converter and
cosmos-based -> cosmos-basedconverter
The network params are available at the
The distribution params are available at the
We can not guarantee that everything will go as expected. The software can be vulnerable. If anything goes wrong, cyber~Congress as the organiser of the game, has the full power of deciding whether the game must be restarted without any rewards or restarted with partial rewards, depending on the circumstances. In the case, such a circumstance shall arise we are going to count with community opinions.
We define 2 danger zones with probabilities to unexpected behaviour and one zone as an intersection of the defined zones:
In case anything goes wrong, we’ve prepared a crisis protocol.
If the network will fail:
If the contracts will fail:
If everything gets fucked up from both ends, then:
|File name||Description||IPFS hash|
|cosmos.csv||cosmos network balances state at block 1110000||QmcgfjcNwucHrSrWFNxKGYLjLouedYjyeP3hRrqD6P8m9K|
|ethereum.csv||State of the Ethereum network balances on block 8080808, excluding contracts and addresses without, at least, one outgoing transaction||QmVCMwK3273Wb4gddzmxiitquCe844Qe63SWVyWFA8gEsT|
|galaxies_balance.csv||Galaxy balances for non-contract addresses with at least one outgoing transaction, on block 9110129||QmR7nbMZDrQE5wLoUhgKJ6pZiUkCyJ4bCfgDEyWGfH3SvJ|
|stars_balance.csv||Stars balances of non-contract addresses, with at least one outgoing transaction, on block 9110129||QmUkXZcHB9L3cg2uqMC5ejkCaD3eWsZRmyuWtdATxZUMKj|
|planets_balance.csv||Planet balances of non-contract addresses, with at least one outgoing transaction, on block 9110129||QmZjc2KEQMpvK3dudsyar1Qzq6e4M5ds3CCteUXbne6zxs|
|Unsigned euler-6 genesis.json||QmYrZuyMvskb2tkY65Go1Dadh1axXjY4x3VfFadaSSRf8b|
|cyber_distribution||Distribution by user group for euler-5/6||QmfW6pEsHnC76ZWwGgtbhnRq4fJrUdiU9tz9M2oUnw3JNr|
|manual_distribution.json||Manual distribution inside of the groups for euler-5/6||QmbEX1yNqCXbLF9fqQbJrE58zm4EXF2A8K6WDy9LjXSecd|
|network_genesis.json||The genesis.json template with current params for euler-6||QmNboiSbS4TP6xptek6uyUnuxL3uL4Xef9qbyR7BvuH8Sf|
|cyberlinks.json||Euler-5 cyberlinks by address on block 1580000 block||QmNsDrgrJfGvs4Z6mg7XU5KMjg49FGtjUET1NqNoCynrzP|
|precommits.csv||Precommit count by validators on euler-5 testnet on block 1580000||QmdfktVx9jpRx45WTAW9YkfbVijr2pC1AyvuhcS2bSgULk|
|Signed euler-6 genesis.json||QmZHpLc3H5RMXp3Z4LURNpKgNfXd3NZ8pZLYbjNFPL6T5n|