Author

Topic: Алгоритм генерации генезис-хэш и меркле-х&#11 (Read 183 times)

legendary
Activity: 3486
Merit: 1100

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

member
Activity: 252
Merit: 11
Lord Shiva

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

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

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

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

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

Самый простой алгоритм в несколько строчек кода:
  • Изменяем параметры генезиз-блока и его транзакции.
  • До всевозможный проверок вставляем цикл перебора хешей по полному или частичному диапазону нонсе с выводом в дебаг.лог нужных хешей и соответствующим им нонсе.
  • Запускаем клиент, ждём когда в дебаг.логе появятся нужные хеши с нонсами. Достаточно конечно же одной пары.
  • Полученным нонсе заменяем первоначальный нонсе, а полученным хешем заменяем первоначальный генезиз-хеш. (merklehash не нужен)
member
Activity: 252
Merit: 11
Lord Shiva
Если говорить о дереве Меркля, то обычно в генезис-блоке только одна транзакция (coinbase). От этой транзакции нужно просто посчитать двойной SHA256, это будет корневой hashMerkleRoot. Затем нужно собрать заголовок блока, структура которого заранее известна и составляет 80 байт. Потом нужно некоторое время майнить на минимальной сложности и найти требуемое значение nonce. Говоря утрированно, генезис-блок готов.

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

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

И какое отношение к ней имеет вербальный таймштамп, ну, эта знаменитая фраза про японское правительство)))
legendary
Activity: 2450
Merit: 2190
Если говорить о дереве Меркля, то обычно в генезис-блоке только одна транзакция (coinbase). От этой транзакции нужно просто посчитать двойной SHA256, это будет корневой hashMerkleRoot. Затем нужно собрать заголовок блока, структура которого заранее известна и составляет 80 байт. Потом нужно некоторое время майнить на минимальной сложности и найти требуемое значение nonce. Говоря утрированно, генезис-блок готов.
member
Activity: 252
Merit: 11
Lord Shiva
Хорошо, поставим вопрос иначе Smiley

Дано:

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

nonce = 2083236893;

time = 1231006505;

pubkey = 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f;

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

Code:
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

Huh

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

P.S. и

Code:
merklehash = 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b;
member
Activity: 252
Merit: 11
Lord Shiva
Парни, не в службу а в дружбу..  Grin

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

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

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

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

...

...

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

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

Спасибо.
Jump to: