Установка ноды WARDEN
Здравствуйте сегодня мы расскажем об установке ноды WARDEN
Оригинальная инструкция находится тут.
Warden Protocol - зверь, созданный на основе Cosmos SDK, который обеспечивает различные уровни выполнения для обеспечения совместимости, модульного управления ключами (этакие инструменты для возможности выбора MPS и HSM операторов) и агрегации учетных записей
Минимальные требования для сервера
32GB RAM 300GB of disk space 8Cores CPU
Краткую инструкцию по аренде сервера можно посмотреть тут
Как установить несколько нод на один сервер можно почитать тут
Подробный разбор по установке нод Cosmos можно посмотреть тут.
Если будете выбирать сервер на Hetzner можете воспользоваться нашей ссылкой, будем благодарны.
Как всегда обновляем наш сервер
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
После этого перемещаем бинарник
Задаем переменные (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
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
systemctl daemon-reload systemctl enable wardend systemctl restart wardend
Смотрим логи и ждем когда нода начнет синхронизироваться
Или смотрим статус синхронизации (когда "catching_up": false то нода синхронизирована)
На блоке 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
После этого перемещаем бинарник
Так же можно изначально установить версию 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)
# 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
Перезапускаем ноду и смотрим логи
После синхронизации создаем кошелек (не забываем сохранить мнемоник)
Если кошелек уже есть то восстанавливаем с помощью мнемоника
Добавляем переменную с адресом кошелька
Добавляем переменную в баш профиль
echo 'export WARDEN_ADDR='${WARDEN_ADDR} >> $HOME/.bash_profile source $HOME/.bash_profile
Теперь нам необходимо получить средства на кошелек. Для этого добавляем созданный кошелёк в Keplr. Переходим по ссылке, подключаем Keplr и запрашиваем токены.
После запроса проверяем баланс
Если средства успешно поступили, то создаем валидатора (сумму указывайте свою, сколько хотите делегировать с кошелька, указывайте чуть меньше баланса на кошельке что бы хватило на комиссию)
{"@type":"/cosmos.crypto.ed25519.PubKey","key":"lR1d7YBVK5jYijOfWVKRFoWCsS4dg3kagT7LB9GnG8I="}
Вставляем конфиг, не забываем изменить значения на свои
{ "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 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