Я пытаюсь реализовать простой шахтер просто понять, какие шаги
из minimg Bitcoins. Реализация является несколько упрощенным, поскольку
Цель состоит в том, чтобы понять добычу, чтобы не сделать быстрый шахтер.
Это скелет кода:
Код:
#! / USR / бен / окр рубин
требуется «» JSON
требуют «переварить»
петля сделать
getwork = JSON.parse `... / bitcoind getwork`
Данные = getwork [ 'данные']
целевых = getwork [ 'цель']
версия = data.slice (0, 8)
prev_hash = data.slice (8, 64)
merkle_root = data.slice (8 + 64, 64)
временная метка = data.slice (8 + 64 + 64, 8)
бит = data.slice (8 + 64 + 64 + 8, 8)
# немного против больших блефускианских:
бен =
[Версия] .pack ( 'Н *'). Обратная +
[Prev_hash] .pack ( 'Н *'). Обратном +
[Merkle_root] .pack ( 'Н *'). Обратном +
[Временная метка] .pack ( 'Н *'). Обратная +
[Бит] .pack ( 'Н *'). Обратного
(0..4294967295) .each {| нонс |
если дайджест :: SHA256.hexdigest (дайджест :: SHA256.digest (бен + [nonce.to_s (16)]. упаковка ( 'Н *'). обратный)) <= целевая
путы "ура!!!"
# Сделать «submitblock» какого-то образом (что является параметром шестигранных данных к нему?)
#
# может быть: ???
#
# система "... / bitcoind submitblock '# {nonce.to_s (16)}'"
#
# или: ???
# система "... / bitcoind submitblock '# {версия + prev_hash + merkle_root + временные метки + бит + nonce.to_s (16)}'"
# или:
# SHA256 (SHA256 (бен + нонс)) ??
ломать
конец
}
конец
Я хотел бы попросить немного помочь, как это сделать. getwork [ 'данные'] является 256 длиной строки гекса (128 байт),
и я не уверен, что части этих данных должен быть хэшированными, и как совместить это с
одноразовое значение. В приведенном выше коде, я просто использовать первые 76 байт (152 гекса цифр) данных, но я
боюсь, что это не то, что я должен делать.
Как вы можете видеть, что я не знаю, как отправить назад, когда я нахожу хэш. Я полагаю, я должен использовать
запрос submitblock, но то, что это правильный способ сделать это? Что именно первый paramether
из этого вызова?
Что Midstate и hash1 хороши? Как эти вещи ускорить добычу?
Я знаю, что getwork древнего путь, и есть так называемые расширения протокола,
долго опроса, и другие страшные вещи. Есть краткая вступительная документация обо всех
эти вещи где-то?