Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
10 июля 2011, 1:57:18 AM   # 1
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я нахожусь в процессе написания некоторых PHP-кода, который будет создавать текущий блок хэш от заголовка блока.

Я могу найти предыдущий блок хеш путем изменения порядка байтов на 64 символов после первых 8 символов в заголовке блока.

Должен ли я сделать то же самое со следующими 64 символов корня Merkle? Рекомбинировать все, а затем хэш его дважды с SHA256 для определения хэша текущего блока?

Я начинаю с pushpool "решение",
TeraPool сейчас офлайн Пожаловаться на TeraPool   Ответить с цитированием Мультицитирование сообщения от TeraPool Быстрый ответ на сообщение TeraPool


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


10 июля 2011, 12:21:17 PM   # 2
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

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





Мне удалось извлечь следующую информацию из этого pushpool решения:

Код:
    [Original_solution] => 0000000105d3571220ef5f87c6ac0bc8bf5b33c02a9e6edf83c84d840109592c0000000027523728e15f5fe1ac507bff92499eada4af8a0c485d5178e3f96568c18f84994e0e4efc1c0175d646a91ad4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    [Block_header] => 0000000105d3571220ef5f87c6ac0bc8bf5b33c02a9e6edf83c84d840109592c0000000027523728e15f5fe1ac507bff92499eada4af8a0c485d5178e3f96568c18f84994e0e4efc1c0175d646a91ad4
    [Previous_block_hash] => 000000000109592c83c84d842a9e6edfbf5b33c0c6ac0bc820ef5f8705d35712
    [Версия] => 00000001
    [Merkle_root] => c18f8499e3f96568485d5178a4af8a0c92499eadac507bffe15f5fe127523728
    [Временная метка] => 4e0e4efc
    [Timestamp_decimal] => 1309560572
    [Bits_compact_target] => 1c0175d6
    [Bits_data_decimal] => 469857750
    [Nonce] => 46a91ad4
    [Nonce_decimal] => 1185487572

Какие части этой информации (и в каком порядке?) Должен быть хэшируются путем SHA256 дважды придумать хэш блока?

Я проверил все данные здесь: http://blockexplorer.com/testnet/rawblock/0000000000833b13e1d753f4b1d4d18e3a7bde2c2efb8deebaa0b868e3e4dcdf

Данные, которые я нашел, кажется правильным для рассматриваемого блока, но как же я придумал блок хэша от одной этой информации? Или это вообще возможно?
TeraPool сейчас офлайн Пожаловаться на TeraPool   Ответить с цитированием Мультицитирование сообщения от TeraPool Быстрый ответ на сообщение TeraPool

10 июля 2011, 1:09:57 PM   # 3
 
 
Сообщения: 198
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Мне удалось извлечь следующую информацию из этого pushpool решения:

Какие части этой информации (и в каком порядке?) Должен быть хэшируются путем SHA256 дважды придумать хэш блока?

Данные, которые я нашел, кажется правильным для рассматриваемого блока, но как же я придумал блок хэша от одной этой информации? Или это вообще возможно?

  Похоже, мы находимся на той же стадии понимания Bitcoin 

Это воскресенье я работаю на точно такой же вопрос. Я нашел три аспекта полезным:

1) Decription на https://en.bitcoin.it/wiki/Block_hashing_algorithm дает приблизительное представление

2) Чтение источника реализации Satoshi это ... гм ... хорошее упражнение в C ++ беглости. Однако это полезно для этого вопроса. Вопрос: Вы должны получить все порядки байт nesses и все последовательности вправо. Satoshi реализует сложную концепцию сериализации и выводит есть оттуда.

3) Вероятно, наиболее полезная вещь в этом отношении является эталонным Pastebin из (1) http://pastebin.com/n8UEGA86 Она содержит с реализации именно той части вы смотрите в. Я не пробовал это сам (но, вероятно, будет делать это в конце концов).

Тем не менее, позвольте мне сделать общую рекомендацию: Прочитайте реализацию Сатоши. Это не очень хорошо документирована, имеет структурирование файл, который достаточно трудно читать, использует повысить библиотечные вызовы и имеет все виды изгибов и поворотов. Тем не менее, это не окупится. Satoshi имеет многочисленные повороты и идеи, и это занимает некоторое время, чтобы понять их. Но это не только каждый элегантный (Вы можете узнать что-то о программировании ...) - это также способствует безопасности и стабильности системы.

Я рекомендовал бы против реализации на основе PHP. И я бы не рекомендовал делать собственные реализации в Bitcoin, прежде чем полностью усваиваются понятия в реализации Satoshi. Это заняло у меня 6 недель отладки аппаратуры, код комментирования, анализ кода и многое другое - и в результате этого я закончил с этим мнением.

Удачи.



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

10 июля 2011, 11:32:32 PM   # 4
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Цифры прямой порядок байтов и хэши имеют их порядок байт обратный по отношению к хэш-байтов на Bitcoin Блок Explorer.

Вот блок, который я преобразовал ранее:

Код:
01000000 версия
1d8f4ec0443e1f19f305e488c1085c95de7cc3fd25e0d2c5bb5d000000000000 предыдущий блок
корень 9762547903d36881a86751f3f5049e23050113f779735ef82734ebf0b4450081 Merkle
d8c8c84d метка времени
b3936a1a биты
334b035b нонс

Первый хэш:
0cdb93c3412d2f30eb7d8dfd13d3142eaa8738c0de2337ac8a80c623715d9c07

Второй хэш:
1195e67a7a6d0674bbd28ae096d602e1f038c8254b49dfe79d47000000000000

Обратный порядок байтов, и вы получите:
http://blockexplorer.com/block/000000000000479de7df494b25c838f0e102d696e08ad2bb74066d7a7ae69511
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

11 июля 2011, 2:42:34 PM   # 5
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Спасибо за это, ребята!

Таким образом, вы просто сцепляются все эти строки текста выше theymos? В этой последовательности? Хэшированы их SHA256 и придумал этот результат?

Могу ли я задать вопрос сейчас ..? ЗАЧЕМ мы постоянно меняется порядок байтов? Это безопаснее криптографически или что-то?

Может быть, я нашел правильный хэш уже, я просто не думаю, потому что он не начинал с нулями: S
TeraPool сейчас офлайн Пожаловаться на TeraPool   Ответить с цитированием Мультицитирование сообщения от TeraPool Быстрый ответ на сообщение TeraPool

11 июля 2011, 3:21:23 PM   # 6
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Спасибо за это, ребята!

Таким образом, вы просто сцепляются все эти строки текста выше theymos? В этой последовательности? Хэшированы их SHA256 и придумал этот результат?

Могу ли я задать вопрос сейчас ..? ЗАЧЕМ мы постоянно меняется порядок байтов? Это безопаснее криптографически или что-то?

Может быть, я нашел правильный хэш уже, я просто не думаю, потому что он не начинал с нулями: S

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

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

11 июля 2011, 3:26:28 PM   # 7
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Видеть это : http://forum.bitcoin.org/index.php?topic=11043.0

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

11 июля 2011, 6:27:32 PM   # 8
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Таким образом, вы просто сцепляются все эти строки текста выше theymos? В этой последовательности? Хэшированы их SHA256 и придумал этот результат?

Я ответил на мой собственный вопрос. К сожалению, этот ответ "нет",

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

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

11 июля 2011, 6:45:45 PM   # 9
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Вы делаете их конкатенацию. Хэш это:
Код:
010000001d8f4ec0443e1f19f305e488c1085c95de7cc3fd25e0d2c5bb5d0000000000009762547903d36881a86751f3f5049e23050113f779735ef82734ebf0b4450081d8c8c84db3936a1a334b035b

Если вы получите другой первый хэш, чем я отправил, то, что вы делаете хэширования неправильно. Может быть, вы забыли преобразовать этот шестнадцатеричной в двоичную ...
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

11 июля 2011, 7:27:56 PM   # 10
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Вы делаете их конкатенацию. Хэш это:
Код:
010000001d8f4ec0443e1f19f305e488c1085c95de7cc3fd25e0d2c5bb5d0000000000009762547903d36881a86751f3f5049e23050113f779735ef82734ebf0b4450081d8c8c84db3936a1a334b035b

Если вы получите другой первый хэш, чем я отправил, то вы делаете хеширования неправильно. Может быть, вы забыли преобразовать этот шестнадцатеричной в двоичную ...

Ну, я должен делать хеширование неправильно, то: S

У меня есть следующий код на моей странице PHP:

Код:
$ Т = "010000001d8f4ec0443e1f19f305e488c1085c95de7cc3fd25e0d2c5bb5d0000000000009762547903d36881a86751f3f5049e23050113f779735ef82734ebf0b4450081d8c8c84db3936a1a334b035b";

эхо хэш ("sha256", Base_convert ($ т, 16, 2));

В основном он преобразует строку, представленную в базу 2, а затем хэш код базы 2 с SHA256.

И это показывает: 60e05bd1b195af2f94112fa7197a5c88289058840ce7c6df9693756bc6250f55

Так что я не получил первый хэш, который вы сделали (0cdb93c3412d2f30eb7d8dfd13d3142eaa8738c0de2337ac8a80c623715d9c07)

У меня есть ощущение, что мое двоичное кодирование не является правильным. Я уверен, преобразование от основания 16 к основанию 2.

Должен ли я быть с помощью Функция PHP пакет возможно?

Если да, то формат "Hex строка, низкий полубайт первый" или "Hex строка, высокая клев первый"?
TeraPool сейчас офлайн Пожаловаться на TeraPool   Ответить с цитированием Мультицитирование сообщения от TeraPool Быстрый ответ на сообщение TeraPool

11 июля 2011, 8:46:52 PM   # 11
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Да, не используйте base_convert (). Большое красное предупреждение на странице человека.

Попробуйте HEX2BIN () вместо этого.
kjj сейчас офлайн Пожаловаться на kjj   Ответить с цитированием Мультицитирование сообщения от kjj Быстрый ответ на сообщение kjj

12 июля 2011, 2:30:06 AM   # 12
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Код:
$ Т = упаковка ("ЧАС*" , $ Т);
$ Т = strrev (HEX2BIN (хэш ("sha256", Хэш ("sha256", $ Т, верно))))
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

12 июля 2011, 7:44:27 PM   # 13
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Шаги, чтобы перевести blockheader на текущий блок хэша.

Код:
$ Т = упаковка ("ЧАС*" , $ Т);
$ Т = strrev (HEX2BIN (хэш ("sha256", Хэш ("sha256", $ Т, верно))))

Спасибо theymos. Этот код работает прекрасно.

HEX2BIN не надо было вообще на самом деле, так как хэш-функция будет возвращать сырые / двоичные данные, если вы добавляете "правда" на третий аргумент (который вы уже сделали).

И strrev необходимо модифицировать немного (создали свою собственную функцию обратной), который меняет два символа в то время вместо 1. Не знаю, почему я должен был сделать это, но я сделал.

Теперь, как получить blocknumber от block_hash через bitcoind? (Не то, что я не люблю blockexplorer.com, theymos!)
TeraPool сейчас офлайн Пожаловаться на TeraPool   Ответить с цитированием Мультицитирование сообщения от TeraPool Быстрый ответ на сообщение TeraPool



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW