A Comprehensive Guide to Setting Up and Operating a Celestia Validator Node

Exploring Celestia Chains and enhancing your understanding of the network through hands-on node operation

Cosmoseup
Cosmostation
6 min readApr 27, 2023

--

Celestia Validator Node Guide

Welcome to this in-depth Celestia Validator Node guide. My name is Cosmoseup, and I am a node operator at Cosmostation.

Today, we will explore the innovative Celestia Chains, a solution designed to address blockchain data availability challenges.

Celestia is currently running an incentivized testnet program known as “Blockspace race,” in which Cosmostation is participating as a validator.

Our team has been researching and operating as a validator on Celestia for approximately five weeks, seeking to improve our products and node operations.

This article serves as a comprehensive guide to Celestia Chain and provides step-by-step instructions for setting up your validator node, including the app node and bridge node, on the Celestia network.

This guide consists of five key steps:

1. Hardware Requirements
2. Setting Up Dependencies
3. Exploring Celestia Node Types
4. Installing Celestia App Node
5. Installing Celestia Bridge Node

By following this guide, you will gain a deeper understanding of the Celestia network system as you operate your own nodes.

Note: This process is designed for Ubuntu Linux 20.04 (LTS) x64 systems.

1. Hardware Requirements

To operate your node, you’ll need a server that meets the following requirements.

NOTE) if your node is not permanent, you don’t need to worry about the network banthwith.

Memory: 8 GB RAM
CPU: 6 cores
Disk: 500 GB SSD Storage
Bandwidth: 1 Gbps for Download/1 Gbps for Upload

2. Setting Up Dependencies

After preparing your server, enter the following commands to install essential packages for Celestia.

# update & install 

sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential git make ncdu -y
sudo apt install snapd -y

Then, Install Go version 1.20.*

# install golang
sudo snap install go --channel=1.20/stable --classic

# add $GOBIN PATH
echo "export PATH=\$PATH:$HOME/go/bin" >> $HOME/.profile && source $HOME/.profile

3. Exploring Celestia Node Types

Before proceeding with the installation of Celestia nodes, it is essential to understand the different node types within the Celestia ecosystem.

There are two primary node types: Data Availability (DA) nodes and Consensus nodes, which are commonly found in the Cosmos ecosystem.

To operate as a validator, you need to run two nodes: a DA-type bridge node and a Consensus-type app node.

The validator node is responsible for serving raw data from the consensus node to the bridge node. While it may be challenging to comprehend the concept through text alone, we have provided some helpful resources for further clarification. For a deeper understanding, please consult the official Celestia documentation.

https://docs.celestia.org/nodes/bridge-node/

4. Installing Celestia App Node

To install the Consensus type app node, follow official docs and clone and install the celestia-app node repository.

# clone & install
cd $HOME
rm -rf celestia-app
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app/
APP_VERSION=v0.12.2
git checkout tags/$APP_VERSION -b $APP_VERSION
make install

# check version
celestia-appd verison
# >>> 0.12.2

# you change chain-id when you want to other network, devnet, testnet or something
celestia-appd init my_node --chain-id blockspacerace-0
celestia-appd tendermint unsafe-reset-all

Once you have installed celestia-appd binary, you need to get the genesis file and peer information for the Blockspace Race testnet.

cd $HOME && git clone https://github.com/celestiaorg/networks.git
cd networks/blockspacerace/ && ls
# >>> genesis.json, peers.txt


# copy genesis
cp genesis.json $HOME/.celestia-app/config/genesis.json

# add seed & peers
SEEDS=$(tr '\n' ',' < seeds.txt | sed 's/,$//')
sed -i "s|^seeds *=.*|seeds = \"$SEEDS\"|" $HOME/.celestia-app/config/config.toml

PEERS=$(tr '\n' ',' < peers.txt | sed 's/,$//')
sed -i "s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" $HOME/.celestia-app/config/config.toml

# set config.toml for validator role
sed -i "s/^pruning *=.*/pruning = \"nothing\"/" $HOME/.celestia-app/config/app.toml

Now, you’re ready to operate the Consensus type app node! Simply start it and see your node syncing.

# start our node
celestia-appd start

If your node cannot sync, please follow this method: download our address book, which contains such as peers and seed, and restart your node to sync it.

# if not connected with other peers, try to do this
cd $HOME/.celestia-app/config && rm addrbook.json && wget -O addrbook.json https://lcd-celestia-itn.cosmostation.io/addrbook.json

# start again our node
celestia-appd start

5. Installing Celestia Bridge Node

The next step is to install bridge node, which is one of DA types. Keep your session syncing in your app node. and open a new session to operate the bridge node.

Then, install celestia node like the process above.

# clone & install
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node.git
cd celestia-node/
git checkout tags/v0.9.1

# build binary
make build
make cel-key

# move to $GOBIN
mv ./cel-key ~/go/bin/ && mv ./build/celestia ~/go/bin/

# check version
celestia verison
# >>> Semantic version: v0.9.1
# >>> ....

Once you’ve installed the celestia binary, start your bridge node like the celestia-app node.

# reset store
celestia bridge unsafe-reset-store --p2p.network blockspacerace

# init
# please keep your mnemonic, if you want to operator permenantly
celestia bridge init --p2p.network blockspacerace

Now, let’s start your brigde node, and you should see your node syncing!

# need to be operated with celestia-appd in same server
celestia bridge start --core.ip 127.0.0.1 --p2p.network blockspacerace

Upon successful synchronization of both nodes, the next step is to send a transaction to become a validator on the Celestia network. However, before doing so, you must acquire some tokens. Tokens can be obtained through the Celestia Offical Discord.

Note: If acquiring tokens in the Blockspace Race seems challenging, consider obtaining Celestia public testnet tokens by joining the Mocha testnet.

You can then follow this guide in the same manner. To conclude this guide, we will discuss how to send a transaction to become a validator. After successfully sending the transaction, ensure you explore the transaction and verify that your node is active.

# create a my validator wallet
celestia-appd keys add validator


# transaction for creating validator
celestia-appd tx staking create-validator \
--amount=1000000utia \
--pubkey=$(celestia-appd tendermint show-validator) \
--moniker=<ENTER YOUR MONIKER> \
--chain-id=blockspacerace-0 \
--commission-rate=0.1 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1000000 \
--from=validator \
--evm-address=<ENTER YOUR ETHEREUM ADDRESS> \
--fees 5000utia \
--gas auto \
--gas-adjustment 1.5

Thank you for reading my writing and following along. I hope to see your again with better writing and contents soon :)

References

About Cosmostation

Cosmostation has been a web3 infrastructure team contributing to more than 50 protocols since 2018. Our suite of products include Mintscan block explorer, Cosmostation non-custodial crypto wallet, and node validator service. At Cosmostation, we bootstrap networks and onboard end-users.

Links

Mintscan | Extension | Android | iOS | Web Wallet | Spacestation Bridge

Official | Github | Twitter | Telegram

--

--