April 4

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

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

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

Warden Protocol - зверь, созданный на основе Cosmos SDK, который обеспечивает различные уровни выполнения для обеспечения совместимости, модульного управления ключами (этакие инструменты для возможности выбора MPS и HSM операторов) и агрегации учетных записей

Минимальные требования для сервера

32GB RAM 300GB of disk space 8Cores CPU

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

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

Подробный разбор по установке нод Cosmos можно посмотреть тут.

Если будете выбирать сервер на Hetzner можете воспользоваться нашей ссылкой, будем благодарны.

Как всегда обновляем наш сервер

sudo apt update && sudo apt upgrade -y

Устанавливаем доп. пакеты

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

Устанавливаем go и проверяем версию

ver="1.20.5" && \ 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 rm -rf wardenprotocol git clone --depth 1 --branch v0.1.0 https://github.com/warden-protocol/wardenprotocol/ cd wardenprotocol/warden/cmd/wardend go build

После этого перемещаем бинарник

sudo mv wardend /usr/local/bin/

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

WARDEN_CHAIN="alfama" WARDEN_MONIKER="your_name" WARDEN_WALLET="your_name"

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

echo 'export WARDEN_CHAIN='${WARDEN_CHAIN} >> $HOME/.bash_profile echo 'export WARDEN_MONIKER='${WARDEN_MONIKER} >> $HOME/.bash_profile echo 'export WARDEN_WALLET='${WARDEN_WALLET} >> $HOME/.bash_profile source $HOME/.bash_profile

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

wardend init <your_moniker> --chain-id alfama

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

cd $HOME/.warden/config
rm genesis.json
wget https://raw.githubusercontent.com/warden-protocol/networks/main/testnet-alfama/genesis.json

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

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

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

sed -i 's/minimum-gas-prices = ""/minimum-gas-prices = "0.0025uward"/' $HOME/.warden/config/app.toml

Добавляем пиры

sed -i 's/persistent_peers = ""/persistent_peers = "2fa750223e22cc19a96391be254680e76387039c@174.138.6.105:26656,12caf2f5e3618cb6c57f45e93ac713b2bc6243b1@164.90.205.67:26656,b9c77f2a0b725fb9b48b50e5ec50d100c58514af@165.232.87.163:26656"/' $HOME/.warden/config/config.toml

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

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

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

[Install] WantedBy=multi-user.target EOF

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

systemctl daemon-reload systemctl enable wardend systemctl restart wardend

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

journalctl -u wardend -f -o cat

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

curl localhost:26657/status

На блоке 386352 нужно обновить бинарник на версию 0.2.0

cd $HOME rm -rf wardenprotocol git clone --depth 1 --branch v0.2.0 https://github.com/warden-protocol/wardenprotocol/ cd wardenprotocol/warden/cmd/wardend go build

После этого перемещаем бинарник

sudo mv wardend /usr/local/bin/

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

systemctl restart wardend

Так же можно изначально установить версию 0.2.0 и воспользоваться оффициальным стэйт синхом

Для начала очищаем базу данных

systemctl stop wardend wardend tendermint unsafe-reset-all --home $HOME/.warden --keep-addr-book

Задаем переменные для стэйт синха

export SNAP_RPC_SERVERS="https://rpc.sentry-1.alfama.wardenprotocol.org:443,https://rpc.sentry-2.alfama.wardenprotocol.org:443,https://rpc.sentry-3.alfama.wardenprotocol.org:443" export LATEST_HEIGHT=$(curl -s "https://rpc.alfama.wardenprotocol.org/block" | jq -r .result.block.header.height) export BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)) export TRUST_HASH=$(curl -s "https://rpc.alfama.wardenprotocol.org/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)

Проверяем вывод

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

Должно быть наподобие

# output should be similar to: # 70694 68694 6AF4938885598EA10C0BD493D267EF363B067101B6F81D1210B27EBE0B32FA2A

Если всё нормально то записываем данные в config.toml

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

Перезапускаем ноду и смотрим логи

systemctl restart wardend && journalctl -fu wardend -o cat

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

wardend keys add $WARDEN_WALLET

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

wardend keys add $WARDEN_WALLET --recover

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

WARDEN_ADDR=$(wardend keys show $WARDEN_WALLET -a)

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

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

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

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

wardend query bank balances $WARDEN_ADDR

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

Сначала узнаём свой pubkey

wardend comet show-validator

Вывод должен быть подобным

{"@type":"/cosmos.crypto.ed25519.PubKey","key":"lR1d7YBVK5jYijOfWVKRFoWCsS4dg3kagT7LB9GnG8I="}

Создаём файл validator.json

nano $HOME/.warden/validator.json

Вставляем конфиг, не забываем изменить значения на свои

{ "pubkey": <сюда вставляем вывод команды выше, полностью с фигурными скобками, треугольные скобки убираем>, "amount": "1000000uward", "moniker": "your-node-moniker", "identity": "eqlab testnet validator", "website": "optional website for your validator", "security": "optional security contact for your validator", "details": "optional details for your validator", "commission-rate": "0.1", "commission-max-rate": "0.2", "commission-max-change-rate": "0.01", "min-self-delegation": "1" }

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

wardend tx staking create-validator $HOME/.warden/validator.json \ --from=<key-name> \ --chain-id=alfama \ --fees=500uward

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

WARDEN_VALOPER=$(wardend keys show $WARDEN_WALLET --bech val -a)

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

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

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

wardend query staking validator $WARDEN_VALOPER

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

wardend tx staking delegate $WARDEN_VALOPER 1000000uward --from $WARDEN_WALLET --fees=500uward

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

wardend tx slashing unjail --from $WARDEN_WALLET --fees=500uward

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

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

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