Поправил расчет.
target: 0x0000001fffe00000000000000000000000000000000000000000000000000000
reverted X11 hash:0x09bdaea4c59e5a365cde07c5ac8174329e83302c5d9343992044d15f2edb487f
reverted X11 hash больше ..... а так красиво все начиналось

Правильно ли я делаю что target сравниваю с reverted X11 hash (Little-ending)?
Есть простой способ проверить, что получилось то, что нужно:
Берем блок наугад, например, 100000 и смотрим его hash:
> dash-cli getblockhash 100000
00000000000fd08c2fb661d2fcb0d49abb3a91e5f27082ce64feed3b4dede2e2
Смотрим его header в "человеческом" виде:
> dash-cli getblockheader 00000000000fd08c2fb661d2fcb0d49abb3a91e5f27082ce64feed3b4dede2e2
{
"version" : 2,
"previousblockhash" : "0000000000108d4b9231f4ec99ab5dc970b6ec740745f44eee0754f67d598ac3",
"merkleroot" : "43eb305e7a85ec9d27b3724dab6b2ede5111d54f4568a03d4181231fbd356e81",
"time" : 1405041879,
"bits" : "1b10cf42",
"nonce" : 5628506
}
Собираем "сырой" вид у себя и сравниваем с правильным результатом:
> dash-cli getblockheader 00000000000fd08c2fb661d2fcb0d49abb3a91e5f27082ce64feed3b4dede2e2 false
02000000c38a597df65407ee4ef4450774ecb670c95dab99ecf431924b8d100000000000816e35bd1f2381413da068454fd51151de2e6bab4d72b3279dec857a5e30eb43d73cbf5342cf101b5ae25500
Прогоняем через хэш-функцию, смотрим результат, сравниваем с исходным хэшем блока и допиливаем при необходимости
вопрос по коду dash.h
return hash[10].trim256(); (
https://github.com/dashpay/dash/blob/master/src/hash.h#L295-L337)
что делает функция trim256()? Просто возвращает первые 256 бит?
да, просто "конвертит" таким образом uint512 в uint256
https://github.com/dashpay/dash/blob/master/src/uint256.h#L350-L357