Bitcoin Forum

Local => Кодеры => Topic started by: Lord_ICO on January 18, 2021, 01:20:11 PM



Title: CPU Биткоин майнер на паскале / дельфи
Post by: Lord_ICO on January 18, 2021, 01:20:11 PM
Всем добрый день! Помогите найти биткоин майнер на процессоре, написанный на паскале. Чтоб был полностью рабочий, подключался к пулу. Или, может, кто напишет таковой за вознаграждение. Переводить с других языков не охота, а в паскале я соображаю. Хочу поразбираться в этой теме, модернизировать может.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: ~DefaultTrust on January 18, 2021, 03:28:26 PM
Всем добрый день! Помогите найти биткоин майнер на процессоре, написанный на паскале. Чтоб был полностью рабочий, подключался к пулу. Или, может, кто напишет таковой за вознаграждение. Переводить с других языков не охота, а в паскале я соображаю. Хочу поразбираться в этой теме, модернизировать может.
Не найдешь таких готовых.
За бабки - ищи студентов которым заняться больше нечем ибо паскаль кроме них никому давно не нужен.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: Lord_ICO on January 18, 2021, 04:07:01 PM
Тогда какой самый простой майнер на с++?


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: A-Bolt on January 18, 2021, 04:45:56 PM
Тогда какой самый простой майнер на с++?

Восемь лет назад этот вопрос уже задавали. (https://bitcointalk.org/index.php?topic=99602.0) С тех пор изменился протокол по которому программа-майнер общается с пулом. Тогда это был getwork, сейчас - stratum.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: neiros on January 18, 2021, 05:21:25 PM

getwork forever!!! 8)

https://github.com/neiros/cpuminer-multi и стратум тоже есть.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: ~DefaultTrust on January 18, 2021, 06:02:42 PM
Если хочется именно разобраться с нуля, то лучше самому попробовать написать для начала хотя бы простейший соло-майнер. За основу можно взять куски кода из ранних клиентов биткоина (версии <= v0.8 ). Пройти по стопам первопроходцев короче  :)


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: Lord_ICO on January 18, 2021, 07:42:03 PM
Да, именно хочу с нуля начать, все изучить. Ранние версии клиента биткоина это что за прога? На которые ссылки давали?


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: ~DefaultTrust on January 19, 2021, 05:34:12 AM
Да, именно хочу с нуля начать, все изучить. Ранние версии клиента биткоина это что за прога? На которые ссылки давали?
Короче тема такая:
биткоин когда-то был не просто цифрами на биржевых графиках, но и еще перспективной децентрализованной валютой типа вебмани (надеюсь знаешь что это). Для кошелька биткоинов была выпущена глюковатая виндовая программа с убогим интерфейсом, которая называлась "Bitcoin Core". Эта прога почти ничего не умела, она только показывала число биткоинов в кошельке, позволяла переводить и получать биткоины из/на кошелек, но самой интересной ее фишкой было то, что эта прога умела "добывать биткоины" из ничего... Ну то есть просто, чтобы получить 50 биткоинов себе на счет, достаточно было оставить эту прогу включенной на недельку и все!
Потом эту прогу начали доводить до ума разные умные и не очень кодеры, повыпускали кучу новых версий которые уже перестали быть обратно совместимыми с первоначальным вариантом, ну и встроенный майнер из нее тоже вырезали "за ненадобностью". Последняя версия в которой был майнер вроде v0.16, хотя могу и ошибаться.
Почти все версии этой проги есть тут: https://github.com/bitcoin/bitcoin/releases
Самые простые версии, которые можно скомпилировать одной командо кончились где-то на версии v0.8, ее я тебе и рекомендую для изучения, бери любую тут https://github.com/bitcoin/bitcoin/releases?after=v0.8.6rc1


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: Lord_ICO on January 20, 2021, 05:43:36 PM
Нашел интересную тему. Это примерно то, что я искал изначально. исходники тоже очень помогают, но вот в этой теме человек подробно и на пальцах все объясняет. Может, кому пригодися. https://habr.com/ru/post/420131/ (https://habr.com/ru/post/420131/)


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: reddish111 on February 20, 2021, 09:31:38 PM
Нашел интересную тему. Это примерно то, что я искал изначально. исходники тоже очень помогают, но вот в этой теме человек подробно и на пальцах все объясняет. Может, кому пригодися. https://habr.com/ru/post/420131/ (https://habr.com/ru/post/420131/)


Забавно конечно будет если что то от битка на паскаль партируешь тебе наверно за такие потуги что то дадут помимо мерита  ;D
Но с точки практического применения это безсмысленно, паскаль кроме универа нигде не встречал.
Всё равно тебе придётся изучать другие языки программирования, так что лучше изучи что то современное и туда своё время и намеренья направь.
Хотя может есть какие то приимущества pascal или delphi о которых я не знаю  ::)
Хотя после знакомства с Ada это врядли.

Ps: Хотя тема угадай 256 бит подряд и поучи привет от Сатоши очень даже интересна  ;)
Pps: тута немножко про все эти хэши меши https://habr.com/ru/post/336578/


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: Lord_ICO on March 17, 2021, 04:16:06 PM
Что то не могу найти информацию по строению биткоин-блока. Чтобы там подробно описывались все поля заголовка, какие хеши, какая длина и т. д. И как весь этот блок майнится. Функция SHA256  получает на вход 64 байта, их кодирует, обрабатывает. А длина блока 1 Мб, если не ошибаюсь. Как строится алгоритм майнинга всего блока, чтоб на выходе получилась эта заветная хе-функция, удовлетворяющая сложности сети?


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: A-Bolt on March 17, 2021, 04:28:36 PM
Что то не могу найти информацию по строению биткоин-блока.
https://en.bitcoin.it/wiki/Block_hashing_algorithm (https://en.bitcoin.it/wiki/Block_hashing_algorithm)
https://en.bitcoin.it/wiki/Getblocktemplate (https://en.bitcoin.it/wiki/Getblocktemplate)


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: ligor on March 26, 2021, 01:19:42 PM
Всем добрый день! Помогите найти биткоин майнер на процессоре, написанный на паскале. Чтоб был полностью рабочий, подключался к пулу. Или, может, кто напишет таковой за вознаграждение. Переводить с других языков не охота, а в паскале я соображаю. Хочу поразбираться в этой теме, модернизировать может.
Только что наткнулся на англо ветку крипты на Фрипаскале (https://github.com/DevTeamNoso/NosoWallet), и минер к нему есть https://github.com/DevTeamNoso/Nosominer - может интересно.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: alexeyneu on March 31, 2021, 10:41:14 AM
на паскале sse все равно нет. И нахрена тебе пул если шансы ~0% на выигрыш. На с++ есть все . Ты лучше первый блок добудь бля
Code:
	unsigned char  block_hash1[32];
#ifdef _MSC_VER
_declspec(align(16)) unsigned char  block_hashfp[32];
#else
__attribute__((aligned(16))) unsigned char  block_hashfp[32];
#endif
unsigned int counter=0, start = time(NULL);
int drift = 4;
__m128i r, m, b, camp;
__m128i zero = _mm_setzero_si128();

unsigned short turt;
while(1) {

SHA256((unsigned char*)&block_header, 80, block_hash1);
SHA256(block_hash1, 32, block_hashfp);

r = _mm_load_si128((__m128i *)block_hashfp);
m = _mm_load_si128((__m128i *)(block_hashfp+16));
switch (drift)
{
case 0:
    break;
case 1:
b = _mm_alignr_epi8(m, r, 31);

    break;
case 2:
b = _mm_alignr_epi8(m, r, 30);

    break;
case 3:
b = _mm_alignr_epi8(m, r, 29);
   
break;
case 4:
b = _mm_alignr_epi8(m, r, 28);

    break;
case 5:
b = _mm_alignr_epi8(m, r, 27);

    break;
case 6:
b = _mm_alignr_epi8(m, r, 26);

    break;
case 7:
b = _mm_alignr_epi8(m, r, 25);

    break;
case 8:
b = _mm_alignr_epi8(m, r, 24);

    break;
case 9:
b = _mm_alignr_epi8(m, r, 23);

    break;
case 10:

b = _mm_alignr_epi8(m, r, 22);
    break;
case 11:
b = _mm_alignr_epi8(m, r, 21);

    break;
case 12:
b = _mm_alignr_epi8(m, r, 20);

    break;
case 13:

    break;
default:

    break;
}
/*now it turns out like:
* Hashes 6018c18fcd4bfabb523f2ee1f6c18880f38135f3eb0ff1aa76acbc2fa94eb8ce
* And
* b 0000000000000000 000000006018c18f
*/

camp = _mm_cmpeq_epi8(b ,zero);
turt = _mm_movemask_epi8(camp);
if (turt == 0xffff)
{
std::reverse(block_hashfp,block_hashfp +32);
std::cout << "\nBlock found!\nHash: " << bin2hex(block_hashfp, 32) <<"\nNonce: " << block_header.startNonce << "\nUnix time: "<< block_header.unixtime << std::endl;
break;
}



Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: reddish111 on March 31, 2021, 11:02:08 AM
на паскале sse все равно нет. И нахрена тебе пул если шансы ~0% на выигрыш. На с++ есть все . Ты лучше первый блок добудь бля
Code:
	unsigned char  block_hash1[32];
#ifdef _MSC_VER
_declspec(align(16)) unsigned char  block_hashfp[32];
#else
__attribute__((aligned(16))) unsigned char  block_hashfp[32];
#endif
unsigned int counter=0, start = time(NULL);
int drift = 4;
__m128i r, m, b, camp;
__m128i zero = _mm_setzero_si128();

unsigned short turt;
while(1) {

SHA256((unsigned char*)&block_header, 80, block_hash1);
SHA256(block_hash1, 32, block_hashfp);

r = _mm_load_si128((__m128i *)block_hashfp);
m = _mm_load_si128((__m128i *)(block_hashfp+16));
switch (drift)
{
case 0:
    break;
case 1:
b = _mm_alignr_epi8(m, r, 31);

    break;
case 2:
b = _mm_alignr_epi8(m, r, 30);

    break;
case 3:
b = _mm_alignr_epi8(m, r, 29);
   
break;
case 4:
b = _mm_alignr_epi8(m, r, 28);

    break;
case 5:
b = _mm_alignr_epi8(m, r, 27);

    break;
case 6:
b = _mm_alignr_epi8(m, r, 26);

    break;
case 7:
b = _mm_alignr_epi8(m, r, 25);

    break;
case 8:
b = _mm_alignr_epi8(m, r, 24);

    break;
case 9:
b = _mm_alignr_epi8(m, r, 23);

    break;
case 10:

b = _mm_alignr_epi8(m, r, 22);
    break;
case 11:
b = _mm_alignr_epi8(m, r, 21);

    break;
case 12:
b = _mm_alignr_epi8(m, r, 20);

    break;
case 13:

    break;
default:

    break;
}
/*now it turns out like:
* Hashes 6018c18fcd4bfabb523f2ee1f6c18880f38135f3eb0ff1aa76acbc2fa94eb8ce
* And
* b 0000000000000000 000000006018c18f
*/

camp = _mm_cmpeq_epi8(b ,zero);
turt = _mm_movemask_epi8(camp);
if (turt == 0xffff)
{
std::reverse(block_hashfp,block_hashfp +32);
std::cout << "\nBlock found!\nHash: " << bin2hex(block_hashfp, 32) <<"\nNonce: " << block_header.startNonce << "\nUnix time: "<< block_header.unixtime << std::endl;
break;
}


Кусок кода без коментариев это как кусок говна  :'(


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: Lord_ICO on April 30, 2021, 02:58:07 PM
Когда давно я работал программистом, я пользовался инструкциями sse, в частности регистрами 64 разрядными, через асм-вставки в код на дельфи.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: Lord_ICO on April 30, 2021, 03:13:44 PM
На данный момент я написал программу, в которой реализована только функция вычисления хеша sha256. Исходное сообщение жёстко прописана константой в проге, но конечный результат не совпадает с тем, что вычисляется на различных интернет сайтах.
В процессе отладки я сверяю работу программы и текущие значения переменных на основе статей, где подробно описывается логика работы алгоритма и расписаны промежуточные шаги алгоритма. Но там подробно описывается только первый раунд расчёта, и моя прога считает идентичные значения. А где то в следующем раунде идёт разногласия в расчётах, закрывается ошибка, и конечный хеш отличается от того, который должен получиться. Может, надо что тов исходное сообщение добавить, может промежуточная таблица у меня строится с ошибкой, я не знаю.
Где можно найти отладочные промежуточные результаты работы всех 64 раундов??
Или, может, кто то в самой программе сможет найти ошибку?



на паскале sse все равно нет. И нахрена тебе пул если шансы ~0% на выигрыш. На с++ есть все . Ты лучше первый блок добудь бля
Code:
	unsigned char  block_hash1[32];
#ifdef _MSC_VER
_declspec(align(16)) unsigned char  block_hashfp[32];
#else
__attribute__((aligned(16))) unsigned char  block_hashfp[32];
#endif
unsigned int counter=0, start = time(NULL);
int drift = 4;
__m128i r, m, b, camp;
__m128i zero = _mm_setzero_si128();

unsigned short turt;
while(1) {

SHA256((unsigned char*)&block_header, 80, block_hash1);
SHA256(block_hash1, 32, block_hashfp);

r = _mm_load_si128((__m128i *)block_hashfp);
m = _mm_load_si128((__m128i *)(block_hashfp+16));
switch (drift)
{
case 0:
    break;
case 1:
b = _mm_alignr_epi8(m, r, 31);

    break;
case 2:
b = _mm_alignr_epi8(m, r, 30);

    break;
case 3:
b = _mm_alignr_epi8(m, r, 29);
   
break;
case 4:
b = _mm_alignr_epi8(m, r, 28);

    break;
case 5:
b = _mm_alignr_epi8(m, r, 27);

    break;
case 6:
b = _mm_alignr_epi8(m, r, 26);

    break;
case 7:
b = _mm_alignr_epi8(m, r, 25);

    break;
case 8:
b = _mm_alignr_epi8(m, r, 24);

    break;
case 9:
b = _mm_alignr_epi8(m, r, 23);

    break;
case 10:

b = _mm_alignr_epi8(m, r, 22);
    break;
case 11:
b = _mm_alignr_epi8(m, r, 21);

    break;
case 12:
b = _mm_alignr_epi8(m, r, 20);

    break;
case 13:

    break;
default:

    break;
}
/*now it turns out like:
* Hashes 6018c18fcd4bfabb523f2ee1f6c18880f38135f3eb0ff1aa76acbc2fa94eb8ce
* And
* b 0000000000000000 000000006018c18f
*/

camp = _mm_cmpeq_epi8(b ,zero);
turt = _mm_movemask_epi8(camp);
if (turt == 0xffff)
{
std::reverse(block_hashfp,block_hashfp +32);
std::cout << "\nBlock found!\nHash: " << bin2hex(block_hashfp, 32) <<"\nNonce: " << block_header.startNonce << "\nUnix time: "<< block_header.unixtime << std::endl;
break;
}

Ты для чего это все написал, бля? Показать, что ты уже взрослый, бля? И что ты умеешь материться, бля? Ты, лучше покажи, что ты умный и знаешь пути к решению моей задачи. Или иди и ищи блок на стройке, из бетона, бля.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: A-Bolt on April 30, 2021, 04:29:39 PM
Или, может, кто то в самой программе сможет найти ошибку?

Сравните вашу реализацию SHA-256 с уже существующей (https://github.com/Xor-el/HashLib4Pascal/blob/master/HashLib/src/Crypto/HlpSHA2_256Base.pas). В результате, или найдёте ошибку у себя, или просто возьмёте чужой код.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: Alex-70 on May 15, 2021, 01:15:12 PM
Тогда какой самый простой майнер на с++?
Это делается что на Билдере, что на Делфи за 20 минут (со словарём).
Майнинг - это просто перебор значений Nonsense и хеширование, пока не получится хеш меньше цели.
В любом случае, делать это бессмысленно, так как экономической целесообразности работы на универсальных процессорах нету лет десять.


Title: Re: CPU Биткоин майнер на паскале / дельфи
Post by: ~DefaultTrust on May 16, 2021, 09:24:23 AM
Тогда какой самый простой майнер на с++?
Это делается что на Билдере, что на Делфи за 20 минут (со словарём).

Методом копипастинга - да. Даже быстрей.
Или ты с нуля можешь разработать алгоритм хэширования за 20 минут? Ну тогда ты гений чувак! Или пиздабол  ;D
Покажи мастеркласс на ютубе где-нибудь.

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