Гайд по установке ноды 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://firstbyte.ru/?from=112633
https://zomro.com/?from=333271
https://cloud4box.com/?from=56696
Вся установка проводилась на Linux Ubuntu 20.04.
Конфигурацию 4 ядра, 8Гб оперативной памяти и 500 гб диск купил за ~150$
У диска SSD уровень производительности 2300 операция в секунду, загрузка и инициализация ноды проходит быстрее
Задание 1.2. Подготавливаем сервер к работе
Для подключения к серверу я использую MobaXterm
Все команды для ввода берем по одной строке.
Устанавливаем инструменты разработчика, 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
Настраиваем окружение. Текущий тестнет проходит в сети shardnet. Вводим название сети в качестве переменной и устанавливаем все необходимое для работы валидатора.
export NEAR_ENV=shardnet
echo 'export NEAR_ENV=shardnet' >> ~/.bashrc
USER_BASE_BIN=$(python3 -m site --user-base)/bin
export PATH="$USER_BASE_BIN:$PATH"
sudo apt install curl build-essential gcc make -y
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Задание 1.3. Создаем кошелек
Переходим по ссылке и создаем кошелек NEAR для тестовой сети.
Сохраняем мнемонику в надежном месте. Запоминаем имя кошелька, он же Account_ID.
Задание 2.1. Устанавливаем ноду
Клонируем репозиторий с github нодой
git clone https://github.com/near/nearcore
cd nearcore
git fetch
Берем актуальный коммит по ссылке.
Инициализируем ноду и загружаем генезис файл
./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
Добавляем цвета к выводу логов.
Задание 2.1. Создаем валидатора
Копируем ссылку и открываем в браузере, в котором устанавливали кошелек.
Вводим Account_ID и даем все необходимые разрешения, после того как страница выдаст ошибку соединения, ваш кошелек будет пополнен.Страница выдало ошибку псолесоздания кошелька и вставки ссылки, что выше, и это нормально, старницу с ошибкой можно закрывать
Вместо [pool_id] пишем имя вашего валидатора - имя.factory.shardnet.near В моем случае amd.factory.shardnet.near
Вместо [pool_id] пишем имя вашего валидатора - имя.factory.shardnet.near.
Теперь в этом файле ищете слово private_key и меняете его на secret_key.
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
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