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 -y
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
To persist:
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Important
Choose one method and expand the '>' :
Quick-Sync from provided `data` backup
cd ~
wget https://ftp.basementnodes.ca/genesis_backup_20250407082420.tar.lz4
If this one is currently unavailable try the following
cd ~
wget http://85.122.195.176:55865/genesis_backup_20250505.tar.gz
let the download finish and grab a coffee.
setup the github repo.
git clone https://github.com/JoMfN/genesis-crypto.git
cd genesis-crypto
create 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.gz
replace 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/
โ ๏ธ Ensuregenesisd
is not running before replacing.genesis
Setup a node _(using state sync)_ from a snapshot
git clone https://github.com/alpha-omega-labs/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
genesisd
and 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:7400000
which caused it to panic.
Then to upgrade to the new mainnet (genesis_29-2
):
sh setup/upgrade.sh
If you can't access the genesisd
command at this point, then you may need to execute:
. ~/.bashrc
Or the equivalent:
source ~/.bashrc
Try if now if you can initiate the node
genesisd start --log_level warn
Confirm 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 version
For 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 version
A 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 list
To 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> --recover
The 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 warn
This can be automized by installing it as a service checkout the details below.
๐ฅ๏ธ Systemd Service Setup
sudo nano /etc/systemd/system/genesisd.service
Paste 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 genesisd
check hidden genesisd output
journalctl -fu genesisd -ocat
Warning
make sure you are in sync and genesisd
is running
genesisd status
should show "catching_up":false
"catching_up": false
Once 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": false
Adjust 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="YourEmail@mail.com" \
--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.