NEAR: Stakewars гайд по установке
Near Protocol запускает третью часть Stake Wars, целью которого является децентрализация сети NEAR, путем привлечение новых валидаторов.
Список задач (кликабельно) | Форма для отчетов (кликабельно)
Награды: Делегируют 50k $NEAR на вашу ноду и дадут 500 $NEAR за успешное выполнение всех заданий (отчеты нужно отправлять с 5-го по 8-е, а 1-4 задания по сути являются установкой самой ноды.
Вступить в Discord сервер NEAR, чтобы получать техническую помощь (рекомендовано!) | https://discord.gg/rwT6EKXcpU
Задание 1 | Часть 1 | Сервер
Минимальные требования к серверу составляют:
CPU: 4-Core, RAM: 8GB DDR4, Storage: 500GB SSD
Я использовал более мощный сервер, но с меньшим хранилищем на ServerPoint.
Size G3.8
$35 / month
8 x Intel Xeon E5 CPU Cores
8 GBs of RAM
160 GBs SSD Storage
6000 GBs/mo data transfer
Какую OS ставить?
Ubuntu 20 (20.04 Linux)
Почему Serverpoint?
Просто потому что использовал его ранее для разворачивания серверов под различные цели.
Существуют различные способы подключения, лично я пользуюсь базовыми способами без интерфейсов. Putty или обычная cmd.
ssh root@айпи-сервера
Введите пароль или вставьте предварительно скопировав и нажав ПКМ (правую кнопку мыши). Пароль вы не будете видеть, поэтому проверить правильность его копирования сможете только успешным входом.
При входе на сервер, используйте команду ниже, чтобы проверить подходит ли ваш сервер под данную задачу.
lscpu | grep -P '(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )' > /dev/null \ && echo "Supported" \ || echo "Not supported"
Если выдает "Supported" продолжаем установку
Приступаем к настройкам
Обновляем пакеты
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
node -v #v18.x.x
npm -v #8.x.x
sudo npm install -g near-cli
Настраиваем окружение. Текущий Stake Wars на Near проходит в сети shardnet.
ВАЖНО! Скорее всего вы в первый раз работаете с консолью, поэтому стоит упомянуть, что каждая команда (строка) вводится отдельно.
Вводим название сети в качестве переменной
export NEAR_ENV=shardnet echo 'export NEAR_ENV=shardnet' >> ~/.bashrc
Устанавливаем и настраиваем python pip
sudo apt install python3-pip USER_BASE_BIN=$(python3 -m site --user-base)/bin export PATH="$USER_BASE_BIN:$PATH"
# устанавливаем необходимые пакеты sudo apt install curl build-essential gcc make -y # загружаем установочный скрипт Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Вписываем "1", то есть 1) продолжить установку (по умолчанию).
# активируем среду Rust для текущей оболочки source ~/.profile source ~/.cargo/env
Задание 1 | Часть 2 | Создание NEAR кошелька
Переходим по ссылке https://wallet.shardnet.near.org/ и создаем кошелек NEAR для тестовой сети Shardnet.
Сохраняем мнемоническую фразу в надежном месте. Запоминаем имя кошелька, он же Account_ID (прим. kauman.shardnet.near).
У вас на балансе должно быть 559 токенов $NEAR. У меня их уже нет, так как они находятся в стейкинге.
Задание 2 | Часть 1 | Установка ноды
git clone https://github.com/near/nearcore cd nearcore git fetch
Проверяем коммит. По состоянию на 29 июля, актуальный коммит:
c1b047b8187accbf6bd16539feb7bb60185bdc38
Актуальный коммит можно найти по ссылке https://github.com/near/stakewars-iii/blob/main/commit.md или в discord канале https://discord.gg/rwT6EKXcpU (#stake-wars-announcements)
git checkout c1b047b8187accbf6bd16539feb7bb60185bdc38
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 директорию. Если вы используете другого пользователя, в сервисном файле меняем root на имя вашего пользователя.
printf "[Unit] Description=NEARd Daemon Service [Service] Type=simple User=root #Group=near WorkingDirectory=/root/.near ExecStart=/root/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
sudo systemctl daemon-reload sudo systemctl enable neard sudo systemctl restart neard
Устанавливаем цветные логи (для простоты, удобства и красоты)
sudo apt install ccze
journalctl -n 100 -f -u neard | ccze -A
Смотрим логи и ждем пока нода найдет пиры, загрузит хедеры и синхронизируется. Вы можете увидеть загрузку хеадеров в консоли, чтобы понимать, что все идет по плану.
Это может занимать ориентировочно 1-2 часа.
Чтобы проверить, что синхронизация прошла успешно, используем следующую команду:
curl -s http://127.0.0.1:3030/status | jq .sync_info
и смотрим на строчку syncing, она должна стать true когда синхронизации закончится (или нет, никто на этот ответ вопрос не дал, поэтому лично я просто загрузил хеадеры и на это ушло минут 5, а потом выполнил все по гайду и сутки спустя висит до сих пор "false", но это не мешает мне стать валидатором в следующую эпоху).
Задание 2 | Часть 2 | Аутентификация и создание валидатора
near login
Копируем ссылку и открываем в браузере, в котором осуществлён вход в кошелек NEAR в сети shardnet.
Вводим ACCOUNT_ID (прим. kauman.shardnet.near) и даем все необходимые разрешения. Страница выдаст ошибку - не пугаемся.
Возвращаемся в консоль и вводим имя кошелька ACCOUNT_ID (прим kauman.shardnet.near) и жмём enter.
Вы должны увидеть сообщение об успешной авторизации.
Если после ввода ничего не происходит, попробуйте подключиться к серверу другим методом. Например у меня не работала авторизация когда я использовал Putty для подключения к серверу, на решения вопроса ушли целые сутки и после попытки авторизации через обычный cmd все получилось.
Для дальнейшего удобства использования команд, создаем переменные моникера, ID пула и ID аккаунта. Заменяем <MONIKER> на свой ник.
MONIKER=<MONIKER> POOL=<MONIKER>.factory.shardnet.near ACCOUNT_ID=<MONIKER>.shardnet.near
MONIKER=kauman POOL=kauman.factory.shardnet.near ACCOUNT_ID=kauman.shardnet.near
Вводим значения по одному и проверяем значения переменных.
echo "export MONIKER="${MONIKER}"" >> $HOME/.bash_profile echo "export POOL="${POOL}"" >> $HOME/.bash_profile echo "export ACCOUNT_ID="${ACCOUNT_ID}"" >> $HOME/.bash_profile source $HOME/.bash_profile echo -e "\nmoniker > ${MONIKER}.\n" echo -e "\npool > ${POOL}.\n" echo -e "\naccount_id > ${ACCOUNT_ID}.\n"
near generate-key $POOL
Заходим в файл и меняем слово private_key на secret_key (у меня уже изменено)
Так же копируем сразу ваш public_key в текcтовик для дальнейшего использования
nano ~/.near-credentials/shardnet/$POOL.json
Нажимаем Ctrl + X и подтверждаем изменения
Копируем ключ в папку shardnet'a
cp ~/.near-credentials/shardnet/$POOL.json ~/.near/validator_key.json
sudo systemctl daemon-reload sudo systemctl enable neard sudo systemctl restart neard
Задание 3 | Настройка стейкинг пула
Вызываем стекинг пул фэктори, создаем и разворачиваем новый стекинг пул.
Заменяем <MONIKER> на ваш. (прим. kauman)
Заменяем <ACCOUNT_ID> на ваш. (прим. kauman.shardnet.near)
Заменяем <public key> на ранее скопированный из файла validator_key.json
near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "<MONIKER>", "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
Для изменения комиссии пула используем следующую команду
near call $POOL update_reward_fee_fraction '{"reward_fee_fraction": \ {"numerator": 1, "denominator": 100}}' --accountId $ACCOUNT_ID \ --gas=300000000000000
При условии корректного исполнения программы, выведется хэш транзакции и ссылка на транзакцию в эксплорере:
Теперь можем застейкать еще токенов. Не стейкайте все токены, чтобы оставить не много на комиссию, рекомендованный размер ~500 $NEAR.
near call $POOL deposit_and_stake --amount 500 --accountId $ACCOUNT_ID \ --gas=300000000000000
Задание 4 | Проверяем валидатора
Найти своего валидатора можно в эксплорере:
https://explorer.shardnet.near.org/nodes/validators
Использовав поиск по имени (прим. kauman.factory.shardnet.near)
или использовать консоль с командой и найти себя
near proposals
Список полезный команд
Предложение валидатора указывает на то, что он хотел бы войти в набор валидатора, чтобы предложение было принято, оно должно соответствовать минимальной цене места. Команда:
near proposals
Cписок активных валидаторов в текущую эпоху, количество произведенных блоков, количество ожидаемых блоков и скорость онлайн. Используется для мониторинга наличия проблем у валидатора. Команда:
near validators current
Валидаторы, чьё предложение было принято одну эпоху назад, и которые войдут в набор валидаторов в следующую эпоху. Команда:
near validators next
journalctl -n 100 -f -u neard | ccze -A
Частые ошибки | Ответы на вопросы | Помощь
Q: Ввёл команду для просмотра логов и не могу выйти. Как перестать смотреть логи? Как остановить логи?
A: CTRL + C
Q: Как проверить версию ноды?
A: Используем команду
curl -s http://127.0.0.1:3030/status | jq .version
Q: Как проверить делегатора?
A: Используем команду
near view $POOL get_accounts '{"from_index": 0, "limit": 10}' --accountId $ACCOUNT_ID
Q: Где найти сайт кошелька?
A: https://wallet.shardnet.near.org/
Q: Где найти эксплорер (explorer)?
A: https://explorer.shardnet.near.org/
sudo systemctl restart neard