Skip to content

zenodeapp/genesis-crypto

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,329 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

GenesisL1 Mainnet (Cronos fork)

GenesisL1

Chain ID genesis_29-2

A source code fork of Cronos and Ethermint

Cosmos SDK v0.53.0


🧭 Introduction

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:

πŸ”Ή OPTION A: Bootstrapped Snapshot (Fastest Setup)

Use a fully synced >650GB data folder provided by the community.

πŸ”Ή OPTION B: Upgrade Existing Node

Upgrade an existing node to the latest network version.

This option applies to:

  • existing mainnet nodes requiring version upgrades
  • legacy nodes based on genesis-ethermint

    We 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-ethermint repository.


1. βš™οΈ System Requirements

Hardware

  • Disk: 1000GB+ (NVMe M.2 SSD recommended)
  • RAM: 8GB+ (16GB+ recommended)
  • CPU: 4+ physical CPU cores | 8+ threads
  • Network: > 100Mbit/s stable connection bothways

Software Setup

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 -y

πŸ’‘ Enable Swap (Optional but Recommended)

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

2. πŸ› οΈ Node Setup Options

Important

Choose one method and expand the '>' :

πŸ”Ή A. Bootstrap with Provided Snapshot (Fastest; Trustful)

Quick-Sync from provided `data` backup
cd ~
wget https://ftp.basementnodes.ca/snapshots/gl1/data.tar.lz4

If 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.lz4

let 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.2

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.

remove any existing data folder.

rm -r ~/.genesis/data

unzip the fully downloaded data folder

lz4 -d data.tar.lz4 | tar -xvf - -C $HOME/.genesis

Improvement: 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

⚠️ Ensure genesisd is not running before replacing .genesis

πŸ”Ή B. Upgrade Existing Node (Trustless)

βš™οΈ 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.sh

3. Daemon check

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.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 version

For 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 version

4. Create or import a key (optional for just a node, required for validator node)

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


5 installing genesisd as a service (optional)

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

Check first

echo $USER
sudo nano /etc/systemd/system/genesisd.service

Paste 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 genesisd

check hidden genesisd output

journalctl -fu genesisd -ocat

6. Become a validator (optional, also very welcoming)

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> \

7. Explore utilities

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.


7.1 FAQ and useful links

FAQ -> Welcome for suggestions

Useful links presented below

8. Acknowledgements

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.

About

GenesisL1 is an Ethereum-compatible blockchain network built on Cosmos' SDK technology. It is a fork of Cronos, with high throughput, and fast finality.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Go 52.9%
  • Python 30.9%
  • Solidity 5.3%
  • Shell 4.8%
  • Nix 2.8%
  • Jsonnet 2.0%
  • Other 1.3%