August 6, 2022

Гайд по установке ноды Stakewars Near Protocol

Near Protocol запускает третий эпизод тестнета Stake Wars, целью которого является децентрализация сети NEAR, путем привлечение новых валидаторов. Анонсированные награды составляют 50к $NEAR на ноду в мейнете и 500 $NEAR токенов за успешное выполнение всех заданий.

Информацию о челлендже Near можете посмотреть по ссылке.

Для начала вам нужно подать заявку на участие , заполнив по форме по ссылке

Задание 1.1. Выбираем и покупаем сервер

Рекомендуемые системные требования:
- CPU: 4 CORE
- RAM: 8 GB
- HDD/SSD: 500 GB

Я выбрал сервер

Ubuntu Server в Azure

https://azure.microsoft.com

Можно выбрать и купить еще ниже

https://firstbyte.ru/?from=112633

https://zomro.com/?from=333271

https://cloud4box.com/?from=56696

Вся установка проводилась на Linux Ubuntu 20.04.

Конфигурацию 4 ядра, 8Гб оперативной памяти и 500 гб диск купил за ~150$

У диска SSD уровень производительности 2300 операция в секунду, загрузка и инициализация ноды проходит быстрее

Имя компьютера pc1

Имя пользователя sqwer

Задание 1.2. Подготавливаем сервер к работе

Для подключения к серверу я использую MobaXterm

Все команды для ввода берем по одной строке.

Обновляем Linux пакеты

sudo apt update && sudo apt upgrade -y

Устанавливаем инструменты разработчика, Node.js и npm.

sudo apt install -y git binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev cmake gcc g++ python docker.io protobuf-compiler libssl-dev pkg-config llvm cargo
sudo apt install clang build-essential make
sudo apt install curl jq
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -  
sudo apt install nodejs
PATH="$PATH"

Проверяем версии

node -v
#v18.x.x
npm -v
#8.x.x

Устанавливаем NEAR-CLI

sudo npm install -g near-cli

Настраиваем окружение. Текущий тестнет проходит в сети shardnet. Вводим название сети в качестве переменной и устанавливаем все необходимое для работы валидатора.

export NEAR_ENV=shardnet
echo 'export NEAR_ENV=shardnet' >> ~/.bashrc

sudo apt install python3-pip

USER_BASE_BIN=$(python3 -m site --user-base)/bin
export PATH="$USER_BASE_BIN:$PATH"

Устанавливаем Rust

sudo apt install curl build-essential gcc make -y

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Выбираем пункт 1) продолжить установку (по умолчанию).

# активируем среду Rust для текущей оболочки

source ~/.profile

source ~/.cargo/env

Задание 1.3. Создаем кошелек

Переходим по ссылке и создаем кошелек NEAR для тестовой сети.

Сохраняем мнемонику в надежном месте. Запоминаем имя кошелька, он же Account_ID.

Выбираем имя пользователя

Задание 2.1. Устанавливаем ноду

Клонируем репозиторий с github нодой

git clone https://github.com/near/nearcore
cd nearcore
git fetch

Берем актуальный коммит по ссылке.

git checkout 68bfa84ed1455f891032434d37ccad696e91e4f5

Собираем бинарные файлы.

cargo build -p neard --release --features shardnet

Инициализируем ноду и загружаем генезис файл

./target/release/neard --home ~/.near init --chain-id shardnet --download-genesis

Дальше нужно поменять конфиг.Скачиваем конфиг файл с модифицированными параметрами

rm ~/.near/config.json
wget -O ~/.near/config.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json

Создаем сервисный файл.Создаем сервисный файл. Я устанавливал ноду под суперпользователем, так как на сервере будет только одна нода. Если вы используете другого пользователя, в сервисном файле меняем root на имя вашего пользователя.В данном случае я меня на имя пользователя sqwer

printf "[Unit]
Description=NEARd Daemon Service

[Service]
Type=simple
User=sqwer
#Group=near
WorkingDirectory=/sqwer/.near
ExecStart=/sqwer/nearcore/target/release/neard run
Restart=on-failure
RestartSec=30
KillSignal=SIGINT
TimeoutStopSec=45
KillMode=mixed

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/neard.service

может быть такая ошибка, поэтому 2способ:

sudo nano /etc/systemd/system/neard.service

Откроется файл, сюда копируете текст выше, сохранянем выходим

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

sudo systemctl daemon-reload
sudo systemctl enable neard
sudo systemctl restart neard

Добавляем цвета к выводу логов.

sudo apt install ccze

Смотрим наши логи.

journalctl -n 100 -f -u neard | ccze -A

Задание 2.1. Создаем валидатора

Пишем в консоль.

near login

Нажимаем n.

Копируем ссылку и открываем в браузере, в котором устанавливали кошелек.

Нажимаете NEXT.

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

Создаем ключ валидатора.

near generate-key [pool_id]

Вместо [pool_id] пишем имя вашего валидатора - имя.factory.shardnet.near В моем случае amd.factory.shardnet.near

Открываем файл

nano ~/.near-credentials/shardnet/[pool_id].json

Вместо [pool_id] пишем имя вашего валидатора - имя.factory.shardnet.near.

Теперь в этом файле ищете слово private_key и меняете его на secret_key.

Нажимаем Ctrl + X.

Перезапускаем ноду.

sudo systemctl daemon-reload
sudo systemctl enable neard
sudo systemctl restart neard

Задание 3: Создаем стейкинг пул

near call factory.shardnet.near create_staking_pool '{"staking_pool_id":
"[pool_id]", "owner_id": "[account_id]", "stake_public_key":
"<public key>", "reward_fee_fraction": {"numerator": 5, "denominator":
100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}'
--accountId="[account_id]" --amount=30 --gas=300000000000000

[pool_id] — ваш пул айди, например имя.factory.shardnet.near
[account_id] — имя кошелька, который вы создали, например имя.shardnet.near
<public key>- ваш публичный ключ с файлаvalidator_key.json
reward_fee_fraction — здесь можно поменять, сколько валидатор будет брать комиссии, я поставил 5%.

Стейкаем немного токенов Near.

near call [pool_id] deposit_and_stake --amount [amount] --accountId [account_id] --gas=300000000000000

[pool_id] — ваш пул айди, например имя.factory.shardnet.near
[amount] — количество токетов Near
[account_id] — имя кошелька, который вы создали, например имя.shardnet.near

Задание 4. Мониторинг и проверка (выполнять рекоменжуется когад нода полностью засинхронизируется)

Здесь вы можете проверить своего валидатора - ТЫК.

Ниже команды для этого задания.

Проверка версии ноды.

curl -s http://127.0.0.1:3030/status | jq .version

Проверка логов.

journalctl -n 100 -f -u neard | ccze -A

Проверка делегатора.

near view [pool_id] get_accounts '{"from_index": 0, "limit": 10}' --accountId [account_id]

Проверка произведенных блоков.

curl -s -d '{"jsonrpc": "2.0", "method": "validators", "id": "dontcare", "params": [null]}' -H 'Content-Type: application/json' 127.0.0.1:3030 | jq -c '.result.current_validators[] | select(.account_id | contains ("[pool_id]"))'

После ввода проверки произведенных блоков, может и нечего и не показать этонормально, просто блоки достатчоно сложно сейчас достать, они появляются редко

Все 4 задания выполнены!
Теперь нужно продолжать делать следующие задания.

Список всех заданий
Отчитаться за выполнение 5, 6, 7, 8, 9 и т.д. задания

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

Кошелек: https://wallet.shardnet.near.org/

Эксплорер: https://explorer.shardnet.near.org/

Проверка логов

journalctl -n 100 -f -u neard

Перезапуск ноды

sudo systemctl restart neard

Проверка баланса

near view $POOL get_account_total_balance '{"account_id": "<MONIKER>.shardnet.near"}'

Анстейк токенов

#определенное количество
near call $POOL unstake '{"amount": "<amount yoctoNEAR>"}' \
--accountId $ACCOUNT_ID --gas=300000000000000

#все
near call $POOL unstake_all --accountId $ACCOUNT_ID \
--gas=300000000000000

Вывод токенов

#определенное количество
near call $POOL withdraw '{"amount": "<amount yoctoNEAR>"}' \
--accountId $ACCOUNT_ID --gas=300000000000000

#все
near call $POOL withdraw_all --accountId $ACCOUNT_ID \
--gas=300000000000000

Список активных валидаторов текущей эпохи

near validators current

Список валидаторов, чей пропозал принят и которые будут активны в следующей эпохе

near validators next

Контакты NEAR

Discord проекта Near
Website проекта Near
Twitter проекта Near

Мои контакты

Telegram:@dengivinternete0