Skip to content

Repository files navigation

StratumTester

Десктопное приложение для диагностики качества подключения к майнинг-пулам без нагрузки на GPU

🇬🇧 English | 🇷🇺 Русский

License: PolyForm Noncommercial GitHub Release Build Status Tests

Tauri Rust Platform

Возможности • Установка • Использование • Документация • FAQ


Обзор

StratumTester — это десктопное приложение для Windows и macOS, предназначенное для диагностики качества подключения к майнинг-пулам без нагрузки на GPU. Программа эмулирует клиенты Stratum V1/V2, измеряет сетевую задержку и задержку на уровне приложения, а также генерирует подробные цветные отчёты, помогающие выявить проблемы с подключением до того, как они повлияют на вашу майнинг-ферму.

Зачем нужен StratumTester?

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

  • Неточность пинга: Стандартный ICMP ping часто не отражает реальную задержку протокола Stratum и не показывает проблемы на уровне приложения.
  • DPI и блокировки: В современных реалиях всё чаще возникают сетевые проблемы, вызванные работой систем DPI (Deep Packet Inspection) и «белыми списками». Такие ограничения могут избирательно влиять на Stratum-трафик, что невозможно заметить обычными средствами.
  • Скрытые проблемы: Многие сетевые аномалии носят плавающий характер и выявляются только при длительном непрерывном тестировании (от нескольких часов до суток).
  • Сложность тестов: Полноценное тестирование обычно требует запуска майнера с полной нагрузкой на оборудование, что неудобно для быстрой диагностики.

StratumTester позволяет не только выбрать оптимальный сервер, но и объективно сравнить различные маршруты подключения и способы обхода блокировок (VPN, прокси и т.д.), находя наиболее стабильный вариант для вашей фермы.

Для решения этих задач StratumTester предоставляет:

  • ✅ Эмуляцию клиента Stratum V1/V2 без вычислительной нагрузки
  • ✅ Двойной мониторинг: сетевой ping + задержка на уровне приложения
  • ✅ Длительное тестирование (до 24 часов) с подробным логированием
  • ✅ Визуальные отчёты с оценкой качества и рекомендациями
  • ✅ Сравнение нескольких пулов (тестирование до 10 пулов одновременно)

Возможности

🔌 Основные функции

1. Эмуляция клиента Stratum

  • Полная поддержка протокола Stratum V1 (mining.subscribe, mining.authorize, mining.notify)
  • Поддержка протокола Stratum V2 с бинарным фреймингом
  • Автоматический keep-alive для поддержания сессии
  • Интеллектуальное автопереподключение с экспоненциальной задержкой
  • Комплексное логирование событий подключения

2. Двойной мониторинг задержки

  • ICMP Ping: Сетевое время отклика (каждую 1 секунду)
  • Задержка Stratum: Измерение времени отклика на уровне приложения
  • Расчёт min/avg/max/jitter для обеих метрик в реальном времени
  • Отслеживание потери пакетов
  • TCP Ping: Резервный метод мониторинга при блокировке ICMP

3. Настройка теста

  • Простая настройка пула (адрес, порт, имя воркера, пароль)
  • Выбор протокола (Stratum V1 / V2)
  • Гибкая длительность теста (от 1 минуты до 24 часов)
  • 8 предустановленных длительностей + пользовательский вариант
  • Валидация ввода с понятными сообщениями об ошибках

4. Реалтайм дашборд

  • Индикатор статуса подключения в реальном времени
  • Отображение текущего ICMP ping и задержки Stratum
  • Таймер теста (прошло / осталось)
  • Счётчик задач (полученных от пула)
  • Счётчик разрывов соединения с классификацией
  • Процент аптайма сессии
  • Живой график задержки (Chart.js) с двумя линиями
  • Кнопка остановки теста для досрочного завершения

5. Интеллектуальная классификация разрывов соединения ⭐

Различает разные типы разрывов подключения:

  • 🔴 Сетевые ошибки - Реальные проблемы с подключением (влияют на рейтинг)
  • 🟡 Таймаут простоя пула - Ожидаемое поведение при отсутствии отправки шар (нейтрально)
  • 🔵 Запрос пула - Плановые переподключения, инициированные пулом (нейтрально)

Это обеспечивает точность диагностики - таймауты простоя не снижают оценку качества подключения.

6. Оценка сервера пула ⭐

  • Расчёт времени обработки сервером (Stratum response - ICMP RTT)
  • Определение возможностей протокола (mining extensions, vardiff и т.д.)
  • Идентификация программного обеспечения сервера
  • Оценка производительности независимо от качества вашей сети

7. Подробные отчёты о тестировании

  • Цветные оценки качества (Отлично/Хорошо/Приемлемо/Плохо)
  • Общий балл подключения (0-100)
  • Детальная разбивка метрик:
    • Качество сети (ICMP ping, потеря пакетов, jitter)
    • Производительность сервера (время обработки, возможности протокола)
    • Стабильность подключения (аптайм, классифицированные разрывы)
  • График задержки за весь период с маркерами разрывов
  • Подробный лог разрывов соединения с временными метками и классификацией
  • Форматы экспорта: PDF, PNG, HTML

8. Мультипул-тестирование ⭐

  • Тестирование до 10 пулов одновременно
  • Таблица сравнения в реальном времени
  • Общий ICMP пингер (эффективное использование ресурсов)
  • Батчинг обновлений UI (500мс) для плавной работы
  • Адаптивное управление памятью для 24-часовых тестов
  • Сравнительный отчёт с рейтингом пулов и рекомендациями

Скриншоты

Главный экран

Main Screen Настройка параметров теста и выбор пула

График задержки

Latency Graph Мониторинг метрик в реальном времени с графиком двойной задержки (ICMP и Stratum)

Отчёт о тестировании

Test Report Подробный цветной отчёт о качестве подключения с оценками

Мультипул-тестирование

Multi-Pool Testing Одновременное тестирование нескольких пулов с таблицей сравнения


Установка

Системные требования

  • ОС: Windows 10/11 (64-bit), Linux (Ubuntu 22.04+), macOS 10.15+
  • RAM: 256 МБ минимум, 512 МБ рекомендуется для мультипул-тестов
  • Диск: 50 МБ свободного места
  • Сеть: Активное интернет-подключение
  • Привилегии:
    • Windows: Права администратора (для ICMP ping)
    • Linux: Не требуются (автоматический TCP fallback), опционально CAP_NET_RAW для ICMP
    • macOS: sudo для ICMP или автоматический TCP fallback

Скачивание

  1. Скачайте последний релиз с Releases
  2. Извлеките StratumTester.exe в любую папку
  3. Запустите от имени администратора (ПКМ → "Запуск от имени администратора")

🍎 Для пользователей macOS

Из-за ограничений Apple по безопасности (требование платной подписи кода), мы не предоставляем автоматические сборки для macOS в релизах. Однако, вы можете легко и бесплатно собрать приложение самостоятельно на своем Mac.

1. Подготовка системы

Вам понадобятся стандартные инструменты разработчика:

  1. Xcode Command Line Tools: Откройте приложение "Терминал" и введите команду:

    xcode-select --install

    Следуйте инструкциям в появившемся окне.

  2. Rust (язык программирования): Введите в Терминале:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  3. Node.js (для интерфейса): Скачайте и установите версию LTS с официального сайта nodejs.org.

2. Сборка приложения

Выполните следующие команды в Терминале (копируйте по одной):

# 1. Скачайте код
git clone https://github.com/Spiceman161/Stratum-tester.git
cd Stratum-tester

# 2. Установите зависимости
npm install

# 3. Запустите сборку
npm run tauri build

☕ Сборка займет 5-10 минут.

3. Запуск

После завершения сборки ваше приложение будет находиться по адресу: src-tauri/target/release/bundle/macos/StratumTester.app

Вы можете перетащить этот файл в папку «Программы» (Applications).

⚠️ Важно при первом запуске: Так как вы собрали приложение сами, а не скачали из App Store, macOS может запросить подтверждение.

  1. Найдите StratumTester в папке Программы.
  2. Кликните по иконке ПРАВОЙ кнопкой мыши (или Ctrl+клик).
  3. Выберите Открыть в контекстном меню.
  4. В появившемся окне нажмите Открыть еще раз. Это нужно сделать только один раз. В дальнейшем приложение будет открываться как обычно.

🐧 Для пользователей Linux

Официальная поддержка предоставляется для Ubuntu 22.04 LTS и новее.

Быстрый старт (без sudo!)

StratumTester автоматически использует TCP ping fallback если ICMP недоступен. Это означает, что вы можете запускать приложение без прав администратора:

# 1. Клонировать репозиторий
git clone https://github.com/Spiceman161/Stratum-tester.git
cd Stratum-tester

# 2. Установить зависимости (один раз)
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential \
    curl wget file libssl-dev libgtk-3-dev \
    libayatana-appindicator3-dev librsvg2-dev

# 3. Запустить dev сервер (БЕЗ sudo!)
./dev.sh

Примечание: TCP ping измеряет время TCP соединения вместо ICMP Echo. Разница составляет ~2-5ms, что несущественно для диагностики пулов.

Включить ICMP (опционально)

Для более точных измерений через ICMP используйте скрипт настройки capabilities:

# 1. Собрать проект
cd src-tauri
cargo build --release
cd ..

# 2. Установить capabilities (требует sudo ОДИН раз)
sudo ./setup-icmp-linux.sh

# 3. Запустить БЕЗ sudo
./dev.sh

⚠️ Важно: Capabilities сбрасываются при пересборке! После каждого cargo build нужно повторно запускать setup-icmp-linux.sh.

Сборка release версии

# Сборка .deb и AppImage
npm run tauri build

# Готовые файлы в:
# src-tauri/target/release/bundle/deb/
# src-tauri/target/release/bundle/appimage/

📚 Полная документация: docs/LINUX-SETUP.md - устранение проблем, различия ICMP/TCP, настройка для других дистрибутивов.


Использование

Быстрый старт

  1. Запуск приложения

    • Запустите StratumTester.exe от имени администратора
  2. Настройка теста

    • Адрес пула: Введите hostname или IP пула (например, eu.stratum.slushpool.com)
    • Порт: Порт пула (по умолчанию: 3333 для V1, 3336 для V2)
    • Воркер: Имя вашего воркера (формат: wallet.worker или username.worker)
    • Пароль: Обычно "x" (опционально, значение по умолчанию предоставлено)
    • Протокол: Выберите Stratum V1 или V2
    • Длительность: Выберите от 1 мин до 24 часов
  3. Запуск теста

    • Нажмите "Start Test"
    • Следите за метриками в реальном времени на дашборде
    • График показывает ICMP (синий) и Stratum (красный) задержку
    • События разрыва отмечены красными вертикальными линиями
  4. Просмотр отчёта

    • Тест завершается автоматически или нажмите "Stop Test"
    • Изучите цветной отчёт с оценками качества
    • Экспортируйте в PDF/PNG/HTML для отправки

Мультипул-тестирование

  1. Переключитесь на вкладку "Multi-Pool"
  2. Добавьте до 10 конфигураций пулов
  3. Нажмите "Start All" для одновременного тестирования
  4. Сравните результаты в таблице реального времени
  5. Сгенерируйте сравнительный отчёт с рейтингом пулов

Рекомендуемые пулы для тестирования

Пул Stratum V1 Stratum V2
Braiins Pool stratum+tcp://stratum.braiins.com:3333 stratum+tcp://stratum.braiins.com:3336
ViaBTC stratum+tcp://btc.viabtc.com:3333 N/A
F2Pool stratum+tcp://btc.f2pool.com:3333 N/A
Antpool stratum+tcp://stratum.antpool.com:3333 N/A

Интерпретация результатов

Оценки задержки

Метрика Отлично Хорошо Приемлемо Плохо
Задержка < 50мс 50-100мс 100-200мс > 200мс
Потеря пакетов 0% < 0.5% 0.5-1% > 1%
Jitter < 10мс 10-20мс 20-50мс > 50мс
Аптайм > 99.9% 99-99.9% 95-99% < 95%

Время обработки сервером

Эта метрика показывает, насколько быстро отвечает сервер пула, независимо от качества вашей сети:

  • < 20мс (Отлично): Быстрый сервер, низкая нагрузка
  • 20-50мс (Хорошо): Нормальная работа
  • 50-100мс (Приемлемо): Сервер под нагрузкой
  • > 100мс (Плохо): Перегруженный или медленный сервер

Типы разрывов соединения

  • 🔴 Сетевая ошибка: Реальная проблема с подключением - проверьте ваш интернет/провайдера
  • 🟡 Таймаут простоя пула: Ожидаемо - пул отключает майнеров, не отправляющих шары
  • 🔵 Запрос пула: Плановое переподключение - обслуживание пула или балансировка нагрузки

Примечание: Только сетевые ошибки влияют на оценку стабильности.


Документация

Подробная документация доступна в директории docs/:

  • PRD.md - Полные требования к продукту
  • TESTING-GUIDE.md - Покрытие тестами и результаты
  • API-INDEX.md - Индекс документации модулей
  • modules/ - Детальная документация модулей

Особенности архитектуры

  • Frontend: HTML5 + Vanilla JavaScript + Chart.js 4.4.0
  • Backend: Rust с асинхронным runtime Tokio
  • Фреймворк: Tauri 2.0 (безопасные, легковесные десктопные приложения)
  • Протоколы: Stratum V1 (JSON-RPC), Stratum V2 (бинарный + Noise шифрование)
  • Тестирование: 658+ юнит и интеграционных тестов (92%+ покрытие)

FAQ

В: Почему пул отключается примерно через ~10 минут?

О: Это ожидаемое поведение. Так как StratumTester не отправляет шары (результаты майнинговых вычислений), большинство пулов отключают простаивающих воркеров примерно через ~600 секунд (10 минут) для экономии ресурсов. Это классифицируется как таймаут простоя пула (🟡 жёлтый) и НЕ влияет на оценку качества вашего подключения.

В: Нужно ли вводить настоящий адрес кошелька?

О: Нет. Вы можете использовать любое валидное имя воркера (например, test.worker1). StratumTester не отправляет шары, поэтому адрес кошелька не важен для диагностики.

В: Зачем запускать от имени администратора?

О (Windows): Права администратора требуются для создания raw ICMP сокетов для функциональности ping. Без прав администратора ICMP ping не будет работать (graceful degradation - мониторинг задержки Stratum всё равно работает).

О (Linux): На Linux можно запускать без sudo! Приложение автоматически использует TCP ping fallback, который не требует специальных прав. Для включения ICMP используйте скрипт setup-icmp-linux.sh (см. docs/LINUX-SETUP.md).

В: Могу ли я тестировать несколько пулов одновременно?

О: Да! Используйте вкладку Multi-Pool для одновременного тестирования до 10 пулов. Приложение эффективно использует общие ресурсы (единый ICMP сокет, батчинг обновлений UI) для низкого потребления CPU и памяти.

В: Безопасен ли мой пароль?

О: Да. Пароли:

  • Хранятся только в памяти во время тестовой сессии
  • Никогда не записываются на диск
  • Скрыты в логах (показываются как [REDACTED])
  • Передаются только на пул, который вы настроили

В: В чём разница между ICMP ping и задержкой Stratum?

О:

  • ICMP Ping: Сетевое время отклика (layer 3) - самый точный метод
  • TCP Ping (fallback): Время установки TCP соединения - добавляет ~2-5ms к измерению
  • Задержка Stratum: Время отклика на уровне приложения, включая обработку сервером пула

Разница между ping (ICMP или TCP) и Stratum показывает время обработки сервером.

Linux: По умолчанию используется TCP ping (не требует прав). ICMP можно включить через capabilities.

В: Работает ли это с ASIC майнерами или GPU?

О: StratumTester - это только инструмент диагностики. Он не выполняет настоящий майнинг и не управляет оборудованием. Используйте его для тестирования качества пула перед настройкой ваших майнеров.


Устранение неполадок

Проблема: "ICMP ping failed"

Причины:

  1. Не запущено от имени администратора
  2. ICMP заблокирован файрволом или пулом

Решения:

  • Запустите от имени администратора
  • Проверьте настройки Windows Firewall
  • Если пул блокирует ICMP, мониторинг задержки Stratum всё равно работает

Проблема: "Connection timeout"

Причины:

  1. Неправильный адрес пула/порт
  2. Пул недоступен или не работает
  3. Файрвол блокирует исходящие соединения

Решения:

  • Проверьте правильность адреса пула и порта
  • Убедитесь что пул онлайн (проверьте сайт пула)
  • Временно отключите файрвол для теста

Проблема: "Authorization failed"

Причины:

  1. Неправильный формат имени воркера
  2. Пул требует специфический формат воркера

Решения:

  • Проверьте документацию пула для формата имени воркера
  • Попробуйте формат: username.worker или wallet.worker
  • Убедитесь что пароль правильный (обычно "x")

Проблема: Высокое потребление памяти во время 24-часовых тестов

Ожидаемое поведение: StratumTester использует адаптивное прореживание:

  • 0-1 час: интервалы 1 секунда
  • 1-6 часов: интервалы 10 секунд
  • 6-24 часа: интервалы 60 секунд

Лимит памяти: 512 МБ всего. При превышении вы увидите предупреждение.


Известные ограничения

  1. Шифрование Stratum V2 Noise: В настоящее время заглушено (режим plaintext). Полное шифрование Noise Protocol запланировано на будущий релиз.
  2. Пресеты пулов: Требуется ручной ввод. Встроенный список пулов запланирован на v1.1.
  3. Платформа:
    • Windows 10/11: Полностью поддерживается, готовые сборки доступны в релизах
    • Linux (Ubuntu 22.04+): Поддерживается, автоматические сборки через GitHub Actions
    • macOS: Поддерживается, требуется ручная сборка (см. инструкцию в README)

Безопасность

Безопасность использования StratumTester обеспечена несколькими ключевыми факторами:

  • Открытый исходный код: Вы скачиваете приложение напрямую с GitHub. Весь код прозрачен, и любой пользователь может проверить отсутствие троянов, бэкдоров или иных уязвимостей.
  • Никакого "мусорного" ПО: В отличие от многих бесплатных утилит для майнинга, StratumTester не содержит назойливой рекламы, скрытых установщиков или сторонних надстроек. Вам не нужно сверять хеш-суммы, если вы берете бинарные файлы из официальных релизов репозитория.
  • Проверка комьюнити и LLM: Если вы не обладаете глубокими техническими знаниями, вы можете проанализировать исходный код этого репозитория с помощью современных LLM (например, Claude или ChatGPT), чтобы убедиться в его безопасности.
  • VirusTotal: Мы следим за результатами сканирования скомпилированных версий. На данный момент приложение определяется как «подозрительное» всего 3 антивирусами из 72 на портале virustotal.com. Для софта, эмулирующего работу майнера (что часто триггерит ложноположительные срабатывания), это является отличным показателем чистоты кода.

Участие в разработке

Вклад приветствуется! Пожалуйста:

  1. Форкните репозиторий
  2. Создайте feature-ветку (git checkout -b feature/amazing-feature)
  3. Закоммитьте ваши изменения (git commit -m 'Add amazing feature')
  4. Запушьте в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

См. PRD.md для понимания архитектуры проекта.


Связанные проекты

🤖 WhatsminerManager

Управляйте вашими ASIC Whatsminer удалённо через Telegram

Бот, который вдохновил этот проект! Получайте диагностику пулов, мониторинг хешрейта и удалённое управление вашими майнерами через простой интерфейс Telegram.

👉 t.me/WhatsminerManagerBot

Возможности:

  • Мониторинг хешрейта в реальном времени
  • Управление резервными пулами
  • Оповещения о температуре и ошибках
  • Удалённая перезагрузка и настройка
  • Дашборд нескольких майнеров

Лицензия

Этот проект распространяется под лицензией PolyForm Noncommercial 1.0.0.

Что это означает простыми словами?

✅ Вы можете:

  • Свободно использовать программу для личных целей
  • Изучать и модифицировать исходный код
  • Делиться программой с друзьями и коллегами
  • Использовать для тестирования и диагностики ваших майнинг-ферм
  • Создавать производные работы для некоммерческих целей
  • Использовать в образовательных и исследовательских целях

❌ Вы НЕ можете:

  • Продавать программу или её модификации
  • Использовать в коммерческих сервисах без разрешения
  • Включать в платные продукты
  • Предоставлять как коммерческую услугу (SaaS)

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

Полный текст лицензии: LICENSE | PolyForm Project


Благодарности

StratumTester разработан и поддерживается командой StratumTester.

  • Архитектура и дизайн: На основе спецификаций Bitcoin Stratum V1/V2
  • Вдохновлено: 2miners/stratum-ping
  • Создано с помощью: Tauri, Rust, Chart.js

Особая благодарность майнинг-сообществу за отзывы и тестирование.


Поддержка

  • Проблемы: GitHub Issues
  • Документация: docs/
  • Сообщество: Присоединяйтесь к майнинговым форумам и делитесь опытом

Сделано с ❤️ для Bitcoin майнинг-сообщества

Поставьте ⭐ этому репозиторию, если StratumTester помог вам оптимизировать вашу майнинг-ферму!

About

Desktop diagnostic tool for testing mining pool connection quality without GPU load. Emulates Stratum V1/V2 clients with intelligent disconnection classification.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages