COSMOS
May 26, 2022

Celestia - Consensus Node + Bridge node

Web Discord Github

Testnet details

  • Network Chain ID: celestia
  • Denom: utia
  • Binary: celestia-appd
  • Working directory: .celestia-app
  • Cosmos explorer:
  • Dashboard:
  • Офф инструкция:

Данный гайд состоит из трех разделов - для Validator, для Consensus Node и для Bridge node

Ноду Validator можно использовать отдельно от остальных

Bridge ноду необходимо использовать совместно с Consensus нодой. Их устанавливать мы будем на 1 сервере. Замечу что если Вы планируете использовать чужие общедоступные RPC для Bridge node, то нет необходимости устанавливать Consensus 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

Проверяем работу жестких дисков

curl -sL yabs.sh | bash -s — -ig
# Disk Test
nvme smart-log /dev/nvme0
nvme smart-log /dev/nvme1

Проверяем работу интернета

curl -sL yabs.sh | bash -s — -fg

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

ver="1.20.3" && \
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

VALIDATOR NODE

ВАЖНО — в командах ниже все, что в <> меняем на свое значение и убираем сами <>

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

git clone https://github.com/celestiaorg/celestia-app && cd celestia-app
wget https://github.com/celestiaorg/celestia-app/releases/download/v1.3.0/celestia-app_Linux_x86_64.tar.gz
tar -zxvf celestia-app_Linux_x86_64.tar.gz
chmod +x ./celestia-appd
mv $HOME/celestia-app/celestia-appd $HOME/go/bin/

celestia-appd version --long | grep -e version -e commit -e build
# version v1.3.0
# commit: ada77509d7fdedf2a3e3400b720549365851454c
# build_tags: ""

Инициализируем ноду, чтобы создать необходимые файлы конфигурации

celestia-appd init UTSA_gude --chain-id celestia

Скачиваем Genesis

wget -O $HOME/.celestia-app/config/genesis.json "https://raw.githubusercontent.com/celestiaorg/networks/master/celestia/genesis.json"

# Проверим генезис
sha256sum ~/.celestia-app/config/genesis.json
# 9727aac9bbfb021ce7fc695a92f901986421283a891b89e0af97bc9fad187793

# Проверим генезис
jq -S -c -M '' ~/.celestia-app/config/genesis.json | shasum -a 256
# 90b39d02d8029bf9aafd9289f6928a88fc89273a8f544c9cd0946484ae742a75

Проверяем, что состояние валидатора на начальном этапе

cd && cat .celestia-app/data/priv_validator_state.json
{
  "height": "0",
  "round": 0,
  "step": 0
}

# если нет, то выполняем команду
celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app

Скачиваем Addr book

wget -O $HOME/.celestia-app/config/addrbook.json ""

Настраиваем конфигурацию ноды

# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
celestia-appd config chain-id celestia
# при необходимости настраиваем keyring-backend в client.toml 
celestia-appd config keyring-backend os

# настраиваем минимальную цену за газ в app.toml
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001utia\"/;" ~/.celestia-app/config/app.toml

# добавляем seeds/bpeers/peers в config.toml
EXTERNAL_ADDRESS=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address = \"\"/external_address = \"$EXTERNAL_ADDRESS:26656\"/" $HOME/.celestia-app/config/config.toml

peers="[email protected]:16656,[email protected]:23656,4ebfc1fac7a646105956ee563ea0d760e3099269@celestia-peer1.easy2stake.com:26756,005b439eca9a27b736156c0081a863a40b3be517@peers.celestia-node.pn.prod.fcstech.de:26656,[email protected]:20056,[email protected]:43656,[email protected]:33357,[email protected]:10056,[email protected]:2090,5001de72be39622c9dc34f2117eccc3f3fca8a7a@celestia-mainnet-01.twinstake.io:26756,0015a3241645e7029804f5e363cdc1822eb0797b@mainnet.celestia.stakingcabin.com:26656,4727239dfe0173ef862f55c2fa26e9a6a057a572@celestia-mainnet.stakingwizard.com:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.celestia-app/config/config.toml

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

# устанавливаем таймаут в 25 секунд в config.toml
#sed -i.bak -e "s/^timeout-commit *=.*/timeout-commit = \"25s\"/" $HOME/.celestia-app/config/config.toml
#sed -i.bak -e "s/^skip-timeout-commit *=.*/skip-timeout-commit = false/" $HOME/.celestia-app/config/config.toml

# устанавливаем режим валидатора в config.toml
#sed -i.bak -e "s/^mode *=.*/mode = \"validator\"/" $HOME/.celestia-app/config/config.toml

# включаем legacy p2p layer
#sed -i.bak -e "s/^use-legacy *=.*/use-legacy = \"true\"/" $HOME/.celestia-app/config/config.toml

(ОПЦИОНАЛЬНО) Настраиваем прунинг одной командой вapp.toml

pruning="custom"
pruning_keep_recent="1000"
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

(ОПЦИОНАЛЬНО) Выкл индексацию вconfig.toml

indexer="null" && \
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.celestia-app/config/config.toml

(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты вapp.toml

# По умолчанию снэпшоты включены "snapshot-interval=1500"
snapshot_interval="1000" && \
sed -i.bak -e "s/^snapshot-interval *=.*/snapshot-interval = \"$snapshot_interval\"/" ~/.celestia-app/config/app.toml

(ОПЦИОНАЛЬНО) Смена портов #для 2 ноды

# config.toml
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:36658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:36657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6061\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:36656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":36660\"%" $HOME/.celestia-app/config/config.toml

# app.toml
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9190\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9191\"%" $HOME/.celestia-app/config/app.toml

# client.toml
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.celestia-app/config/client.toml

external_address=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:36656\"/" $HOME/.celestia-app/config/config.toml

Подробнее о смене портов здесь

(ОПЦИОНАЛЬНО) State Sync

Если необходимо, то перекидываем wasm в каталог data

Вводим команды по очереди

SNAP_RPC=

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.celestia-app/config/config.toml

Snapshot

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

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

[Service]
User=$USER
ExecStart=$(which celestia-appd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

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

Если после старта нода долго не может подцепиться к пирам, то ищем новые пиры или просим addrbook.json в дискорд

# стопаем ноду, удаляем адресную книгу и сбрасываем данные
systemctl stop celestia-appd
celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app --keep-addr-book

# перезагружаем ноду
systemctl restart celestia-appd && journalctl -u celestia-appd -f -o cat

Создаем или восстанавливаем кошелек и сохраняем вывод

# создать кошелек
celestia-appd keys add <name_wallet> --keyring-backend os

# восстановить кошелек (после команды вставить seed)
celestia-appd keys add <name_wallet> --recover --keyring-backend os

Не забываем сохранить seed !!!

Получаем тестовые монетки в дискорде (ввести свой кошелек)

$request <CELESTIA-ADDRESS>

Создаем валидатора

celestia-appd tx staking create-validator \
--chain-id celestia \
--commission-rate 0.05 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.1 \
--min-self-delegation "1000000" \
--amount 1000000utia \
--pubkey $(celestia-appd tendermint show-validator) \
--moniker "<name_moniker>" \
--from <name_wallet> \
--fees 5550utia

Не забываем сохранить priv_validator_key.json !!!

Подробнее о создании/редактировании валидатора можно почитать здесь

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

Для добавления лого в mintscan:

  • форк https://github.com/cosmostation/cosmostation_token_resource
  • в папке Moniker находим название проекта
  • через add file/upload file добавляем свою аватарку. название файла обязательно должно быть валопер.png . и только png
  • PR

Информация

# проверить блоки
celestia-appd status 2>&1 | jq ."SyncInfo"."latest_block_height"

# проверить логи
sudo journalctl -u celestia-appd -f -o cat

# проверить статус
curl localhost:26657/status

# проверить баланс
celestia-appd q bank balances <address>

# проверить валидатора
celestia-appd query staking validator <valoper_address>
celestia-appd query staking validators --limit 1000000 -o json | jq '.validators[] | select(.description.moniker=="<name_moniker>")' | jq

# проверка информации по TX_HASH
celestia-appd query tx <TX_HASH>

# параметры сети
celestia-appd q staking params
celestia-appd q slashing params

# проверить сколько блоков пропущено валидатором и с какого блока актив
celestia-appd q slashing signing-info $(celestia-appd tendermint show-validator)

# узнать транзакцию создания валидатора (заменить свой valoper_address)
celestia-appd query txs --events='create_validator.validator=<your_valoper_address>' -o=json | jq .txs[0].txhash -r

# просмотр активного сета
celestia-appd q staking validators -o json --limit=1000 \
| jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' \
| jq -r '.tokens + " - " + .description.moniker' \
| sort -gr | nl

# просмотр неактивного сета
celestia-appd q staking validators -o json --limit=1000 \
| jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' \
| jq -r '.tokens + " - " + .description.moniker' \
| sort -gr | nl

Транзакции

# собрать комиссионные + реварды
celestia-appd tx distribution withdraw-rewards <valoper_address> --from <name_wallet> --fees 5555utia --commission -y

# заделегировать себе в стейк еще (так отправляется 1 монетa)
celestia-appd tx staking delegate <valoper_address> 1000000utia --from <name_wallet> --fees 5555utia -y

# ределегирование на другого валидатора
celestia-appd tx staking redelegate <src-validator-addr> <dst-validator-addr> 1000000utia --from <name_wallet> --fees 5555utia -y

# unbond 
celestia-appd tx staking unbond <addr_valoper> 1000000utia --from <name_wallet> --fees 5555utia -y

# отправить монеты на другой адрес
celestia-appd tx bank send <name_wallet> <address> 1000000utia --fees 5555utia -y

# выбраться из тюрьмы
celestia-appd tx slashing unjail --from <name_wallet> --fees 5555utia -y

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

# вывести список кошельков
celestia-appd keys list

# показать ключ аккаунта
celestia-appd keys show <name_wallet> --bech acc

# показать ключ валидатора
celestia-appd keys show <name_wallet> --bech val

# показать ключ консенсуса
celestia-appd keys show <name_wallet> --bech cons

# запрос учетной записи
celestia-appd q auth account $(celestia-appd keys show <name_wallet> -a) -o text

# удалить кошелек
celestia-appd keys delete <name_wallet>

Обновление

sudo systemctl stop celestia-appd && cd celestia-app
git pull
git checkout v0.5.2
make install
celestia-appd version 
# 0.5.2
sudo systemctl restart celestia-appd && journalctl -u celestia-appd -f -o cat

Удалить ноду

systemctl stop celestia-appd && \
systemctl disable celestia-appd && \
rm /etc/systemd/system/celestia-appd.service && \
systemctl daemon-reload && \
cd $HOME && \
rm -rf .celestia-app celestia-app && \
rm -rf $(which celestia-appd)

ГОВЕРНАНС

# список proposals
celestia-appd q gov proposals

# посмотреть результат голосования
celestia-appd q gov proposals --voter <ADDRESS>

# проголосовать за предложение 
celestia-appd tx gov vote 1 yes --from <name_wallet> --fees 5550utia

# внести депозит в предложение
celestia-appd tx gov deposit 1 1000000utia --from <name_wallet> --fees 5550utia

Peers

# проверка количества пиров
curl -s http://localhost:26657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(":")[2])"' | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:26657/net_info | jq '.result.peers[].node_info.moniker'

Проверка vote power онлайн. Пригодится при обновах

curl -s localhost:26657/consensus_state | jq '.result.round_state.height_vote_set[0].prevotes_bit_array'

Поиск всех исходящих транзакций по адресу

celestia-appd q txs --events transfer.sender=<ADDRESS> 2>&1 | jq | grep txhash

Поиск всех входящих транзакций по адресу

celestia-appd q txs --events transfer.recipient=<ADDRESS> 2>&1 | jq | grep txhash

Получение ID@IP:PORT - cohod исправить на нужное

echo "$(celestia-appd tendermint show-node-id)@$(curl ifconfig.me):26656"

Consensus Full Node

Необходимо открыть порты 2121 и 29658

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

git clone https://github.com/celestiaorg/celestia-app && cd celestia-app
git checkout v0.13.0
make install

celestia-appd version --long | grep -e version -e commit -e build
# version 0.13.0
# commit 6ba60e18fec27d3e3a42a71be082e255913cf4cf
# build_tags: ""

Setup the P2P networks

cd $HOME
git clone https://github.com/celestiaorg/networks

Инициализируем ноду, чтобы создать необходимые файлы конфигурации

celestia-appd init UTSA_gude --chain-id blockspacerace-0

Копируем genesis

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

# Проверим генезис
sha256sum ~/.celestia-app/config/genesis.json
# 877046754f4e730b75c72fea2ffdbf79a1663edbf40a86a838321a163322a7ae

Скачиваем Addr book

wget -O $HOME/.celestia-app/config/addrbook.json "https://snapshots.kjnodes.com/celestia-testnet/addrbook.json"

Настраиваем конфигурацию ноды

# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml
#celestia-appd config chain-id blockspacerace-0

# при необходимости настраиваем keyring-backend в client.toml 
celestia-appd config keyring-backend test

# настраиваем минимальную цену за газ в app.toml
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001utia\"/;" ~/.celestia-app/config/app.toml

# добавляем seeds/bpeers/peers в config.toml
EXTERNAL_ADDRESS=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address = \"\"/external_address = \"$EXTERNAL_ADDRESS:26656\"/" $HOME/.celestia-app/config/config.toml

PERSISTENT_PEERS="[email protected]:26656,[email protected]:20656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:2600"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PERSISTENT_PEERS\"/" $HOME/.celestia-app/config/config.toml

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

(ОПЦИОНАЛЬНО) Настраиваем прунинг одной командой вapp.toml

pruning="nothing"
pruning_keep_recent="1000"
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

(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты вapp.toml

# По умолчанию снэпшоты включены "snapshot-interval=1500"
snapshot_interval="1000" && \
sed -i.bak -e "s/^snapshot-interval *=.*/snapshot-interval = \"$snapshot_interval\"/" ~/.celestia-app/config/app.toml

(ОПЦИОНАЛЬНО) Смена портов #для 2 ноды

# config.toml
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:36658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:36657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6061\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:36656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":36660\"%" $HOME/.celestia-app/config/config.toml

# app.toml
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9190\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9191\"%" $HOME/.celestia-app/config/app.toml

# client.toml
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.celestia-app/config/client.toml

external_address=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:36656\"/" $HOME/.celestia-app/config/config.toml

Подробнее о смене портов здесь

(ОПЦИОНАЛЬНО) State Sync

https://testnet-explorer.brocha.in/celestia%20itn/statesync

Snapshot

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

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

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

[Service]
User=$USER
ExecStart=$(which celestia-appd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

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

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

Удалить ноду

systemctl stop celestia-appd && \
systemctl disable celestia-appd && \
rm /etc/systemd/system/celestia-appd.service && \
systemctl daemon-reload && \
cd $HOME && \
rm -rf .celestia-app celestia-app && \
rm -rf $(which celestia-appd)

Peers

# проверка количества пиров
curl -s http://localhost:26657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(":")[2])"' | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:26657/net_info | jq '.result.peers[].node_info.moniker'

Bridge node

Dashboard - https://tiascan.com/bridge-nodes

В данном гайде ноду Bridge устанавливаем на том же сервере, что и Consensus Full Node!

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

git clone https://github.com/celestiaorg/celestia-node && cd celestia-node
git checkout tags/v0.10.4
make build
make install

celestia version 
#Semantic version: v0.10.4
#Commit: 03ff94a7d779caf1225f3dccb53a68e8f1646dc6

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

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 blockspacerace
# показать адрес кошелька
cel-key list --node.type bridge --keyring-backend test --p2p.network blockspacerace

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

  • --core.rpc.port используем RPC порт от нашей ноды валидатора
  • --core.grpc.port используем gRPC порт от нашей ноды валидатора
  • --gateway.port по умолчанию 26659. Мы используем кастомный 29659
  • --rpc.port по умолчанию 26658. Мы используем кастомный 29658
celestia bridge init \
  --p2p.network blockspacerace \
  --core.ip http://localhost \
  --core.rpc.port 26657 \
  --core.grpc.port 9090 \
  --gateway \
  --gateway.addr 0.0.0.0 \
  --gateway.port 29659 \
  --rpc.addr 0.0.0.0 \
  --rpc.port 29658 \
  --keyring.accname bridge_wallet

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

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

[Service]
User=$USER
ExecStart=$(which celestia) bridge start \
  --p2p.network blockspacerace \
  --gateway \
  --gateway.addr 0.0.0.0 \
  --gateway.port 29659 \
  --metrics.tls=false \
  --metrics \
  --metrics.endpoint otel.celestia.tools:4318
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

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

.celestia-bridge-blockspacerace-0/keys

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

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

# проверить баланс
curl -s http://localhost:29659/balance | jq

Получить block header

curl -X GET http:/localhost:29659/header/1 | jq

# проверить высоту
curl -X GET http:/localhost:29659/head | jq '.header.height'

Узнать bridge node id

# сначала сгенерируем токен авторизации
NODE_TYPE=bridge
AUTH_TOKEN=$(celestia $NODE_TYPE auth admin --p2p.network blockspacerace)
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:29658

Peers

# проверка количества пиров
curl -s http://localhost:26657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(":")[2])"' | wc -l

# cписок моникеров подключенных пиров
curl -s http://localhost:26657/net_info | jq '.result.peers[].node_info.moniker'

Обновление на v0.8.2

Для обновления на данную версию нужна очистка базы данных

cd celestia-node
git pull
git checkout v0.8.2
make build
make install
celestia version 
#Semantic version: v0.8.2 
#Commit: 8e36597a82f3b6574669d57160844078b8bdb82d
systemctl stop celestia-bridge
# удаляем хранилище данных и config:
cd $HOME/.celestia-bridge-blockspacerace-0
rm -rf config.toml data transients index blocks
# повторно инициализируем bridge
celestia bridge init \
  --p2p.network blockspacerace \
  --core.ip http://localhost \
  --core.rpc.port 26657 \
  --core.grpc.port 9090 \
  --gateway \
  --gateway.addr 0.0.0.0 \
  --gateway.port 29659 \
  --rpc.addr 0.0.0.0 \
  --rpc.port 29658 \
  --keyring.accname bridge_wallet
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление на v0.9.0

Для обновления на данную версию нужна очистка базы данных

cd celestia-node
git pull
git checkout v0.9.0
make build
make install
celestia version 
#Semantic version: v0.9.0
#Commit: 94cd2a6664a24336629caf12b7560cc7cb353f6e
systemctl stop celestia-bridge
# удаляем хранилище данных и config:
celestia bridge unsafe-reset-store --p2p.network blockspacerace
cd $HOME/.celestia-bridge-blockspacerace-0
rm -rf config.toml
# повторно инициализируем bridge
celestia bridge init \
  --p2p.network blockspacerace \
  --core.ip http://localhost \
  --core.rpc.port 26657 \
  --core.grpc.port 9090 \
  --gateway \
  --gateway.addr 0.0.0.0 \
  --gateway.port 29659 \
  --rpc.addr 0.0.0.0 \
  --rpc.port 29658 \
  --keyring.accname bridge_wallet
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление на v0.9.1

Для обновления на данную версию нужна очистка базы данных

cd celestia-node
git pull
git checkout v0.9.1
make build
make install
celestia version 
#Semantic version: v0.9.1
#Commit: b8c24bfd76784b4c0f1c2d19d67d0cd3776af556
systemctl stop celestia-bridge
# удаляем хранилище данных и config:
celestia bridge unsafe-reset-store --p2p.network blockspacerace
cd $HOME/.celestia-bridge-blockspacerace-0
rm -rf config.toml
# повторно инициализируем bridge
celestia bridge init \
  --p2p.network blockspacerace \
  --core.ip http://localhost \
  --core.rpc.port 26657 \
  --core.grpc.port 9090 \
  --gateway \
  --gateway.addr 0.0.0.0 \
  --gateway.port 29659 \
  --rpc.addr 0.0.0.0 \
  --rpc.port 29658 \
  --keyring.accname bridge_wallet
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление на v0.9.3

cd celestia-node
git pull
git checkout v0.9.3
make build
make install
celestia version 
#Semantic version: v0.9.3
#Commit: 7f556f06e175267e0dd60b444a68554f592710a0
systemctl stop celestia-bridge
# обновляем конфиг файл
celestia bridge config-update --p2p.network blockspacerace
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление на v0.9.4

cd celestia-node
git pull
git checkout v0.9.4
make build
make install
celestia version 
#Semantic version: v0.9.4
#Commit: 876c6d04db110d52fe6ca1fd253fed5a402a8715
systemctl stop celestia-bridge
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление на v0.9.5

cd celestia-node
git pull
git checkout v0.9.5
make build
make install
celestia version 
#Semantic version: v0.9.5
#Commit: 2fa72c7199e5b93772a2c7e25141cfbd28f16a8e
systemctl stop celestia-bridge
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление на v0.10.0

cd celestia-node
git pull
git checkout v0.10.0
make build
make install
celestia version 
#Semantic version: v0.10.0
#Commit: cd8d0b9afd6dd982c43ab306cb9b160e985c6da1
systemctl stop celestia-bridge
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление на v0.10.2

cd celestia-node
git pull
git checkout v0.10.2
make build
make install
celestia version 
#Semantic version: v0.10.2
#Commit: 960b522ec4ed2fb2069a220e2cef2da609158f4d
systemctl stop celestia-bridge
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Обновление на v0.10.4

cd $HOME/celestia-node
git pull
git checkout v0.10.4
make build
make install
celestia version 
#Semantic version: v0.10.4
#Commit: 03ff94a7d779caf1225f3dccb53a68e8f1646dc6
systemctl stop celestia-bridge
systemctl restart celestia-bridge && journalctl -u celestia-bridge -f -o cat

Удалить 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-blockspacerace-0 celestia-node && \
rm -rf $(which celestia)