• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Dash Java Mining

[QUOTE="UdjinM6, post: 65078, member: 811""time" : 1405041879,[/QUOTE]

А .... как же 4 байта, которые отведены для времени в загаловке блока? ....
Да и Stratum сервер пресылает 55df67c4 (сейчас).
Как 1405041879 конвертануть в 4 байта?

Блин, сколько смотрю по интернету .... нигде нет подробной документации. Есть лишь общее описание :-(
 
"time" : 1405041879,

А .... как же 4 байта, которые отведены для времени в загаловке блока? ....
Да и Stratum сервер пресылает 55df67c4 (сейчас).
Как 1405041879 конвертануть в 4 байта?

Блин, сколько смотрю по интернету .... нигде нет подробной документации. Есть лишь общее описание :-(

little-endian hex(1405041879) -> d73cbf53
https://en.bitcoin.it/wiki/Block_hashing_algorithm
 
Хм .... вот уж во истину debug рулит

--block из команды
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf5
342cf10
1b5ae25500

-- block, который я формирую
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf5
342cf10
1b53bf3cd7

уже отличие небольшое ....

НО!!!!!! оказалось что нужно merkelRoot и прошлый хэш не только порядок байт менять, но и биты в них местами.
 
отличие в последних байтах
мой: b53bf3cd7
тулза: b5ae25500

Какие-нибуть еще секретные приседания есть?
 
Хм .... вот уж во истину debug рулит

--block из команды
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf5
342cf10
1b5ae25500

-- block, который я формирую
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf5
342cf10
1b53bf3cd7

уже отличие небольшое ....

НО!!!!!! оказалось что нужно merkelRoot и прошлый хэш не только порядок байт менять, но и биты в них местами.

Не совсем понял про биты... ну, да ладно.
Замечу - аккуратнее с байтами, блоки покромсанные какие-то.
По той ссылке расписано сколько на что отведено, правильное разбиение блока:

Code:
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf53
42cf101b
5ae25500

Теперь, собственно, по nonce:
Code:
dash-cli getblockheader 00000000000fd08c2fb661d2fcb0d49abb3a91e5f27082ce64feed3b4dede2e2 
{
    "version" : 2,
    "previousblockhash" : "0000000000108d4b9231f4ec99ab5dc970b6ec740745f44eee0754f67d598ac3",
    "merkleroot" : "43eb305e7a85ec9d27b3724dab6b2ede5111d54f4568a03d4181231fbd356e81",
    "time" : 1405041879,
    "bits" : "1b10cf42",
    "nonce" : 5628506
}

hex (5628506) -> 55E25A
соответственно (4 байта, не забываем!) little-endian hex (5628506) -> 5ae25500
 
Не совсем понял про биты... ну, да ладно.
Замечу - аккуратнее с байтами, блоки покромсанные какие-то.
По той ссылке расписано сколько на что отведено, правильное разбиение блока:

Code:
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf53
42cf101b
5ae25500

Теперь, собственно, по nonce:
Code:
dash-cli getblockheader 00000000000fd08c2fb661d2fcb0d49abb3a91e5f27082ce64feed3b4dede2e2
{
    "version" : 2,
    "previousblockhash" : "0000000000108d4b9231f4ec99ab5dc970b6ec740745f44eee0754f67d598ac3",
    "merkleroot" : "43eb305e7a85ec9d27b3724dab6b2ede5111d54f4568a03d4181231fbd356e81",
    "time" : 1405041879,
    "bits" : "1b10cf42",
    "nonce" : 5628506
}

hex (5628506) -> 55E25A
соответственно (4 байта, не забываем!) little-endian hex (5628506) -> 5ae25500


нда .... спасибо тебе за терпение!!!

Иду разбираться с этим самым little-endian более детально
 
все ..... попал в результат
---correct--
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf53
42cf101
ba52e5500

---my--
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf53
42cf101
b5ae25500

и в продолжение темы ..... Можешь X11 хэш прислать? Если тебе там не трудно .... Я то делал как в h-файле указано .... А то ....мало-ли
 
все ..... попал в результат
---correct--
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf53
42cf101
ba52e5500

---my--
02000000
c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000
816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43
d73cbf53
42cf101
b5ae25500

и в продолжение темы ..... Можешь X11 хэш прислать? Если тебе там не трудно .... Я то делал как в h-файле указано .... А то ....мало-ли
Мои поздравления! :smile:

Про хэш не понял, если честно... что прислать?
 
Мои поздравления! :smile:

Про хэш не понял, если честно... что прислать?


Ну ... можешь по данному загаловку посчитать X11? Если, конечно, у тебя не займет много времени :)
 
Last edited by a moderator:
Ну ... можешь по данному загаловку посчитать X11? Если у тебя не займет много времени
Ааа.... Так хэш всего этого - это и есть хэш блока: 00000000000fd08c2fb661d2fcb0d49abb3a91e5f27082ce64feed3b4dede2e2 , в этом вся суть
 
Привет!!!!
Можешь прокоментировать еще пару вещей?
1) inline uint256 HashX11(const T1 pbegin, const T1 pend) вызов функции хэштирования. Вопрос: что за параметры pbegin и pend ?
2)
sph_blake512_init(&ctx_blake);
sph_blake512 (&ctx_blake, (pbegin == pend ? pblank : static_cast<const void*>(&pbegin[0])), (pend - pbegin) * sizeof(pbegin[0]));
sph_blake512_close(&ctx_blake, static_cast<void*>(&hash[0]))

а ....почему не так
sph_blake512 (&ctx_blake, &header, 80 (кол-во байт в загаловке));

Я расчитываю вот так
public static byte[] calculate(byte[] inHash) {

byte[] hash = new fr.cryptohash.BLAKE512().digest(inHash);
LOG.log(Level.INFO, "BLAKE512 : {0}", new Object[]{Hex.encodeHexString(hash)});


т.е. загаловок получил ... и его сразу отдал на BLAKE512.


В чем хитрость?

Спасибо!
 
Привет!!!!
Можешь прокоментировать еще пару вещей?
1) inline uint256 HashX11(const T1 pbegin, const T1 pend) вызов функции хэштирования. Вопрос: что за параметры pbegin и pend ?
2)
sph_blake512_init(&ctx_blake);
sph_blake512 (&ctx_blake, (pbegin == pend ? pblank : static_cast<const void*>(&pbegin[0])), (pend - pbegin) * sizeof(pbegin[0]));
sph_blake512_close(&ctx_blake, static_cast<void*>(&hash[0]))

а ....почему не так
sph_blake512 (&ctx_blake, &header, 80 (кол-во байт в загаловке));

Я расчитываю вот так
public static byte[] calculate(byte[] inHash) {

byte[] hash = new fr.cryptohash.BLAKE512().digest(inHash);
LOG.log(Level.INFO, "BLAKE512 : {0}", new Object[]{Hex.encodeHexString(hash)});


т.е. загаловок получил ... и его сразу отдал на BLAKE512.


В чем хитрость?

Спасибо!
pbegin и pend это указатели, хэшируется кусок памяти по сути. Функция используется для хэширования еще в паре мест, а не только для хэдера блока, поэтому доп. проверка и расчет памяти.
 
pbegin и pend это указатели, хэшируется кусок памяти по сути. Функция используется для хэширования еще в паре мест, а не только для хэдера блока, поэтому доп. проверка и расчет памяти.
Т.е. на сам расчет влияния не оказывает. Ну ок .... копаю дальше
 
Back
Top