Перейти к содержанию
    

Майнинг - это не модно, но все же ...

Ниже в постах уже была затронута тема майнинга на ПЛИС, но полного понимания к сожалению нет. Любителей отписаться о том, что это не модно и не выгодно - согласен, но хочется довести тему до получения результата. Исходные данные: сайт Марсоход, Wiki с темой SHA-2 и конечно GitHub с исходниками на verilog и небольшая статейка на Биткоин форум с описанием преобразования исходного заголовка от пула программой cgmainer. Доп инфа: по UART плата получает 16 32-x битных пакетов = 512 бит. Сборка проекта и подгонка под недолгую работу ModelSim показала, что выполнение обоих модулей под названием sha256_transform стартует одновременно, после получения пакетов и течет куча данных. После нескольких запусков просто моделсим перестал стартовать. Заставка, вторая и вылетел. Такое впервые, еще не знаю что с этим делать, но не суть. От этой модели понимания не прибавилось. Сам SHA-256 говорит о том, что все операции будут производиться над 256-ти разрядными данными, а в проекте еще и над 512-ти разрядными. Часть из входных которых являются константы. Далее счетчики для получения nonce, golden nonce. Может кто по-человечески объяснить текстом или в виде структурок что в общем-то нужно делать с входными и выходными данными вышеупомянутых модулей, саму суть и принцип не в виде бесполезных ссылок, а с чувством, толком, расстановкой. Заранее спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

алгоритм вызывает ослажнения

"ослажнения" от слова лажа?

 

SHA-256 говорит о том, что все операции будут производиться над 256-ти разрядными данными, а в проекте еще и над 512-ти разрядными.

Анекдот про говорящую лошадь помните?

Точно SHA-256 так говорит или это вы так его услышали?

 

По первому вопросу достаточно открыть словарь, по второму — Википедию,

а в целом вам явно ещё рано этим заниматься.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На счет "лажа" верно. А вот на счет рано мне этим заниматься, извиняюсь за выражение, не вам решать. Никогда не понимал людей, которые сами ничего не понимают, а других учат с бесполезной клоунадой. Знаете подскажите, а если нет, то не стоит такого писать. И если интересно, как люди одной сферы деятельности помогают друг другу посмотрите http://www.eetop.cn. И никто там такой хе.... не пишет как вы. А то герои накатают два листа текста и держат под подушкой. Жалко подсказать. Убудет

Изменено пользователем RamZoom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лично у меня такую кашу в голове разгребать терпения не хватит,

а если тут появится тот у кого хватит, я у него с удовольствием поучусь благодетели.

 

Но всё-таки я тоже что-то полезное для вас сделал: указал что вы не только не удосужились прочитать хотя бы два первых экрана статьи википедии про сха-256, но даже и не осознали, что это НАДО сделать :-)))) Если бы прочитали, то узнали бы, скоко бит на входе, скоко на выходе, и одним бессмысленным вопросом стало бы меньше.

А тогда и к следующему приступайте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На счет Wiki вы погорячились. Было прочитано и неоднократно. На счет того, что нужно сделать, так это получить H2 = SHA256(SHA256(Block_Header)), где Block_Header как раз и являются входными данными. В него входят Version (32 bits) + hashPrevBlock (256 bits) + hashMerkleRoot (256 bits) + Timestamp (32 bits) + Target (32 bits) + Nonce (32 bits) + Padding + Length (384 bits) итого 1024 бита. Программа майнер выполняет операции, которые выполняются один раз и отправляет на плату 512 бит для обработки. Результатом будет 32 бита данных, рассчитанных за 64 раунда двух SHA256 модулей. А на счет благодетелей вопрос к тем, кто с этим уже разобрался или хочет разобраться, а не просто хоть что-нибудь написать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И никто там такой хе.... не пишет как вы. А то герои накатают два листа текста и держат под подушкой. Жалко подсказать. Убудет

..вполне может и жалко людям, разве можно им в этом праве отказать?

Вообще надо делать так - что то сделать самому, свой результат труда выложить на форум и (указывая пальчиком куда именно) сkазать что не нравится.

А люди, может быть, что то и подскажут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..вполне может и жалко людям, разве можно им в этом праве отказать?

Вообще надо делать так - что то сделать самому, свой результат труда выложить на форум и (указывая пальчиком куда именно) сазать что не нравится.

А люди, может быть, что то и подскажут.

 

У меня должен был сохраниться исходник, поищу вечером.

Помню что разобрался по трём страничкам в интернете

https://bitcoin.stackexchange.com/questions...-really-solving

https://en.bitcoin.it/wiki/Block_hashing_algorithm

https://pastebin.com/bW3fQA2a

 

Сейчас в ПЛИС просятся совсем другие коины..

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за файл! Но если не сложно и сможете ответить на несколько вопросов был бы вам очень благодарен. Итак начнем с начала... Стандарт FIPS-180-3 нам говорит о том, что нужно произвести предварительную подготовку, а именно дополнить значение до 512 бит, разделить сообщение на 8 32-х разрядных значений и проинициализировать начальное значение хэша. Если я все правильно понял первые два пункта нас не особо заботят, а полученные 512 бит записываются в строке

 

unsigned int hash[8] {0xdc6a3b8d,0x0c69421a,0xcb1a5434,0xe536f7d5,0xc3c1b9e4,0x4cbb9b8f,0x95f0172e, 0xfc48d2df};

 

Далее необходимо подготовить последовательность блоков данных согласно формуле Wt. Насколько я понял за это отвечают строки

 

for (i = 0; i < 16; i++)

M = 0;

 

M[0] = BSWAP32(0x871714dc);

M[1] = BSWAP32(0x53058b35);

M[2] = BSWAP32(0x19015f53);

M[3] = BSWAP32(0x33087548);

M[4] = 0x80000000;

M[15] = 0x00000280;

 

и вот здесь уже начинаются вопросы: почему они рассчитываются практически в конце выполнения алгоритма, а не после первоначальной инициализации для получения Wt? И почему они проинициализированы значениями 0x871714dc ..... Чуть выше по тексту в комментариях они присутствуют и на сколько я понял являются первыми значениями выполнения функции SHA256_Update? Что тоже не особо понятно

 

SHA256_Update(&sha256_pass1, ((unsigned char*)&header)+64, sizeof(block_header)-64);

/*

data

[0x0] 0x871714dc unsigned int - header.merkle_root, "871714dc...

[0x1] 0x53058b35 unsigned int - header.timestamp = 0x53058b35;

[0x2] 0x19015f53 unsigned int - header.bits = 0x19015f53;

[0x3] 0x33087548 unsigned int - header.nonce = 856192328;

*/

post-81150-1499200199_thumb.jpg

Изменено пользователем RamZoom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На Openssl весь алгоритм выглядит так:

 

SHA256_Init(&sha256_pass1);

SHA256_Update(&sha256_pass1, (unsigned char*)&header, 64);

SHA256_Update(&sha256_pass1, ((unsigned char*)&header)+64, sizeof(block_header)-64);

SHA256_Final(hash1, &sha256_pass1);

 

SHA256_Init(&sha256_pass2);

SHA256_Update(&sha256_pass2, hash1, SHA256_DIGEST_LENGTH);

SHA256_Final(hash2, &sha256_pass2);

 

 

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

Здесь мы имеем попытку разобраться с тем, что переносить в ПЛИС из всего алгоритма Bitcoin, см. дальше.

for (i = 0; i < 16; i++)

M = 0;

 

hash[0] = (0xdc6a3b8d);

hash[1] = (0x0c69421a);

hash[2] = (0xcb1a5434);

hash[3] = (0xe536f7d5);

hash[4] = (0xc3c1b9e4);

hash[5] = (0x4cbb9b8f);

hash[6] = (0x95f0172e);

hash[7] = (0xfc48d2df);

 

M[0] = BSWAP32(0x871714dc);

M[1] = BSWAP32(0x53058b35);

M[2] = BSWAP32(0x19015f53);

M[3] = BSWAP32(0x33087548);

M[4] = 0x80000000;

M[15] = 0x00000280;

 

sha256 (M, hash);

 

Фишка здесь в том, что базовых операций SHA-2 здесь 3 штуки.

hash1 от блока sizeof(block_header) - 2 базовых операции, первая из которых от счётчика не зависит и кэшируется.

hash2 от hash1 (hash1 размером SHA256_DIGEST_LENGTH)- 1 базовая операция SHA-2.

 

Таким образом, нужно вычислять только 2 и 3 операции SHA-2, зависящие от счётчика.

В общем, всё здесь есть, кмк, чтобы разобраться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...