Release v1.0.0 ~ Cronos v1.0.15
Chain ID genesis_29-2
A source code fork of Cronos and Ethermint
Cosmos SDK v0.46.15
Due to the recent on-chain minting of the full Protein Data Bank (PDB), the size of the GenesisL1 blockchain has increased significantly. This data-heavy event resulted in a substantial boost to storage requirements and syncing time. To address this, the GenesisL1 community provides multiple streamlined methods to get a node up and running quickly β including a bootstrapped data folder backup that allows syncing within hours instead of several days.
β οΈ IMPORTANT: In Step 2, you will need to choose one setup method: Option A, B, or C. Only follow one of these β copying all three will cause your setup to fail.
This repository is intended for those who want to join the Cronos-fork mainnet: genesis_29-2, using one of the following paths:
Use a fully synced 622GB data folder provided by the community, compressed to ~543GB.
Sync your node from a trusted block height using the built-in state sync mechanism.
Migrate from the legacy Evmos-based network genesis-ethermint to the current Cronos-fork chain.
Warning
We were an Evmos-fork before deciding to hard fork to Cronos. If you're attempting a full-node sync from scratch, follow the instructions in the genesis-ethermint repository first.
- Disk: 1000GB+ (NVMe M.2 SSD recommended)
- RAM: 8GB+ (16GB+ recommended)
- CPU: 4+ physical CPU cores | 8+ threads
- Network: > 100Mbit/s stable connection bothways
Debian based OS
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget build-essential git make gcc liblz4-tool htop unzip -ysudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfileTo persist:
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabImportant
Choose one method and expand the '>' :
Quick-Sync from provided `data` backup
cd ~
wget https://ftp.basementnodes.ca/genesis_backup_20250407082420.tar.lz4If this one is currently unavailable try the following
cd ~
wget http://85.122.195.176:55865/genesis_backup_20250505.tar.gzlet the download finish and grab a coffee.
setup the github repo.
git clone https://github.com/JoMfN/genesis-crypto.git
cd genesis-cryptocreate a .genesis folder with your config in the meanwhile.
sh setup/quick-sync.sh <moniker>Follow the instructions in the terminal.
check if a .genesis folder was generated.
unzip the fully downloaded data folder
lz4 -d genesis_backup_20250407082420.tar.lz4 | tar -xvf -If you downloaded the .tar.gz file instead:
tar -xvzf genesis_backup_20250505.tar.gzreplace it with the one existing in ~/.genesis/data
mv genesis_backup_20250407082420/* ~/.genesis/If you downloaded the .tar.gz file instead:
mv genesis_backup_20250505/* ~/.genesis/
β οΈ Ensuregenesisdis not running before replacing.genesis
Setup a node _(using state sync)_ from a snapshot
git clone https://github.com/GenesisL1/genesis-crypto.git
cd genesis-crypto
git checkout v1.0.0[!IMPORTANT] Running this will wipe the entire database (the /data-folder excluding the priv_validator_state.json file). Therefore if you already have a node set up and you prefer not to have your GenesisL1 database lost, create a backup.
You could use utils/backup/create.sh for this.
sh setup/state-sync.sh <moniker>π‘ This method will auto-install
genesisdand dependencies
βοΈ Upgrade an ethermint Node synced from scratch
β οΈ Legacy Node Warning: If you're attempting a full-node sync from scratch, follow the instructions in the (repo:genesis-ethermint) and the node synced till height:7400000which caused it to panic.
Then to upgrade to the new mainnet (genesis_29-2):
sh setup/upgrade.shIf you can't access the genesisd command at this point, then you may need to execute:
. ~/.bashrcOr the equivalent:
source ~/.bashrc
Try if now if you can initiate the node
genesisd start --log_level warnConfirm everything initializes correctly, then stop it (Ctrl + C).
(Stop with Ctrl + C after confirmation)
βοΈ getting errors with helper script Go Installation (ignore if no error above)
For AMD:
ver="1.22.12"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go versionFor ARM (Raspberry Pi 5):
wget https://go.dev/dl/go1.22.12.linux-arm64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go1.22.12.linux-arm64.tar.gz"
rm "go1.22.12.linux-arm64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go versionA key is necessary to interact with the network/node. If you haven't already created one, either import one or generate a new one, using:
replace <walletname> with an arbitrary name for your wallet key
sh utils/key/create.sh <walletname>OR
sh utils/key/create.sh <walletname> <private_eth_key><private_eth_key> is the private key for a (wallet) address you already own (not recommended).
Tip
π‘ TIP: Clear bash history:
history -c && exec bash
Note
Transfer some L1 to the wallet you just created
to check your keys:
genesisd keys listTo check wallet balance:
genesisd query bank balances $(genesisd keys show <walletname> -a)π Pro Key Management
Creating a new wallet (write down you seed phrase with pen and paper!)
genesisd keys add <walletname>OR
Recover a wallet:
genesisd keys add <walletname> --recoverThe terminal will request you to input the 24-words long seed phrase
In general you can always start the node just once, and have to keep track of this terminal window by prompting:
genesisd start --log_level warnThis can be automized by installing it as a service checkout the details below.
π₯οΈ Systemd Service Setup
sudo nano /etc/systemd/system/genesisd.servicePaste this:
[Unit]
Description=genesisd
After=network-online.target
[Service]
User=$USER
ExecStart=$(which genesisd) start
Restart=on-failure
RestartSec=15
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
Start it:
sudo systemctl start genesisdcheck hidden genesisd output
journalctl -fu genesisd -ocatWarning
make sure you are in sync and genesisd is running
genesisd statusshould show "catching_up":false
"catching_up": falseOnce your node is up-and-running, fully synced and you have a key created or imported, you could become a validator using:
sh setup/create-validator.sh <moniker> <walletname>
This is a wizard and shall prompt the user only the required fields to create an on-chain validator.
βοΈ Pro Validator Setup
Watch the sync status by opening a new terminal and prompt genesisd status again. When you are in sync this appears:
"catching_up": falseAdjust gas-prices and gas if the transaction gives the error out-of-gas
genesisd tx staking create-validator \
--amount=1000000el1 \
--pubkey=$(genesisd tendermint show-validator) \
--moniker="YOUR_NODE_NAME" \
--identity="More_Info_You_Want_To_Add" \
--website="" \
--details="Example: Community Valoper node and Supporter of GenesisL1" \
--security-contact="[email protected]" \
--chain-id="genesis_29-2" \
--commission-rate="0.05" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--gas=355172 \
--gas-prices=1127530424125el1 \
--from=<walletname> \Tip
The /utils-folder contains useful utilities one could use to manage their node (e.g. for fetching latest seeds and peers, fetching the genesis state, quickly shifting your config's ports, recalibrating your state sync etc.). To learn more about these, see the README in the folder.
FAQ -> Welcome for suggestions
Useful links presented below
Special thanks to the contributors who made this bootstrap flow possible:
- @Zenodeapp β for reviewing these instructions and optimizing the required scripting.
- @Cordtus β for hosting and maintaining the FTP server for snapshot distribution.