Pages:
Author

Topic: Алгоритм майнинга - page 2. (Read 11620 times)

newbie
Activity: 6
Merit: 0
September 06, 2011, 04:12:03 AM
#6
Эээээ.... ммммм.... может я как-то поподробнее...

От сервера получаю:

Quote
midstate
data
hash1
target
Насколько я понимаю midstate какбэ... не особо нужен, hash1 тоже (ну тоесть они может и нужны но необязательны).
Основные поля: data и target.

Что я делаю с data:
Отрезаю первые 80 байт и заменяю nOnce'ом. nOnce подбирается, но для проверки юзаю подобранный.
Получаю первый хеш из 80 байт поля data, а из него второй, из #длина_хеша получившегося хеша, короче:

Quote
char Hash[HASH_SIZE];
Sha256.GetHash(sha2::enuSHA256, (sha_byte*)&Data, sizeof(Data));
const char *RawHash = Sha256.RawHash(dwHashLen);
memcpy(&Hash, RawHash, dwHashLen);
Sha256.GetHash(sha2::enuSHA256, (sha_byte*)&Hash, dwHashLen)

Тест провален. Мои результаты:
1) Прямой порядок байт в Data:
Quote
Hash1: 428b17dba1e66bc6396657fb251d210e392c46fa733b56a113e0b275eeda5ffa
Hash2: 1c06b25d3ec4c14a7cccb1b46df152261894fb1e741dd7be09cf3dd939ba92b8
2) Обратный порядок байт в Data:
Quote
Hash1: 86a122e771252b18f0a7c587305b171fe733eb5dcd848aadc42606c519bff7b4
Hash2: 59febd6e8cf7318509fc3c38887b7e8341905338c2766b6eab7aa9c0307bfe58
Lis
sr. member
Activity: 293
Merit: 251
Spice must flow!
September 06, 2011, 03:40:05 AM
#5
# находим хеш заголовка блока
example http://blockexplorer.com/block/00000000000271de9d8b94afff543366e290e995f3e3e337bb86a0b7bf02e8d1

Code:
echo 010000008d42cab4b755d6e9f01ffe2d1ec8391325dfa2e1a8dc584ec0480100000000001d4575ddc877b25dd9b91284cedec424fbc7a583964f223ef8c4707410bcfe72614a574d5285021b0dd2aa13 | xxd -r -p | sha256sum -b | xxd -r -p | sha256sum -b
получим перевернутый результат хеша блока d1e802bfb7a086bb37e3e3f395e990e2663354ffaf948b9dde71020000000000
заголовок блока разбираем на запчасти
"ver revers" 01000000
"prev_block revers" 8d42cab4b755d6e9f01ffe2d1ec8391325dfa2e1a8dc584ec048010000000000
"mrkl_root revers" 1d4575ddc877b25dd9b91284cedec424fbc7a583964f223ef8c4707410bcfe72
"time revers" 614a574d
"bits(~target) revers" 5285021b
"nonce revers" 0dd2aa13

revers значит перевернут побайтно "nonce revers" 0dd2aa13 => 13aad20d
newbie
Activity: 6
Merit: 0
September 06, 2011, 03:34:38 AM
#4
За ссылку спасибо кстате. Сколько лазил - такого источника еще не находил
newbie
Activity: 6
Merit: 0
September 06, 2011, 03:33:09 AM
#3
Тот что подставляю по идее подобранный. Потому и подставляю, чтоб проверить работоспособность и увидеть нули вживую Smiley
legendary
Activity: 1386
Merit: 1000
September 06, 2011, 03:29:58 AM
#2
Quote
подставляю nOnce 0x3f83a747

насколько я понимаю, идея в том, чтобы подбирать (увеличивать на 1) nOnce так, чтобы нули в сумме суммы появились
newbie
Activity: 6
Merit: 0
September 06, 2011, 03:05:52 AM
#1
Интересует собцтвенно сабж. Извиняюсь если где-то уже разжевано, не нашел Sad

Из того что есть:
1) Высосанный из пальца (найденный в исходниках Smiley ) алгоритм. Звучит так: "Взять 80 байт из data, в конце 4 байта нулей заменить nOnce'ом, получить из этих 80 байт sha256 и потом sha256 из полученного хеша. В результате должны быть нули в конце/начале(пофиг, нет ни-там ни-там) этого хеша количество/маска которых определяется target'ом"
2) Проблема: "блин я их уже и переворачивал под разными углами менял dword'ы обращал байты и бегал с шаманским бубном а нулей нету нигде !"
3) То на чем тренируюсь, т.е. подставляю nOnce 0x3f83a747 (вроде - как подобранный хеш, поправьте если не так):
Quote
Server: nginx/1.0.4
Date: Tue, 30 Aug 2011 23:11:04 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
X-Host-List: [{"host":"f1.deepbit.net","port":8332,"ttr":0},{"host":"f2.deepbit.net","port":8332,"ttr":10}]
Expires: Tue, 30 Aug 2011 23:10:56 UTC
Content-Length: 593
Cache-Control: no-cache, private, no-store
Pragma: no-cache
X-Long-Polling: /listenChannel
X-Lift-Version: 2.3

{"result":{"midstate":"7598823b94e6048777a5f455d4fc04789fefb53fd3bf889b81b66235ef793ab6","data":"0000000195aceed772ae59178621bfd3079e20b50c9681a6c1fed72900000605000000007db50c1 ed21f3c24394105aa1a0e50a9352c7eee7e36423fc8d38be1e45383ea4e5d6ddb1a096fe3000000 0000000080000000000000000000000000000000000000000000000000000000000000000000000 0000000000080020000","hash1":"0000000000000000000000000000000000000000000000000000000000000000000000800000000 0000000000000000000000000000000000000000000010000","target":"ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000"},"error":null,"id":"1"}POST / HTTP/1.1
Connection: Keep-Alive
Content-Length: 302
Host: pit.deepbit.net:8332
Content-Type: application/json
Authorization: Basic Z29wb2NvZGVyQHlhbmRleC5ydV8wOmhndGg=
User-Agent: phoenix/v1.6.2

{"params": ["0000000195aceed772ae59178621bfd3079e20b50c9681a6c1fed7290000060500000000ccb1b4d 570c89f509d6196fad47dc91cd648bd2dbb08dac13d9860cf95ac8d584e5d6dd91a096fe33f83a7 4700000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000"], "method": "getwork", "id": 1}HTTP/1.1 200 OK
Server: nginx/1.0.4
Date: Tue, 30 Aug 2011 23:15:50 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
X-Host-List: [{"host":"f1.deepbit.net","port":8332,"ttr":0},{"host":"f2.deepbit.net","port":8332,"ttr":10}]
Expires: Tue, 30 Aug 2011 23:15:42 UTC
Content-Length: 37
Cache-Control: no-cache, private, no-store
Pragma: no-cache
X-Long-Polling: /listenChannel
X-Lift-Version: 2.3

{"result":true,"error":null,"id":"1"}
Pages:
Jump to: