CELESTIA
September 1

Celestia - bridge node testnet

🪓 Telegram канал UTSA 🪓 Telegram чат UTSA

Web Discord Github

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

В данном гайде ноду Bridge устанавливаем на отдельном сервере, и используем данные от Consensus Full Node!

Подготовка сервера

Обновляем репозитории

apt update && sudo apt upgrade -y

Устанавливаем необходимые утилиты

apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y

Устанавливаем Go ОДНОЙ КОМАНДОЙ

ver="1.23.1" && \
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
ufw allow 2121 comment bridge_node

Новая установка bridge

ВАЖНО - начиная с 7 октября будет выпущена новая версия v0.18.1-mocha для Celestia DA layer (Mocha), которая будет использовать Shwap и будет не совместима с предыдущими версиями. Для нового релиза необходимо будет убрать из сервисного файла Environment=GODEBUG="asynctimerchan=1"

Процесс настройки и запуска нового узла остается прежним, но новому узлу необходимо будет синхронизировать все блоки из генезиса, либо воспользоваться снепшотом синхронизированным с новой версии. Благодаря оптимизациям, ожидается значительное уменьшение использования жесткого диска

Оба протокола будут работать бок о бок в течение месячного переходного периода с 7 октября по 7 ноября для Mocha

Устанавливаем бинарники

cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node && cd celestia-node
git checkout tags/v0.16.2-mocha
make build
make install

celestia version
#Semantic version: v0.16.2-mocha
#Commit: 3cbf4359592cdcc28694ea7add33ab0476624510

Создаем кошелек

cel-key - утилита для создания кошелька на celestia-node

Можно создать кошелек вручную, что мы и будем делать ниже. Но также кошелек может создаться автоматически после запуска Bridge - подробнее здесь

В дальнейшем нам будет необходимо пополнить наш кошелек токенами для оплаты PayForBlob транзакций

#https://docs.celestia.org/developers/celestia-node-key/
make cel-key
mv $HOME/celestia-node/cel-key /usr/local/bin/

cel-key add bridge_wallet --keyring-backend test --node.type bridge --p2p.network mocha
# показать адрес кошелька
cel-key list --node.type bridge --keyring-backend test --p2p.network mocha

Получение токенов из крана: discord или https://celestia-testnet.faucetme.pro/


Инициализируем bridge

  • --core.ip используем адрес нашей удаленной ноды RPC
  • --p2p.network используем chain id нашей сети
  • --core.rpc.port используем RPC порт от нашей ноды RPC
  • --core.grpc.port используем gRPC порт от нашей ноды RPC
  • --keyring.keyname используем название созданного нами кошелька
celestia bridge init \
  --core.ip <RPC_NODE_IP> \
  --p2p.network mocha \
  --core.rpc.port 26657 \
  --core.grpc.port 9090 \
  --keyring.keyname bridge_wallet

Создаем сервисный файл

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

[Service]
User=$USER
ExecStart=$(which celestia) bridge start \
  --p2p.network mocha \
  --metrics.tls=true --metrics --metrics.endpoint otel.celestia-mocha.com \
  --keyring.keyname bridge_wallet
  
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable celestia-bridge
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

При проблемах добавляем ключи --keyring.backend и --keyring.keyname

!!!Не забываем сохранить каталог c ключами!!!

.celestia-bridge-mocha-4/keys

Bridge Node Snapshot (Archive)

ВАЖНО: Issue на github из-за различия путей установки

В настоящее время рекомендуется использовать того же пользователя и директорию для запуска bridge, которые использовались для создания snapshot

every 7 day | /root/.celestia-bridge-mocha-4 | archive

🌐 https://share106-1.utsa.tech/celestia/

cd $HOME
systemctl stop celestia-bridge
# удаляем старую базу данных
rm -rf /root/.celestia-bridge-mocha-4/{blocks,data,index,inverted_index,transients,.lock}

# скачиваем snapshot
curl -o - -L https://share106-1.utsa.tech/celestia/celestia_bridge_testnet.tar.lz4 | lz4 -c -d - | tar -x -C /root/.celestia-bridge-mocha-4/
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление

systemctl stop celestia-bridge
# обновить бинарный файл
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node && cd celestia-node
git checkout tags/v0.16.0
make build
make install
make cel-key

celestia version
#Semantic version: v0.16.0
#Commit: 6744f648649ebb5fee1b27faf7aca96ecf4519b2
# обновить конфиг
celestia bridge config-update --p2p.network mocha
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Для обновления с очисткой базы данных

systemctl stop celestia-bridge

# обновить бинарный файл
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node && cd celestia-node
git checkout v0.9.1
make build
make install
make cel-key
celestia version 
#Semantic version: v0.9.1
#Commit: b8c24bfd76784b4c0f1c2d19d67d0cd3776af556

# удаляем хранилище данных и config:
celestia bridge unsafe-reset-store --p2p.network mocha
cd $HOME/.celestia-bridge-mocha-4
rm -rf config.toml

# повторно инициализируем bridge
celestia bridge init \
  --core.ip <RPC_NODE_IP> \
  --p2p.network mocha \
  --core.rpc.port 26657 \
  --core.grpc.port 9090 \
  --keyring.keyname bridge_wallet

systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Перенос ноды

Для Bridge нод нет понятия двойной подписи и если внезапно возникла необходимость перенести node ID на новый сервер, то нам не важно работает старый сервер или он недоступен. Главное, чтобы у нас была копия двух файлов находящихся по пути /root/.celestia-bridge-mocha-4/keys/

Обращаю Ваше внимание на то, что нам не обязательно менять кошелек keyring-test

Давайте рассмотрим самый подходящий вариант сохранения Node ID, предположив, что старый сервер работает:

  1. Запустите новый сервер и полностью синхронизируйте bridge
  2. Остановите Bridge на новом сервере и замените два файла в /root/.celestia-bridge-mocha-4/keys/
  3. Обязательно дайте необходимые права chmod 600 /root/.celestia-bridge-mocha-4/keys/*
  4. Перезапустите Bridge на новом сервере и дождитесь полной синхронизации
  5. Остановите старый сервер

Полезные команды

# посмотреть логи
journalctl -u celestia-bridge -f -o cat
journalctl -fu celestia-bridge -n 10000 -ocat

Узнать bridge node id

# сначала сгенерируем токен авторизации
AUTH_TOKEN=$(celestia bridge auth admin --p2p.network mocha)
echo $AUTH_TOKEN

# получаем peerId нашей ноды
curl -X POST \
     -H "Authorization: Bearer $AUTH_TOKEN" \
     -H 'Content-Type: application/json' \
     -d '{"jsonrpc":"2.0","id":0,"method":"p2p.Info","params":[]}' \
     http://localhost:26658
#  еще один способ получить Node ID
celestia p2p info --node.store ~/.celestia-bridge-mocha-4/

Работа с кошельками

# показать адрес кошелька
cel-key list --node.type bridge --keyring-backend test --p2p.network mocha

# проверить баланс
celestia state balance --node.store ~/.celestia-bridge-mocha-4/

# восстановить кошелек
cel-key add bridge_wallet --keyring-backend test --node.type bridge  --recover --p2p.network mocha

Статус

# проверить bridge node status
celestia header sync-state --node.store  ~/.celestia-bridge-mocha-4/

Удалить bridge

systemctl stop celestia-bridge
systemctl disable celestia-bridge
rm /etc/systemd/system/celestia-bridge.service
systemctl daemon-reload
cd $HOME && \
rm -rf .celestia-bridge-mocha-4 .celestia-app celestia-node && \
rm -rf $(which celestia)
# reset node
celestia bridge unsafe-reset-store --p2p.network moch
Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq