As far as I understand it, the target T is a floating point number that is adjusted based on the moving average of the difficulty of some previous transactions. Mining a block happens when somebody is able to find a block x so that H(x) < T (by varying the nonce and/or block contents by brute force). Please correct me if I'm wrong.

Now, due to the structure of a hash function, there is basicaly no way to know if for a given y, there exists a x so that H(X) = y, meaning that there are some "unreachable" hashes. These unreachable hashes are supposed to be distributed randomly (as are all hash outputs), which would mean that there can also be continuous ranges of unreachable hash outputs.

Is there anything that prevents the target from becoming so small that no valid blocks can be found that match the target requirement, because all of the hashes close enough to the target are unreachable?

I realize that the difficulty would have to rise more than we can currently imagine, but I wonder if there is any way to deterministically rule out that possibility, in addition to it being very, very, very unlikely?

  • int(H(X)) < int(y) is the mining task – cdecker Apr 24 '13 at 8:00
  • @cdecker wow, that anwers it completely. didn't catch that answer, thanks! – lxgr Apr 24 '13 at 8:21

Browse other questions tagged or ask your own question.