Как скомпилировать майнер из исходников под windows
В статье «Настройка и компиляция майнеров для процессора в Ubuntu» рассматривались вопросы, связанные с компиляцией программ для майнинга на процессорах в ОС типа Ubuntu.
Операционная система Windows является наиболее распространенной (по крайней мере, до настоящего времени), поэтому вопрос компиляции майнера именно в ней является более актуальным. В то же время, в силу некоторых особенностей этой оси, она не очень дружественна пользователю, мало разбирающемуся в программировании и вопросах компиляции.
Для компиляции майнера под Windows можно использовать Майкрософт Visual Studio и свободно распространяемый пакет MSYS2.
Разработчики XMRig очень кратко описали процесс компиляции своего майнера на странице Windows Build, но представленной там информации недостаточно для неподготовленного пользователя (продвинутого майнера) для самостоятельной сборки и компиляции исполняемого фала майнера.
В данной статье рассматривается последовательность действий по самостоятельной компиляции исполняемого файла майнера XMRig в ОС Виндовс с помощью Microsoft Visual Studio и MSYS2.
Статья рассчитана на пользователей компьютера/майнеров, не являющихся программистами/разработчиками.
Установка среды разработки для компиляции майнера XMRig
Для использования Visual Studio достаточно скачать ее свободно распространяемую версию Community со страницы сайта Майкрософт.
MSYS2 представляет собой интерпретацию Linux-овской командной оболочки Bourne Shell (sh), заточенную для операционной системы Windows. MSYS2 заменяет штатный командный интерпретатор cmd.exe от компании Microsoft, встроенный в каждую ее ось.
Кроме оболочек MSYS2/Microsoft Visual Studio, для разработки и компиляции программных приложений нужно иметь подходящую среду: компиляторы (например, GCC и/или MSVC), библиотеки (GTK+ или Qt5) и прочие инструменты для программирования.
Также нужно инсталлировать кроссплатформенную утилиту для сборки программ CMake, скачав ее инсталлятор для Windows (win64-x64 Installer) со страницы загрузок.
Скачивание и установка набора утилит CMake
Скачивание инсталлятора Симейк производится со страницы, где для установки выбирают файл инсталлятора для 64-разрядной версии Windows (файл cmake-*-win64-x64.msi):
При установке CMake нужно добавить эту утилиту в system Path для текущего юзера (или для всех пользователей):
Установка командного интерпретатора MSYS2?
При запуске исполняемого файла установки появляется окно приветствия, в котором нужно нажать кнопку далее:
Затем установщик запросит путь для записи файлов программы MSYS2:
Также будет предложено подтвердить/изменить название папки для ярлыков:
Затем начнется установка пакета MSYS2:
По окончанию инсталляции будет предложен запуск пакета, с чем нужно согласиться и кликнуть на ее завершение, оставив активной соответствующую галочку:
Затем производится обновление и установка необходимых пакетов для MSYS2 командой:
После скачивания пакетов нужно подтвердить установку, нажав y и ввод:
По окончанию установки пакет Мсис2 можно запускать через меню Пуск Windows:
После инсталляции MSYS2 нужно установить дополнительные пакеты командой:
Сборка и компиляция майнера XMRig из исходного кода на Github
Сначала выполняется скачивание с Github исходного кода майнера XMRig и программных пакетов, от которых зависит работа программы (dependencies).
Исходный код XMRig:
Затем подстраивают исходный код программы XMRig под себя.
Изменение программного кода майнера XMRig под нужды пользователя
Конфигурация майнера производится в файле CMakeLists.txt по аналогии с компиляцией под Ubuntu:
Конфигурация майнера редактируется в коде файла CMakeLists.txt в строках:
При желании отключить какую-то опцию в конце строки пишут OFF. Для включения ее в исполняемый файл – используют команду ON.
К примеру, при майнинге только на процессоре можно отключить модули для видеокарт. Кроме того, можно отключить опцию Enable OpenSSL support, что в итоге создаст файл xmrig-notls (версия без шифровки трафика майнера), который потребляет меньше ресурсов.
Комиссия разработчику (devfee) устанавливается/отключается в файле donate.h (папка src) в строках:
Для компиляции файла майнера нужно также скачать архив его зависимостей со страницы xmrig-deps:
Скачанный архив xmrig-deps-*.zip разархивируют в корень диска C в папку с названием xmrig-deps.
В папке должны быть подпапки gcc, msvc 2015, msvc2017, msvc2019:
Затем запускают командный интерпретатор MSYS2 и с помощью команды
переходят в директорию XMR, куда предварительно был распакован архив Source code.zip с исходниками майнера:
Затем создают папку build и переходят в нее. Для этого последовательно выполняют команды:
Затем совершают сборку проекта XMRig, для чего запускают команды:
При успешной сборке и компиляции в папке build появится файл майнера:
Скриншот работы самостоятельно сконфигурированного и скомпилированнного майнера XMRig для Windows:
Вам также может понравиться
Советы по майнингу криптовалют на процессоре
Очистка и ускорение XUBUNTU для майнинга (и не только)
Криптовалют с каждым днём становится всё больше. Некоторые из них уходят в небытие, а некоторые долго остаются на плаву. Часть из них – это форки первой криптовалюты Bitcoin, остальные создаются на платформах типа Ethereum и Waves. Здесь я хотел бы обратить ваше внимание на криптовалюту SCC, которая является форком Bitcoin, и, поскольку наш сайт по технической части, то скомпилировать кошелёк для этой монеты для ОС Windows.
Итак, почему я выбрал монету SCC. Честно говоря, мне нравится проект StakeCube, частью которого является монета SCC. StakeCube – это пул криптовалют, которые поддерживают PoS-майнинг. Правда здесь выгодно держать и некоторые широко распространённые криптовалюты, такие как Bitcoin, Litecoin, Dash и Dogecoin, т.к. пока ваши монеты лежат в пуле, вы каждый день получаете процент. Есть в этом пуле и другие интересные фишки, например, обменник и краны, но об этом я напишу в какой-нибудь другой раз.
Теперь у вас может возникнуть вопрос, зачем компилировать кошелёк, если его можно скачать. Ну, тут может быть много причин. Например:
Начнём разбираться, как самостоятельно скомпилировать криптовалютный кошелёк для ОС Windows на примере монеты SCC. Кошельки для всех остальных форков Bitcoin вы сможете скомпилировать аналогичным образом. Итак, приступим.
Кошельки форков Bitcoin – это кроссплатформенные приложения, которые можно компилировать можно двумя способами: на ОС Linux или на ОС Windows. Первый способ очень простой, и он возможен, если у вас у вас на компьютере Linux или Windows 10. Второй способ мне представляется слишком сложным. Если такой способ кого-либо заинтересует, дайте знать.
В этой статье мы рассмотрим способ компиляции криптовалютного кошелька SCC на Windows 10 с помощью ОС Linux. Я использую Windows 10 версии 1909. Рассмотрим, что нужно делать по шагам.
Установка подсистемы Windows для Linux в Windows 10
Да, да. Нам всё равно будет нужен Linux, но мы поставим его прямо внутрь Windows 10 (учтите, что эта возможность появилась, только в Windows 10). Не волнуйтесь, это не сложно.
Сначала нужно убедиться, что включён компонент «Подсистема Windows для Linux». Откройте диалог выбора компонентов Windows (нажмите Win+R и запустите приложение OptionalFeatures.exe).
Поставьте галочку напротив пункта «Подсистема Windows для Linux», если она не стоит, и нажмите «OK». Начнётся процесс установки. Если потребуется, перезагрузите компьютер.
Затем установим Linux. Для этого нужно перейти в Microsoft Store, найти нужный дистрибутив и установить его. Искать нужно по ключевому слову Linux.
Для компиляции кошелька SCC рекомендуется использовать Ubuntu 18.04. Значит, этот дистрибутив и выберем. Для установки, на странице приложения нажмите «Получить».
На запрос входа под учётной записью Windows можно не обращать внимание. Для установки бесплатных приложений входить под своей учётной записью не обязательно. Можно нажать здесь «Нет, спасибо».
После установки пункт меню для запуска Ubuntu 18.04 появится в меню «Пуск». Для удобства можно сразу закрепить его на начальном экране.
Теперь запустите Ubuntu 18.04. После первого запуска потребуется дополнительная настройка.
У меня, правда, Linux сначала сопротивлялся. Появлялась ошибка:
Я пытался перезапускать сервис LxssManager, но это не помогало. И ещё я где-то вычитал, что если выключить быструю загрузку Windows (в настройках электропитания), то такой ошибки не будет.
Но на моё счастье, при очередной попытке установка началась. Здесь нужно задать имя пользователя в системе Linux, которое не обязательно должно совпадать с именем пользователя в Windows. Введите здесь имя пользователя (в нижнем регистре) и нажмите клавишу Enter.
Затем введите пароль и нажмите Enter. Когда будете вбивать пароль, на экране ничего не будет происходить. Это нормально.
Затем ещё раз повторите пароль.
После этого всё будет успешно настроено.
Установка необходимых пакетов
Для установки необходимых пакетов последовательно выполните в Ubuntu 18.04 следующие 3 команды (для выполнения команд под администратором потребуется ввод пароля, который вы установили при настройке Linux) (на все вопросы отвечайте утвердительно):
Если вы хотите ещё сделать инсталлятор для Windows, то нужна будет библиотека NSIS. Для её установки выполните команду:
Для компиляции кошелька под ОС Windows также понадобятся инструменты MinGW. Чтобы скомпилировать кошелёк для 64-битной версии Windows установите пакет g++-mingw-w64-x86-64, выполнив команду:
А для компиляции 32-битной версии Windows, понадобятся другие два пакета. Для их установки выполните команду:
Если места на диске компьютера не жалко, можете установить все перечисленные выше пакеты.
Скачивание исходников
Так уж повелось, что в основном у каждой криптовалюты в открытую опубликованы исходники на GitHub. Не исключение и монета SCC. Нужные исходники есть здесь. Отсюда мы их и будем скачивать, но об этом чуть ниже.
В системе Linux, которую мы установили, сразу примонтированы логические диски системы Windows. Например, диск C: внутри Linux будет находиться по пути /mnt/c. Мне показалось удобным создать папку где-нибудь в Windows и загрузить в неё исходники, но так не удастся скомпилировать зависимости. Поверьте, я проверял.
Ещё сразу хочется отметить, что все текстовые файлы нужно забирать с сервера GitHub не меняя переносы LF (переносы LF принято использовать в Linux) на CRLF. Если вы будет использовать git для Windows, то, скорее всего, он настроен так, чтобы заменять LF на CRLF. Если файлы будут с переносами CRLF, то при компиляции у вас появится много синтаксических ошибок и в конце ошибка «make: *** No rule to make target 'builders/.mk'. Stop.», см. картинку:
Чтобы отключить замену, нужно выполнить следующую команду (работает и для Windows и для Linux):
Итак, разместим папку с проектом в домашней папке, которая является текущей после запуска Linux. У меня это папка /home/alex. Чтобы скачать в эту папку исходники выполните следующие команды:
Вот результат выполнения команд:
Ещё на сайте GitHub я увидел, что есть вторая версия кошелька, которая находится в отдельной ветке.
Если есть желание, то вы можете переключиться на эту ветку, чтобы скомпилировать 2-ю версию, но она пока находится в стадии Beta. Чтобы переключится на ветку 2.0, выполните команду:
А как же теперь получить доступ к папке StakeCubeCoin, которая только что скачалась, из Windows? Очень просто. Есть два способа. Сначала расскажу про первый способ.
Откройте проводник, вбейте в строке адреса следующую строку и нажмите Enter:
%userprofile%\AppData\Local\Packages
Откроется папка C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ_WINDOWS\AppData\Local\Packages, где ИМЯ_ПОЛЬЗОВАТЕЛЯ – это имя пользователя Windows. Найдите в открывшейся папке вложенную папку, в которую установлен Linux. Для Ubuntu 18.04 у меня на компьютере – это была папка CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc, см. картинку.
Внутри этой папки найдите папку LocalState и в ней папку rootfs. Это и будет корень файловой системы Linux. В результате путь примерно такой:
Ну а в папке rootfs уже не проблема найти домашнюю папку и в ней папку StakeCubeCoin. У меня в Linux-е - это папка /home/alex/StakeCubeCoin, значит в Windows – это получится папка:
Чтобы быстро добираться до этой папки можно сразу сделать ярлык или добавить ссылку на папку в группу «Быстрый доступ» на панели навигации проводника. Я добавил ссылку на папку rootfs. Для добавления просто перетащите папку в группу «Быстрый доступ».
Единственная проблема, которая может у вас возникнуть, если вы будете изменять файлы в Windows, - после изменения вы не сможете получить доступ изменённым к файлам в Linux. От этого спасает команда:
И второй способ добраться до файлов Linux. вбейте в проводнике в строке адреса следующую строку и нажмите Enter:
\\wsl$
Если консолька Ubuntu 18.04 запущена то вы увидите её как сетевой ресурс, см. картинку:
Зайдите внутрь ресурса Ubuntu-18.04 и вы увидите все файлы системы Linux.
Компиляция кошелька для 64-битной Windows
Для компиляции последовательно выполните следующие команды в консоли Linux:
На запрос выберите опцию с компилятором posix. У меня на картинке – это цифра 1.
Затем последовательно выполните следующие команды:
После того как компиляция будет успешно завершена, это будет выглядеть вот так:
Получившийся исполняемый файл stakecube-qt.exe можно будет найти в папке /src/qt внутри папки StakeCubeCoin. В Windows – это будет папка:
Теперь проведём эксперимент и запустим программу stakecube-qt.exe. Я положил файл stakecube-qt.exe в папку C:\StakeCubeCore и запустил. После запуска установил ту же папку, где будут расположены данные:
После этого кошелёк стартовал, подключился к сети и начал синхронизировать данные.
Если кошелёк долго не может подключиться к сети, ему можно помочь. Для этого нужно добавить официальные ноды в конфигурационный файл stakecube.conf, а именно, добавить в этот следующие файл строки:
И после этого перезапустить кошелёк.
Компиляция кошелька для 32-битной Windows
Для компиляции последовательно выполните следующие команды в консоли Linux:
На запрос выберите опцию с компилятором posix. У меня на картинке – это цифра 1.
Затем последовательно выполните следующие команды:
После завершения компиляции моя консоль выглядела вот так:
Получившийся исполняемый файл stakecube-qt.exe можно найти в папке /src/qt внутри папки StakeCubeCoin. В Windows – это будет папка:
Получившийся исполняемый файл я проверил под 32-битной версией Windows 7. Исполняемый файл я скопировал в папку C:\StakeCubeCore. Запустился кошелёк нормально. После запуска появилось окно настроек, такое же, как и в версии для 64-битной Windows. Я выбрал ту же папку, куда был скопирован исполняемый файл.
После настройки, кошелёк запустился и начал синхронизировать блоки.
Если кошелёк долго не может подключиться к сети, ему можно помочь. Для этого нужно добавить официальные ноды в конфигурационный файл stakecube.conf, а именно, добавить в этот следующие файл строки:
И после этого перезапустить кошелёк.
Создание дистрибутива
Если вам хочется сделать дистрибутив, то после компиляции нужно выполнить следующую команду:
Вот результат, который виден после создания дистрибутива в консоли:
В папке StakeCubeCoin после этого вы найдёте дистрибутив - файл stakecube-1.0.0-win64-setup.exe для 64-битной Windows или файл stakecube-1.0.0-win32-setup.exe для 32-битной Windows:
Я запустил дистрибутив. Появилось приветствие. Всё в порядке. Проверять установку я не стал.
Не знаю кому как, а меня прошедший 2017 год шокировал стремительным взлетом биткоина. Сейчас, конечно, ажиотаж уже ушел, а в 17-м году про криптовалюты говорили и писали все кому не лень.
Я видел, что люди пытаются зарабатывать на криптовалютах. Кто как умеет. Кто-то на все сбережения скупал видеокарты и начинал самостоятельно майнить в гараже. Кто-то вкладывался в облачный майнинг. Кто-то пытается организовать свой пул. Кто-то запустил в производство шоколадные биткоины, а кто-то выпускает минеральную воду:
Я тоже стал изучать, что же такое эти самые биткоины. Когда-то я даже начал свое собственное иследование алгоритма SHA256 и написал статью здесь на хабре "Можно ли вычислять биткоины быстрее, проще или легче?". Мои исследования алгоритмов хеширования до сих пор продолжаются и еще и близко не завершены… Может быть когда нибудь напишу про это отдельную статью. А сейчас пока вот это..
Я попробовал запустить bitcoin майнер в FPGA. Я понимал, что время уже ушло, но хотелось все же прикоснуться к технологии. Уже в конце прошлого года я вдруг почему-то вспомнил, что у меня совершенно без дела лежит плата Terasic DE10-Standard с ПЛИС Intel Cyclone V 5CSXFC6D6F31C6 — это тот чип, который со встроенным процессором ARM. Я подумал, что было бы интересно запустить какой нибудь альткоин майнер в этой плате. А что? Инвестировать в оборудование мне уже не надо, оно и так есть. Главное, чтобы плата зарабатывала больше, чем потребляет энергии.
Поиск подходящего альткоина был весьма прост. Я искал готовые проекты для FPGA, которые я смогу адаптировать под свою плату. Таковых оказалось не очень много. На самом деле как я понимаю во всем мире есть всего несколько человек, которые делали FPGA проекты и главное публиковали их в открытом доступе, например, на github.
Собственно о том, как я адаптировал проект для платы Марсоход3 написано здесь. Для Cyclone V в принципе все то же самое — только ревизия проекта квартуса blake_cv, мои исходники вот.
К моему сожалению в имеющийся у меня Cyclone V помещается только три хэш функции blake.
Чуть-чуть не хватает емкости ПЛИС до четырех хэшеров. Я запускаю проект на частоте 120МГц и за один такт рабочей частоты вычисляется один хэш blake. Значит производительность моего проекта 120*3=360MH/sec. Не очень много честно говоря, однако, как я уже сказал, плата у меня уже была, и возвращаеть ее стоимость мне не нужно… Тут еще Quartus говорит, что Fmax=150MHz. Можно попытаться поднять частоту, но боюсь придется ставить кулер, будет гудеть — ну не на столько мне нужны эти крипты, чтоб еще гул в комнате слушать.
Общая задумка проекта такая: плата имеет микросхему у которой есть и ПЛИС и Dual-ARM:
Когда плата стартует, то из U-BOOT первым делом загружается ПЛИС, затем стартует Linux и в нем программа майнинга cgminer. Я сперва думал, что я смогу устроить виртуальный канал связи между ARM и FPGA, и это на самом деле возможно, но так не получилось. Дело в том, что программа майнера cgminer работает с аппаратными майнерами через USB и использует библиотеку libusb. То есть мне проще подключить ПЛИС к Linux системе через преобразователь USB-COM на FTDI, чем городить городушку соединяя ПЛИС на шину ARMа. Я таким уже как-то занимался и это было не очень просто.
Сейчас мой «майнер» выглядит вот так (на Cyclone V поставил радиатор на термопасте, а то сильно греется):
Сказать по правде основные проблемы у меня как раз возникли не с FPGA проектом, а с cgminer.
1) Какой cgminer брать за основу своей разработки? И связанный с этим вопрос «Куда подключаться, чтобы начать майнить?». А какая связь между этими вопросами? Казалось бы, где тут проблема — бери самый свежий cgminer, какой найдешь. Но позвольте: на github есть 98 форков программы cgminer. Все они чем-то отличаются, какой есть хороший, а какой плохой, какой есть вообще хотя бы рабочий? Вот вам и опенсоурс. Каждый автор чего-то там себе добавлял и исправлял, или ломал… или делал свою монету. Разобраться не просто. Нашел для себя сайт, где на одной странице есть ссылка и на github проект и на github проект для FPGA. То есть эти два проекта видимо как-то могут и должны пересекаться.
2) Поскольку я взял за основу FPGA проект от автора kramble, то на самом деле, конечно, логично было бы взять его патчи, которые он приложил к своему проекту. Но и тут не без проблем. У него есть патчи к программе cgminer-3.1.1 и cgminer-3.4.3. Я решил, что лучше брать ту, что новее 3.4.3, но только потерял с ней время. Похоже автор начал адаптировать для этой версии, но что-то там не довел до конца и эта версия совсем сырая. Пришлось брать 3.1.1 а это кажется вообще старючая версия.
3) Авторы изменяющие программу cgminer в своих форках для своих альткоинов не следят за правильностью комментариев и именованием функций в коде. Зачастую в коде тут и там встречается слово bitcoin, а сам этот форк cgminer-а уже кажется не может считать для биткоина, а может только в альткоин.
4) Тесты. ГДЕ ТЕСТЫ? Я чего-то не понимаю, как можно делать сложный продукт без тестов? Я их не нашел.
Сказать по правде даже начинать что-то делать было не просто. Представьте себе, что нужно запустить некоторый проект в FPGA, но не очень понятно, что он должен делать, как получать данные, какие данные и в каком виде нужно выдавать результат. К этому FPGA проекту должна прилагаться некоторая программа, которую не известно точно где взять, но она должна обнаружить плату майнера, что-то туда посылать (неизвестно что) и что-то из нее получать. В каком формате, какими блоками, как часто — ничего не известно.
На самом деле, изучая патчи cgminer от kramble я примерно представляю себе как оно должно работать.
В файле usbutils.c прописаны устройства, которые могут рассматриваться как аппаратные внешние майнеры на шине USB:
Я в эту структуру добавил описатель своего USB-to-COM преобразователя FTDI-2232H. Теперь, если cgminer обнаружит устройство с VendorId/DeviceId = 0x0403:0x6010, то он попробует работать с этим устройством, как с платой Icarus, хоть она таковой и не является.
Дальше смотрим файл driver-icarus.c и тут есть функция icarus_detect_one:
Смысл такой. Программа передает плате заведомо известное задание на поиск хэша, причем в задании сказано с какого нонсе начинать вычисление и это нонсе немного меньше настоящего GOLDEN nonce. Таким образом, плата начнет считать с указанного места и буквально сразу в считанные доли секунды наткнется на GOLDEN nonce и вернет его. Программа тут же получит этот результат, сравнит его с правильным ответом и сразу становится понятно — это действительно тот HW майнер с которым можно работать или нет.
И вот тут была ужасная проблема — в проекте есть патчи на языке C, есть тестовая программа на питоне и тестбенч для FPGA.
В патчах на C тестовые данные выглядят вот так:
1) патч для cgminer-3.1.1
1) патч для cgminer-3.4.3
И что тут правильно, а что нет? Исходные данные одинаковые, а golden nonce объявлен разным. Парадокс… (заранее скажу, что в патче для cgminer-3.4.3 ошибка — нонсе 0x000187a2 не верный, а сколько времени я на это потратил..)
В проекте есть тестовая программа на питоне, которая читает текстовый файл, извлекает из него данные и передает в плату через последовательный порт… Там тестовые данные вот такие:
0000007057711b0d70d8682bd9eace78d4d1b42f82da7d934fac0db4001124d600000000cfb48fb35e8c6798b32e0f08f1dc3b6819faf768e1b23cc4226b944113334cc45255cc1f1c085340967d6c0e000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
0000007057711b0d70d8682bd9eace78d4d1b42f82da7d934fac0db4001124d6000000008fa40da64f312f0fa4ad43e2075558faf4e6d910020709bb1f79d0fe94e0416f5255cc521c085340df6b6e01000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
0000007095696e4529ae6568e4b2a0057a18e82ccf8d370bf87e358900f8ab5000000000253c6078c7245036a36c8e25fb2c1f99c938aeb8fac0be157c3b2fe34da2fa0952587a471c00fa391d2e5b02000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
000000704445e0446fcf2a84c47ce7305722c76507ba74796eaf39fe0007d44d00000000cac961f63513134a82713b172f45c9b5e5eea25d63e27851fac443081f453de1525886fe1c01741184a5c70e000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
00000070a3ac7627ca52f2b9d9a5607ac8212674e50eb8c6fb1219c80061ccd500000000ed5222b4f77e0d1b434e1e1c70608bc5d8cd9d363a59cbeb890f6cd433a6bd8d5258a0141c00b4e770777200000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
000000706c90b789e84044d5be8b2fac01fafe3933ca3735269671e90043f8d900000000d74578c643ab8e267ab58bf117d61bb71a04960a10af9a649c0060cdb0caaca35258b3f81c00b4e7b1b94201000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
00000070171d2644781cccf873ce3b6e54967afda244c47fc963bb240141b4ad00000000d56c4fbdc326e8f672834c8dbca53a087147fe0996d0c3a908a860e3db0589665258da3d1c016a2a14603a0a000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
00000070d03c78cb0bb0b41a5a2c6ce75402e5be8a705a823928a5640011110400000000028fb80785a6310685f66a4e81e8f38800ea389df7f16cf2ffad16bb98e0c4855258dda01c016a2ae026d404000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
0000007091a7eef446c4cb686aff8908ab5539d03a9ab2e975b9fe5700ed4ca9000000000f83bb385440decc66c10c0657fcd05f94c0bc844ebc744bba25b5bc2a7a557b5258e27c1c016a2a6ce1900a000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
00000070856bd0a3fda5dac9ede45137e0c5648d82e64fbe72477f5300e96aec0000000026ca273dbbd919bdd13ba1fcac2106e1f63b70f1f5f5f068dd1da94491ed0aa45258e51b1c017a7644697709000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
Ну то есть совершенно другие! Потом я уже понял, что это не те даннае, что посылаются в плату, из этих только извлекаются данные, специальным образом конвертируются в задание и отсылаются в плату.
Но все равно, среди этих тестовых данных для программы на питоне НЕТ задания похожего на то, которое описано в программе на C.
Ну хорошо, тогда смотрю тестовую программу-тестбенч на verilog:
Здесь есть предполагаемый пакет данных, который плата должна принять. Но опять этот предполагаемый пакет данных никак не похож на пакет данных в программе на C или на данные для тестовой программы на питоне.
Вот это отсутствие общих тестовых данных для программы на питоне, C и Verilog очень сильно портит картину. Получается, что между компонентами как бы нет общих точек соприкосновения, общих тестов и это печально.
Вообще, в верилог проекте blakecoin майнера было скрыто еще одно форменное издевательство над моим организмом.
Если проводить симуляцию проекта с verilog тестбенчем, то в симуляторе с вот этими тестовыми данными 416'h000007ffffbd9207ffff001e11f35052d5544… замечательно находится и возвращается результат GOLDEN nonce.
Потом проект компилирую для реальной FPGA платы, эти же самые данные подаю из программы на питоне и… плата не находит GOLDEN nonce…
Оказывается, что тестовые данные в verilog тестбенче «немного плохие». Они для низкой сложности, когда в результирующем хэше всего 24 ведущих нуля, а не 32, как требуется.
В файле experimental/LX150-FourPiped/BLAKE_CORE_FOURPIPED.v есть вот такой код
В Verilog симуляторе проверяется не так, как будет будет работать в железе! То есть для реальной FPGA платы будем проверять на 32 бита ведущих нулей, а в симуляции будем проверять только 24 бита. Это просто прелестно. Хочется побить автора.
Ладно, что в результате? Сколько намайнил? К сожалению нисколько.
Как только я был уже готов начать майнить, буквально в конце января сложность блейка сильно возросла:
Теперь я мог оставить на сутки плату и она хоть и находила решения, но их не принимал пул — все еще мало ведущих нулей.
Но все равно и VCASH пул ничего не начисляет. Печаль-беда.
Пользуясь случаем хотел бы спросить у знающих людей. Вот у меня есть видеокарта Nvidia 1060. Она выдает 1,25GHash/sec на блейкоине и за час два-три раза выдает nonce, который принимает пул (и начисляет копеечку). Я думал, что если моя FPGA плата считает 360MHash/sec, ну то есть примерно в 3 раза хуже, чем видеокарта, то я за два часа получу хотя бы один нонсе принятый пулом. Однако, этого не происходит. Даже за сутки нет ни одной копеечки… Где тут подвох для меня так и осталось загадка…
Сейчас я на досуге пытаюсь понять можно ли как-то оптимизировать имеющийся FPGA проект, скажем задействовать встроенную память или еще что-то. Может быть, если повезет, что-то и придумаю.
XMRig — CPU/GPU Майнер с поддержкой таких алгоритмов как RandomX, KawPow, CryptoNight, AstroBWT и Argon2. Работает на процессорах и видеокартах обоих типов (Nvidia и AMD). Поддерживает все операционные системы, включая Windows, Linux, macOS и FreeBSD. XMRig популярен в майнинге Monero (XMR).
Стандартная комиссия майнера составляет 1% (майнер майнит на разработчиков 1 минуту каждые 100 минут работы). Однако, комиссию можно повысить при желании или даже полностью отключить.
Особенности:
- Открытый исходный код
- Высокая производительность
- Официальная поддержка Windows
- Поддержка randomx
- Поддержка Nicehash
Обновления / Releases
v6.15.3
- Исправления OpenCL для платформ не AMD.
- Исправлена компиляция без кавпов.
- Ускорение AstroBWT (до + 35%).
- Исправлена ошибка компиляции MSVC.
v6.15.2
- Исправлено: автоконфигурация AstroBWT игнорировалась max-threads-hint .
- Исправлен возможный сбой в Windows (регресс в v6.15.1).
v6.15.1
- Исправлена совместимость с Windows 7.
- Добавлены цвета значков на панели задач Windows.
v6.15.0
- Добавлено автоматическое определение монет для майнинга демонов.
- Добавлен новый алгоритм RandomX Graft ( rx/graft ).
- AstroBWT: добавлена реализация AVX2 Salsa20.
- Добавлена поддержка нового API плагина CUDA (предыдущий API все еще поддерживается).
v6.14.1
- Рефакторинг: идентификаторы стабильных (постоянных) алгоритмов.
- Исправлена сборка Termux.
v6.14.0
- Добавлена поддержка ZeroMQ для соло-майнинга.
- Исправлен сбой в считывателе памяти DMI.
- Добавлен отсутствующий параметр --huge-pages-jit командной строки.
- Добавлено отображение количества транзакций в задании пула.
v6.13.1
- Исправлена регрессия в предыдущей версии: не отправлять подпись майнера во время обычного майнинга.
v6.13.0
- Добавлена поддержка соло-майнинга с подписями майнеров для грядущего форка Wownero.
- Добавлена поддержка соло-майнинга с подписями майнеров для грядущего форка Wownero.
v6.12.2
- Бэкенды графического процессора теперь отключены в тестовом режиме.
- Улучшена совместимость MSR с последними ядрами Linux и обновлена randomx_boost.sh .
- Исправлено обнаружение AES во FreeBSD на ARM.
- sse2neon обновлен до последней версии.
- Исправлен вывод помощи --cpu-priority и --cpu-affinity опция.
- Исправлено имя загрузчика бэкэнда macOS CUDA по умолчанию.
- Исправлен неработающий майнинг в легком режиме на x86.
- Исправлен код CL для KawPow, предполагающий, что все принадлежит AMD.
- RandomX: включена IMUL_RCP оптимизация для майнинга в легком режиме.
- RandomX: добавлена версия BMI2 для предварительной выборки блокнота.
- RandomX: переписан код чтения набора данных.
- RandomX: оптимизировано чтение набора данных ARMv8.
- Добавлен argon2/ninja псевдоним для argon2/wrkz алгоритма.
v6.12.1
- Исправлен ассемблерный код Zen3 для cn/upx2 алгоритма.
v6.12.0
- Добавлена поддержка Uplexa ( cn/upx2 алгоритм).
- Показать общий хешрейт при компиляции без OpenCL.
- RandomX: оптимизированная IMUL_RCP инструкция.
- Добавлена поддержка параметра --user командной строки для онлайн-тестирования.
v6.11.2
Алгоритмы
Ниже показа таблица алгоритмов, которые поддерживает XMRig. Для каждого из алгоритмов показаны треб к памяти на один поток майнинга.
Name | Memory | Version | Description | Notes |
---|---|---|---|---|
argon2/chukwav2 | 1 MB | 6.4.0+ | Argon2id (Chukwa v2). | CPU only |
cn/ccx | 2 MB | 6.2.0+ | Conceal (CCX) | |
kawpow | – | 6.0.0+ | KawPow (Ravencoin) | GPU only, not supported by xmrig-proxy |
rx/keva | 1 MB | 5.9.0+ | RandomKEVA (RandomX variant for Keva). | |
astrobwt | 20 MB | 5.8.0+ | AstroBWT (Dero). | |
cn-pico/tlo | 256 KB | 5.5.0+ | CryptoNight-Pico (Talleo). | |
rx/sfx | 2 MB | 5.4.0+ | RandomSFX (RandomX variant for Safex). | |
rx/arq | 256 KB | 4.3.0+ | RandomARQ (RandomX variant for ArQmA). | |
rx/0 | 2 MB | 3.2.0+ | RandomX (Monero). | |
argon2/chukwa | 512 KB | 3.1.0+ | Argon2id (Chukwa). | CPU only |
argon2/wrkz | 256 KB | 3.1.0+ | Argon2id (WRKZ) | CPU only |
rx/wow | 1 MB | 3.0.0+ | RandomWOW (RandomX variant for Wownero). | |
cn/fast | 2 MB | 3.0.0+ | CryptoNight variant 1 with half iterations. | |
cn/rwz | 2 MB | 2.14.0+ | CryptoNight variant 2 with 3/4 iterations and reversed shuffle operation. | |
cn/zls | 2 MB | 2.14.0+ | CryptoNight variant 2 with 3/4 iterations. | |
cn/double | 2 MB | 2.14.0+ | CryptoNight variant 2 with double iterations. | |
cn/r | 2 MB | 2.13.0+ | CryptoNightR (Monero’s variant 4). | |
cn-pico | 256 KB | 2.10.0+ | CryptoNight-Pico. | |
cn/half | 2 MB | 2.9.0+ | CryptoNight variant 2 with half iterations. | |
cn/2 | 2 MB | 2.8.0+ | CryptoNight variant 2. | |
cn/xao | 2 MB | 2.6.4+ | CryptoNight variant 0 (modified). | |
cn/rto | 2 MB | 2.6.4+ | CryptoNight variant 1 (modified). | |
cn-heavy/tube | 4 MB | 2.6.4+ | CryptoNight-Heavy (modified). | |
cn-heavy/xhv | 4 MB | 2.6.3+ | CryptoNight-Heavy (modified). | |
cn-heavy/0 | 4 MB | 2.6.0+ | CryptoNight-Heavy. | |
cn/1 | 2 MB | 2.5.0+ | CryptoNight variant 1. | |
cn-lite/1 | 1 MB | 2.5.0+ | CryptoNight-Lite variant 1. | |
cn-lite/0 | 1 MB | 0.8.0+ | CryptoNight-Lite variant 0. | |
cn/0 | 2 MB | 0.5.0+ | CryptoNight (original). |
Настройка и Запуск XMRig
Быстрый старт
Для того, что бы добывать монеты нужно:
- скачать программу
- разархивировать в любое удобное место
- отредактировать .bat файл с нужной монетой (поменять кошелек на свой)
Содержимое скомпилированного майнера выглядит следующим образом:
Запускается процесс добычи криптовалют посредством двойного клика по пакетному файлу start или приложению.
Рассмотрим настройку более детально.
Настройка .bat файла для XMRig
Для добычи монет на алгоритме randomx нам нужно создать или отредактировать готовый батник под нужную Вам монету. Это базовые настройки, которых достаточно для майнинга. Вторичные настройки рассмотрим позже.
Можно дописать ключ «pause» в самом низу батника, что бы в случае ошибки программы или не верного синтаксиса .bat файла, программа сразу не закрылась, а отобразила на экране код и описание ошибки
Внимание! Payment ID теперь указывать не нужно. Указывайте только адрес своего кошелька!
Читайте также: