August 2, 2022

Инструкция по установке ноды Stake Wars: Episode III

Запуск валидатора в сети shardnet

Stake Wars — это программа, которая помогает сообществу ознакомиться с тем, что значит быть валидатором NEAR, и дает им ранний шанс получить доступ к Сhunk-only producer.

Подробнее про StakeWars можно почитать здесь и про Chunk-only produсer здесь

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

Нам необходимо будет выполнять задания помимо установки самой ноды. Первые 4 задания выполняются в процессе установки.

Вот список всех заданий.

Форма для сдачи заданий 5, 6, 7, 8 и 9.

Задание 1.

Приступим с аренды сервера для установки нашей ноды. Я использовал сервера Timeweb. Можно найти конечно же чуть дешевле, но я привык именно к ним.

Требования к серверу

  • CPU: 4-Core CPU with AVX support
  • RAM: 8GB DDR4
  • Storage: 500GB SSD

Регистрируемся по ссылке (вам в подарок дадут еще 300 рублей) и выбираем сервер Ubuntu 20.04 с такими характеристиками

Обязательно следим за заполнением объема диска, и по мере необходимости увеличиваем до нужных размеров.

Если вы выбираете другой сервер у другого хостера, то проверяйте подходит ли данный сервер для нашей ноды:

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
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
#Должна быть не ниже 18
#v18.x.x
npm -v
#Должна быть не ниже 8
#8.x.x

Ставим NEAR-CLI. Если вы зашли на сервер не под root, то необходимо использовать sudo

sudo npm install -g near-cli

Ставим окружение для сети, в которой будем работать shardnet.

export NEAR_ENV=shardnet

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

echo 'export NEAR_ENV=shardnet' >> ~/.bashrc
echo 'export NEAR_ENV=shardnet' >> ~/.bash_profile
source $HOME/.bash_profile

Устанавливаем и настраиваем Python pip

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
# загружаем установочный скрипт Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Выбираем пункт 1 по умолчанию

Активируем Rust

source ~/.profile 
source ~/.cargo/env

Создаем кошелек.

Заходим по ссылке https://wallet.shardnet.near.org/ жмем создать учетную запись NEAR.

Придумываем имя для кошелька, он же будет Account_ID.

Далее все оставляем как есть. Сохраняем мнемоническую фразу в надежном месте. Он понадобится для восстановления кошелька. После этого у нас на балансе будет 50 тестовых Near.

Задание 2. Установка ноды.

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

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

Проверяем коммит. По состоянию на 2 августа, актуальный коммит - c1b047b8187accbf6bd16539feb7bb60185bdc38. Актуальный коммит можно найти по ссылке https://github.com/near/stakewars-iii/blob/main/commit.md

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

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

journalctl -n 100 -f -u neard

Проверяем синхронизацию, вместо false должно быть true

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

Дополнительно: можно добавить цвета в вывод логов

sudo apt install ccze

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

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

Активация ноды и создание валидатора

Запускаем команду

near login

Выбираем n

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

Жмем NEXT и подключаемся. После этого вам выдаст такую страницу и это нормально.

Возвращаемся в браузер и вставляем имя нашего кошелька

имя.shardnet.near и жмем enter

Терминал должен выдать successfully.

Проверяем validator_key.json

cat ~/.near/validator_key.json

Если файл validator_key.json отсутствует, выполняем

near generate-key <pool_id>

<pool_id> — -> xx.factory.shardnet.near , где xx это имя вашего пула

У меня команда выглядит так:

near generate-key bearded.factory.shardnet.near

Копируем сгенерированный файл в папку shardnet

cp ~/.near-credentials/shardnet/YOUR_WALLET.json
~/.near/validator_key.json

YOUR_WALLET замените на ваше имя, в моём случае команда выглядит следующим образом:

cp ~/.near-credentials/shardnet/bearded.shardnet.near.json
~/.near/validator_key.json

Редактируем validator_key.json

nano ~/.near/validator_key.json
  • Отредактируйте «account_id» => xx.factory.shardnet.near, где xx — имя вашего пула.
  • Измените private_keyнаsecret_key

Содержимое файла должно соответствовать следующему шаблону:

{
 "account_id": "xx.factory.shardnet.near",
 "public_key": "ed25519:HeaBJ3xLgvZacQWmEctTeUqyfSU4SDEnEwckWxd92W2G",
 "secret_key": "ed25519:****"
}

Ctrl+S — сохранить файл
Ctrl+X — закрыть файл

Важно! В настоящий момент кошельки автоматически пополняются только на 50 near, для пополнения кошелька нужно написать в ветку Wallet_creation в дискорд.

Для того, чтобы стать валидатором. необходимо застейкать минимум 165 near

Запускаем узел валидатора

sudo systemctl daemon-reload
sudo systemctl enable neard
sudo systemctl start neard

Отображаем цветные логи

sudo apt install ccze
journalctl -n 100 -f -u neard | ccze -A

Дожидаемся полной синхронизации.

Задание 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 — здесь можно поменять, сколько валидатор будет брать комиссии, я поставил 3%.

Стейкаем немного токенов 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

При корректном стейкинге выведет хеш транзакции.

Теперь можем застейкать еще токенов. В моем случае 170.

NEAR_ENV=shardnet near call $POOL deposit_and_stake --amount 170 --accountId $ACCOUNT_ID --gas=300000000000000

Задание 4. Мониторинг и проверка

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

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

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

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

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

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

Проверка произведенных блоков. Заменить [pool_id] на адрес своего пула в формате xxx.factory.shardnet.near

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]"))'

Проверка делегатора. Заменить [account_id] на имя вашего кошелька.

near view $POOL g et_accounts '{"from_index": 0, "limit": 10}' --accountId [account_id]

Поздравляю! Вот вы и сделали первые 4-е задания.

Контакты NEAR

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

Контакты

Telegram @webstudio666

Последнее обновление: 02.08.2022