NerdSoloMiner v2 это бесплатный и открытый проект майнера [1], который пытается вычислить блок bitcoin на простейшем оборудовании. Основная цель проекта - освоить технологию криптовалюты и заодно получить красивое устройство, которое что-то там делает на столе. Оригинальная версия проекта также доступна на GitHub [2].
Требования для повторения проекта:
- TTGO T-Display S3, или любая из поддерживаемых плат (см. далее "Руководство по сборке"). - Распечатанный корпус 3D BOX (см. STL-файлы в каталоге NerdMiner_v2/3d_files/).
[Описание NerdSoloMiner v2]
ESP32 реализует протокол Stratum для майнинга в индивидуальном пуле (solo pool). Пул может быть изменен, однако он работает с public-pool.io (где поддерживаются устройства Nerdminer).
Изначально проект был реализован на основе ESP32-S3, однако теперь поддерживаются и другие платы. Используется WifiManager для изменения настроек майнера и сохранение их в SPIFF. Устройство microMiner поставляется с несколькими экранами, чтобы можно было отслеживать его рабочий процесс, а также сетевой статус майнинга:
NerdMiner Screen -> Mining data of Nerdminer (данные майнинга) ClockMiner Screen -> Fashion style clock miner (красивый общий экран статистики) GlobalStats Screen -> Global minery stats and relevant data (глобальное состояние майнинга и соответствующие данные)
Этот майнер использует несколько ядер (multicore) и несколько потоков (multithreads), оба ядра используются для майнинга, и несколько потоков используются для реализации работы стратума (stratum work) и поддержки доступа по wifi. Каждый раз при получении уведомления о задании стратума майнер обновляет свою текущую работу, чтобы не создавать устаревшие общие ресурсы.
Важное замечание: майнер не видят все стандартные пулы из за того, что у него ограниченная по сложности реализация общих ресурсов (low share difficulty). Вы можете проверять работу майнера удаленно с помощью перечисленных ниже определенных пулов, либо просматривая логи через UART.
Текущий проект все еще находится в стадии разработки, и в него будут со временем добавлены новые функции.
[Руководство по сборке]
В настоящее время поддерживаются платы:
LILYGO T-Display S3 (продаются на AliExpress) ESP32-WROOM-32, ESP32-Devkit1.. (продаются на AliExpress) LILYGO T-QT pro (продаются на AliExpress) LILYGO T-Display 1.14 (продаются на AliExpress) LILYGO T-Display S3 AMOLED (продаются на AliExpress) LILYGO T-Display S3 AMOLED Touch (Board Info) LILYGO T-Dongle S3 (продаются на AliExpress) ESP32-2432S028R 2,8" (продаются на AliExpress / Dev support: @nitroxgas / ⚡jadeddonald78@walletofsatoshi.com) ESP32-cam (Board Info / Dev support: @elmo128) M5-StampS3 (продаются на AliExpress / Dev support: @gyengus) Wemos Lolin S3 Mini [3] Wemos Lolin S2 Mini [4] Weact S3 Mini (WeActStudio.ESP32S3-MINI [5]) Weact ESP32-D0WD-V3 (WeActStudio.ESP32CoreBoard [6]) ESP32-S3 Devkit [7] ESP32-C3 Devkit [8] ESP32-C3 Super Mini [9] Waveshare ESP32-S3-GEEK [10]
microMiners Flashtool (рекомендуемая утилита). Самый простой способ создать свой майнер и прошить в его память FLASH код firmware:
1. Заполучите платку TTGO T-display S3 или другое поддерживаемое устройство. 2. Перейдите по ссылке на NM2 flasher online: https://flasher.bitronics.store/ (рекомендуется использовать анонимный режим Google Chrome incognito mode).
Стандартный инструментарий. Также можно использовать онлайн прошивальщик (online firwmare flash tool ESPtool) и один из двоичных образов из папки bin. Если вы захотите, то можете скомпилировать весь проект, используя среду разработки Arduino, PlatformIO или Expressif IDF.
1. Заполучите платку TTGO T-display S3 или другое поддерживаемое устройство. 2. Загрузите репозиторий [1] (командой git clone https://github.com/BitMaker-hub/NerdMiner_v2.git). 3. Перейдите на ESPtool online: https://espressif.github.io/esptool-js/. 4. Загрузите firmware прошивкой бинарника из одной из подпапок bin, соответствующей вашей плате. 5. Подключите вашу платку и выберите каждый файл из подпапки (файлы *.bin).
1. Online ESP Tool работает в браузерах chrome, chromium, brave.
2. Для ESPtool рекомендуется использовать скорость 115200 bps.
3. Если во время прошивки firmware процесс останавливается, рекомендуется ввести плату в режим загрузчика (boot mode). Отключите кабель, нажмите и удерживайте правую нижнюю кнопку (BOOT), и снова подключите кабель. Заново запустите процесс прошивки.
4. В определенных экстремальных случаях может помочь полная очистка памяти "Erase all flash" в ESPtool, чтобы очистить текущую конфигурацию перед прошивкой firmware. Это потребовалось во время разработки, когда проводилось экспериментирование с фичами Wifi.
5. Если используются платы ESP32-WROOM, то может потребоваться перевести плату в режим загрузки (boot mode). Для этого удерживайте кнопку BOOT, и нажмите кнопку сброса RST, после чего запустите процесс программирования.
[Конфигурирование NerdMiner]
После того, как вы запрограммировали устройство, вам понадобится только лишь задать настройки WiFi и адрес BTC. Майнинг не начнется, пока не будет предоставлен BTC address вашего выбранного кошелька (wallet).
Конфигурирование через WiFi
1. Имя (SSID) точки доступа: NerdMinerAP, пароль: MineYourCoins.
2. Настройте свою сеть (Wifi Network).
3. Добавьте ваш BTC address.
4. При необходимости поменяйте пароль.
Если вы используете public-pool.io, и хотите установить пользовательское имя для своего worker, то можете к адресу добавить строку суффикса в формате .yourworkername к адресу.
Конфигурирование через карту SD (когда она есть)
1. Отформатируйте SD-карту в файловой системе Fat32.
2. Создайте в коне карты текстовый файл config.json, где содержится следующая структура. Поменяйте в ней необходимые настройки:
4. Нажмите и удерживайте кнопку "reset configurations", как описано ниже, чтобы сбросилась конфигурация, и/или произошла загрузка без настроек из nvmemory платы.
5. Выключите питание и извлеките SD-карту. Для майнинга она не нужна.
Выбор пула для майнинга. Рекомендуется использовать следующие пулы (low difficulty share pools):
Pool URL
Порт
Web URL
Статус
public-pool.io
21496
https://web.public-pool.io
Open Source Solo Bitcoin Mining Pool, поддерживающий майнеры с открытым исходным кодом.
nerdminers.org
https://nerdminers.org
Домен для будущей команды пула - в настоящее время указывает а public-pool.io.
pool.nerdminer.io
3333
https://nerdminer.io
Поддержка от CHMEX.
pool.vkbit.com
3333
https://vkbit.com/
Поддерживается djerfy - форк от public-pool.
pool.pyblock.xyz
3333
https://pool.pyblock.xyz/
Поддерживается curly60e.
pool.sethforprivacy.com
3333
https://pool.sethforprivacy.com/
Поддерживается @sethforprivacy - форк от public-pool.
Другие стандартные пулы, не совместимые с low difficulty share:
Pool URL
Порт
Web URL
solo.ckpool.org
3333
https://solo.ckpool.org/
btc.zsolo.bid
6057
https://zsolo.bid/en/btc-solo-mining-pool
eu.stratum.slushpool.com
3333
https://braiins.com/pool
[Кнопки управления]
Устройства, где есть только одна кнопка
1. Одиночный клик поменяет экран. 2. Двойной клик поменяет ориентацию экрана. 3. Тройной клик выключает и включает экран. 4. Удерживание кнопки дольше 5 секунд сбрасывает конфигурации и перезапустит ваш NerdMiner.
Устройства с двумя кнопками (когда порт USB-C находится справа)
Верхняя кнопка:
1. Одиночный клик поменяет экран. 2. Удерживание кнопки дольше 5 секунд сбрасывает конфигурации и перезапустит ваш NerdMiner. 3. Удерживание кнопки при включении питания осуществит вход в режим конфигурирования и редактирования текущего config через Wifi. Вы можете поменять или проверить свои настройки.
Нижняя кнопка:
1. Одиночный клик выключает и включает экран. 2. Двойной клик поменяет ориентацию экрана.
• Текущий проект был адаптирован для работы с PlatformIO. • Текущий проект работает с модулями ESP32-S3 и ESP32-wroom. • Таблица разделов (partition scheme) должна быть собрана как большое приложение (huge app). • Все необходимые библиотеки показываются на platform.ini.
Что уже сделано:
• Проект перенесен на platformIO. • Исправлен баг прямоугольника на экране, когда отображаются 1milion shares. • Исправлен баг утечки памяти. • Исправлен баг с перезагрузкой, когда принятый JSON содержит некоторые null значения. • Реализован midstate sha256. • Исправлен баг Wificlient DNS unresolved в Wifi.h. • Произведен рефакторинг кода. • Для экрана добавлен blockHeight. • Добавлено отображение текущего времени на экране. • Добавлен новый экран с глобальной статистикой майнинга (global mining stats). • Добавлена поддержка пула для low difficulty miners. • Добавлена лучшая сложность (best difficulty) на экран майнера. • Добавлена поддержка стандартного ESP32 dev-kit / ESP32-WROOM. • Внесены изменения в код для поддержки добавления нескольких плат. • Добавлена поддержка для TTGO T-display 1.14 • Добавлена поддержка для Amoled.
В разработке:
• Реализовать протокол daisy chain через UART или I2C для поддержки хеш-плат ESP32 (hashboard). • Создать новый экран наподобие clockMiner, но на котором будет BTC price. • Добавить поддержку для управления BM1397. • Добавить поле пароля в форму web-конфигурирования.
Если вы хотите поучаствовать в проекте или намерены поддержать команду разработчиков, обращайтесь по адресу ⚡teamnerdminer@getalby.com⚡ или по одной из связанных ссылок.
Если вы захотите купить готовый, полностью собранный Nerdminer, то можете это сделать на bitronics.store.