November 2, 2022

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

Здравствуйте сегодня мы расскажем об установке ноды Nibiru

Оригинальная инструкция находится тут.

Nibiru — это суверенный proof-of-stake блокчейн, платформа с открытым исходным кодом и член семейства взаимосвязанных блокчейнов, составляющих экосистему Cosmos.

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

Начат вознаграждаемый тестнет, подробности здесь.

Рекомендуемые требования для сервера

16GB RAM 1000GB+ of disk space 4 Cores (modern CPU's)

Краткую инструкцию по аренде сервера можно посмотреть тут

Если будете выбирать 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.19.4" && \ 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

После этого скачиваем и устанавливаем бинарник

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

Задаем переменные (CHAIN оставляем без изменений, в остальные вписываем свои данные)

NIBIRU_MONIKER="your_name" NIBIRU_CHAIN="nibiru-itn-1" NIBIRU_WALLET="your_name"

Добавляем все в баш профиль

echo 'export NIBIRU_MONIKER='${NIBIRU_MONIKER} >> $HOME/.bash_profile echo 'export NIBIRU_CHAIN='${NIBIRU_CHAIN} >> $HOME/.bash_profile echo 'export NIBIRU_WALLET='${NIBIRU_WALLET} >> $HOME/.bash_profile source $HOME/.bash_profile

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

nibid init $NIBIRU_MONIKER --chain-id $NIBIRU_CHAIN

Прописываем в конфиг имя сети

nibid config chain-id $NIBIRU_CHAIN

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

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

Настраиваем прунинг (по желанию)

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

Выключаем индексер (по желанию)

sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.nibid/config/config.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

Задаем минимальную цену за gas

sed -i.bak 's/minimum-gas-prices =.*/minimum-gas-prices = "0.025unibi"/g' $HOME/.nibid/config/app.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

И запускаем сервис

sudo systemctl daemon-reload sudo systemctl enable nibid sudo systemctl restart nibid

Смотрим логи и ждем когда нода начнет синхронизироваться

sudo journalctl -u nibid -f -o cat

Или смотрим статус синхронизации (когда "catching_up": false то нода синхронизирована)

curl localhost:26657/status

Так же можно синхронизироваться с ноды нибиру

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

После синхронизации создаем кошелек (не забываем сохранить мнемоник)

nibid keys add $NIBIRU_WALLET

Если кошелек уже есть то восстанавливаем с помощью мнемоника

nibid keys add $NIBIRU_WALLET --recover

Добавляем переменную с адресом кошелька

NIBIRU_ADDR=$(nibid keys show $NIBIRU_WALLET -a)

Добавляем переменную в баш профиль

echo 'export NIBIRU_ADDR='${NIBIRU_ADDR} >> $HOME/.bash_profile source $HOME/.bash_profile

Теперь нам необходимо получить средства на кошелек. Для этого запрашиваем токены посредством команды, так же их можно запросить через Web

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

После запроса проверяем баланс

nibid query bank balances $NIBIRU_ADDR

Если средства успешно поступили, то создаем валидатора (сумму указывайте свою, сколько хотите делегировать с кошелька, указывайте чуть меньше что бы хватило на комиссию)

nibid tx staking create-validator \ --amount 10000000unibi \ --commission-max-change-rate "0.1" \ --commission-max-rate "0.20" \ --commission-rate "0.1" \ --min-self-delegation "1" \ --pubkey=$(nibid tendermint show-validator) \ --moniker $NIBIRU_MONIKER \ --chain-id nibiru-itn-1 \ --from $NIBIRU_WALLET \ --fees 5000unibi

Задаем переменную с адресом валидатора

NIBIRU_VALOPER=$(nibid keys show $NIBIRU_ADDR --bech val -a)

И добавляем ее в баш профиль

echo 'export NIBIRU_VALOPER='${NIBIRU_VALOPER} >> $HOME/.bash_profile source $HOME/.bash_profile

Проверка статуса валидатора

nibid query staking validator $NIBIRU_VALOPER

Делегация средств с кошелька на валидатора (сумму вводите свою)

nibid tx staking delegate $NIBIRU_VALOPER 10000000unibi --from $NIBIRU_WALLET --chain-id $NIBIRU_CHAIN --fees 5000unibi

Ну и если вдруг ваша нода попала в тюрьму, то выход

nibid tx slashing unjail --from $NIBIRU_WALLET --chain-id $NIBIRU_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/

Установка и настройка Oracle

Стоит отметить, что Oracle необходимо устанавливать только валидаторам из активного сета, иначе он просто не будет работать Установка Oracle

git clone https://github.com/NibiruChain/pricefeeder cd pricefeeder git checkout v0.0.6 make install cd $HOME/go/bin/ mv feeder /usr/local/bin

Устанавливаем переменные (Если порты меняли, устанавливаем свои)

CHAIN_ID="nibiru-itn-1" GRPC_ENDPOINT="localhost:9090" WEBSOCKET_ENDPOINT="ws://localhost:26657/websocket" EXCHANGE_SYMBOLS_MAP='{"bitfinex": {"ubtc:unusd": "tBTCUSD", "ueth:unusd": "tETHUSD", "uusd:unusd": "tUSTUSD"}, "binance": { "ubtc:uusd": "BTCUSD", "ueth:uusd": "ETHUSD", "uusdt:uusd": "USDTUSD", "uusdc:uusd": "USDCUSD", "uatom:uusd": "ATOMUSD", "ubnb:uusd": "BNBUSD", "uavax:uusd": "AVAXUSD", "usol:uusd": "SOLUSD", "uada:uusd": "ADAUSD", "ubtc:unusd": "BTCUSD", "ueth:unusd": "ETHUSD", "uusdt:unusd": "USDTUSD", "uusdc:unusd": "USDCUSD", "uatom:unusd": "ATOMUSD", "ubnb:unusd": "BNBUSD", "uavax:unusd": "AVAXUSD", "usol:unusd": "SOLUSD", "uada:unusd": "ADAUSD" }}' VALIDATOR_ADDRESS="nibivaloper1..." FEEDER_MNEMONIC="Your_Mnemo"

Делегируем ответственность на кошелек фидера

ВАЖНО! (Тут надо сделать пометку, что в данном тестнете мы привязываем кошелек валидатора поскольку его мы заполняли в gleam и он привязан к получению очков, если вы запускаете oracle в мейнете, то категорически запрещается использовать кошелек валидатора в качестве кошелька для сторонних сервисов, будь это релеер, оракл или что-либо еще)

nibid tx oracle set-feeder "Your_Wallet_Address" --from $NIBIRU_WALLET --fees 5000unibi


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

tee /etc/systemd/system/pricefeeder.service > /dev/null <<EOF [Unit] Description=Nibiru Price Feeder Requires=network-online.targer After=network-online.target

[Service] User=$USER ExecStart=$(which feeder) start Restart=on-failure ExecReload=/bin/kill -HUP KillSignal=SIGTERM RestartSec=3 PermissionStartOnly=true LimitNOFILE=65535 Environment=CHAIN_ID="$CHAIN_ID" Environment=GRPC_ENDPOINT="$GRPC_ENDPOINT" Environment=WEBSOCKET_ENDPOINT="$WEBSOCKET_ENDPOINT" Environment=EXCHANGE_SYMBOLS_MAP='$EXCHANGE_SYMBOLS_MAP' Environment=FEEDER_MNEMONIC="$FEEDER_MNEMONIC" Environment=VALIDATOR_ADDRESS="$VALIDATOR_ADDRESS"

[Install] WantedBy=multi-user.target EOF

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

systemctl enable pricefeeder.service && systemctl restart pricefeeder && journalctl -fu pricefeeder -o cat

После запуска должны увидеть в логах такой результат

Так же можно проверить Explorer, на момент транзакций UPD: Монет нужно очень много

Удаление Oracle

sudo systemctl stop pricefeeder sudo systemctl disable pricefeeder cd $HOME rm /etc/systemd/system/feeder rm /usr/local/bin/feeder rm -r pricefeeder/

Русскоязычный чат Nibiru - https://t.me/nibiru_ru

Большое спасибо, за внимание и уделенное время

Наш телеграмм канал по нодам — https://t.me/mmsnodes
Наш телеграмм чат по нодам - https://t.me/mmsnodeschat
Наш телеграмм канал по экосистеме Cosmos - https://t.me/cosmochannel_mms

С уважением, MMS_Team