Chain ID genesis_29-2
A source code fork of Cronos and Ethermint
Cosmos SDK v0.53.0
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 or B.
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 >650GB data folder provided by the community.
Upgrade an existing node to the latest network version.
This option applies to:
- existing mainnet nodes requiring version upgrades
- legacy nodes based on
genesis-ethermintWe were an Evmos-fork before deciding to hard fork to Cronos. If you're attempting a full-node sync from scratch, you first have to follow the instructions in the
genesis-ethermintrepository.
- 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 jq ca-certificates rsync lz4 pv -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/snapshots/gl1/data.tar.lz4If this one is currently unavailable try checking out LCserve up to date snapshots
and replace URL and data_<BLOCK_HEIGHT> below in correspondance with the snapshot.
cd ~
wget http://85.122.195.176:<Port>/data_<BLOCK_HEIGHT>.tar.lz4let the download finish and grab a coffee.
setup the github repo.
git clone https://github.com/GenesisL1/genesis-crypto.git
cd genesis-crypto
git checkout v1.6.2create 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.
remove any existing data folder.
rm -r ~/.genesis/dataunzip the fully downloaded data folder
lz4 -d data.tar.lz4 | tar -xvf - -C $HOME/.genesisImprovement: Stream data folder from server directly into $HOME/.genesis/
wget -qO- https://ftp.basementnodes.ca/snapshots/gl1/data.tar.lz4 | pv | lz4 -d | tar -xvf - -C $HOME/.genesis
β οΈ Ensuregenesisdis not running before replacing.genesis
βοΈ Upgrade an existing node to the latest network version
Upgrading your node happens in phases. Your node will auto-halt whenever it is at a point where an upgrade is required. See the table below:
| Plan Name | Halt height | Version to upgrade to |
|---|---|---|
| plan_crypto | 7,400,000 (legacy node) | v1.0.0 |
| v1.1.1 | 13,000,000 | v1.1.1 |
| v1.6.2 | TBD | v1.6.2 |
You're only required to use the upgrade.sh script every time an upgrade is needed, but make sure the following conditions match:
- node auto-halted (!) at a specific plan/height
- you checked out the corresponding release version (e.g. for plan_crypto:
git checkout v1.0.0) - you're using the script from that same release (the upgrade.sh script is release-dependent)
# cd ~
# git clone https://github.com/GenesisL1/genesis-crypto.git # only required for plan_crypto update assuming existing `/genesis-crypto` folder if planning upgrade `v1.0.0` to `v1.1.1`
cd ~/genesis-crypto
git checkout <version to upgrade to>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.24.13"
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.24.13.linux-arm64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go1.24.13.linux-arm64.tar.gz"
rm "go1.24.13.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
Check first
echo $USERsudo nano /etc/systemd/system/genesisd.servicePaste this but for optimal compatibility, change $USER with your username:
[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="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.