Главная » Правописание слов » Как написать скрытый майнер на python

Слово Как написать скрытый майнер на python - однокоренные слова и морфемный разбор слова (приставка, корень, суффикс, окончание):


Морфемный разбор слова:

Однокоренные слова к слову:

Python Blockchain — Создание майнеров

Для включения майнинга нам нужно разработать функцию майнинга. Функциональность майнинга должна генерировать дайджест по заданной строке сообщения и предоставлять подтверждение работы. Давайте обсудим это в этой главе.

Функция дайджеста сообщения

Мы напишем служебную функцию sha256 для создания дайджеста по данному сообщению —

Функция sha256 принимает сообщение в качестве параметра, кодирует его в ASCII, генерирует шестнадцатеричный дайджест и возвращает значение вызывающей стороне.

Функция майнинга

Сейчас мы разрабатываем функцию шахты, которая реализует нашу собственную стратегию майнинга. В этом случае наша стратегия заключается в создании хэша для данного сообщения с префиксом с указанным числом 1. Заданное количество единиц указано в качестве параметра для моей функции, указанной в качестве уровня сложности.

Например, если вы укажете уровень сложности 2, сгенерированный хэш для данного сообщения должен начинаться с двух 1 — например, 11xxxxxxxx. Если уровень сложности равен 3, сгенерированный хэш должен начинаться с трех 1 — как 111xxxxxxxx. Учитывая эти требования, мы теперь разработаем функцию майнинга, как показано в шагах, приведенных ниже.

Шаг 1

Функция майнинга принимает два параметра — сообщение и уровень сложности.

Шаг 2

Уровень сложности должен быть больше или равен 1, мы обеспечиваем это следующим утверждением assert:

Шаг 3

Мы создаем префиксную переменную, используя заданный уровень сложности.

Обратите внимание, что если уровень сложности равен 2, префикс будет «11», а если уровень сложности равен 3, префикс будет «111» и т. Д. Мы проверим, существует ли этот префикс в сгенерированном дайджесте сообщения. Чтобы переварить само сообщение, мы используем следующие две строки кода:

Весь мой код показан здесь —

Для вашего понимания мы добавили оператор print, который печатает дайджест-значение и количество итераций, необходимых для выполнения условия перед возвратом из функции.

Тестирование функции майнинга

Чтобы проверить нашу функцию майнинга, просто выполните следующее утверждение —

Когда вы запустите приведенный выше код, вы увидите вывод, похожий на приведенный ниже —

Обратите внимание, что сгенерированный дайджест начинается с «11». Если вы измените уровень сложности на 3, сгенерированный дайджест начнется с «111», и, конечно, для этого потребуется больше итераций. Как видите, майнер с большей вычислительной мощностью сможет добывать данное сообщение раньше. Вот как шахтеры конкурируют друг с другом за получение своих доходов.

Теперь мы готовы добавить больше блоков в нашу цепочку блоков. Давайте узнаем это в нашей следующей главе.

Источник

CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

Внимание: эта статья и проект предназначены исключительно для изучения. Все тесты были сделаны на собственных компьютерах на своей личной WIFI сети.

Есть вопросы по Python?

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

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Суть данной статьи в том, чтобы объяснить, как провести атаку MITM (Man-In-The-Middle), чтобы заразить несколько javascript кода в HTML страницах для того, чтобы использовать все устройства, подключенные к сети WiFi для майнинга криптовалюты.

Цель заключается в том, чтобы получить скрипт, который выполняет автоматическую атаку на сеть WiFi. Это и есть CoffeeMiner, так как такой тип атаки может быть выполнен в кафе, где есть WiFi.

Сценарий

Нужны несколько компьютеров, подключенных к сети WiFi, где CoffeeMiner перехватывает трафик между пользователем и роутером.

Настройки

Настоящий сценарий – это WiFi с подключенными к нему смартфонами и ноутбуками. Мы попробовали его в реальности, и все сработало. Но для данной статьи, мы рассмотрим детальнее, как настроить виртуальное пространство.

Для начала, нам нужно скачать образ для Linux и установить его в VirtualBox. Для нашего примера воспользуемся Kali https://www.kali.org/

После того как мы загрузили ISO, подготовим три VBox-а с установленным ISO.

Для настройки определенного сценария, нам нужно подготовить каждый VBox для своей роли:

Когда атака выполнена, сценарий должен быть таким:

Чтобы выполнить настройку, необходимо провести следующее на виртуальных машинах:

Компьютер жертвы

Компьютер хакера:

Router:

2. CoffeeMiner, понимание кода

2.1 ARPspoofing

Для начала, нам нужно разобраться, как проводить MITM атаку.

Из википедии:

«В компьютерной сети, ARP-спуфинг, отравление кэша ARP или маршрутизация ARP-яда, это техника, когда атака выполняется отправкой ARP (Address Resolution Protocol) сообщений в локальную сеть. Цель заключается в том, чтобы связать МАС адрес атакующего с IP адресом другого хоста, например, шлюз по умолчанию. Таким образом, любой трафик, направленный на определенный IP адрес отправляется атакующему.

Чтобы совершить ARP-спуфинг, нам нужно использовать библиотеку dsniff.

2.2 mitmproxy

mitmproxy – это инструмент, который позволяет нам анализировать трафик, идущий через хоста, и дает возможность менять этот трафик. В нашем случае, мы используем его для заражения javascript в HTML страницах. Чтобы сделать дело чисто, мы внедрим только одну строку кода в страницах HTML. Это будет строка кода, которая вызывает майнер криптовалюты в javascript.

Строка, внедряющая майнер:

2.3 Внедрение кода

После перехвата трафика жертвы, нам нужно ввести наш скрипт. Для этого нам понадобится API mitmproxy:

2.4 HTTP Сервер

Как мы видим, инъектор добавляет строку в html и вызывает наш крипто-майнер. Теперь нам нужно развернуть скрипт файл в НТТР сервере. Для поддержки криптовалютного майнера, мы развернем НТТР сервер в компьютере атакующего. Чтобы сделать это, воспользуемся библиотекой Python ‘http.server’:

Код выше – это простой НТТР сервер, который внесет наш крипто-майнер жертвам, когда они выполнят запрос.

Javascript майнер будет расположен в папке /miner_script. В нашем случае используется javascript майнер CoinHive.

2.5 Крипто майнер CoinHive

CoinHive – это javascript майнер криптовалюты (XMR) Monero. Его можно добавить в сайт, чтобы он использовал мощность компьютера для подсчета хешей с алгоритмом хешей Cryptonight PoW для майнинга Monero, который строится на протоколе CryptoNote. Использование данного майнера имеет смысл, если пользователь остается на сайте подольше. Так что, для вебсайта, где средняя продолжительность сессии

40 секунд, использование CoinHive – не очень разумно.

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

3. CoffeeMiner: соединяем все воедино

Теперь наша главная задача – связать все в автоматический процесс. Это и будет CoffeeMiner. Суть в том, чтобы получить скрипт CoffeeMiner, проводящий ARP-спуфинг атаку и настраивает mitmproxy на внедрение криптовалютного майнера CoinHive в HTML страницы жертвы.

Вопервых, нам нужно настроить ip_forwarding и IPTABLES, чтобы конвертировать компьютер атакующего (хакера) в прокси:

Для выполнения ARP-спуфа для всех жертв, нам нужно приготовить файл ‘victims.txt’, с IP адресами всех жертв. Чтобы прочитать IP всех жертв, нам нужно несколько строк в Python, которые должны будут получить IP адреса (а также IP шлюза из командной строки args), и применить ARP-спуфинг для IP каждой жертвы.

После выполнения ARP-спуфинга, нам всего лишь нужно запустить НТТР сервер:

Теперь мы можем запустить mitmproxy с injector.py:

3.1 CoffeeMiner, последний скрипт

Теперь мы соединяем все вышеописанное в скрипте ‘coffeeMiner.py

То же самое в скрипте ‘injector.py’:

Для выполнения нам нужно ввести:

4. Демо

Чтобы создать demo, нам нужно настроить сценарий VirtualBox, который упоминался ранее. Если мы хотим провести атаку вручную, нам понадобятся следующие терминалы:

Далее, когда ARP-спуф атака проведена, injector и НТТР сервер готовы, мы можем перейти к компьютеру жертвы и зайти на сайт. Трафик жертвы будет проходить через компьютер атакующего, и активирует injector:

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

Демо видео

В следующих видео, мы можем увидеть весь процесс с использованием скрипта coffeeMiner.py:

VirtualBox демо

Реальный WiFi и ноутбуки

Заключение

Как мы видим, такую атаку достаточно легко выполнить. Кроме этого, процесс можно сделать автоматическим для конкретной WiFi сети. Есть еще один момент, о котором стоит подумать: в случае с реальной WiFi сетью, лучше проводить операцию, когда есть мощная WiFi антенна, чтобы лучше охватить всю зону. Суть в том, чтобы провести автономную атаку, но нам все еще нужно править файл victims.txt с IP адресами жертв. Для будущей версии можно будет добавить сканер nmap, чтобы добавить IP адреса, обнаруженные в списке жертв CoffeeMiner. Еще одна дополнительная функция, которая может сделать операцию более эффективной, это добавить sslstrip, чтобы убедиться в том, что внедрение прошло и на те сайты, которые пользователь может запросить через HTTPS.

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

E-mail: vasile.buldumac@ati.utm.md

Образование
Universitatea Tehnică a Moldovei (utm.md)

Источник

Реализуем свой Bitcoin на языке программирования Python

Электронная валюта уже ни для кого не новость, а вот собственная реализация валюты на Python обещает быть интересной. Создаем новый Bitcoin.

Как же создать новый Bitcoin, и что для этого нужно – рассмотрим в этой статье.

Простая монета (SimpleCoin) – простая, небезопасная и не до конца реализованная версия блокчейн криптовалюты на Python. Основной задумкой проекта была идея реализовать максимально похожую, простую и рабочую версию Bitcoin. Если вы тоже хотите создать что-то свое, вам стоит обратиться к Bitcoin Repository.

Вступление

Понятие блокчейн уже не раз рассматривалось, но повторение – мать учения. Блокчейн – это база транзакций, совместно используемая всеми узлами, участвующими в системе на основе биткойн-протокола. Полная копия цепочки блоков валюты содержит каждую транзакцию, когда-либо выполняемую в валюте. С помощью этой информации можно узнать, какое значение принадлежит каждому адресу в любой точке истории.

С чего начать?

Первое, что необходимо сделать, – установить requirements.txt.

В проекте должен быть файл конфига miner_config.py с таким содержимым:

Далее два важных шага:

Важное замечание: не запускайте майнер в среде разработке Python, а только в консоли, т. к. он использует параллельные процессы, которые не работают в IDL-e.

Как это работает?

miner.py запускает 2 параллельных процесса:

Заключение

Автор призывает участвовать всех желающих в этом проекте. Главная задача – упрощение кода и повышение его читабельности. Перевод на русский осуществлен Библиотекой Программиста.

Источник

Process Mining без PM4PY

Построить граф по логам процесса очень просто. В распоряжении аналитиков в настоящее время достаточное многообразие профессиональных разработок, таких как Celonis, Disco, PM4PY, ProM и т.д., призванных облегчить исследование процессов. Намного сложнее найти отклонения на графах, сделать верные выводы по ним.

Что делать, если некоторые профессиональные разработки, зарекомендовавшие себя и представляющие особый интерес не доступны по тем или иным причинам, или вам хочется больше свободы в расчетах при работе с графами? Насколько сложно самим написать майнер и реализовать некоторые необходимые возможности для работы с графами? Сделаем это на практике с помощью стандартных библиотек Python, реализуем расчеты и дадим с их помощью ответы на детальные вопросы, которые могли бы заинтересовать владельцев процесса.

Сразу хочется оговориться, что решение, приведенное в статье, не является промышленной реализацией. Это некоторая попытка начать работать с логами самостоятельно с помощью простого кода, который понятно работает, а значит, позволяет легко его адаптировать. Это решение не стоит использовать на больших данных, для этого требуется существенная его доработка, например, с применением векторных вычислений или путем изменения подхода к сбору и агрегации информации о событиях.

Перед построением графа, необходимо выполнить расчеты. Собственно расчет графа и будет тем самым майнером, о котором говорилось ранее. Для выполнения расчета необходимо собрать знания о событиях — вершинах графа и связях между ними и записать их, например в справочники. Заполняются справочники с помощью процедуры расчета calc (код на github). Заполненные справочники передаются в качестве параметров процедуре отрисовки графов draw (см. код по ссылке выше). Эта процедура форматирует данные, в представленный ниже вид:

и передает его для отрисовки графическому движку Graphviz.

Приступим к построению и исследованию графов с помощью реализованного майнера. Будем повторять процедуры чтения и сортировки данных, расчета и отрисовки графов, как в приведенных ниже примерах. Для примеров взяты логи событий по международным декларациям из соревнования BPIC2020. Ссылка на соревнование.

Выполним расчет графа.

Выполним отрисовку графа.

После выполнения процедур получим граф процесса:

Так как полученный граф не читаем, упростим его.

Есть несколько подходов к улучшению читаемости или упрощению графа:

Создадим словарь объединения событий:

Выполним группировку событий и отрисуем граф процесса еще раз.


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

Для ответа на поставленный вопрос отфильтруем граф по интересующим событиям и отрисуем граф процесса еще раз.

С помощью полученного графа мы легко сможем дать ответ на поставленный вопрос – 116 и 312 декларациям не предшествовало предодобренное разрешение.

Можно дополнительно “провалиться” (отфильтровать по ‘case:concept:name’, участвующих в нужной связи) за связи 116 и 312 и убедиться, что на графах будут отсутствовать события, связанные с разрешениями.

“Провалимся” за связь 116:

“Провалимся” за связь 312:

Так как на полученных графах полностью отсутствуют события, связанные с разрешениями, корректность ответов 116 и 312 подтверждается.

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

Источник

Как я blakecoin майнер делал

Не знаю кому как, а меня прошедший 2017 год шокировал стремительным взлетом биткоина. Сейчас, конечно, ажиотаж уже ушел, а в 17-м году про криптовалюты говорили и писали все кому не лень.

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

Я тоже стал изучать, что же такое эти самые биткоины. Когда-то я даже начал свое собственное иследование алгоритма SHA256 и написал статью здесь на хабре «Можно ли вычислять биткоины быстрее, проще или легче?». Мои исследования алгоритмов хеширования до сих пор продолжаются и еще и близко не завершены… Может быть когда нибудь напишу про это отдельную статью. А сейчас пока вот это..

Я попробовал запустить bitcoin майнер в FPGA. Я понимал, что время уже ушло, но хотелось все же прикоснуться к технологии. Уже в конце прошлого года я вдруг почему-то вспомнил, что у меня совершенно без дела лежит плата Terasic DE10-Standard с ПЛИС Intel Cyclone V 5CSXFC6D6F31C6 — это тот чип, который со встроенным процессором ARM. Я подумал, что было бы интересно запустить какой нибудь альткоин майнер в этой плате. А что? Инвестировать в оборудование мне уже не надо, оно и так есть. Главное, чтобы плата зарабатывала больше, чем потребляет энергии.

Поиск подходящего альткоина был весьма прост. Я искал готовые проекты для FPGA, которые я смогу адаптировать под свою плату. Таковых оказалось не очень много. На самом деле как я понимаю во всем мире есть всего несколько человек, которые делали FPGA проекты и главное публиковали их в открытом доступе, например, на github.

Таким образом, я взял проект github.com/kramble/FPGA-Blakecoin-Miner и адаптировал его под имеющуюся у меня плату Марсоход3, а так же адаптировал этот проект для DE10-Standard.

Собственно о том, как я адаптировал проект для платы Марсоход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. С этой валютой пул хотя бы иногда выдавал мне бодрящие сообщения вроде вот этого:

Но все равно и VCASH пул ничего не начисляет. Печаль-беда.

Пользуясь случаем хотел бы спросить у знающих людей. Вот у меня есть видеокарта Nvidia 1060. Она выдает 1,25GHash/sec на блейкоине и за час два-три раза выдает nonce, который принимает пул (и начисляет копеечку). Я думал, что если моя FPGA плата считает 360MHash/sec, ну то есть примерно в 3 раза хуже, чем видеокарта, то я за два часа получу хотя бы один нонсе принятый пулом. Однако, этого не происходит. Даже за сутки нет ни одной копеечки… Где тут подвох для меня так и осталось загадка…

Сейчас я на досуге пытаюсь понять можно ли как-то оптимизировать имеющийся FPGA проект, скажем задействовать встроенную память или еще что-то. Может быть, если повезет, что-то и придумаю.

Источник

Теперь вы знаете какие однокоренные слова подходят к слову Как написать скрытый майнер на python, а так же какой у него корень, приставка, суффикс и окончание. Вы можете дополнить список однокоренных слов к слову "Как написать скрытый майнер на python", предложив свой вариант в комментариях ниже, а также выразить свое несогласие проведенным с морфемным разбором.

Какие вы еще знаете однокоренные слова к слову Как написать скрытый майнер на python:



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *