Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
28 октября 2012, 6:57:41 AM   # 1
 
 
Сообщений: 33
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Здравствуй,

Я пытаюсь реализовать простой шахтер просто понять, какие шаги
из 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 древнего путь, и есть так называемые расширения протокола,
долго опроса, и другие страшные вещи. Есть краткая вступительная документация обо всех
эти вещи где-то?
questionstorm сейчас офлайн Пожаловаться на questionstorm   Ответить с цитированием Мультицитирование сообщения от questionstorm Быстрый ответ на сообщение questionstorm


Как заработать Биткоины?
Без вложений. Не майнинг.


28 октября 2012, 8:04:10 AM   # 2
 
 
Сообщения: 1512
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Получил 1806 Биткоинов
Реальная история.





https://en.bitcoin.it/wiki/Getwork



http://crypto.stackexchange.com/questions/1862/sha-256-midstate

http://www.javvin.com/protocolRPC.html (Ответить)

http://stackoverflow.com/questions/6273201/bitcoin-calculate-hash-from-getwork-function-how-to-do-it

{"результат": {"данные":"00000001a4940ed3fc5812a2205111bbe1b45a50557ef8d78ed74a380000016d00000000f64f077 c8c3847ef63d9b358374c540989aecc23ad7f7bb276b463b6ab22b4dc508ce4821a0575ef000000 0000000080000000000000000000000000000000000000000000000000000000000000000000000 0000000000080020000"


измените последние четыре байта "данные", Который является одноразовым значением (отсчет от 0 до 0xffffffff, если вам нравится). Hash дважды. Если хэш меньше, чем цели, представить.
не хочется печатать.
deepceleron сейчас офлайн Пожаловаться на deepceleron   Ответить с цитированием Мультицитирование сообщения от deepceleron Быстрый ответ на сообщение deepceleron

28 октября 2012, 5:09:15 PM   # 3
 
 
Сообщения: 653
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Что Midstate и hash1 хороши? Как эти вещи ускорить добычу?
SHA256 только хэши 256 бит, и данные больше, чем это. Вы должны хэш первой части данных (результат является Midstate), а затем хэш остальных данные.
Вы добавляете hash1 к результату (как отступа байт) и хэш его.
Хэш первой части данных не изменяется при изменении временного значения, так что вам не придется делать это снова.
Шлейхер сейчас офлайн Пожаловаться на Шлейхер   Ответить с цитированием Мультицитирование сообщения от Шлейхер Быстрый ответ на сообщение Шлейхер

1 ноября 2012, 3:08:39 PM   # 4
 
 
Сообщений: 33
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Я предполагаю, что я закончил свой шахтера, но я не могу проверить, если он работает нормально. Просто
потому что это слишком медленно, чтобы найти долю или блока. (Задания обычно начинают
по меньшей мере, 40 "0"s, так что это практически невозможно решить для шахтера
которая была написана на языке подлинника.) Может кто-то пожалуйста, пришлите мне
данные и цель, не так уж сложно, и это легко проверить, если мой
Программа делает правильные шаги? Я думаю, что это было бы здорово для других тоже
чтобы увидеть весь getwork от начала до конечной нонса.
questionstorm сейчас офлайн Пожаловаться на questionstorm   Ответить с цитированием Мультицитирование сообщения от questionstorm Быстрый ответ на сообщение questionstorm

1 ноября 2012, 3:11:09 PM   # 5
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Видеть https://github.com/bitcoin/bitcoin/tree/master/contrib/pyminer  :

котировка
Это «getwork» минирование клиент CPU для Bitcoin.

Это чисто питон, и, следовательно, очень, очень медленно. Цель состоит в том, чтобы
обеспечивают эталонную реализацию шахтера, для изучения.

Гэвин Андресен сейчас офлайн Пожаловаться на Гэвин Андресен   Ответить с цитированием Мультицитирование сообщения от Gavin Andresen Быстрый ответ на сообщение Гэвин Андресен

1 ноября 2012, 3:32:53 PM   # 6
 
 
Сообщений: 33
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Это «getwork» минирование клиент CPU для Bitcoin.

Это чисто питон, и, следовательно, очень, очень медленно. Цель состоит в том, чтобы
обеспечивают эталонную реализацию шахтера, для изучения.


Спасибо, это здорово, но я уже сделал сам. Я просто хочу, чтобы проверить это как-то.
questionstorm сейчас офлайн Пожаловаться на questionstorm   Ответить с цитированием Мультицитирование сообщения от questionstorm Быстрый ответ на сообщение questionstorm

1 ноября 2012, 3:43:41 PM   # 7
 
 
Сообщения: 182
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

примерить testnet, трудность там выделить ниже?
https://en.bitcoin.it/wiki/Testnet
Insu ДРА сейчас офлайн Пожаловаться на Insu Дра   Ответить с цитированием Мультицитирование сообщения от Insu Дра Быстрый ответ на сообщение Insu Дра

1 ноября 2012, 4:24:34 PM   # 8
 
 
Сообщения: 125
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Я, кажется, помню, чтобы один и тот же вопрос при работе над добычного сам, теперь я хранить журналы сообщений для воспроизведения для тестирования, если это необходимо. Вот несколько запросов getwork и достоверных ответов, если это помогает:

Код:
{"ошибка": ноль, "jsonrpc": "2,0", "Я бы": 1, "результат": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "цель": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold": правда, "идентификатор": "91138", "данные": "00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c8245032580a1a07a85e00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "Midstate": "03ad4305c1cad2bf14a99b82f3557b5722a060d6ac207450e939cb9f8143a605"}}
{"метод": "getwork", "Титулы": [ "00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c8245032580a1a07a85e8e631c12000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000" ], "Я бы": 1}

{"ошибка": ноль, "jsonrpc": "2,0", "Я бы": 1, "результат": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "цель": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold": правда, "идентификатор": "91138", "данные": "00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c824503257921a07a85e00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "Midstate": "03ad4305c1cad2bf14a99b82f3557b5722a060d6ac207450e939cb9f8143a605"}}
{"метод": "getwork", "Титулы": [ "00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c824503257921a07a85e75636781000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000" ], "Я бы": 1}

{"ошибка": ноль, "jsonrpc": "2,0", "Я бы": 1, "результат": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "цель": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold": правда, "идентификатор": "91140", "данные": "00000002fc517a2df2b283474b135215a00604af276318262f5eebc000000431000000004ef2e77a1afd0bc73e7b8e0becd271e43895372dabb062c78d5a97fb55f48cc05032581d1a07a85e00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "Midstate": "c2d1fff4a613196dd9ae9fd848673eefc1d7d501ae6ddc0ae2e5f820671971b0"}}
{"метод": "getwork", "Титулы": [ "00000002fc517a2df2b283474b135215a00604af276318262f5eebc000000431000000004ef2e77a1afd0bc73e7b8e0becd271e43895372dabb062c78d5a97fb55f48cc05032581d1a07a85e376a8504000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000" ], "Я бы": 1}
mskwik сейчас офлайн Пожаловаться на mskwik   Ответить с цитированием Мультицитирование сообщения от mskwik Быстрый ответ на сообщение mskwik

1 ноября 2012, 7:22:52 PM   # 9
 
 
Сообщения: 952
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Я предполагаю, что я закончил свой шахтера, но я не могу проверить, если он работает нормально. Просто
потому что это слишком медленно, чтобы найти долю или блока. (Задания обычно начинают
по меньшей мере, 40 "0"s, так что это практически невозможно решить для шахтера
которая была написана на языке подлинника.) Может кто-то пожалуйста, пришлите мне
данные и цель, не так уж сложно, и это легко проверить, если мой
Программа делает правильные шаги? Я думаю, что это было бы здорово для других тоже
чтобы увидеть весь getwork от начала до конечной нонса.

Вы можете попробовать просто подключить в виде значений уже существующих блоков, и посмотреть, если они хэширования к правильному хэш. Это то, что я сделал с моей реализацией Javascript.

Я хотел бы найти блок на Blockexplorer.com, а затем подключить данные из этого блока в мой сценарий, а затем установить временное значение, скажем, 1000 меньше, чем значение, которое дает правильный хэш, запустить его, и ждать его, чтобы достичь данный случай, который должен дать блок ниже трудности, и посмотреть, если он сообщает успех, когда он достигает правое временное значение. Мой сценарий использует "getblocktemplate", Хотя, чтобы построить заголовок блока. И он также использует bitcointools Гевины, чтобы правильно сериализовать значение (это может быть реальной сука).
runeks сейчас офлайн Пожаловаться на runeks   Ответить с цитированием Мультицитирование сообщения от runeks Быстрый ответ на сообщение runeks

1 ноября 2012, 7:29:43 PM   # 10
 
 
Сообщений: 33
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Я, кажется, помню, чтобы один и тот же вопрос при работе над добычного сам, теперь я хранить журналы сообщений для воспроизведения для тестирования, если это необходимо. Вот несколько запросов getwork и достоверных ответов, если это помогает:

Код:
{"ошибка": ноль, "jsonrpc": "2,0", "Я бы": 1, "результат": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "цель": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold": правда, "идентификатор": "91138", "данные": "00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c8245032580a1a07a85e00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "Midstate": "03ad4305c1cad2bf14a99b82f3557b5722a060d6ac207450e939cb9f8143a605"}}
{"метод": "getwork", "Титулы": [ "00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c8245032580a1a07a85e8e631c12000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000" ], "Я бы": 1}

{"ошибка": ноль, "jsonrpc": "2,0", "Я бы": 1, "результат": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "цель": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold": правда, "идентификатор": "91138", "данные": "00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c824503257921a07a85e00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "Midstate": "03ad4305c1cad2bf14a99b82f3557b5722a060d6ac207450e939cb9f8143a605"}}
{"метод": "getwork", "Титулы": [ "00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c824503257921a07a85e75636781000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000" ], "Я бы": 1}

{"ошибка": ноль, "jsonrpc": "2,0", "Я бы": 1, "результат": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "цель": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold": правда, "идентификатор": "91140", "данные": "00000002fc517a2df2b283474b135215a00604af276318262f5eebc000000431000000004ef2e77a1afd0bc73e7b8e0becd271e43895372dabb062c78d5a97fb55f48cc05032581d1a07a85e00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "Midstate": "c2d1fff4a613196dd9ae9fd848673eefc1d7d501ae6ddc0ae2e5f820671971b0"}}
{"метод": "getwork", "Титулы": [ "00000002fc517a2df2b283474b135215a00604af276318262f5eebc000000431000000004ef2e77a1afd0bc73e7b8e0becd271e43895372dabb062c78d5a97fb55f48cc05032581d1a07a85e376a8504000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000" ], "Я бы": 1}


Спасибо, это именно то, что мне нужно. Тестовые данные.

Однако есть что-то не так с моим пониманием здесь. Все ваши цели являются

Код:
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000"

поэтому моя программа говорит, что нет никакой необходимости в тяжелые расчеты, потому что это хорошее решение, если одноразовое значение = 0, так как хэш в этом случае ... ну, что-то определенно меньше, чем ffffffffffffffffff ... fffff00000000. (Она начинается с somithing как 0xB, но не имеет значения, почти все хэши меньше этой цели.) Могу ли я что-то отсутствует? Да, я, но что это?   



questionstorm сейчас офлайн Пожаловаться на questionstorm   Ответить с цитированием Мультицитирование сообщения от questionstorm Быстрый ответ на сообщение questionstorm

1 ноября 2012, 7:37:44 PM   # 11
 
 
Сообщения: 952
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Вы должны изменить порядок байтов. Хэш вы видите на сайтах, как blockexplorer.com изменили порядок байт, для того, чтобы нули появляются первыми.

В примере Python на этой странице вы можете увидеть, что порядок байт обратный: https://en.bitcoin.it/wiki/Block_hashing_algorithm
runeks сейчас офлайн Пожаловаться на runeks   Ответить с цитированием Мультицитирование сообщения от runeks Быстрый ответ на сообщение runeks

1 ноября 2012, 7:39:03 PM   # 12
 
 
Сообщений: 33
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Вы можете попробовать просто подключить в виде значений уже существующих блоков, и посмотреть, если они хэширования к правильному хэш. Это то, что я сделал с моей реализацией Javascript.

Да, это был один из моих идей тоже. Там у меня есть две проблемы: Я не знаю, как преобразовать время в формате он находится в поле данных, и нет целевого значения после того, как блок закончен. Согласно помощи в blockexplorer короткая форма сложности может быть превращена в цель как-то, но так, как это сделать, не ясно, для меня вообще.
questionstorm сейчас офлайн Пожаловаться на questionstorm   Ответить с цитированием Мультицитирование сообщения от questionstorm Быстрый ответ на сообщение questionstorm

1 ноября 2012, 7:55:14 PM   # 13
 
 
Сообщения: 952
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Вы можете попробовать просто подключить в виде значений уже существующих блоков, и посмотреть, если они хэширования к правильному хэш. Это то, что я сделал с моей реализацией Javascript.

Да, это был один из моих идей тоже. Там у меня есть две проблемы: Я не знаю, как преобразовать время в формате он находится в поле данных, и нет целевого значения после того, как блок закончен. Согласно помощи в blockexplorer короткая форма сложности может быть превращена в цель как-то, но так, как это сделать, не ясно, для меня вообще.

Возьмите взгляд на "Сырое блок" часть blockexplorer.com. Здесь время в десятичном формате: https://blockexplorer.com/rawblock/000000000000044b71ccd7180e9a3fdeb4d457b76bb6092ad5ebe9692cbf6ef8
Таким образом, вы просто преобразовать это в шестнадцатеричную, а затем (возможно, я не совсем помню) обратный порядок байт.

В любом случае, при работе с Bitcoin, связанным с кодом, и все выглядит так, как они должен работать, но они этого не делают, то первое, что должно появиться в вашей голове "порядок байт",

Вот как мой шахтер Javascript делает переход от компактной мишени до полной целевой формат:
Код:
Функция compact_to_full (компактный)
{
bigendian = switch_endian (компактный);

длина = ParseInt (bigendian.substring (0,2), 16);

полный = bigendian.substring (2,8)
в то время как (full.length < длина * 2) {
полный = полный + "00"
}

вернуться полным
}

Таким образом, в принципе, вы первый переключатель на порядок байтов компактной целевой шестнадцатеричной строки. Тогда вы берете последние 3 байта компактной цели, и добавить столько нулевых байтов до конца этого, как это требуется для длины конечного числа (в байтах) будет равен первому байту в компактной цели.

Таким образом, с 0x1b0404cb в качестве примера. Сначала мы получаем:

Код:
0404cb

а затем добавить достаточное количество нулевых байт после этого числа, так что общая длина байт этого числа становится равным 0x1B (27):

Код:
0404cb000000000000000000000000000000000000000000000000

И тогда мы подушечка с нулями, поэтому конечная цель становится:

Код:
00000000000404cb000000000000000000000000000000000000000000000000
runeks сейчас офлайн Пожаловаться на runeks   Ответить с цитированием Мультицитирование сообщения от runeks Быстрый ответ на сообщение runeks

10 ноября 2012, 8:27:29 AM   # 14
 
 
Сообщений: 33
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Я до сих пор есть проблемы с моей добычей, например.

Благодаря mskwik у меня есть пример данных для работы с. Рассматривая эти данные, я думаю, что мой сценарий не так.
Не могли бы вы, пожалуйста, посмотрите на пример ниже, и указать мне, где дела идут не так?

Итак, пример кода из mskwik является:

Код:
{"hash1"знак равно>"00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "цель"знак равно>"ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold"знак равно>правда, "идентификатор"знак равно>"91138", "данные"знак равно>"00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c8245032580a1a07a85e00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "Midstate"знак равно>"03ad4305c1cad2bf14a99b82f3557b5722a060d6ac207450e939cb9f8143a605"}

В более удобной для восприятия человеком форме суть этого данные и цель:
Код:
Данные:
00000002 fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000 db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c824 5032580a 1a07a85e 00000000 000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000

Цель:
ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000

Мы также знаем, что правильное решение: (= 0x8e631c12 нонс)
Код:
Решение:
00000002 fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000 db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c824 5032580a 1a07a85e [Ь] 8e631c12 [/ б]
000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000


Теперь я вычислить хэш этого, и она должна быть меньше или равна цели.

Я делаю изменения Endian первый (я предполагаю, что это та точка, где я ввернуть вещи), а потом
преобразовать его в двоичный файл из гекса, потому что SHA2-256 хеширования необходимо двоичный вход:
Код:
После Endian коррекции:
02000000 00000000000004312f5eebc027631826a00604af4b135215f2b28347fc517a2d 05c4c824392e6b8085e688d086cbf2994e4640722c2750213781c134db9fcfcc 0a583250 5ea8071a 121c638e 020000002d7a51fc4783b2f21552134baf0406a026186327c0eb5e2f3104000000000000cccf9fdb34c181372150272c

Двоичное представление строки:
"\ X02 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x041 / ^ \ xEB \ xC0'c \ x18&\ XA0 \ x06 \ x04 \ xAFK \ x13R \ x15 \ xF2 \ XB2 \ x83G \ xFCQz- \ x05 \ XC4 \ xC8.k \ x80 \ x85 \ XE6 \ x88 \ xD0 \ x86 \ XCB \ xF2 \ x99NF @ г, «P! 7 \ x81 \ xC14 \ XDB \ x9F \ XCF \ XCC \ nX2P ^ \ xA8 \ а \ x1A \ x12 \ x1Cc \ x8E \ x02 \ x00 \ x00 \ x00-ZQ \ xFCG \ x83 \ XB2 \ xF2 \ x15R \ x13K \ XAF \ x04 \ x06 \ xA0&\ X18c '\ xC0 \ xEB ^ / 1 \ x04 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ XCC \ XCF \ x9F \ xDB4 \ xc1 \ x817! Р',"



С этой точки легко. Я вычислить хэш двоичных данных, и сравнить его с
(в обратном порядке) мишень. Оба из них гекса номера:
Код:

Хэш двоичных данных:
"bd702df8e1212ab65f23972dfd3b1b601b132efb61a09e4523acdbaefae80e73"

Целевая задача сравнить с:
"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"

Результат: ПЛОХИЕ НОВОСТИ: хэш больше, чем цель 🙁


Итак, моя программа мне подсказывает, что это не может быть хорошим решением, потому что bd702df8e ... > 00000000f ...

Где ошибка? Или: где ошибки?


questionstorm сейчас офлайн Пожаловаться на questionstorm   Ответить с цитированием Мультицитирование сообщения от questionstorm Быстрый ответ на сообщение questionstorm

10 ноября 2012, 9:29:00 AM   # 15
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Я делаю изменения Endian первый (я предполагаю, что это та точка, где я ввернуть вещи),
Среди Bitcoiners слова "большой обратный порядок байт" имею в виду другое дело, чем где-либо еще. В обычном мире компьютер ученые назвали бы его "запутался обратный порядок байт", "случаен обратный порядок байт", "сумасшедший обратный порядок байт", "ошибка обратный порядок байт для начинающих", "консультант обивка человеко-часы младшие", "мы сделали ошибку и стыдно признаться младшим", "нарушенный порядок байт", "трагикомический обратный порядок байт", и т.д.

Это представление, где количество bignum сначала делится на слова 4 байта в ширину. Слова упорядочены, начиная с наиболее значимым словом в самом нижнем положении. Байты в пределах слов упорядочены с самим младшим байтом в самом нижнем положении.

Edit: Хорошо, я нашел хорошее имя для этого представления: кракозябры с обратным порядком байтов. Он должен хорошо сочетаться с Satoshi.

http://en.wikipedia.org/wiki/Mojibake
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

10 ноября 2012, 1:54:07 PM   # 16
 
 
Сообщения: 125
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Да, работает со странным порядок байтов различных чисел является одним из "интересно" проблемы в работе с Bitcoin кодом. Быстрый тест показывает, вы должны получить что-то подобное с этими конкретными тестовыми данными:

Код:
mskwik @ mskwik ~ $ Perl
использовать Digest :: SHA;
$ Хеш ="00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c8245032580a1a07a85e","8e631c12";
в то время как ($ хеш) {$ хх = зиЬзЬг ($ хеш, 0,8); $ хх = задний ход (пакет ( 'Н *', $ хх));. $ fixedhash = $ хх; $ хеш = зиЬзЬг ($ хэш , 8);}
$ Решение = Дайджест :: ША :: sha256_hex (дайджест :: ША :: sha256 ($ fixedhash));
печать $ решение."\ п";
$ Fixedsol = обратное (распаковку ( 'ч *', пакет ( 'Н *', $ раствор)));
печать $ fixedsol."\ п";
3246917b692937fbceb2376ba36a8f97794d33784a0472ae8a37061900000000
000000001906378aae72044a78334d79978f6aa36b37b2cefb3729697b914632
mskwik сейчас офлайн Пожаловаться на mskwik   Ответить с цитированием Мультицитирование сообщения от mskwik Быстрый ответ на сообщение mskwik

10 ноября 2012, 5:54:54 PM   # 17
 
 
Сообщения: 653
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Вся эта неразбериха порядка байт в основном вызываются разработчики делают указатель вуд в C ++.
Только в случае, если вы до сих пор путают:
Вы должны переключить порядок байт 4 байта за раз.
Во-первых у вас есть, например, "0123456789abcdef",
После переключения порядка байтов вы получите "67452301efcdab89",
Шлейхер сейчас офлайн Пожаловаться на Шлейхер   Ответить с цитированием Мультицитирование сообщения от Шлейхер Быстрый ответ на сообщение Шлейхер

30 июня 2013, 6:48:34 AM   # 18
 
 
Сообщений: 18
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Посмотрите на WebWorker (JS Bitcoin шахтера).
Димитрий-JS сейчас офлайн Пожаловаться на Димитрий-JS   Ответить с цитированием Мультицитирование сообщения от Dimitry-JS Быстрый ответ на сообщение Димитрия-JS

2 июля 2013, 12:06:38 PM   # 19
SDP
 
 
Сообщения: 421
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Большой обратный порядок байт является интуитивно более естественным, чем мало Endian. Это аналогично тому, как мы пишем номера. Некоторые старые компьютеры используют большой Endian внутренне и так делает Java. Он также используется в качестве стандартной сети с обратным порядком байтов. Есть процедуры для преобразования и из большого Endian, но вы должны свернуть свой собственный для преобразования и из небольшой Endian.
SDP сейчас офлайн Пожаловаться на SDP   Ответить с цитированием Мультицитирование сообщения от SDP Быстрый ответ на сообщение SDP

2 марта 2017, 9:33:32 AM   # 20
 
 
Сообщения: 616
Цитировать по имени
цитировать ответ
по умолчанию Re: шахтер клиент - просто понять, добыча

Хорошо, хорошо, не кричи на меня. Я знаю, что эта тема очень старая.
Но я надеялся, что кто-то здесь будет в состоянии дать мне некоторую помощь.

Я пытался реализовать свой собственный шахтер (только понять добычи).
Я реализовал это с помощью getwork (я знаю, что это старый, но это было проще для меня)
так, чтобы проверить, что это работает, я использовал тот же пример, как здесь:

Код:
{"hash1"знак равно>"00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "цель"знак равно>"ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", "submitold"знак равно>правда, "идентификатор"знак равно>"91138", "данные"знак равно>"00000002fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c8245032580a1a07a85e00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "Midstate"знак равно>"03ad4305c1cad2bf14a99b82f3557b5722a060d6ac207450e939cb9f8143a605"}

Или в более удобной для восприятия человеком форме суть этого данные и цель:
Код:
Данные:
00000002 fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000 db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c824 5032580a 1a07a85e 00000000 000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000

Цель:
ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000

Мы также знаем, что правильное решение: (= 0x8e631c12 нонс)
Код:
Решение:
00000002 fc517a2df2b283474b135215a00604af276318262f5eebc00000043100000000 db9fcfcc3781c1342c2750214e46407286cbf29985e688d0392e6b8005c4c824 5032580a 1a07a85e [Ь] 8e631c12 [/ б]
000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000

Nounce, что я получаю:
0x000141D0

И хэш двоичных данных, которые я получаю:
"0000075B2D7B45479BDE7D0A073900AE825F69C9FF16084CF83BB45B4F7B63C9"

Целевая задача сравнить с:
"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"

Результат: Плохая новость: вычисленное nounce отличается и хэш больше, чем мишень

Где ошибка? Или: где ошибки?
sir.humus сейчас офлайн Пожаловаться на sir.humus   Ответить с цитированием Мультицитирование сообщения от sir.humus Быстрый ответ на сообщение sir.humus



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW