Is it possible to get stuck with a block that nobody can mine? The hash of a bitcoin block is generated from:


Block version number (partially fixed*, 32 bits)
Previous block hash (fixed, 256 bits)
Merkle root (not fixed, 256 bits),
Time (not fixed, 32 bits),
Bits (partially fixed*, 32 bits),
Nonce (not fixed, 32 bits).


So, the block hash is generated from 640 bits.
You can change 320 bits freely to try to have a hash that matches the current diff, and 320 bits are immutable.

Is there a property on the SHA-256 function that asserts that on these 320 bits of freedom, one combination will give us a hash that is matching the diff requirements?

If not, does that mean that the blockchain could get stuck on a block because nobody can mine on it?



* "Partially fixed" values could be changed by software updates for example. I assume that partially fixed values are fixed to simplify.
Is there a property on the SHA-256 function that asserts that on these 320 bits of freedom, one combination will give us a hash that is matching the diff requirements?


No.

AFAIK there are in general hardly any research results about the possible SHA-256 output values and their probabilities.

Satoshi Nakamoto probably assumed that you will always be able to find a possible block by modifying the nonce and the Merkle root.


  If not, does that mean that the blockchain could get stuck on a block because nobody can mine on it?


Yes (Theoretically, but it is very unlikely which was already pointed out by Alpha)

Let us try to be more precise. If you only change the nonce and the Merkle root there are  bits you can change. So you have  possible inputs for the SHA-256 function ( If you find all  possible Merkle roots, which is also very difficult admittedly. but let's assume you accomplish this because you have many ways to change the Merkle root like changing bytes in the coinbase transaction and you can choose every combination of arbitrary valid transactions from the mempool).

Now take a look at the possible SHA-256 results, there are  possible SHA-256 outputs and  possible inputs. With these you should be able to find atleast one hash below the target. It would then be possible to create a new block.

Remember there are  times more inputs than the possible SHA-256 outputs.