![]() |
Near | Testnet - установка ноды
Near | Testnet - установка ноды
Выполняем команды по очереди, внимательно все копируя! Требования к серверу
Лично я арендовала сервер на Hetzner CX51 и добавила 200 гб памяти (буду следить за использованием ресурсов) по стоимости вышло 40 евро. Первое задание Код:
sudo apt update && sudo apt upgrade -y Второе задание Код:
lscpu | grep -P '(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )' > /dev/null \ Код:
sudo apt install python3-pip Код:
sudo apt install clang build-essential make Код:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Код:
git clone https://github.com/near/nearcore Код:
git checkout <commit> Компилируем бинарники nearcore Код:
cargo build -p neard --release --features shardnet Код:
./target/release/neard --home ~/.near init --chain-id shardnet --download-genesis
Находятся эти файлы по такому пути: cd /root/.near/ Перемещаем config.json Удаляем старый конфиг файл и выкачиваем с гитхаба актуальный: Код:
rm ~/.near/config.json Код:
sudo apt-get install awscli -y Код:
cd ~/nearcore Код:
sudo tee /etc/systemd/system/neard.service > /dev/null <<EOF Код:
[Unit] Запускаем сервисный файл: Код:
sudo systemctl daemon-reload Теперь устанавливаем "ccze", тулза, необходимая для красивого отображения логов: Код:
sudo apt install ccze Код:
journalctl -n 100 -f -u neard | ccze -A |
Теперь нам необходимо создать кошелек, валидатора и застейкать монет:
Останавливаем сервис: Код:
sudo systemctl stop neard Идем в терминал: Код:
near login Нам среди прочего текста выдаст ссылку - копируем ее и вставляем во вкладку браузера, где вы залогинились в свой кошелек, даем доступ, перекинет на пустую страницу - отлично, идем в терминал - вписываем имя кошелька (выглядит так: ХХ.shardnet.near). Далее я буду называть "ХХ" - именем! Создаем файл validator_key.json Генерируем ключ: Код:
near generate-key <pool_id>.factory.shardnet.near Код:
cp ~/.near-credentials/shardnet/<pool_id>.factory.shardnet.near.json ~/.near/validator_key.json Код:
vi ~/.near/validator_key.json Меняем private_key на secret_key Вот так будет выглядеть Ваш файл: Код:
{ Код:
cat ~/.near/validator_key.json |
Задание 3
Создаем стейкинг пул Код:
near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "<pool name>", "owner_id": "<accountId>", "stake_public_key": "<public key>", "reward_fee_fraction": {"numerator": 5, "denominator": 100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="<accountId>" --amount=30 --gas=300000000000000 Код:
near call <pool_id> deposit_and_stake --amount <amount> --accountId <accountId> --gas=300000000000000 Задание 4 В этом задании нам необходимо познакомится с мониторингом ноды и установить RPC на порт 3030. Проверка логов: Код:
journalctl -n 100 -f -u neard | ccze -A Обычно RPC используется для проверки статистики валидатора, версии узла и просмотра доли делегатора, хотя его можно использовать для взаимодействия с блокчейном, учетными записями и контрактами в целом. Подробнее о многих командах и о том, как их использовать, можно узнать здесь: https://docs.near.org/api/rpc/introduction Для работы RPC необходимо открыть порт 3030 (сразу откроем еще несколько, которые могут Вам понадобиться для дальнейших заданий) Сервис должен быть остановлен (или его потом нужно будет перезапустить для правильной работы): Код:
sudo ufw allow 22 Идем на любой сайт из гугла по запросу "проверить открыты ли порты на сервере", например этот, вводим свой айпи и нужный порт. Устанавливаем вспомогательную тулзу JQ Код:
sudo apt install curl jq Код:
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 -r -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>"))' Задание 5 В этом задании необходимо написать свой собственный гайд, в котором детально описать как выполнять задания 1-4. Разместить свою статью на популярном ресурсе, например Медиум. Это задание нужно отправить на проверку, заполнив форму. В нее нужно прикрепить ссылку на Вашу статью. Задание 6 В этом задании нужно создать скрипт, который будет подавать Ваш пул в активный сет валидаторов, а так же настроить джобу. Для начала создаем папку/директорию, в которой будет храниться файл со скриптом и директорию для логов: Код:
mkdir /root/scripts Код:
vi /root/scripts/ping.sh Код:
#!/bin/sh Код:
#<YOUR_POOL_ID> - заменить на имя ХХ Код:
chmod +x root/scripts/ping.sh Код:
crontab -e Код:
0 */2 * * * sh /root/scripts/ping.sh Код:
cat root/logs/all.log Задание 7 В этом задании нужно провести работу с данными, которые генерирует блокчейн. Тут нет строгих критериев, лично я попробую выполнить это задание, используя прометеус и графану. Постараюсь написать гайд по этому заданию отдельно. А пока даю Вам ссылку на оф доки с описанием задания, если у Вас есть идеи и навыки - дерзайте! Удачи!) |
Задание 8
В этом задании необходимо развернуть смарт-контракт, который позволит разделить награды на два аккаунта. Устанавливаем wasm32-unknown-unknow: Код:
rustup target add wasm32-unknown-unknown Код:
git clone https://github.com/zavodil/near-staking-pool-owner Код:
cd near-staking-pool-owner/contract При необходимости измените путь к файлу .wasm Код:
NEAR_ENV=shardnet near deploy <OWNER_ID>.shardnet.near --wasmFile target/wasm32-unknown-unknown/release/contract.wasm Код:
CONTRACT_ID=<OWNER_ID>.shardnet.near Код:
CONTRACT_ID=<OWNER_ID>.shardnet.near https://github.com/near/stakewars-ii.../split-log.png Задание 9 Для этого задания необходимо пробраться в активный сет валидаторов, производить блоки и иметь аптайм не менее 70%. Убедитесь, что порт 3030 открыт на Вашем сервере Для того, что бы отчитаться за задние нужно заполнить форму, в которую прикрепить ссылку http://<IP Address>:3030/status (заменить на свой айпи) и скрин с этого сайта, где видно, что Ваш аптайм выше 70% Задание 10 Тут нам делать ничего не нужно, это просто делегация токенов от команды тем нодам, у которых аптайм выше 60% за последние эпохи. |
Задание 11
Тут нужно сделать бэкап ноды, ставим 2ю ноду либо в другую папку, либо на новый сервис, потом идем в старую ноду: ЕСЛИ она на другом сервере: заходим через файловую сессию, качаем себе файлы validator_key.json и node_key.json (папка .near) и копируем их в папку root на новом сервере ЕСЛИ она та том же сервере: находим файлы validator_key.json и node_key.json (папка .near) и просто запоминаем к ним путь Теперь в терминал новой ноды(выполняем команды внимательно, так как нужно будет отправить скрин в отчет выполнения всех этих команд подряд): Код:
cd .near https://img4.teletype.in/files/3f/d5...7766a1b5fc.png Отчет: вот такой скрин, желательно одной фоткой)) форма другая тут Задание 12 Написать скрипт для авто бэкапа ноды Идем в терминал: создаем директорию: Код:
mkdir /root/reserve Код:
vi backup.sh Код:
#!/bin/bash В этом задании мы должны настроить джобу, которая будет выполнять скрипт бекапа раз в определенное время, в скрипте есть строка, которая отправляет информацию в сервис https://healthchecks.io/ , он в свою очередь умеет оповещать Вас по почте в том случае, если он не получил нужную информацию. Получается такая схема:
Идем на сайт https://healthchecks.io/ Регистрируемся, вписываем почту, на почту прийдет письмо, переходим по ссылке из него, видим такое: https://img2.teletype.in/files/94/98...23987bcbae.png Ссылка посередине скрина - необходимая Вам, копируем ее и вставляем в скрипт вместо <URL> Теперь нужно настроить крон табу (для отчета это не требуется, но если вы хотите, что бы скрипт бекапа работал на вашем сервере - делайте) Код:
crontab -e Задание 13 Настроить NEAR Validator kuutamo Задание 14 В этом задании нам предлагают настроить оповещения на почту, со следующим текстом: "Баланс Вашего валидатора "имя валидатора" на данный момент "кол-во" ниаров" Пометка: будет работать этот скрипт в том случае, если у вас на сервере настроены нод экспрортеры и прометеус. Для начала идем в дискорд проекта Notifi, ветка #integration-requests, заполняем форму на получение креденций, они прийдут Вам на почту, когда менеджер обработает запрос. Создаем директорию для будущего скрипта, я ее создала в папке /root/scripts: Код:
mkdir notifi Код:
npm init -y Код:
npm install typescript --save-dev Код:
npx tsc --init --rootDir src --outDir build \ Код:
mkdir src Код:
vi tsconfig.json https://img2.teletype.in/files/12/a5...0dbd38e7ae.png Теперь берем скрипт (у меня в телеграмме) и кладем его в директорию /root/scripts/notifi/src Заходим в него через вим и меняем на свои значения: Код:
cd /root/scripts/notifi/src Код:
cd /root/scripts/notifi Устанавливаем доп тулзы: Код:
sudo npm i @notifi-network/notifi-node Код:
npm run start Отчет: заполняем эту форму, в нее отправляем скрин присланного письма от Notifi Задание 15 Тут нужно доработать нашу графану вот такими показателями:
А так же показатели вашего "железа" Отчет: форма вот тут |
Команды
Посмотреть proposals: Код:
near proposals Код:
near validators current Код:
near validators next Код:
near call <pool_id> deposit_and_stake --amount <amount> --accountId <accountId> --gas=300000000000000 Количество указывается в yoctoNEAR. Код:
near call <pool_id> unstake '{"amount": "<amount yoctoNEAR>"}' --accountId <accountId> --gas=300000000000000 Код:
near call <pool_id> unstake_all --accountId <accountId> --gas=300000000000000 Анстейкинг занимает 2-3 эпохи Код:
near call <pool_id> withdraw '{"amount": "<amount yoctoNEAR>"}' --accountId <accountId> --gas=300000000000000 Код:
near call <pool_id> withdraw_all --accountId <accountId> --gas=300000000000000 Код:
near view <pool_id> get_account_total_balance '{"account_id": "<accountId>"}' Код:
near view <pool_id> get_account_unstaked_balance '{"account_id": "<accountId>"}' Код:
near view <pool_id> is_account_unstaked_balance_available '{"account_id": "<accountId>"}' Код:
near call <pool_id> pause_staking '{}' --accountId <accountId> Код:
near call <pool_id> resume_staking '{}' --accountId <accountId> Код:
near call <pool_id> update_reward_fee_fraction '{"reward_fee_fraction": {"numerator": 1, |
Спасибо за внимание! И поздравляю с новой нодой! Smart Hamster Nodes Studio YouTube канал тут! Наша новостная группа тут! Курс "Обучение по нодам" тут! https://img2.teletype.in/files/96/08...9efe333fd0.png |
Текущее время: 03:23. Часовой пояс GMT +2. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: vica.pro