Installation
mocha-4
v1.11.0
v0.14.0
120
Setup validator name
Replace YOUR_MONIKER_GOES_HERE with your validator name
MONIKER="YOUR_MONIKER_GOES_HERE"Install dependencies
Update system and install build tools
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential
sudo apt -qy upgradeInstall Go
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.21.12.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)Download and build binaries
# Clone project repository
cd $HOME
rm -rf celestia-app
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app
git checkout v1.11.0
# Build binaries
make build
# Prepare binaries for Cosmovisor
mkdir -p $HOME/.celestia-app/cosmovisor/genesis/bin
mv build/celestia-appd $HOME/.celestia-app/cosmovisor/genesis/bin/
rm -rf build
# Create application symlinks
sudo ln -s $HOME/.celestia-app/cosmovisor/genesis $HOME/.celestia-app/cosmovisor/current -f
sudo ln -s $HOME/.celestia-app/cosmovisor/current/bin/celestia-appd /usr/local/bin/celestia-appd -fInstall Cosmovisor and create a service
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/[email protected]
# Create service
sudo tee /etc/systemd/system/celestia-testnet.service > /dev/null << EOF
[Unit]
Description=celestia node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.celestia-app"
Environment="DAEMON_NAME=celestia-appd"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.celestia-app/cosmovisor/current/bin"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable celestia-testnet.serviceInitialize the node
# Set node configuration
celestia-appd config chain-id mocha-4
celestia-appd config keyring-backend test
celestia-appd config node tcp://localhost:12057
# Initialize the node
celestia-appd init $MONIKER --chain-id mocha-4
# Download genesis and addrbook
curl -Ls https://snapshots.kjnodes.com/celestia-testnet/genesis.json > $HOME/.celestia-app/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/celestia-testnet/addrbook.json > $HOME/.celestia-app/config/addrbook.json
# Add seeds
sed -i -e "s|^seeds *=.*|seeds = \"3f472746f46493309650e5a033076689996c8881@celestia-testnet.rpc.kjnodes.com:12059\"|" $HOME/.celestia-app/config/config.toml
# Set commit timeout
sed -i -e "s|^target_height_duration *=.*|timeout_commit = \"11s\"|" $HOME/.celestia-app/config/config.toml
# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.002utia\"|" $HOME/.celestia-app/config/app.toml
# Set pruning
sed -i \
-e 's|^pruning *=.*|pruning = "nothing"|' \
$HOME/.celestia-app/config/app.toml
# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:12058\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:12057\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:12060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:12056\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":12066\"%" $HOME/.celestia-app/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:12017\"%; s%^address = \":8080\"%address = \":12080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:12090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:12091\"%; s%:8545%:12045%; s%:8546%:12046%; s%:6065%:12065%" $HOME/.celestia-app/config/app.tomlDownload latest chain snapshot
curl -L https://snapshots.kjnodes.com/celestia-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.celestia-app
[[ -f $HOME/.celestia-app/data/upgrade-info.json ]] && cp $HOME/.celestia-app/data/upgrade-info.json $HOME/.celestia-app/cosmovisor/genesis/upgrade-info.jsonStart service and check the logs
sudo systemctl start celestia-testnet.service && sudo journalctl -u celestia-testnet.service -f --no-hostname -o catSet up validator
Official documentation: https://docs.celestia.org/nodes/validator-node
1. Create a wallet
First of all we will need to create wallet for our validator. You have two options for that.
Option 1 - Create new wallet
celestia-appd keys add walletOption 2 - Recover existing wallet
celestia-appd keys add wallet --recoverSave the mnemonic output as this is the only way to recover your validator wallet in case you lose it!
To list your wallets use command below
2. Fund a wallet
To create validator you have to fund the previously created wallet via Discord by sending this message to the #mocha-faucet channel:
$request celestia1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTo check wallet balance use command below
celestia-appd q bank balances $(celestia-appd keys show wallet -a)3. Create validator
Please make sure you have adjusted moniker, identity, details, website to match your values.
celestia-appd tx staking create-validator \
--amount 1000000utia \
--pubkey $(celestia-appd tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id mocha-4 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.005utia \
-ySave the ~/.celestia-app/config/priv_validator_key.json file as this is the only way to recover your validator signing key in case you lose it!
Install Bridge Node
Official documentation: https://docs.celestia.org/nodes/bridge-node
Download and build binaries
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node.git
cd celestia-node
git checkout v0.14.0
make build
sudo mv build/celestia /usr/local/bin
make cel-key
sudo mv cel-key /usr/local/binAdd Bridge wallet
Generate new wallet
cel-key add bridge-wallet --node.type bridge --p2p.network mochaRecover existing wallet
cel-key add bridge-wallet --node.type bridge --p2p.network mocha --recoverFund the wallet with testnet tokens
Once you start the Bridge Node, a wallet key will be generated for you. You will need to fund that address with Testnet tokens to pay for PayForBlob transactions
Initialize Bridge node
celestia bridge init \
--keyring.accname bridge-wallet \
--core.ip http://localhost \
--core.rpc.port 12057 \
--core.grpc.port 12090 \
--p2p.network mocha \
--rpc.port 12058 \
--gateway.port 12059Create service
sudo tee /etc/systemd/system/celestia-bridge.service > /dev/null << EOF
[Unit]
Description=Celestia Bridge Node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which celestia) bridge start \\
--keyring.accname bridge-wallet \\
--core.ip http://localhost \\
--core.rpc.port 12057 \\
--core.grpc.port 12090 \\
--p2p.network mocha \\
--rpc.port 12058 \\
--gateway.port 12059 \\
--metrics.tls=true \\
--metrics \\
--metrics.endpoint=otel.celestia-mocha.com
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable celestia-bridge.serviceStart Bridge node
systemctl restart celestia-bridge.serviceCheck Bridge node logs
journalctl -fu celestia-bridge.service -o catUseful commands
Get Bridge Node ID
AUTH_TOKEN=$(celestia bridge auth admin --p2p.network mocha)
curl -s -X POST -H "Authorization: Bearer $AUTH_TOKEN" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":0,"method":"p2p.Info","params":[]}' http://localhost:12058 | jq -r .result.IDGet Bridge node key
cel-key show bridge-wallet --node.type bridge --p2p.network mocha -a | tail -1Check Bridge node wallet balance
celestia-appd q bank balances $(cel-key show bridge-wallet --node.type bridge --p2p.network mocha -a | tail -1)Upgrade Bridge Node
Stop Bridge node
sudo systemctl stop celestia-bridge.serviceDownload and build binaries
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node.git
cd celestia-node
git checkout v0.14.0
make build
sudo mv build/celestia /usr/local/bin
make cel-key
sudo mv cel-key /usr/local/binCheck Bridge node version
Node upgrade
To upgrade Celestia Bridge node you have two options
Option 1 - Soft upgrade
This option will only update attributes of configuration files without deleting any data.
Update configuration file
celestia bridge config-update --p2p.network mochaOption 2 - Hard upgrade
This option will clear data store and re-initialize the node. Keys will not be deleted.
Clear data store and remove configuration file
celestia bridge unsafe-reset-store --p2p.network mocha
rm -rf $HOME/.celestia-bridge-mocha-4/config.tomlInitialize Bridge node
celestia bridge init \
--keyring.accname bridge-wallet \
--core.ip localhost \
--core.rpc.port 12057 \
--core.grpc.port 12090 \
--p2p.network mocha \
--rpc.port 12058 \
--gateway.port 12059Start Bridge node
sudo systemctl start celestia-bridge.serviceCheck Bridge node logs
journalctl -fu celestia-bridge.service -o catUseful commands
View validator details
celestia-appd q staking validator $(celestia-appd keys show wallet --bech val -a)Install Blobstream Orchestrator
Official documentation: https://docs.celestia.org/nodes/blobstream-orchestrator
Download and build binaries
cd $HOME
rm -rf orchestrator-relayer
git clone https://github.com/celestiaorg/orchestrator-relayer.git
cd orchestrator-relayer
git checkout v1.0.0
make build
sudo mv build/blobstream /usr/local/binInitialize Orchestrator node
blobstream orchestrator initAdd Orchestrator EVM wallet
The EVM private key needs to correspond to the EVM address provided when creating the validator.
Import EVM wallet private key
blobstream orchestrator keys evm import ecdsa <private key in hex format>Register EVM address to your validator
celestia-appd tx qgb register \
$(celestia-appd keys show wallet --bech val -a) \
<EVM_ADDRESS> \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.002utia \
-yVerify EVM address that is linked to your validator
celestia-appd query qgb evm $(celestia-appd keys show wallet --bech val -a)Create service
sudo tee /etc/systemd/system/celestia-orchestrator.service > /dev/null << EOF
[Unit]
Description=Celestia Orchestrator service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which blobstream) orchestrator start \\
--core.grpc 127.0.0.1:12090 \\
--core.rpc tcp://127.0.0.1:12057 \\
--evm.account $(celestia-appd query qgb evm $(celestia-appd keys show wallet --bech val -a)) \\
--evm.passphrase <EVM_PASSPHRASE> \\
--p2p.bootstrappers /dns/bootstr-0-mocha-blobstream.celestia-mocha.com/tcp/30000/p2p/12D3KooWLrw6EQgDwvgqrqT8wLNJoQYN3SDAzaAxJgyiTa2xowyF
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable celestia-orchestratorExample of service execution command
ExecStart=$(which blobstream) orchestrator start \\
--core.grpc 127.0.0.1:12090 \\
--core.rpc tcp://127.0.0.1:12057 \\
--evm.account $(celestia-appd query qgb evm $(celestia-appd keys show wallet --bech val -a)) \\
--evm.passphrase mypassphrasegoeshere \\
--p2p.bootstrappers /dns/bootstr-0-mocha-blobstream.celestia-mocha.com/tcp/30000/p2p/12D3KooWLrw6EQgDwvgqrqT8wLNJoQYN3SDAzaAxJgyiTa2xowyFBefore running the orchestrator, make sure to have the indexing enabled on your RPC node. If the indexer was just activated, then, by default, it will not have the previous transactions indexed. And, if you run the orchestrator at the same time, it will try to create the commitments and will fail as the transactions are not indexed.
Start Orchestrator node
systemctl start celestia-orchestratorCheck Orchestrator node logs
journalctl -fu celestia-orchestrator -o catUseful commands
View validator details
Check the evm_address that is linked to your validator.
celestia-appd query qgb evm $(celestia-appd keys show wallet --bech val -a)Change validator evm_address
celestia-appd tx qgb register \
$(celestia-appd keys show wallet --bech val -a) \
<NEW_EVM_ADDRESS> \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.002utia \
-y