Celestia - bridge node mainnet
🪓 Telegram канал UTSA 🪓 Telegram чат UTSA
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
cd $HOME rm -rf celestia-node git clone https://github.com/celestiaorg/celestia-node && cd celestia-node git checkout tags/v0.17.2 make build make install celestia version #Semantic version: v0.17.2 #Commit: 57f8bd81c573d1a54613c73cf49e5d392a864dd6
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
# показать адрес кошелька cel-key list --node.type bridge --keyring-backend test
- --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> \ --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 mainnet daemon After=network-online.target [Service] User=$USER Environment=GODEBUG="asynctimerchan=1" ExecStart=$(which celestia) bridge start \ --metrics.tls=true --metrics --metrics.endpoint otel.celestia.observer \ --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
Bridge Node Snapshot (Archive)
ВАЖНО: Issue на github из-за различия путей установки
В настоящее время рекомендуется использовать того же пользователя и директорию для запуска bridge, которые использовались для создания snapshot
cd $HOME systemctl stop celestia-bridge
# удаляем старую базу данных rm -rf /root/.celestia-bridge/{blocks,data,index,inverted_index,transients,.lock} # скачиваем snapshot curl -o - -L https://share106-2.utsa.tech/celestia/celestia_bridge_mainnet.tar.lz4 | lz4 -c -d - | tar -x -C /root/.celestia-bridge/
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
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 cd $HOME/.celestia-bridge rm -rf config.toml # повторно инициализируем bridge celestia bridge init \ --core.ip <RPC_NODE_IP> \ --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/keys/
Обращаю Ваше внимание на то, что нам не обязательно менять кошелек keyring-test
Давайте рассмотрим самый подходящий вариант сохранения Node ID, предположив, что старый сервер работает:
- Запустите новый сервер и полностью синхронизируйте bridge
- Остановите Bridge на новом сервере и замените два файла в
/root/.celestia-bridge/keys/
- Обязательно дайте необходимые права
chmod 600 /root/.celestia-bridge/keys/*
- Перезапустите Bridge на новом сервере и дождитесь полной синхронизации
- Остановите старый сервер
Полезные команды
# посмотреть логи journalctl -u celestia-bridge -f -o cat journalctl -fu celestia-bridge -n 10000 -ocat
# сначала сгенерируем токен авторизации AUTH_TOKEN=$(celestia bridge auth admin) 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/
# показать адрес кошелька cel-key list --node.type bridge --keyring-backend test # проверить баланс celestia state balance --node.store ~/.celestia-bridge/ # восстановить кошелек cel-key add bridge_wallet --keyring-backend test --node.type bridge --recover
# проверить bridge node status celestia header sync-state --node.store ~/.celestia-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 .celestia-ap celestia-node && \ rm -rf $(which celestia)
# reset node celestia bridge unsafe-reset-store