Near | Stake Wars: Episode III
Гаманець - aspirinecrypto.near
Зміст
- Завдання 1.1. Створюємо гаманець
- Завдання 1.2. Встановлюємо NEAR-CLI
- Завдання 2.1. Встановлюємо залежності
- Завдання 2.2. Ставимо ноду
- Завдання 2.3. Активовуємо валідатора
- Завдання 3. Встановлюємо стейкінг пул
- Завдання 4. Моніторинг
- Завдання 5. Публікуємо статтю
- Завдання 6. Завдання крон для пінгу
- Завдання 9. Відкрити порт 3030 та забеспечити аптайм 70%
6. Посилання
Про проеєкт
NEAR — це проста, масштабована та безпечна блокчейн-платформа, розроблена для забезпечення найкращого можливого досвіду для розробників і користувачів, необхідного для подолання розриву на шляху до загального впровадження децентралізованих програм.
На відміну від інших блокчейнів, ця мережа була створена з нуля, щоб бути найпростішою у світі як для розробників, так і для їхніх кінцевих користувачів, але водночас забезпечує масштабованість, необхідну для обслуговування цих користувачів. Зокрема, NEAR розроблено, щоб полегшити: Створення децентралізованих програм, навіть якщо ви звикли створювати лише за допомогою «традиційних» концепцій веб-сайтів або програм. Інтегровані користувачі з безперебійним досвідом, навіть якщо вони ніколи не користувалися крипто, токенами, ключами, гаманцями чи іншими артефактами блокчейну. Плавно масштабуйте свою програму – базова платформа автоматично розширює ємність за допомогою сегментування без додаткових витрат чи зусиль з вашого боку.
Детальніше про проєкт можна почитати на wiki.near.org
Про Stake Wars
Stake Wars — це програма, яка допомагає спільноті ознайомитись із тим, що означає бути валідатором NEAR, і дає спільноті ранній шанс отримати доступ до виробника лише фрагментів.
Stake Wars пропонує винагороди, які підтримують нових учасників, які хочуть приєднатися до основної мережі як валідатор, починаючи з кінця вересня 2022 року.
Метою Incentivized Testnet є стрес-тестування мережі, щоб переконатися, що Mainnet є надійною та оптимізованою для високої продуктивності.
Нагороди
Stake Wars складається з технічних завдань, які вам пропонується вирішити. Кожне завдання дає вам доступ до нагород, які можуть включати:
- Токени NEAR, делеговані на ваш обліковий запис основної мережі, починаючи з кінця вересня 2022 року. Загальна кількість делегованих токенів, яку може отримати кожен учасник, обмежена 50 000 NEAR.
- Токени NEAR, від 30 до 500 на одного учасника в залежності від виконаних завдань
Сервер
Для перевірки процесора на підтримку AVX вводимо наступну команду:
lscpu | grep -P '(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )' > /dev/null \ && echo "Supported" \ || echo "Not 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
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), завантаженні знімка, синхронізації його з фактичним станом мережі, а потім активації вузла як валідатора.
# Встановити інструменти розробника: 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
# Активуємо середовище 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