Гайди
August 3, 2022

Near | Stake Wars: Episode III

Гаманець - aspirinecrypto.near

Зміст

  1. Про проєкт
  2. Про Stake Wars
  3. Нагороди
  4. Сервер
  5. Виконуємо завдання

6. Посилання

Про проеєкт

NEAR — це проста, масштабована та безпечна блокчейн-платформа, розроблена для забезпечення найкращого можливого досвіду для розробників і користувачів, необхідного для подолання розриву на шляху до загального впровадження децентралізованих програм.

На відміну від інших блокчейнів, ця мережа була створена з нуля, щоб бути найпростішою у світі як для розробників, так і для їхніх кінцевих користувачів, але водночас забезпечує масштабованість, необхідну для обслуговування цих користувачів. Зокрема, NEAR розроблено, щоб полегшити: Створення децентралізованих програм, навіть якщо ви звикли створювати лише за допомогою «традиційних» концепцій веб-сайтів або програм. Інтегровані користувачі з безперебійним досвідом, навіть якщо вони ніколи не користувалися крипто, токенами, ключами, гаманцями чи іншими артефактами блокчейну. Плавно масштабуйте свою програму – базова платформа автоматично розширює ємність за допомогою сегментування без додаткових витрат чи зусиль з вашого боку.

Детальніше про проєкт можна почитати на wiki.near.org

Website | Twitter | Discord

Про Stake Wars

До змісту

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

Stake Wars пропонує винагороди, які підтримують нових учасників, які хочуть приєднатися до основної мережі як валідатор, починаючи з кінця вересня 2022 року.

Метою Incentivized Testnet є стрес-тестування мережі, щоб переконатися, що Mainnet є надійною та оптимізованою для високої продуктивності.

Нагороди

До змісту

Stake Wars складається з технічних завдань, які вам пропонується вирішити. Кожне завдання дає вам доступ до нагород, які можуть включати:

  • Токени NEAR, делеговані на ваш обліковий запис основної мережі, починаючи з кінця вересня 2022 року. Загальна кількість делегованих токенів, яку може отримати кожен учасник, обмежена 50 000 NEAR.
  • Токени NEAR, від 30 до 500 на одного учасника в залежності від виконаних завдань

Сервер

До змісту

Офіційні вимоги до сервера:

  • CPU: 4-Core CPU з підтримкою AVX
  • RAM: 8GB DDR4
  • Storage: 500GB SSD

Для перевірки процесора на підтримку AVX вводимо наступну команду:

lscpu | grep -P '(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )' > /dev/null \
  && echo "Supported" \
  || echo "Not supported"

Маємо отримати "Supported"

Підходящий сервер - Hetzner CPX31 з бонусом 20 EUR для нових користувачів

Виконуємо завдання

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

До змісту

Переходимо на сайт та тиснемо Створити акаунт.

👆 Придумуємо собі логін та тиснемо Зареєструвати ID акаунту

👆 Методом забеспечення безпеки обираємо мнемонічну фразу та тиснемо продовжити.

👆 Копіюємо мнемонічну фразу у безпечне місце та тиснемо продовжити

👆 Вводимо порядковий номер нашої фрази, в моєму випадку це #7 і слово december

Якщо бачимо таку помилку просто повторюємо спробу

Вписуємо свою сід фразу

Нам нараховано майже 50 тестових NEAR.

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

До змісту

# Оновлюємо наш сервер
sudo apt update && sudo apt upgrade -y
# Ставимо Node.js та npm
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -  
sudo apt install build-essential nodejs

Вводимо y та enter

PATH="$PATH"
# Ставимо NEAR-CLI
sudo npm install -g near-cli

Якщо бачимо таке повідомлення, оновляємо npm

#npm install -g [email protected]
# Записуємо перемінні
export NEAR_ENV=shardnet
echo 'export NEAR_ENV=shardnet' >> ~/.bashrc
echo 'export NEAR_ENV=shardnet' >> ~/.bash_profile
source $HOME/.bash_profile

Завдання 2

До змісту

2.1. Встановлюємо залежності

До змісту

Це завдання зосереджено на розгортанні вузла (nearcore), завантаженні знімка, синхронізації його з фактичним станом мережі, а потім активації вузла як валідатора.

Нагороди: 30 UNP

Додаємо всі команди по черзі:

# Встановити інструменти розробника:
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 clang llvm cargo curl jq
# Встановити Python pip:
sudo apt install python3-pip -y
# Встановіть конфігурацію:
USER_BASE_BIN=$(python3 -m site --user-base)/bin
export PATH="$USER_BASE_BIN:$PATH"
# Встановити Building env
sudo apt install clang build-essential gcc make -y
# Встановіть Rust & Cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Ви побачите наступне:

Тиснемо 1 та enter

# Активуємо середовище Rust для поточної оболонки
source ~/.profile
source ~/.cargo/env

2.2. Ставимо ноду

До змісту

# Клонувати nearcore проект із GitHub
git clone https://github.com/near/nearcore
cd nearcore
git fetch

Заходимо в даний файл, копіюємо рядок коміту та вставляємо його замість <commit>

# Приклад git checkout 68bfa84ed1455f891032434d37ccad696e91e4f5
git checkout <commit>
# Скомпілювати двійковий файл
cargo build -p neard --release --features shardnet

Ініціалізація робочого каталогу

Для належної роботи вузлу NEAR потрібен робочий каталог і кілька конфігураційних файлів. Створіть початковий необхідний робочий каталог, виконавши:

./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
# Створюємо сервісний файл
printf "[Unit]
Description=NEARd Daemon Service

[Service]
Type=simple
User=root
#Group=near
WorkingDirectory=/home/root/.near
ExecStart=/home/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

Зараз ноду запущено, ви можете побачити результати журналу на консолі. Ваш вузол має знайти однорангові вузли, завантажити заголовки до 100%, а потім завантажити блоки.

# Перевіряємо логи
journalctl -n 100 -f -u neard
# Перевіряємо синхронізацію
curl -s http://127.0.0.1:3030/status | jq .sync_info

# має бути "syncing": false

2.3. Активовуємо валідатора

До змісту

near login

Вводимо y та enter, після чого копіюємо посилання та переходимо за ним у браузері

Надаємо доступ

Вводимо свою назву гаманця

Тепер вводимо ім'я гаманця в терміналі

# Створюємо та збереігаємо перемінні для зручності
# Замість <MONIKER> вписуємо перше слово из назви гаманця, в моєму випадку aspirinecrypto

MONIKER=<MONIKER>
POOL=<MONIKER>.factory.shardnet.near
ACCOUNT_ID=<MONIKER>.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
# Створюємо ключ валідатора
near generate-key $POOL
# Заходимо в файл та змінюємо слово private_key на secret_key
nano ~/.near-credentials/shardnet/$POOL.json

Тиснемо Ctrl+o - enter - Ctrl+x

# Копіюємо ключ в папку тестнету
cp ~/.near-credentials/shardnet/$POOL.json ~/.near/validator_key.json
# Перезапускаємо ноду
sudo systemctl daemon-reload
sudo systemctl enable neard
sudo systemctl restart neard

journalctl -n 100 -f -u neard

Завдання 3. Встановлюємо стейкінг пул

До змісту

Робимо заміни у команді <MONIKER>, <ACCOUNT_ID>
<public key> беремо із validator_key.json або із ~/.near-credentials/shardnet/$POOL.json

NEAR_ENV=shardnet 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

За посиланням з консолі можна перевірити транзакцію в експлорері

Завдання 4. Моніторинг

До змісту

Шукаємо себе в експлорері

https://explorer.shardnet.near.org/nodes/validators

apt install ccze
# Перевіряємо логи
journalctl -n 100 -f -u neard | ccze -A
# Перевірка версії
curl -s http://127.0.0.1:3030/status | jq .version
# Перевірка делегаторів та ставок
near view $POOL get_accounts '{"from_index": 0, "limit": 10}' --accountId $ACCOUNT_ID
# Перевірити причину відмови валідатора (замінити <POOL_ID> на вашу адресу гаманця у форматі your_moniker.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.prev_epoch_kickout[] | select(.account_id | contains ("<POOL_ID>"))' | jq .reason
# Перевірка вироблених блоків (замінити <POOL_ID> на вашу адресу гаманця у форматі your_moniker.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>"))'

Завдання 5. Публікуємо статтю

До змісту

В даному завданні потрібно написати статтю в Medium, GitHub, Teletype чи будь якому іншому сервісі про кроки описані вище зручною для вас мовою та заповнити форму

https://docs.google.com/forms/d/e/1FAIpQLScp9JEtpk1Fe2P9XMaS9Gl6kl9gcGVEp3A5vPdEgxkHx3ABjg/viewform

Для заповнення форми потрібно також гаманець Near в mainet, тобто в основній робочі мережі.

Для створення гаманця переходимо за посиланням - https://wallet.near.org/

На всякий випадок я буду поповнювати свій гаманець для активності, оскільки далі ми створемо акаунт near, який коштує 0.1 NEAR. Для цього тиснемо кнопку отримати

Монети на гаманець можна перевести, наприклад, з біржі бінанс. Мінімальний вивід становить 0.2 NEAR. Далі переходимо до створення акаунту. Тиснемо Add a Custom Address та проходимо процедуру створення ще одного гаманця

У результаті повинно вийти 2 рахунки

Далі відправляємо форму та чекаємо оновлень.

Завдання 6. Завдання крон для пінгу

До змісту

Перевіряємо наші файли в папці .near-credentials/shardnet/ Якщо бачимо ключ private_key змінюємо його на secret_key

# Зберегти зміни - Ctrl+o та enter
# Вийти - Ctrl+x

nano /root/.near-credentials/shardnet/$MONIKER.factory.shardnet.near.json
nano /root/.near-credentials/shardnet/$MONIKER.shardnet.near.json
# Усі слова $MONIKER потрібно замінити своїм значенням та прописати
printf "#!/bin/sh
# Ping call to renew Proposal added to crontab

echo "---" >> /root/logs/all.log
date >> /root/logs/all.log
sudo NEAR_ENV=shardnet near call $MONIKER.factory.shardnet.near ping '{}' --accountId $MONIKER.shardnet.near --gas=300000000000000 >> /root/logs/all.log
sudo near proposals | grep $MONIKER >> /root/logs/all.log
sudo near validators current | grep $MONIKER >> /root/logs/all.log
sudo near validators next | grep $MONIKER >> /root/logs/all.log" > /root/scripts/ping.sh
# Даємо дозвіл на виконання файлу
chmod +x $HOME/scripts/ping.sh
# Створюємо файл cron
crontab -e
# Додаємо дані рядки в кінець файлу
MAILTO=""
0 */2 * * * sh /root/scripts/ping.sh
# Ctrl+O та enter - зберегти, Ctrl+x - вихід
# Щоб не чикати 2 години на виконання скрипта
# можна тимчасово поставити його на виконання рах в хвилину
*/1 * * * * sh /root/scripts/ping.sh

# Після зміни в крон обов'язково треба зробити перезапуск
# Перезапускаємо cron
systemctl restart cron
# Перевіряємо роботу cron
systemctl status cron

Переходимо в експлорер, тільки вставляємо свій монікер в посилання та перевіряємо свої транзакції https://explorer.shardnet.near.org/accounts/<moniker>.factory.shardnet.near

Заповняємо форму та додаємо скріншот транзакцій, бажано за 24 години - https://docs.google.com/forms/d/e/1FAIpQLScp9JEtpk1Fe2P9XMaS9Gl6kl9gcGVEp3A5vPdEgxkHx3ABjg/viewform

По мірі можливості виконання наступних завдань, буду додавати їх до цього гайду та публікувати у каналі

Завдання 9. Відкрити порт 3030 та забеспечити аптайм 70%

До змісту

# Перевіряємо чи відкритий потрт
sudo iptables -L | grep 3030

Якщо в консолі пусто, відкриваємо порт

sudo iptables -A INPUT -p tcp --dport 3030 -j ACCEPT
# Ставимо iptables-persistent
sudo apt install iptables-persistent -y

# Save current IPv4 rules?
# Yes

# Save current IPv6 rules?
# Yes

Посилання

До змісту

Телеграм канал по нодам - https://t.me/cryptoportalua
Чат для обговорення - https://t.me/cryptoportal_nodes_chat

Ресурси Near:

Website | Twitter | Discord