Bitcoin Forum

Local => Кодеры => Topic started by: Many Coins on March 13, 2018, 09:57:34 AM



Title: Алгоритм генерации генезис-хэш и меркле-х
Post by: Many Coins on March 13, 2018, 09:57:34 AM
Парни, не в службу а в дружбу..  ;D

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

Кто это понимает отчетливо - можете последовательно по шагам написать, типа:

1. Берем словесный таймштамп (фразу) и конкатенируем ее с юникстайм

2. От полученной текстовой переменной вычисляем sha256 хэш

...

...

7. Получаем генезис-хэш

Это я сейчас условно написал. Очень уж хочется разобраться :)

Спасибо.


Title: Re: Алгоритм генерации генезис-хэш и меркле-х
Post by: Many Coins on March 13, 2018, 02:06:37 PM
Хорошо, поставим вопрос иначе :)

Дано:

Code:
phrase = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";

nonce = 2083236893;

time = 1231006505;

pubkey = 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f;

что теперь со всем этим следует сделать, чтобы получить:

Code:
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

???

Какова формула?

P.S. и

Code:
merklehash = 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b;


Title: Re: Алгоритм генерации генезис-хэш и меркле-х
Post by: Coin-1 on March 14, 2018, 03:54:24 AM
Если говорить о дереве Меркля, то обычно в генезис-блоке только одна транзакция (coinbase). От этой транзакции нужно просто посчитать двойной SHA256, это будет корневой hashMerkleRoot. Затем нужно собрать заголовок блока, структура которого заранее известна и составляет 80 байт. Потом нужно некоторое время майнить на минимальной сложности и найти требуемое значение nonce. Говоря утрированно, генезис-блок готов.


Title: Re: Алгоритм генерации генезис-хэш и меркле-х
Post by: Many Coins on March 14, 2018, 07:47:53 AM
Если говорить о дереве Меркля, то обычно в генезис-блоке только одна транзакция (coinbase). От этой транзакции нужно просто посчитать двойной SHA256, это будет корневой hashMerkleRoot. Затем нужно собрать заголовок блока, структура которого заранее известна и составляет 80 байт. Потом нужно некоторое время майнить на минимальной сложности и найти требуемое значение nonce. Говоря утрированно, генезис-блок готов.

Спасибо! Я впрочем вчера именно с генезис-хэшом вроде разобрался - но с hashMerkleRoot пока нет.

Как я могу узнать эту coinbase для генезис-блока? Т.е. из каких кирпичиков ее собрать и в какой последовательности?

И какое отношение к ней имеет вербальный таймштамп, ну, эта знаменитая фраза про японское правительство)))


Title: Re: Алгоритм генерации генезис-хэш и меркле-х
Post by: neiros on March 14, 2018, 10:50:50 AM

Самый простой алгоритм в несколько строчек кода:
  • Изменяем параметры генезиз-блока и его транзакции.
  • До всевозможный проверок вставляем цикл перебора хешей по полному или частичному диапазону нонсе с выводом в дебаг.лог нужных хешей и соответствующим им нонсе.
  • Запускаем клиент, ждём когда в дебаг.логе появятся нужные хеши с нонсами. Достаточно конечно же одной пары.
  • Полученным нонсе заменяем первоначальный нонсе, а полученным хешем заменяем первоначальный генезиз-хеш. (merklehash не нужен)


Title: Re: Алгоритм генерации генезис-хэш и меркле-х
Post by: Many Coins on March 14, 2018, 01:28:02 PM

Самый простой алгоритм в несколько строчек кода:
  • Изменяем параметры генезиз-блока и его транзакции.
  • До всевозможный проверок вставляем цикл перебора хешей по полному или частичному диапазону нонсе с выводом в дебаг.лог нужных хешей и соответствующим им нонсе.
  • Запускаем клиент, ждём когда в дебаг.логе появятся нужные хеши с нонсами. Достаточно конечно же одной пары.
  • Полученным нонсе заменяем первоначальный нонсе, а полученным хешем заменяем первоначальный генезиз-блок. (merklehash не нужен)

Ну это как бы галимая технология  ;D

Оно, разумеется, тоже ценно, но я хочу именно разобраться откуда там и куда ноги растут.

Как генерить генезис-хэш зная меркле-рут-хэш - я уже понял.

Теперь я хочу понять, как сгенернить меркле-рут-хэш и как получить coinbase для генезис-блока.


Title: Re: Алгоритм генерации генезис-хэш и меркле-х
Post by: neiros on March 14, 2018, 01:36:39 PM

Ноги растут из методов соответствующих объектов. Других вариантов нет.