July 28, 2022

Інструкція із встановлення ноди NEAR: Stakewars epizode ІІІ

Що таке NEAR: Stakewars?

Якщо у вас сьогодні немає місця валідатора в основній мережі, і ви хотіли б його отримати, Stake Wars може підтримати вас у вдосконаленні ваших навичок і компетенції з керування вузлом NEAR, а також надасть вам доступ до винагород, які сприятимуть економіці вашого вузла валідатора.

Якщо ви новачок у спільноті та хотіли б дізнатися більше про те, що означає запустити вузол перевірки, Stake Wars пропонує вам ігровий майданчик і підтримку, яка допоможе вам ближче познайомитися з NEAR.

Для початку вам потрібно подати заявку на участь за посиланням.

Потім потрібно виконати завдання по встановленню ноди.

Завдання 1.1. Вибираємо та арендуємо сервер.

Нам пропонують ось такі сервера:

Amazon Web Services
Google Cloud Platform
Microsoft Azure
IBM Cloud
DigitalOcean
Hetzner

Але не обов'язково брати сервер саме з цього списку.

Я вибрала сервер Contabo, так як вже знайома з ним.


Після того, як ви визначились з сервером, обираємо тарифний план.
Я зупинилася на цьому тарифному за 15 євро, ви ж можете вибрати дешевше, або ж дорожче.

Доречі, ось рекомендовані характеристики для вашої ноди.

CPU: 4 CORE
RAM: 8 GB
HDD/SSD: 500 GB

Тепер потрібно підготувати сервер до роботи.
Для цього вводимо команди по одній.

Оновлення ОС.

sudo apt update && sudo apt upgrade -y

Встановлюємо інструменти розробника Node.js та інші пакети.

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

Встановлюємо 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.

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

Завдання 1.2. Встановлюємо ноду.

Копіюємо файли.

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

Тепер нам потрібен актуальний комміт, знайти його ви можете за посиланням.

git checkout 0d7f272afabc00f4a076b1c89a70ffc62466efe9

Білдимо раст код.

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

Запускаємо сервіс.

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

Завдання 1.3. Створюємо гаманець.

Для створення гаманця переходио за посиланням.

Потрібно вигадати ім'я свого гаманця.

Зберігаємо мнемонічну фразу.

Після створення гаманця нам нарахують тестові токени Near.

2. Авторизовуємось в терміналі.

Прописуємо в консолі.

near login

Нажимаємо n, потім Enter.

Копіюємо посилання, яке нам видали та вставляємо в браузер в якому створювали свій гаманець.

Нажимаємо Next, потім підключаємо і прописуємо ім'я свого гаманця, наприклад irinaglimm1989.shardnet.near.
Потім нажимаєпо продовжити.
В нас має з'явитись ось така сторінка.

Цю сторінку ми можемо закрити.

Повертаємось в консоль і пишемо ім'я свого гаманця.

Створюємо ключ валідатора.

near generate-key <pool_id>

Де <pool_id> - це irinaglimm1989.factory.shardnet.near, irinaglimm1989 міняєте на своє ім'я.

Відкриваємо файл.

nano ~/.near-credentials/shardnet/<pool_id>.json

Тут також замінюємо <pool_id> на свій.

У відкритому файлу шукаємо 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="<accountId>" --amount=30 --gas=300000000000000
  • <pool_id> — замінюємо <pool_id> на свій, наприклад irinaglimm1989.factory.shardnet.near, irinaglimm1989 міняєте на своє ім'я.
  • <account_id> — ім’я гаманця, який ви створили, наприклад irinaglimm1989.shardnet.near, irinaglimm1989 міняєте на своє ім'я.
  • <public_key> — ваш публічний ключ з файлу файлаvalidator_key.json
  • reward_fee_fraction — скільки валідатор буде брати комісії

Тепер потрібно закинути трішки токенів в стейкінг пул.

near call <pool_id> deposit_and_stake --amount <amount> --accountId <account_id> --gas=300000000000000
  • <pool_id> — замінюємо <pool_id> на свій, наприклад irinaglimm1989.factory.shardnet.near, irinaglimm1989 міняєте на своє ім'я.
  • <amount> — кількість токенів Near
  • <account_id> — ім'я гаманця з якого будуть списуватись токени

4. Інструменти для моніторингу та перевірки вузла.

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

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

Версія вашого вузла.

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

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

near view <your pool>.factory.shardnet.near get_accounts '{"from_index": 0, "limit": 10}' --accountId <accountId>.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.prev_epoch_kickout[] | select(.account_id | contains ("<POOL_ID>"))' | jq .reason

Перевірка створених та очікуваних блоків.

curl -s -d '{"jsonrpc": "2.0", "method": "validators", "id": "dontcare", "params": [null]}' -H 'Content-Type: application/json' 127.0.0.1:3030 

Нижче посилання на інші завдання та контакти проекту.

Мої контакти

Discord: IrinaGlim89#8696

Останнє оновлення: 28.07.2022