March 14, 2023

👨‍💻 Nibiru: установка ноды для награждаемого тестнета

NIBIRU- блокчейн на Cosmos, который объединяет торговлю деривативами с кредитным плечом, спотовую торговлю, стейкинг и предоставление облигационной ликвидности в единый пользовательский интерфейс, позволяя пользователям более 40 блокчейнов торговать с кредитным плечом, используя набор компонуемых децентрализованных приложений.

Nibiru собрали 8.5$ млн от таких фондов, как NGC Ventures, Tribe Capital, Original Capital, Republic Crypto и других.

Сейчас у Nibiru проходит награждаемый тестнет. В этом гайде я расскажу, как поставить ноду и заработать баллы за валидаторство.

А если вы хотите заработать баллы еще и за другие задания, то смотрите ЭТОТ ГАЙД.

Подготовка

Требования для сервера:

  • 4CPU
  • 16GB RAM
  • 1000GB of disk space (SSD)

Я взял сервер CX41 на Hetzner, потом докуплю память:

Подробнее про аренду сервера можно найти в этой статье в параграфах Аренда сервера и Подключение к серверу.

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

Обновляем сервер:

sudo apt update && sudo apt upgrade -y

Устанавливаем пакеты:

sudo apt install make clang pkg-config libssl-dev build-essential git gcc chrony curl jq ncdu bsdmainutils htop net-tools lsof fail2ban wget -y

Установка ноды

Устанавливаем GO:

ver="1.18.2" && \ 
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 (в выводе должно быть 1.18.2):

go version

Устанавливаем бинарные файлы:

cd $HOME 
git clone https://github.com/NibiruChain/nibiru.git 
cd nibiru 
git checkout v0.19.2 
make build

Перемещаем бинарный файл:

sudo mv ./build/nibid /usr/local/bin/ 
cd $HOME

Проверяем версию бинарного файла (в выводе должно быть v0.19.2)

nibid version

Настройка валидатора

Задаём переменные. Вместо "ИМЯ_ВАЛИДАТОРА" и "ИМЯ_КОШЕЛЬКА" придумываем свои значения (c кавычками):

MONIKER="ИМЯ_ВАЛИДАТОРА" 
WALLET_NAME="ИМЯ_КОШЕЛЬКА"

Задаём имя сети (ничего не меняем):

CHAIN="nibiru-itn-1"

∎ Добавляем в баш:

echo 'export MONIKER='${MONIKER} >> $HOME/.bash_profile 
echo 'export WALLET_NAME='${WALLET_NAME} >> $HOME/.bash_profile 
echo 'export CHAIN='${CHAIN} >> $HOME/.bash_profile 
source $HOME/.bash_profile

∎ Инициализируем ноду:

nibid init $MONIKER --chain-id $CHAIN

∎ Добавляем имя сети в конфигурационный файл:

nibid config chain-id $CHAIN

∎ Скачиваем генезисный файл:

curl -s https://rpc.itn-1.nibiru.fi/genesis | jq -r .result.genesis > $HOME/.nibid/config/genesis.json

∎ Настраиваем минимальную цену за газ:

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025unibi\"/;" ~/.nibid/config/app.toml

∎ Добавляем сиды:

NETWORK=nibiru-itn-1 
sed -i 's|seeds =.*|seeds = "'$(curl -s https://networks.itn.nibiru.fi/$NETWORK/seeds)'"|g' $HOME/.nibid/config/config.toml

∎ Настраиваем прунинг (для экономии места, настраивается по желанию):

pruning="custom" 
pruning_keep_recent="100" 
pruning_interval="10" 
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.nibid/config/app.toml 
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.nibid/config/app.toml 
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.nibid/config/app.toml

∎ Выключаем индексер (для экономии места, настраивается по желанию):

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

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

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

[Service] 
User=$USER 
ExecStart=$(which nibid) start 
Restart=on-failure 
RestartSec=10 
LimitNOFILE=65535 

[Install] 
WantedBy=multi-user.target 
EOF

∎ Запускаем сервис:

systemctl daemon-reload 
systemctl enable nibid 
systemctl restart nibid

∎ Смотрим логи и ждём синхронизацию (высота в логах - Height - должна догнать текущую высоту.  Посмотреть текущую высоту можно ТУТ):

journalctl -u nibid -f -o cat

Выйти из логов - CTRL+C

∎ Проверяем статус синхронизации (в строке catching up должно быть false):

curl localhost:26657/status

Чтобы нода быстрее синхронизировалась, можно добавить State Sync:

apt install snapd -y 
snap install lz4
curl -L https://share.utsa.tech/nibiru/wasm-nibiru.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.nibid --strip-components 2 
peers="[email protected]:60656" 
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.nibid/config/config.toml 
SNAP_RPC=https://t-nibiru.rpc.utsa.tech:443 
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); 
BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); 
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/.nibid/config/config.toml
systemctl restart nibid

Смотрим логи:

journalctl -u nibid -f -o cat

Настройка валидатора

После того как нода синхронизировалась, надо создать или восстановить кошелёк.

Если вы уже проходили тестнет, то восстанавливаем кошелёк:

nibid keys add $WALLET_NAME --recover

Далее вставляем свою seed-фразу, а затем придумываем пароль.

Если вы хотите создать кошелёк, то вводим (не забываем надёжно сохранить seed фразу):

nibid keys add $WALLET_NAME

∎ Создаём переменную с адресом валидатора (ничего не меняем):

ADDRESS=$(nibid keys show $WALLET_NAME -a) 
VALOPER=$(nibid keys show $WALLET_NAME --bech val -a) 
echo 'export ADDRESS='${ADDRESS} >> $HOME/.bash_profile 
echo 'export VALOPER='${VALOPER} >> $HOME/.bash_profile source $HOME/.bash_profile

∎ Запрашиваем тестовые токены либо через сайт, либо через командную строку:

FAUCET_URL="https://faucet.itn-1.nibiru.fi/"
curl -X POST -d '{"address": "'"$ADDRESS"'", "coins": ["11000000unibi","100000000unusd","100000000uusdt"]}' $FAUCET_URL

∎ Проверяем баланс:

nibid query bank balances $ADDRESS

Если монеты поступили, то можно создать валидатора, в строке amount введите сумму, которую хотите делегировать себе (не забудьте оставить на комиссию; 1,000,000 unibi = 1 nibi):

nibid tx staking create-validator \
 --amount 1000000unibi \
 --chain-id $CHAIN \
 --commission-rate 0.05 \
 --commission-rate 0.05 \
 --commission-max-rate 0.2 \
 --commission-max-change-rate 0.1 \
 --min-self-delegation "10" \
 --pubkey $(nibid tendermint show-validator) \
 --moniker $MONIKER \
 --from $WALLET_NAME \
 --fees 5000unibi

∎ Проверяем статус валидатора:

nibid query staking validator $VALOPER

Важное

∎ Получаем роль валидатора. Идём в эксплорер, ищем своего валидатора во вкладке Inactive, нажимаем на себя и копируем ссылку на страницу.

Далее идём в Discord в ветку #validator-role-request и вставляем ссылку на своего валидатора.

За установку ноды дадут 100 баллов. При этом самое главное - чтобы нода синхронизировалась, и неважно, в активном сете вы находитесь или в неактивном. Если у вашей ноды ни разу не будет слеша, то за это дадут еще +50 баллов.
Баллы пока нигде нельзя посмотреть.

∎ Сохраняем приватный ключ.

Делаем бэкап ноды. Вводим команду:

cat .nibid/config/priv_validator_key.json

И надёжно сохраняем данные из вывода.

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

∎ Делегировать себе монеты с кошелька:

nibid tx staking delegate $VALOPER 10000000unibi --from $WALLET_NAME --chain-id $CHAIN --fees 5000unibi

∎ Посмотреть баланс:

nibid query bank balances $ADDRESS

∎ Посмотреть статус валидатора:

nibid query staking validator $VALOPER

∎ Выйти из тюрьмы, если ваша нода туда попала (в статусе валидатора в строке jailed будет стоять true):

nibid tx slashing unjail --from $WALLET_NAME--chain-id $CHAIN --fees 5000unibi

∎ Удалить ноду:

sudo systemctl stop nibid 
sudo systemctl disable nibid 
cd $HOME 
rm /etc/systemd/system/nibid 
rm /usr/local/bin/nibid 
rm -r nibiru/ 
rm -r .nibid/

Спасибо за внимание!

Стань частью команды Cryptonik 👇

📢Телеграм канал https://t.me/cryptonik_space 🎬 Youtube канал https://www.youtube.com/@cryptonik_space 💬 Телеграм чат https://t.me/cryptonik_space_chat