I'm looking for a problem that allows me to generate random instances which:
Take arbitrary time to compute (i.e., I can generate an instance that I know would take at least 10 days to solve in an Intel I7);
Is inherently sequential (no matter how many processors you throw at it, it won't be solved faster than 10 days);
Can produce N (say, 2^256) equiprobable outputs;
Given an output, it is easy to verify it is correct.
Example:
Find the smallest N such that
sha256^N(seed) < K. You can configureKso that it would take no less than X days given current hardware. The final hash can be any one of2^256possible values. But verifying is hard: the only way to prove anNis correct is re-doing the whole computation, so it doesn't really fit.Find an N such that
sha256(seed+N) < K. You can configureKso that it would take no less than X days given current hardware. The final hash can be any one of2^256possible values. It is easy to verify the output is correct. But it is embarrassingly parallel.