Installation

Get your validator running in minutes by following step by step instructions

Chain ID: mocha | Latest Version Tag: v0.11.0

Setup validator name

MONIKER="YOUR_MONIKER_GOES_HERE"

Install GO

sudo rm -rf /usr/local/go
sudo curl -Ls https://golang.org/dl/go1.19.4.linux-amd64.tar.gz | sudo tar -C /usr/local -xz
tee -a $HOME/.profile > /dev/null << EOF
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF
source $HOME/.profile

Download and build binaries

# Clone project repository

cd $HOME || return
rm -rf celestia-app
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app || return
git checkout v0.11.0
make install
celestia-appd version # 0.11.0

Initialize the node

# Set node configuration
celestia-appd config chain-id mocha
celestia-appd config keyring-backend test
celestia-appd config node tcp://localhost:20657

# Initialize the node
celestia-appd init "MONIKER" --chain-id mocha


# Download genesis and addrbook
curl -s https://raw.githubusercontent.com/celestiaorg/networks/master/mocha/genesis.json > $HOME/.celestia-app/config/genesis.json
curl -s https://snapshots3-testnet.nodejumper.io/celestia-testnet/addrbook.json > $HOME/.celestia-app/config/addrbook.json

# Add seeds
SEEDS=$(curl -sL https://raw.githubusercontent.com/celestiaorg/networks/master/mocha/seeds.txt | tr -d '\n')
PEERS=$(curl -sL https://raw.githubusercontent.com/celestiaorg/networks/master/mocha/peers.txt | tr -d '\n')
sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.celestia-app/config/config.toml

# Set pruning
PRUNING_INTERVAL=$(shuf -n1 -e 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)
sed -i 's|^pruning *=.*|pruning = "custom"|g' $HOME/.celestia-app/config/app.toml
sed -i 's|^pruning-keep-recent  *=.*|pruning-keep-recent = "100"|g' $HOME/.celestia-app/config/app.toml
sed -i 's|^pruning-interval *=.*|pruning-interval = "'$PRUNING_INTERVAL'"|g' $HOME/.celestia-app/config/app.toml
sed -i 's|^snapshot-interval *=.*|snapshot-interval = 2000|g' $HOME/.celestia-app/config/app.toml


# Set minimum gas price
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.0001utia"|g' $HOME/.celestia-app/config/app.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.celestia-app/config/config.toml


# Create service
sudo tee /etc/systemd/system/celestia-appd.service > /dev/null << EOF
[Unit]
Description=Celestia Validator Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which celestia-appd) start
Restart=on-failure
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF

#Download latest chain snapshot
celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app --keep-addr-book

SNAP_NAME=$(curl -s https://snapshots3-testnet.nodejumper.io/celestia-testnet/ | egrep -o ">mocha.*\.tar.lz4" | tr -d ">")
curl https://snapshots3-testnet.nodejumper.io/celestia-testnet/${SNAP_NAME} | lz4 -dc - | tar -xf - -C $HOME/.celestia-app

sudo systemctl daemon-reload
sudo systemctl enable celestia-appd
sudo systemctl start celestia-appd

sudo journalctl -u celestia-appd -f --no-hostname -o cat

Create Validator

# create validator wallet
celestia-appd keys add wallet

## console output:
#- name: wallet
#  type: local
#  address: celestia19kmadqs9nsppn4wz5yp4rw8zn9545rc4zwvs7
#  pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Auq9WzVEs5pCoZgr2WctjI7fU+lJCH0I3r6GC1oa0tc0"}'
#  mnemonic: ""

#!!! SAVE SEED PHRASE
kite upset hip dirt pet winter thunder slice parent flag sand express suffer chest custom pencil mother bargain remember patient other curve cancel sweet


# create ORCHESTRATOR wallet
celestia-appd keys add orchestrator

## console output:
#  name: orchestrator
#  type: local
#- address: celestia1x5c4vj5u0wcgvdclrr6mk2ekrs7emcjpkfa3dw
#  pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Aq4dSZa+5A3SR3+dZVWkXUcHmWuZQ+Xx7Iu1KHHtnWCW"}'

#!!! SAVE SEED PHRASE
infant wasp injury parrot morning bag wet clean address pact hobby emerge raccoon rain degree dwarf gas defense deposit maximum order cross powder monitor


# create a new ETH address in metamask or you can use already existing address


# wait util the node is synced, should return FALSE
curl -s localhost:26657/status | jq .result.sync_info.catching_up


# go to Celestia Discord https://discord.gg/kUSueaB22b and request tokens in faucet channel for validator and orchestrator addresses

# Check your balance
celestia-appd q bank balances $(celestia-appd keys show wallet -a)
celestia-appd q bank balances $(celestia-appd keys show orchestrator -a)

## console output:
#  balances:
#  - amount: "1000000"
#    denom: utia


# create validator
celestia-appd tx staking create-validator \
--amount=1000000utia \
--pubkey=$(celestia-appd tendermint show-validator) \
--moniker="YOUR_VALIDATOR_MONIKER" \
--chain-id=mocha \
--commission-rate=0.1 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.05 \
--min-self-delegation=1 \
--from=wallet \
--evm-address="YOUR_ETH_ADDRESS" \
--orchestrator-address="YOUR_ORCHESTRATOR_ADDRESS" \
--gas=auto \
--gas-adjustment=1.4 \
--fees=1000utia \
-y

# make sure you see the validator details
celestia-appd q staking validator $(celestia-appd keys show wallet --bech val -a)

Last updated