logo

Celestia

TIA
  • Network:

    Testnet

  • Chain ID:

    mocha-4

  • Current Node Version:

Overview

Celestia is a modular blockchain network designed to provide scalable data availability for decentralized applications. Unlike traditional monolithic blockchains, which bundle execution, consensus, and data availability into a single layer, Celestia separates these functions. This allows developers to build customizable blockchains-rollups or sovereign chains-without maintaining their own consensus network.

At its core, Celestia uses Data Availability Sampling (DAS), a technique that lets nodes verify data availability without downloading entire blocks. This improves scalability while maintaining security. Rollups publish their transaction data to Celestia, and Celestia ensures that data is available and verifiable.

Celestia’s modular architecture leads to three major advantages:

  • Scalability - DAS enables higher throughput as more light nodes join.

  • Sovereignty - Developers can launch independent chains relying on Celestia only for consensus and data availability.

  • Ease of deployment - Rollups can be deployed quickly without building validator sets.

In summary, Celestia is a data-availability-focused base layer that enables a modular approach to blockchain design, making decentralized networks more scalable, flexible, and efficient.

Public Endpoints

TypeEndpointLink
RPChttps://celestia-testnet-rpc.crouton.digital arrow right icon
APIhttps://celestia-testnet-api.crouton.digital arrow right icon
gRPCcelestia-testnet-grpc.crouton.digital:28690
peer387e3834d8023bf23adf3888f803ac4bae499da5@217.28.48.238:28656

Guide

INFOINFO

This guide provides a complete and reliable setup for running a Celestia mainnet node and validator. Here you’ll find everything you need - from downloading binaries and configuration files to initializing the node, managing keys, applying snapshots, and maintaining a stable validator environment. Follow the steps carefully to ensure a smooth and secure deployment on the Celestia network.

Prepare

Update and install packages

sudo apt update && sudo apt upgrade -y && \ sudo apt install curl tar wget clang pkg-config libssl-dev libleveldb-dev jq build-essential bsdmainutils git make ncdu htop screen unzip bc fail2ban htop -y

Installing Go

VER="1.22.0" cd $HOME && \ 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

Binary

git clone https://github.com/celestiaorg/celestia-app.git celestia cd celestia git checkout make install celestia-appd version --long | grep -e version -e commit # version: # commit:

Initialization

Initialize the node (replace VALIDATOR_NAME with your own)

celestia-appd init VALIDATOR_NAME --chain-id mocha-4 && \ celestia-appd config chain-id mocha-4 && \ celestia-appd config keyring-backend os

Genesis

Download genesis

wget https://storage.crouton.digital/testnet/celestia/files/genesis.json -O $HOME/.celestia-app/config/genesis.json

Addrbook

Download addrbook

wget https://storage.crouton.digital/testnet/celestia/files/addrbook.json -O $HOME/.celestia-app/config/addrbook.json

Configuration

EXTERNAL_IP=$(wget -qO- eth0.me) NODE_NUMBER="1" sed -i.bak \ -e "s/\(proxy_app = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))58\"/" \ -e "s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))57\"/" \ -e "s/\(pprof_laddr = \"\)\([^:]*\):\([0-9]*\).*/\1localhost:$(($NODE_NUMBER + 60))60\"/" \ -e "/\[p2p\]/,/^\[/{s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))56\"/}" \ -e "/\[p2p\]/,/^\[/{s/\(external_address = \"\)\([^:]*\):\([0-9]*\).*/\1${EXTERNAL_IP}:$(($NODE_NUMBER + 266))56\"/; t; s/\(external_address = \"\).*/\1${EXTERNAL_IP}:$(($NODE_NUMBER + 266))56\"/}" \ -e "s/\(prometheus_listen_addr = \":\)\([0-9]*\).*/\1$(($NODE_NUMBER + 266))60\"/" $HOME/.celestia-app/config/config.toml sed -i.bak \ -e "/\[api\]/,/^\[/{s/\(address = \"tcp:\/\/\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 13))17\4/}" \ -e "/\[grpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 90))90\4/}" \ -e "/\[grpc-web\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 90))91\4/}" \ -e "/\[json-rpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 85))45\4/}" \ -e "/\[json-rpc\]/,/^\[/{s/\(ws-address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 85))46\4/}" $HOME/.celestia-app/config/app.toml echo "export NODE=http://localhost:$(($NODE_NUMBER + 266))57" >> $HOME/.bash_profile && \ source $HOME/.bash_profile && \ celestia-appd config node $NODE

Create a service file

sudo tee /etc/systemd/system/celestia-appd.service > /dev/null <<EOF [Unit] Description=celestia_node After=network.target [Service] User=$USER Type=simple ExecStart=$(which celestia-appd) start --home $HOME/.celestia-app Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF

Start the node

sudo systemctl daemon-reload && \ sudo systemctl enable celestia-appd && \ sudo systemctl restart celestia-appd && \ sudo journalctl -u celestia-appd -f -o cat

Snapshot

Block HeightSizeIndexerLast SnapshotDownload
918460118Gnull2025-12-12T00:26:42.50338747Z arrow right icon

Restore node from snapshot

sudo apt install lz4 -y && \ sudo systemctl stop celestia-appd && \ cp $HOME/.celestia-app/data/priv_validator_state.json $HOME/.celestia-app/priv_validator_state.json.backup && \ rm -rf $HOME/.celestia-app/data && \ curl https://storage.crouton.digital/testnet/celestia/snapshots/celestia_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.celestia-app && \ mv $HOME/.celestia-app/priv_validator_state.json.backup $HOME/.celestia-app/data/priv_validator_state.json && \ sudo systemctl restart celestia-appd && \ sudo journalctl -u celestia-appd -f

State Sync

Restore node from state sync

SNAP_RPC="https://celestia-testnet-rpc.crouton.digital:443" && \ sudo systemctl stop celestia-appd && \ cp $HOME/.celestia-app/data/priv_validator_state.json $HOME/.celestia-app/priv_validator_state.json.backup && \ celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app --keep-addr-book && \ peers="387e3834d8023bf23adf3888f803ac4bae499da5@217.28.48.238:28656" && \ sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.celestia-app/config/config.toml && \ LATEST_HEIGHT=$(curl -s "$SNAP_RPC/block" | jq -r .result.block.header.height) && \ BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)) && \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) && \ echo "$LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH" && sleep 2 && \ sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.celestia-app/config/config.toml && \ mv $HOME/.celestia-app/priv_validator_state.json.backup $HOME/.celestia-app/data/priv_validator_state.json && \ sudo systemctl restart celestia-appd && \ sudo journalctl -u celestia-appd -f

Upgrade Node

VER="v" git clone https://github.com/celestiaorg/celestia-app.git celestia && \ cd $HOME && \ rm -rf celestia && \ git clone https://github.com/celestiaorg/celestia-app.git celestia && \ cd celestia && \ git checkout tags/$VER -b $VER && \ make install && \ sudo systemctl restart celestia-appd && \ sudo journalctl -u celestia-appd -f

Delete Node

sudo systemctl stop celestia-appd && \ sudo systemctl disable celestia-appd && \ sudo rm -rf /etc/systemd/system/celestia-appd.service && \ sudo rm "$(which celestia-appd)" && \ sudo rm -rf "$HOME/.celestia-app"

Key management

# This command generates a new wallet with a unique keypair. # Use this to create a secure, brand-new wallet for transactions. # Your wallet name = "wallet" celestia-appd keys add wallet

Validator management

celestia-appd tx staking create-validator \ --amount 1000000utia \ --moniker "VALIDATOR_NAME" \ --identity "" \ --website "" \ --details "" \ --from wallet \ --commission-rate 0.1 \ --commission-max-rate 0.2 \ --commission-max-change-rate 0.01 \ --min-self-delegation 1 \ --pubkey $(celestia-appd tendermint show-validator) \ --chain-id mocha-4 \ --gas auto \ --gas-adjustment 1.4 \ --gas-prices 0.002utia \ -y

Validator commands

# Retrieves comprehensive information regarding the validator. # This command is utilized to fetch details about the current validator, including its address, public key, and associated data. # Your wallet name = "wallet" celestia-appd q staking validator $(celestia-appd keys show wallet --bech val -a)

Onchain

# Withdraw all accumulated rewards from your account. # This command retrieves and withdraws all rewards earned from staking. # Your wallet name = "wallet" celestia-appd tx distribution withdraw-all-rewards --from wallet --chain-id mocha-4 --gas-adjustment=1.15 --gas auto --gas-prices 0.002utia -y

Chat With Us

Connect directly with our team by filling out the contact form. Whether you’re looking to optimize staking yields, deploy validator nodes, integrate RPC services, or find a reliable validator partner for your blockchain or project — we’re here to help.

We can explore Web3 and blockchain infrastructure solutions together and tailor our support to your long-term goals. Schedule a meeting, and let’s discuss your long-term goals.

Crouton Digital respects your privacy. By submitting this form, you are acknowledging that you have read and agree to our Privacy Policy, which details how we collect and use your information.