March 17

Pipe Network — ставим ноду / systemd

lvch_clan — канал не только о нодах, подписывайся



О проекте Pipe Network

Pipe Network — это децентрализованная сеть доставки контента (CDN) на базе блокчейна Solana. Она позволяет участникам без разрешений развёртывать точки присутствия (PoP) в определённых регионах, обеспечивая быстрый доступ к высококачественным медиа и приложениям в реальном времени через безопасное и масштабируемое решение

Инвест: $10M от Multicoin Capital, Solana Ventures, Robot Ventures, Meltem Demirors, Анатолий Яковенко (CEO Solana). Раунд состоялся 16 сентября 2024 года

Сайт / Discord / X.com / Cryptorank / Docs

В данный момент проходит стадия DevNet 2 и уже можно установить ноду. DevNet 2 — это по сути альфа-тестовая сеть. Как только она проявит стабильность в течение 40 дней, будет запущена тестовая сеть

На сайте нам предлагают подать заявку на оператора ноды. Форму можно найти по ССЫЛКЕ.Ноду можно поставить и без заполнения формы, но лучше отправить форму и параллельно поставить ноду


Этот гайд поможет установить и запустить ноду Pipe Network на DevNet-2 через systemd-сервис с учётом всех рекомендаций официальной документации для максимальной стабильности и безопасности

Требования к серверу

  • Ubuntu 22.04+
  • Минимально 4 GB оперативной памяти (можно настроить). Чем больше, тем больше наград
  • Не менее 100 GB свободного места на диске (можно настроить). Оптимально 200–500 GB
  • Стабильный интернет
  • Порты 80 и 443 должны быть свободны

Сервер можно арендовать на на VDSina, AEZA, Contabo, Xorek

Установка ноды

Скачиваем и устанавливаем Termius — есть версия для macOS, Windows

Подключаемся к серверу, используя данные от хостера — IP, login, password

1. Установка необходимых утилит

Обновим систему и установим нужные инструменты:

sudo apt update
sudo apt install net-tools lsof

2. Скачивание и подготовка ноды

curl -L -o pop "https://dl.pipecdn.app/v0.2.8/pop"
chmod +x pop
sudo mkdir -p /data

3. Первый запуск ноды

sudo ./pop \
  --ram 8 \
  --max-disk 500 \
  --cache-dir /data \
  --pubKey <KEY>

--ram 4 — объем оперативной памяти, который вы можете выделить на своем сервере

--max-disk 100 — максимальный объем выделяемого пространства жесткого диска, выделяемого под загрузку нодой

--pubKey <KEY> — вместо <KEY> вставляем адрес вашего кошелька Solana

Проверить сколько доступно оперативной памяти можно командой

htop

Если утилита не установлена, устанавливаем командой

sudo apt install htop

В моем случае можно использовать ~8-10 GB оперативки

Проверить свободное место на диске можно командой

df -h

В моем случае свободно 891 GB, а использовать я буду ~700

После запуска будет создан файл node_info.json. Сделаем бэкап:

cp node_info.json /root/node_info_backup.json

Этот файл будет необходим в случае, если мы решим переехать на новый сервер, например

4. Настройка пользователя и директорий

sudo useradd -r -m -s /sbin/nologin pop-svc-user -d /home/pop-svc-user 2>/dev/null || true
sudo mkdir -p /opt/pop
sudo mkdir -p /var/lib/pop
sudo mv -f /root/pop /opt/pop/
sudo chmod +x /opt/pop/pop
sudo mv -f /root/node_info.json /var/lib/pop/
sudo chown -R pop-svc-user:pop-svc-user /var/lib/pop
sudo chown -R pop-svc-user:pop-svc-user /data
sudo chown -R pop-svc-user:pop-svc-user /opt/pop

5. Создание сервисного файла

sudo tee /etc/systemd/system/pop.service << 'EOF'
[Unit]
Description=Pipe POP Node Service
After=network.target
Wants=network-online.target

[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
User=pop-svc-user
Group=pop-svc-user
ExecStart=/opt/pop/pop --ram 8 --max-disk 500 --cache-dir /data --pubKey твой_публичный_ключ --enable-80-443 --no-prompt
# Поменяй следующие параметры на свои:
# --ram 8 — количество оперативной памяти в ГБ (например, 4, 8, 16)
# --max-disk 500 — максимальный размер диска в ГБ (например, 100, 200, 500)
# --pubKey твой_публичный_ключ — твой Solana public key из кошелька (Phantom, Backpack и т.д.)
Restart=always
RestartSec=5
LimitNOFILE=65536
LimitNPROC=4096
StandardOutput=journal
StandardError=journal
SyslogIdentifier=pop-node
WorkingDirectory=/var/lib/pop

[Install]
WantedBy=multi-user.target
EOF

Обратить внимание в сервисном файле на необходимость вставить свои данные

# Поменяй следующие параметры на свои: # --ram 8 — количество оперативной памяти в ГБ (например, 4, 8, 16) # --max-disk 500 — максимальный размер диска в ГБ (например, 100, 200, 500) # --pubKey твой_публичный_ключ — твой Solana public key из кошелька (Phantom, Backpack и т.д.)

6. Настройка удобств

ln -sf /var/lib/pop/node_info.json /root/node_info.json
grep -q "alias pop='cd /var/lib/pop && /opt/pop/pop'" ~/.bashrc || echo "alias pop='cd /var/lib/pop && /opt/pop/pop'" >> ~/.bashrc && source ~/.bashrc

Эти команды упрощают работу с нодой: создают ссылку на node_info.json в /root и добавляют алиас pop для быстрого запуска бинарника из рабочей директории

7. Активация и запуск сервиса

sudo systemctl daemon-reload
sudo systemd-analyze verify pop.service && sudo systemctl enable pop.service && sudo systemctl start pop.service

8. Проверка работы

sudo systemctl status pop --no-pager
ss -tulnp | grep -E ':80|:443'
pop --status
pop --stats
pop --points

Реферальная система

Ноды могут создавать реферальные коды:

./pop --gen-referral-route  


Новые ноды могут зарегистрироваться с помощью реферального кода:

./pop --signup-by-referral-route <КОД>

Чтобы использовать мой реферальный код, необходимо ввести

./pop --signup-by-referral-route 654e0c0ea1393591

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

Значит вам надо вернуться через час)

Как работает рефералка
Тот, кто пригласил (реферер), получает 10 очков, если приглашённый узел:

  • Остаётся активным более 7 дней
  • Поддерживает репутационный рейтинг выше 0.5

Узел, создавший реферальный код, тоже должен поддерживать хороший репутационный рейтинг, чтобы рефералы считались действительными и приносили пользу сети


Эта программа со временем расширится, добавив разделение наград

Проверка статуса рефералов

  • Зайдите на сайт:
    https://dashboard.pipenetwork.com/node-lookup
  • Введите ID узла реферера в поле "Node Lookup"
  • Прокрутите вниз до раздела "Referral Stats", чтобы посмотреть данные по приглашённым нодам

Система репутации

Репутационный рейтинг ноды (от 0 до 1) рассчитывается на основе работы за последние 7 дней и состоит из трёх основных компонентов:


Оценка времени работы (Uptime Score) — 40% от общего рейтинга

  • Отчёты сначала группируются по часам, чтобы избежать перекоса из-за слишком частой отчётности
  • День считается с "хорошим покрытием", если отчёты есть хотя бы за 75% часов (18+ часов)
  • Для дней с хорошим покрытием среднее время работы взвешивается по полноте покрытия дня
  • Итоговая оценка времени работы — это средневзвешенное дневное время работы, поделённое на секунды в сутках (максимум 100%)

Историческая оценка (Historical Score) — 30% от общего рейтинга

  • Зависит от того, сколько дней из последних 7 имели хорошее покрытие
  • Пример: если 6 из 7 дней имели хорошее покрытие, историческая оценка будет 0.857 (86%)
  • Это поощряет стабильную отчётность со временем

Оценка передачи данных (Egress Score) — 30% от общего рейтинга

  • Зависит от общего объёма переданных данных за 7 дней
  • Нормируется относительно цели в 1 ТБ в день
  • Максимум 100%

Простым языком о репутационном скоре

Репутация — это показатель того, насколько хорошо твой узел (нода) работает в сети за последние 7 дней. Вот как это устроено и что делать, чтобы твой скор был высоким:
### Как считается репутация
1. **Активность каждый час**: Система смотрит, как часто твой узел отчитывается о своей работе в течение дня. День считается "хорошо покрытым", если есть данные хотя бы за 18 часов из 24 (75% времени).
2. **Среднее время работы**: Для каждого дня с хорошим покрытием считается, сколько времени узел был активен. Чем больше часов он работает, тем лучше.
3. **Итоговый скор**: Берется среднее время работы за все "хорошо покрытые" дни и делится на общее количество секунд в сутках. Плюс учитывается, сколько дней из 7 были с хорошим покрытием. Например, если 6 из 7 дней были активны, это уже 86% от максимума.
### Что делать, чтобы получить высокий скор
1. **Держи узел включенным 24/7**: Чем дольше твой узел работает без перерывов, тем лучше. Идеально — не выключать его вообще, чтобы он был активен все 24 часа каждый день.
2. **Проверяй интернет**: Убедись, что у тебя стабильное подключение. Если интернет пропадает, узел не сможет отчитаться, и это снизит твой скор.
3. **Минимум 18 часов в день**: Даже если не получается 24 часа, старайся, чтобы узел работал хотя бы 18 часов в сутки. Это минимальный порог для "хорошего покрытия".
4. **Следи за 7 днями**: Репутация считается за последнюю неделю. Если один день был плохим (например, узел был выключен), это не конец, но постарайся, чтобы остальные 6 дней были на высоте.
5. **Настрой правильно оборудование**: Убедись, что у тебя хватает места на диске (100-500 ГБ) и оперативной памяти (например, 8 ГБ), чтобы узел не тормозил и не выключался из-за перегрузки.
### Пример
Допустим, твой узел работал так:
- День 1: 24 часа (100%)
- День 2: 22 часа (92%)
- День 3: 20 часов (83%)
- День 4: 12 часов (50%, не считается)
- День 5-7: 24 часа (100%)
Из 7 дней 6 были с хорошим покрытием (больше 18 часов), и среднее время работы высокое. Твой скор репутации будет близок к 0.9 или выше (90%+), что считается отличным результатом.
### Итог
Просто держи узел включенным как можно дольше, следи за стабильностью интернета и оборудования. Чем больше дней с почти полной активностью, тем выше твой скор репутации!

Пример расчёта и заметки по этому поводу можно найти в DOCS

Получение роли в Discord

После успешного запуска ноды, мы можем получить роль DevNetPOP

Идем в Discord, ищем ветку role-request и отправляем туда сообщение в формате

NODE ID + скриншот

Получить NODE ID можно запросом

./pop --status

Полезные команды

Остановка ноды

sudo systemctl stop pop

Логи

journalctl -u pop

Перезапуск ноды

sudo systemctl restart pop

Удаление ноды

sudo systemctl stop pop
sudo systemctl disable pop
sudo rm /etc/systemd/system/pop.service
sudo systemctl daemon-reload
sudo rm -rf /opt/pop
sudo rm -rf /var/lib/pop
sudo rm -rf /data
sudo userdel -r pop-svc-user


Гайд от канала lvch_clan

Все вопросы можно задать в ЧАТЕ КАНАЛА