Bitcoin Forum
April 23, 2024, 08:13:26 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: CPU Биткоин майнер на паскале / дельфи  (Read 434 times)
Lord_ICO (OP)
Jr. Member
*
Offline Offline

Activity: 35
Merit: 1


View Profile
January 18, 2021, 01:20:11 PM
 #1

Всем добрый день! Помогите найти биткоин майнер на процессоре, написанный на паскале. Чтоб был полностью рабочий, подключался к пулу. Или, может, кто напишет таковой за вознаграждение. Переводить с других языков не охота, а в паскале я соображаю. Хочу поразбираться в этой теме, модернизировать может.
1713860006
Hero Member
*
Offline Offline

Posts: 1713860006

View Profile Personal Message (Offline)

Ignore
1713860006
Reply with quote  #2

1713860006
Report to moderator
1713860006
Hero Member
*
Offline Offline

Posts: 1713860006

View Profile Personal Message (Offline)

Ignore
1713860006
Reply with quote  #2

1713860006
Report to moderator
1713860006
Hero Member
*
Offline Offline

Posts: 1713860006

View Profile Personal Message (Offline)

Ignore
1713860006
Reply with quote  #2

1713860006
Report to moderator
No Gods or Kings. Only Bitcoin
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
~DefaultTrust
Copper Member
Sr. Member
****
Offline Offline

Activity: 1540
Merit: 487

Stop the war!


View Profile
January 18, 2021, 03:28:26 PM
 #2

Всем добрый день! Помогите найти биткоин майнер на процессоре, написанный на паскале. Чтоб был полностью рабочий, подключался к пулу. Или, может, кто напишет таковой за вознаграждение. Переводить с других языков не охота, а в паскале я соображаю. Хочу поразбираться в этой теме, модернизировать может.
Не найдешь таких готовых.
За бабки - ищи студентов которым заняться больше нечем ибо паскаль кроме них никому давно не нужен.

Do not trust bitcointalk fascists: leonello; Snork1979; ivan1975
Lord_ICO (OP)
Jr. Member
*
Offline Offline

Activity: 35
Merit: 1


View Profile
January 18, 2021, 04:07:01 PM
 #3

Тогда какой самый простой майнер на с++?
A-Bolt
Legendary
*
Offline Offline

Activity: 2311
Merit: 2296


View Profile
January 18, 2021, 04:45:56 PM
Merited by Symmetrick (1)
 #4

Тогда какой самый простой майнер на с++?

Восемь лет назад этот вопрос уже задавали. С тех пор изменился протокол по которому программа-майнер общается с пулом. Тогда это был getwork, сейчас - stratum.
neiros
Legendary
*
Offline Offline

Activity: 3500
Merit: 1100



View Profile WWW
January 18, 2021, 05:21:25 PM
Merited by xandry (2)
 #5


getwork forever!!! Cool

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

~DefaultTrust
Copper Member
Sr. Member
****
Offline Offline

Activity: 1540
Merit: 487

Stop the war!


View Profile
January 18, 2021, 06:02:42 PM
 #6

Если хочется именно разобраться с нуля, то лучше самому попробовать написать для начала хотя бы простейший соло-майнер. За основу можно взять куски кода из ранних клиентов биткоина (версии <= v0.8 ). Пройти по стопам первопроходцев короче  Smiley

Do not trust bitcointalk fascists: leonello; Snork1979; ivan1975
Lord_ICO (OP)
Jr. Member
*
Offline Offline

Activity: 35
Merit: 1


View Profile
January 18, 2021, 07:42:03 PM
 #7

Да, именно хочу с нуля начать, все изучить. Ранние версии клиента биткоина это что за прога? На которые ссылки давали?
~DefaultTrust
Copper Member
Sr. Member
****
Offline Offline

Activity: 1540
Merit: 487

Stop the war!


View Profile
January 19, 2021, 05:34:12 AM
Merited by Symmetrick (4), xandry (2)
 #8

Да, именно хочу с нуля начать, все изучить. Ранние версии клиента биткоина это что за прога? На которые ссылки давали?
Короче тема такая:
биткоин когда-то был не просто цифрами на биржевых графиках, но и еще перспективной децентрализованной валютой типа вебмани (надеюсь знаешь что это). Для кошелька биткоинов была выпущена глюковатая виндовая программа с убогим интерфейсом, которая называлась "Bitcoin Core". Эта прога почти ничего не умела, она только показывала число биткоинов в кошельке, позволяла переводить и получать биткоины из/на кошелек, но самой интересной ее фишкой было то, что эта прога умела "добывать биткоины" из ничего... Ну то есть просто, чтобы получить 50 биткоинов себе на счет, достаточно было оставить эту прогу включенной на недельку и все!
Потом эту прогу начали доводить до ума разные умные и не очень кодеры, повыпускали кучу новых версий которые уже перестали быть обратно совместимыми с первоначальным вариантом, ну и встроенный майнер из нее тоже вырезали "за ненадобностью". Последняя версия в которой был майнер вроде v0.16, хотя могу и ошибаться.
Почти все версии этой проги есть тут: https://github.com/bitcoin/bitcoin/releases
Самые простые версии, которые можно скомпилировать одной командо кончились где-то на версии v0.8, ее я тебе и рекомендую для изучения, бери любую тут https://github.com/bitcoin/bitcoin/releases?after=v0.8.6rc1

Do not trust bitcointalk fascists: leonello; Snork1979; ivan1975
Lord_ICO (OP)
Jr. Member
*
Offline Offline

Activity: 35
Merit: 1


View Profile
January 20, 2021, 05:43:36 PM
Last edit: January 20, 2021, 06:04:54 PM by Lord_ICO
Merited by Symmetrick (1)
 #9

Нашел интересную тему. Это примерно то, что я искал изначально. исходники тоже очень помогают, но вот в этой теме человек подробно и на пальцах все объясняет. Может, кому пригодися. https://habr.com/ru/post/420131/
reddish111
Sr. Member
****
Offline Offline

Activity: 1932
Merit: 349



View Profile
February 20, 2021, 09:31:38 PM
Last edit: March 17, 2021, 06:55:58 PM by reddish111
 #10

Нашел интересную тему. Это примерно то, что я искал изначально. исходники тоже очень помогают, но вот в этой теме человек подробно и на пальцах все объясняет. Может, кому пригодися. https://habr.com/ru/post/420131/


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

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

Lord_ICO (OP)
Jr. Member
*
Offline Offline

Activity: 35
Merit: 1


View Profile
March 17, 2021, 04:16:06 PM
 #11

Что то не могу найти информацию по строению биткоин-блока. Чтобы там подробно описывались все поля заголовка, какие хеши, какая длина и т. д. И как весь этот блок майнится. Функция SHA256  получает на вход 64 байта, их кодирует, обрабатывает. А длина блока 1 Мб, если не ошибаюсь. Как строится алгоритм майнинга всего блока, чтоб на выходе получилась эта заветная хе-функция, удовлетворяющая сложности сети?
A-Bolt
Legendary
*
Offline Offline

Activity: 2311
Merit: 2296


View Profile
March 17, 2021, 04:28:36 PM
Merited by Symmetrick (1)
 #12

Что то не могу найти информацию по строению биткоин-блока.
https://en.bitcoin.it/wiki/Block_hashing_algorithm
https://en.bitcoin.it/wiki/Getblocktemplate
ligor
Full Member
***
Offline Offline

Activity: 1246
Merit: 138


Hodl DeepOnion


View Profile WWW
March 26, 2021, 01:19:42 PM
 #13

Всем добрый день! Помогите найти биткоин майнер на процессоре, написанный на паскале. Чтоб был полностью рабочий, подключался к пулу. Или, может, кто напишет таковой за вознаграждение. Переводить с других языков не охота, а в паскале я соображаю. Хочу поразбираться в этой теме, модернизировать может.
Только что наткнулся на англо ветку крипты на Фрипаскале (https://github.com/DevTeamNoso/NosoWallet), и минер к нему есть https://github.com/DevTeamNoso/Nosominer - может интересно.

alexeyneu
Member
**
Offline Offline

Activity: 312
Merit: 30


View Profile
March 31, 2021, 10:41:14 AM
 #14

на паскале 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;
}

reddish111
Sr. Member
****
Offline Offline

Activity: 1932
Merit: 349



View Profile
March 31, 2021, 11:02:08 AM
 #15

на паскале 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;
}


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

Lord_ICO (OP)
Jr. Member
*
Offline Offline

Activity: 35
Merit: 1


View Profile
April 30, 2021, 02:58:07 PM
 #16

Когда давно я работал программистом, я пользовался инструкциями sse, в частности регистрами 64 разрядными, через асм-вставки в код на дельфи.
Lord_ICO (OP)
Jr. Member
*
Offline Offline

Activity: 35
Merit: 1


View Profile
April 30, 2021, 03:13:44 PM
Last edit: May 02, 2021, 06:11:04 PM by Xal0lex
 #17

На данный момент я написал программу, в которой реализована только функция вычисления хеша 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;
}

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

Activity: 2311
Merit: 2296


View Profile
April 30, 2021, 04:29:39 PM
Merited by Symmetrick (2), klarki (1)
 #18

Или, может, кто то в самой программе сможет найти ошибку?

Сравните вашу реализацию SHA-256 с уже существующей. В результате, или найдёте ошибку у себя, или просто возьмёте чужой код.
Alex-70
Member
**
Offline Offline

Activity: 191
Merit: 10


View Profile WWW
May 15, 2021, 01:15:12 PM
 #19

Тогда какой самый простой майнер на с++?
Это делается что на Билдере, что на Делфи за 20 минут (со словарём).
Майнинг - это просто перебор значений Nonsense и хеширование, пока не получится хеш меньше цели.
В любом случае, делать это бессмысленно, так как экономической целесообразности работы на универсальных процессорах нету лет десять.

Приглашаю получить бонус и протестировать биржу обмена BTC⇔Рубль. Ссылка в профиле.
~DefaultTrust
Copper Member
Sr. Member
****
Offline Offline

Activity: 1540
Merit: 487

Stop the war!


View Profile
May 16, 2021, 09:24:23 AM
 #20

Тогда какой самый простой майнер на с++?
Это делается что на Билдере, что на Делфи за 20 минут (со словарём).

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

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

Do not trust bitcointalk fascists: leonello; Snork1979; ivan1975
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!