I stand corrected - indeed you can work out the block hash (I was wrong)
If you calculate it accurately enough, you should be able to get enough of the start of the hash to match the block.
However, it's not 0x00000000FF....FF
I think it's 0x00000000FFFFFFFFFFFFFFFF00...00 (not 100% sure)
Edit: meh, since I got a block recently I guess I should calculate it myself and see if I can work it out what is the correct one to use ...
OK sorted it out now
It's actually 0x00000000FFFF00...00
So I wrote some php using bcmath and another function I found on the net to accurately convert number bases ...
And it came up with: 6023087568 -> b68bf5860d85f2a9528d572ef0820077d523f91b33e9cca2
Now looking at blocks over the last week starting with 0000b68b I found:
286662,0000000000000000b68bf585f10b1436ff7e6471e2e40d040f94eadc526f16c5,2,
4c071ba9dfb373bfc796a26b2514c7aeb13428c60ac034d96c7e37e9d66b1744,1392794888,
20140219082808UTC,549088256,19015f53,3129573174.52228737,
000000000000000050c45d24df1a0048f0f39d2d4e9f0598ca201f76fd980524
Which is almost certainly the block you found.
Edit: and anyone wanting to do this themselves:
You need PHP and PHP BCMath installed
Here's hex.php:
#
function basecvt($str, $frombase=10, $tobase=16)
{
$str = trim($str);
if (intval($frombase) != 10)
{
$len = strlen($str);
$q = 0;
for ($i=0; $i<$len; $i++)
{
$r = base_convert($str[$i], $frombase, 10);
$q = bcadd(bcmul($q, $frombase), $r);
}
}
else
$q = $str;
if (intval($tobase) != 10)
{
$s = '';
while (bccomp($q, '0', 0) > 0)
{
$r = intval(bcmod($q, $tobase));
$s = base_convert($r, 10, $tobase) . $s;
$q = bcdiv($q, $tobase, 0);
}
}
else
$s = $q;
return $s;
}
#
function bctrim($num0)
{
if (strpos($num0, '.') === false)
return $num0;
else
return rtrim(rtrim($num0, '0'), '.');
}
#
$diff = $argv[1];
#
bcscale(1000);
#
$d1_sp = '00000000 FFFF0000 00000000 00000000 00000000 00000000 00000000 00000000';
$d1_16 = str_replace(' ', '', $d1_sp);
$d1_0 = basecvt($d1_16, 16, 10);
$d1_10 = bctrim($d1_0);
#
$blk0 = bcdiv($d1_10, $diff);
$blk10 = bctrim($blk0);
$blk16 = basecvt($blk10, 10, 16);
#
echo "diff=$diff\n";
echo "d1_16=$d1_16\n";
echo "blk10=$blk10\n";
echo "blk16=$blk16\n";
#
?>
Then on linux you just:
php hex.php 6023087568
and blk16 is your block hash (accurate to about 6 nibbles)
[/quote]
Wow, well done. Thank you.