Celestia
October 24, 2022

Створення і запуск Validator Node

Вимоги до обладнання

  • Оперативна пам'ять: 8 GB RAM
  • Процесор: 6 cores
  • Місце на диску: 500 GB SSD Storage
  • Пропускна здатність: 1 Gbps для завантаження/100 Mbps для вивантаження

1. Налаштуйте залежності

Оновіть ОС

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

2. Встановіть GOlang

Виконайте наступну команду

ver="1.19.1"
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"

Додайте /usr/local/go/bin до директорії $PATH

echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile

Перевірте версію GO

go version

Приклад виводу

go version go1.19.1 linux/amd64

3. Розгорніть celestia-app

Наведена нижче команда створить бінарний файл з назвою celestia-appd у папці $HOME/go/bin, який буде використано пізніше для запуску вузла

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

Перевірте версію

celestia-appd version

4. Встановіть P2P мережі

Скопіюйте репозиторій

cd $HOME
rm -rf networks
git clone https://github.com/celestiaorg/networks.gitit

Встановіть chain-id

celestia-appd init "ім'я_вашої_ноди" --chain-id mocha

Скопіюйте genesis.jsonфайл

cp $HOME/networks/mocha/genesis.json $HOME/.celestia-app/config

Додайте сіди та піри

SEEDS="some seeds"
PEERS="some peers"
sed -i -e 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.celestia-app/config/config.toml
sed -i -e "s/^seed_mode *=.*/seed_mode = \"$SEED_MODE\"/" $HOME/.celestia-app/config/config.toml

Примітка: ми можете знайти більше пірів тут

5. Налаштуйте видалення непотрібного і недоступного коду

Для зменшення використання дискового простору ми рекомендуємо налаштувати видалення за допомогою наведених нижче конфігурацій. За бажанням ви можете змінити їх на власні конфігурації видалення

PRUNING="custom"
PRUNING_KEEP_RECENT="100"
PRUNING_INTERVAL="10"

sed -i -e "s/^pruning *=.*/pruning = \"$PRUNING\"/" $HOME/.celestia-app/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \
\"$PRUNING_KEEP_RECENT\"/" $HOME/.celestia-app/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \
\"$PRUNING_INTERVAL\"/" $HOME/.celestia-app/config/app.toml

6. Налаштуйте режим валідатора

sed -i.bak -e "s/^mode *=.*/mode = \"validator\"/" $HOME/.celestia-app/config/config.toml

7. Перезавантажте мережу

celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app

За бажанням ви можете налаштувати швидку синхронізацію зі снепшоту.

Синхронізація з Genesis може зайняти багато часу залежно від вашого обладнання. Виконайте наступну команду, щоб прискорити цей процес

cd $HOME
rm -rf ~/.celestia-app/data
mkdir -p ~/.celestia-app/data
SNAP_NAME=$(curl -s https://snaps.qubelabs.io/celestia/ | \
    egrep -o ">mocha.*tar" | tr -d ">")
wget -O - https://snaps.qubelabs.io/celestia/${SNAP_NAME} | tar xf - \
    -C ~/.celestia-app/data/

8. Запустіть celestia-app за допомогою SystemD

Створіть celestia-appsystemd файл

cd celestia-app
sudo tee <<EOF >/dev/null /etc/systemd/system/celestia-appd.service
[Unit]
Description=celestia-appd Cosmos daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/go/bin/celestia-appd start
Restart=on-failure
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
EOF

Якщо файл був створений успішно, ви можете переглянути його зміст

cat /etc/systemd/system/celestia-appd.service

Активуйте і запустіть демон celestia-appd

sudo systemctl enable celestia-appd
sudo systemctl start celestia-appd

Перевірте стан демона

sudo systemctl status celestia-appd

Перевірте логи

sudo journalctl -u celestia-appd.service -f

Перед тим як продовжити встановлення і запуск Validator Node, переконайтеся, що вузел синхронізувалася

curl -s localhost:26657/status | jq .result | jq .sync_info

Значення "catching_up" має бути false

9. Створіть гаманець

Створіть конфігураційний файл CLI

celestia-appd config keyring-backend test

Створіть гаманець

celestia-appd keys add <ім'я_вашого_гаманця> --interactive

Обов'язково збережіть мнемоніку!

Виконайте таку команду, щоб перевірити свої гаманці

celestia-appd keys list

10. Поповніть гаманець

Щоб запросити фаусет на свій адрес. Для цього перейдіть в офіційний Дискорд Celestia, знайдіть канал #mocha-faucet і виконайте там наступну команду

$request <CELESTIA-ADDRESS>

Приклад

$request celestia18pdfl6hn268m5fp67jc7ywgk54j2yar7qsu5ge

Команда для перевірки балансу на гаманці

celestia-appd start
celestia-appd query bank balances celestia1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

11. Делегуйте стейк вашому валідатору

Створіть змінну оточення для адреси

VALIDATOR_WALLET=<ім'я_адреси_вашого_валідатора>

Якщо ви хочете делегувати більше стейку будь-якому валідатору, в тому числі і своєму власному, вам знадобиться адреса celesvaloper відповідного валідатора. Ви можете перевірити її за допомогою наступної команди

celestia-appd keys show $VALIDATOR_WALLET --bech val -a

Для делегування токенів валідатору celestiavaloper виконайте наступну команду

celestia-appd tx staking delegate \
    celestiavaloper1q3v5cugc8cdpud87u4zwy0a74uxkk6u4q4gx4p 1000000utia \
    --from=$VALIDATOR_WALLET --chain-id=mocha

Замість celestiavaloperххххххххххххххххххххххххххххххххххххххх вставте celestiavaloper того валідатора, якому ви хочете делегувати токени

Приклад виводу після команди

code: 0
codespace: ""
data: ""
gas_used: "0"
gas_wanted: "0"
height: "0"
info: ""
logs: []
raw_log: '[]'
timestamp: ""
tx: null
txhash: <tx-hash>

12. Розгорніть celestia-node

Встановіть бінарний файл celestia-node

cd $HOME 
rm -rf celestia-node 
git clone https://github.com/celestiaorg/celestia-node.git 
cd celestia-node/ 
git checkout tags/v0.6.4 
make build 
make install 
make cel-key

Перевірте версію

celestia version

Приклад виводу

Semantic version: v0.6.4 
Commit: 747c9e593542dfb32a933c731a9cd74b1fab897f 
Build Date: Thu Dec 15 10:19:22 PM UTC 2022 
System version: amd64/linux 
Golang version: go1.19.1

13. Ініціалізуйте та запустіть Bridge Node

Виконайте наступну команду

celestia bridge init --core.ip <ip-address>
  • --core.grpc.port за замовчуванням - 9090

Список кінцевих точок RPC ви зможете знайти тут

Приклад можливого вигляду команди:

celestia bridge init --core.ip https://rpc-mocha.pops.one

Запустіть Bridge Node за допомгою System D

sudo tee <<EOF >/dev/null /etc/systemd/system/celestia-bridge.service
[Unit]
Description=celestia-bridge Cosmos daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$HOME/go/bin/celestia bridge start --core.ip <ip-address>
Restart=on-failure
RestartSec=3
LimitNOFILE=4096

[Install]
WantedBy=multi-user.target
EOF

Не забудьте замінити <ip-address> на кінцеву точку RPC і <port> на 26657 (або інший, що належить валідатору, якого ви обрали)

Перевірте зміст файлу

cat /etc/systemd/system/celestia-bridge.service

Активуйте і запустіть демон Bridge Node

systemctl enable celestia-bridge
systemctl start celestia-bridge && journalctl -u \
celestia-bridge.service -f

14. Налаштування QGB ключів

Цей крок допоможе вам підготуватися до розгортання Quantum Gravity Bridge.

  • --evm-address: Цей флаг повинен містити 0x EVM адресу. Ви можете додати будь-яку Ethereum адресу. Також ви у вас буде можливість відреагувати цей флаг, якщо ви вирішите поміняти адресу.

Ви можете встановити обидва значення для вищевказаних флагів як змінні оточення

EVM_ADDRESS=<ваш_EVM_ADDRESS>

Не забудьте додати значення ваших адрес у вищезазначені змінні оточення перед їх налаштуванням.

14. Запустіть Validator Node

Тепер ви готові до запуску валідатора! Майте на увазі, що ці кроки необхідні ТІЛЬКИ в тому випадку, якщо ви хочете брати участь в консенсусі

Оберіть собі псевдонім на власний розсуд! Це ім'я валідатора, яке буде відображатися на публічних дашбордах і в експлорері. VALIDATOR_WALLET має збігатися з тим, що ви визначили раніше. Параметр --min-self-delegation=1000000 визначає кількість токенів, які самоделегуються з вашого гаманця валідатора

cd $HOME
MONIKER="ваш_псевдонім"
VALIDATOR_WALLET="ім'я_адреси_вашого_валідатора"

celestia-appd tx staking create-validator \
    --amount=1000000utia \
    --pubkey=$(celestia-appd tendermint show-validator) \
    --moniker=$MONIKER \
    --chain-id=mocha \
    --commission-rate=0.1 \
    --commission-max-rate=0.2 \
    --commission-max-change-rate=0.01 \
    --min-self-delegation=1000000 \
    --from=$VALIDATOR_WALLET \
    --evm-address=$EVM_ADDRESS \
    --keyring-backend=test

Вам буде запропоновано підтвердити операцію

confirm transaction before signing and broadcasting [y/N]: y

Введіть y і натисніть enter

Приклад виводу після виконання операції

code: 0
codespace: ""
data: ""
gas_used: "0"
gas_wanted: "0"
height: "0"
info: ""
logs: []
raw_log: '[]'
timestamp: ""
tx: null
txhash: <tx-hash>

Тепер ви зможете побачити вашу Ноду Валідатора в провіднику