# Установка ноды в Masa Bittensor Testnet

By [Investment Hollow](https://paragraph.com/@invhollow) · 2024-07-15

node, masa, ai, blockchain, incentivized testnet

---

И снова с вами на связи Инвестиционная лощина. Сегодня мы будем ставить ноду в нашем любимом проекте Masa. Этот проект уже неоднократно кормил нас и продолжает это делать. Недавно вышел анонс о старте новой награждаемой кампании Masa Bittensor Testnet, который редназначен для проверки мощности, устойчивости и производительности подсети Masa Bittensor. Майнеры будут предоставлять данные и вычислительные ресурсы подсети Masa Bittensor.

Условия ивента
--------------

Ивент проходит с 9 по 23 июля 2024 г., поэтому не откладываем и сразу идем ставить! А теперь еще несколько подробностей об условиях мероприятия. 256 майнеров, показавших наилучшие результаты в любой момент времени, получат право на часть вознаграждения в размере 3 000 000 токенов MASA. Чем выше ваши показатели, тем больше вознаграждений вы можете заработать. Производительность зависит от таких факторов, как объем данных, их качество и вычислительная мощность, которую майнеры предоставляют сети. Все вознаграждения рассчитываются программно в течение всего времени проведения тестовой кампании. Финальные рассчеты будут представлены на Дюне 7 августа, а сами награды будут распределены в 4 квартале 2024 г.

### Требования к железу

*   2 vCPUs,
    
*   8GB RAM,
    
*   10GB storage,
    
*   open ports 4001 (TCP/UDP) and 8091 (TCP).
    

Процедура установки
===================

> **Дисклеймер**. Нода полна разных странных, глупых и загадочных ошибок. Поэтому если у вас происходит где-то затык и не понимаете, что не так, вступайте в [канал](https://t.me/investmenthollow) и задавайте вопросы в нашем чате.

1\. Создаем начальное окружение проекта
---------------------------------------

### Клонируем репозиторий проекта

Клонируем репозиторий на наш сервер и переходим в скачанную папку с помощью `cd`:

`git clone https://github.com/masa-finance/masa-bittensor.git`

`cd masa-bittensor`

### Создаем виртуальную среду

Теперь вам нужно создать виртуальную среду, в которую мы будем устанавливать все необходимые зависимости. Это можно сделать с помощью конды, как советуют разработчики,

`conda create --name bittensor python`

но у меня конда не установлена, да и не долюбливаю я ее, поэтому я сделаю через классический способ, напрямую через модуль venv самого питона:

`python3 -m venv venv`

### Активируем виртуальную среду

Данный шаг нужно выполнять каждый раз, когда вы логинитесь на сервер заново.

`conda activate bittensor`

Аналогично, чтобы активировать виртуальную среду средствами python, вводим

`source venv/bin/activate`

В результате вы должны увидеть нечто подобное:

![](https://storage.googleapis.com/papyrus_images/3f8a057129c10b448f9de0417c1b392d.png)

Как выглядит активированная вирт. среда

2\. Устанавливаем необходимые пакеты
------------------------------------

Из корня проекта (вы должны быть внутри папки masa-bittensor) запускаем:

`pip install -r requirements.txt`

Дальше просят задать переменную окружения в корень репозитория:

`export PYTHONPATH=$PYTHONPATH:$(pwd)`

![](https://paragraph.xyz/editor/callout/information-icon.png)

**Прим.:** Данную переменную `PYTHONPATH` необходимо задавать при старте каждой терминальной сессии (при каждом перелогине на сервер).

3\. Создаем кошелек
-------------------

### Cоздание холодного кошелька

Создаем холодный кошелек с именем `miner`:

`btcli wallet new_coldkey --wallet.name miner`

### Создание горячего кошелека

Создаем горячий кошелек (`default`) для созданного на предыдущем шаге кошелька `miner`:

`btcli wallet new_hotkey --wallet.name miner --wallet.hotkey default`

> **Прим.** Холодные и горячие ключи - это типы кошельков, используемых в сети Masa. Холодный ключ - это кошелек, который не подключен к интернету, что обеспечивает более высокий уровень безопасности при хранении активов. Горячий ключ - это кошелек, подключенный к интернету, что позволяет проводить более доступные и частые транзакции (со слов ИИ, который отвечает на вопросы в дискорде проекта 😅)

### Проверка кошельков

`make list-wallets`

Вы должны увидеть один кошелек - `miner`, а под ним горячий кошелек `default`.

4\. Пополнение кошелека
-----------------------

### Получите токены

Воспользуйтесь [**формой**](https://forms.gle/ac6CFscdTQz1NNJo7), чтобы попросить токен tTAO!

5\. Регистрируем кошелек
------------------------

В `Makefile`, убедитесь, что `NETUID` и `SUBTENSOR_ENVIRONMENT` установлены так, как показано на скриншоте:

![](https://storage.googleapis.com/papyrus_images/c559069cfbf94320ced230cd54f3422b.png)

Регистрация кошелька в тестнете
-------------------------------

Регистрируем наш кошелек `miner` в подсеть `1`:

`make register-miner`

Вводим netuid `1` и нажимаем Enter. Когда предложат продолжить, пишем `y` и еще раз нажимаем Enter. Подтверждаем наш пароль и нажимаем Enter. Ждем, пока майнер зарегистрируется в подсети.

![](https://paragraph.xyz/editor/callout/information-icon.png)

**Прим.:** Вам может встретиться ошибка о превышении блоков. Это нормально, немного подождите (примерно 1 час). Также, если сеть перегружена, то вам может быть недостаточно того **tTAO**, что вам послали админы: обычно они посылают по 5, а из-за загрузки активация стоит больше 5. Тут или ждать, или клянчить еще тестового токена.

6\. Запускаем работу протокола
------------------------------

В данной части документации разбирается процесс установки и запуска вашей собственной ноды Masa при помощи Докера. Если испытываете затруднения с установкой, пишите в чате [канала](https://t.me/investmenthollow).

### Требования

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

▼Требуемые компоненты

*   [**Docker**](https://www.docker.com/products/docker-desktop)
    
*   [**Docker Compose**](https://docs.docker.com/compose/install/): Docker Desktop на Windows и Mac поставляется с Docker Compose. На Линуксе, возможно, придется установить отдельно.
    
*   [**Git**](https://git-scm.com/downloads)
    

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

Клонируем к себе репозиторий ноды (желательно выйти из текущей директории, чтобы не клонировать один репозиторий внутрь другого):

`cd ..`

`git clone https://github.com/masa-finance/masa-oracle.git`

`cd masa-oracle`

### Конфигурация окружения

Создайте файл .env в корне проекта. В этом файле будут храниться переменные окружения, необходимые ноде, такие как BOOTNODES и RPC\_URL.

Пример `.env`:

`BOOTNODES=/ip4/35.223.224.220/udp/4001/quic-v1/p2p/16Uiu2HAmPxXXjR1XJEwckh6q1UStheMmGaGe8fyXdeRs3SejadSa`  
`RPC_URL=https://ethereum-sepolia.publicnode.com`  
`ENV=test`  
`TWITTER_USER="your_username"`  
`TWITTER_PASS="your_password"`  
`TWITTER_SCRAPER=True`

![](https://paragraph.xyz/editor/callout/information-icon.png)

**Прим.:** Не забудьте заменить `TWITTER_USER` и `TWITTER_PASS` на данные вашего твиттера.

### Создание докер образа

Теперь создаем докер образ с помощью следующей команды:

`docker-compose build`

![](https://paragraph.xyz/editor/callout/information-icon.png)

Внимание. Если у вас установлен Docker Compose новой версии, то вместо `docker-compose build`, вам нужно будет написать `docker compose build`. Аналогично во всех последующих командах не забывайте заменять дефис на пробел.

### Запуск ноды MASA

Методом проб и ошибок было выяснено, что гайд разрабов не идеальный и чтобы ваша нода запустилась, нужно создать папку .masa-keys и дать ей полные права:

`mkdir .masa-keys && chmod -R 777 .masa-keys`

Чтобы запустить ноду опять используем Docker Compose:

`docker-compose up -d`

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

### Проверка ноды

После старты ноды вы можете проверить логи для того, чтобы убедиться, что она работает корректно:

`docker-compose logs -f masa-node`

Если в самом верху логов вы увидите следующий вывод, то скорее всего на данном этапе все запустилось корректно:

![](https://storage.googleapis.com/papyrus_images/e1c25a0f50ae5c5031422ced81cc27b6.png)

### Доступ к вашим сгенерированным ключам

В процессе запуска нода сохраняет кошельки, созданные в контейнере, в папку `.masa-keys/` в папке с вашей нодой (masa-oracle).

### Пополняем баланс ноды для того, чтобы совершить операцию стейка

Нам необходимо пополнить ноду `1000` tMASA и `0.01` sepoliaETH. Чтобы получить tMASA:

`docker-compose run --rm masa-node /usr/bin/masa-node --faucet`

Чаще всего выскакивает ошибка, что фасет опустошен, поэтому альтернативным способом получения tMASA является заполнение формы. Для начала найдите свой адрес с помощью команды (он будет под логотипом Масы в самом начале логов):

`docker-compose logs -f masa-node`

Далее идем в [**форму**](https://docs.google.com/forms/d/e/1FAIpQLSc344bmJfWYcjAEyDdfKTorDsylEyNU-YppmhQNV89f90RK0w/viewform), чтобы запросить tMASA.

Чтобы получить sepoliaETH, вы можете воспользоваться одним из фасетов:

*   [https://www.infura.io/faucet/sepolia](https://www.infura.io/faucet/sepolia)
    
*   [https://sepoliafaucet.com/](https://sepoliafaucet.com/)
    
*   [https://faucet-sepolia.rockx.com/](https://faucet-sepolia.rockx.com/)
    
*   [https://sepolia-faucet.pk910.de/](https://sepolia-faucet.pk910.de/)
    

> Противная вещь заключается в том, что ни один из фасетов не даст вам тестового эфира, если вы будете закидывать его на абсолютно пустой кошелек. Поэтому делаем проще, берем какой-нибудь более менее живой кошелек, где баланс >=0.001 ETH в мейннете эфира, клеймим на него, а дальше пересылаем на адрес ноды.

### Осуществляем стейк

`docker-compose run --build --rm masa-node /usr/bin/masa-node --stake 1000`

### Рестарт ноды

Если понимаете, что с нодой что-то не то, останавливаем ее с помощью:

`docker compose down`

Далее сновая запускаем её с флагом -d: (если какие-то файлы конфигурации были изменены, то запускаем с флагом `--force-recreate`):

`docker compose up --build --force-recreate -d -p 8080:8080`

Если у вас есть графический интерфейс на сервере, то проверить правильность работы ноды можно, попробовав повзаимодействовать с ней. Для этого вам нужно перейти по ссылке [**http://localhost:8080/swagger/index.html**](http://localhost:8080/swagger/index.html**).

### Обновление ноды

Если вы хотите обновить вашу ноду (к примеру, разработчики выкатили новую версию, и попросили обновиться), вам необходимо скачать последние изменения с помощью Git, сделать новый билд и рестартовать ваши контейнеры:

`git pull`

`docker-compose build`

`docker-compose down`

`docker-compose up -d`

### Запуск майнера

Вот мы и подходим к концу, теперь надо запустить `miner`:

`make run-miner`

![](https://paragraph.xyz/editor/callout/information-icon.png)

**Прим**.: Если встречаете ошибку `ModuleNotFoundError: No module named 'masa'`, не забудьте экспортировать переменную:  
`export PYTHONPATH=$PYTHONPATH:$(pwd)`

8\. Финальная проверка
----------------------

### Проверка статуса майнера

Проверить статус работы вашего майнера:

`make overview-all`

Вы должны увидеть таблицу, которая представляет собой данные о работе созданного нами майнера.

### Регистрируемся для получения наград

Регистрируем нашего майнера с помощью следующей [**формы**](https://cform.coinlist.co/forms/ce29ed23-0d2f-4ec4-9d91-08a19d553284) для того, чтобы в последующем претендовать на награды!

Заключение
==========

Не самая простая нода, но надеюсь, вы все осилили. А если нет, то не отчаивайтесь и отправляйтесь прямиком в наш чат и задавайте вопросы. Если вам понравился гайд, присоединяйтесь к каналу нашего сообщества [Investment Hollow](https://t.me/investmenthollow) в телеграм - там мы сможем ответить на ваши вопросы, а также в нем мы публикуем информацию об актуальных тестнетах, нодах, и интересных проектах.

* * *

**  
Investment Hollow** - компания единомышленников, которая видит в криптоиндустрии будущее, а также хороший источник заработка. Ежедневно анализируем рынок в поисках интересных проектов для инвестиций.

Мы всегда рады новым участникам как с опытом в сфере блокчейна и криптовалют, так и без. Присоединяйтесь к нашему сообществу: поможем, чем сможем и двинемся вместе покорять новые вершины 💪🏼

**Поддержать канал:**

**BTC**: bc1q00tvfgf6jkzpclvveww7vqlzwfq5fpwsq3p3hj

**ETH/USDT (ERC-20)**: 0x1454908c05ce5B38AF2790d9a476FADa2485D823

**USDT (TRC-20)**: TWVNtifi4RfucTr3m1pgPjL9KPYTH5yL72

---

*Originally published on [Investment Hollow](https://paragraph.com/@invhollow/masa-bittensor-incentivized-testnet)*
