когда я вызываю getwork на моем сервере биткойнда, я получаю следующее:
./bitcoind getwork
{
"midstate" : "695d56ae173bbd0fd5f51d8f7753438b940b7cdd61eb62039036acd1af5e51e3",
"data" : "000000013d9dcbbc2d120137c5b1cb1da96bd45b249fd1014ae2c2b400001511000000009726fba001940ebb5c04adc4450bdc0c20b50db44951d9ca22fc5e75d51d501f4deec2711a1d932f00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
"hash1" : "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000",
"target" : "00000000000000000000000000000000000000000000002f931d000000000000"
}
Этот протокол, похоже, не задокументирован. Как мне вычислить хеш из этих данных. Я думаю, что эти данные в порядке байтов. Итак, первый шаг - преобразовать все в старшие числа? Как только это будет сделано, я вычисляю sha256 данных. Данные могут быть разделены на две части по 64 байта каждая. Хэш первого патрона дается средним состоянием и поэтому не должен вычисляться.
Поэтому я должен хэшировать чанк # 2 с помощью sha256, используя среднее состояние в качестве начальных значений хеш-функции. Как только это будет сделано, я получу хеш-код 2, который составляет 32 байта. Я вычисляю хэш этого фрагмента еще раз, чтобы получить окончательный хэш.
Тогда, я могу преобразовать все в little-endian и отправить работу?
Для чего используется hash1?