Bitcoin Forum
November 07, 2024, 03:26:20 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Алгоритм генерации генезис-хэш и меркле-х  (Read 193 times)
Many Coins (OP)
Member
**
Offline Offline

Activity: 294
Merit: 11

Lord Shiva


View Profile
March 13, 2018, 09:57:34 AM
 #1

Парни, не в службу а в дружбу..  Grin

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

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

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

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

...

...

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

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

Спасибо.
Many Coins (OP)
Member
**
Offline Offline

Activity: 294
Merit: 11

Lord Shiva


View Profile
March 13, 2018, 02:06:37 PM
Last edit: March 13, 2018, 02:18:33 PM by Many Coins
 #2

Хорошо, поставим вопрос иначе 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;
Coin-1
Legendary
*
Offline Offline

Activity: 2618
Merit: 2304



View Profile
March 14, 2018, 03:54:24 AM
 #3

Если говорить о дереве Меркля, то обычно в генезис-блоке только одна транзакция (coinbase). От этой транзакции нужно просто посчитать двойной SHA256, это будет корневой hashMerkleRoot. Затем нужно собрать заголовок блока, структура которого заранее известна и составляет 80 байт. Потом нужно некоторое время майнить на минимальной сложности и найти требуемое значение nonce. Говоря утрированно, генезис-блок готов.
Many Coins (OP)
Member
**
Offline Offline

Activity: 294
Merit: 11

Lord Shiva


View Profile
March 14, 2018, 07:47:53 AM
 #4

Если говорить о дереве Меркля, то обычно в генезис-блоке только одна транзакция (coinbase). От этой транзакции нужно просто посчитать двойной SHA256, это будет корневой hashMerkleRoot. Затем нужно собрать заголовок блока, структура которого заранее известна и составляет 80 байт. Потом нужно некоторое время майнить на минимальной сложности и найти требуемое значение nonce. Говоря утрированно, генезис-блок готов.

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

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

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

Activity: 3556
Merit: 1100



View Profile WWW
March 14, 2018, 10:50:50 AM
Last edit: March 14, 2018, 01:33:02 PM by neiros
 #5


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

Many Coins (OP)
Member
**
Offline Offline

Activity: 294
Merit: 11

Lord Shiva


View Profile
March 14, 2018, 01:28:02 PM
 #6


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

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

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

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

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

Activity: 3556
Merit: 1100



View Profile WWW
March 14, 2018, 01:36:39 PM
 #7


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


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!