You would need to check that the DP is actually valid though. That involves performing the entire walk. If you did this for every DP you would be re-doing the entire computation.
As far as I understand it is important that the DP is from a real kangaroo walk.
The difference:
As soon as a kangaroo hits a point (a point that is not qualified to be a DP by bitmask) that has been visited by a kangaroo of the other type, their walks are synchronized and the next DP they find will definately result in a collision and PK is found.
This is not the case with randomly selected points in the range that fullfill the DP bitmask criteria.
It is possible that there will be a collision with these kind of "not real walk" points though.
I agree with you, but I remember you that proof of work is always a probabilistic task, we cannot redo the entire work to be sure that the entire work is correct.
My proposal:
let's say DP=25, we perform a check 2 levels, a partial and a complete check:
level 1) partial check
we check that each DP fulfill:
- has at least 25 zeros bits
- its private key is correct and lies in the correct interval
level 2) complete check
- we check that there at least 1/2000 of the points have x-coordinate with at least 25 + 10 zeros
- we redo the complete path of each kangaroo that ends with a DP with at least 35 zeros
The second check is a valid proof of work, to generate (in the correct way, with the correct jumps) a DP with 30 zeros you need to generate on average 2^10 = 1024 kangaroos with a end point with 25 zeroes, you can't fake it.
Obviously you can choose to modify + 10 zeros in +12 or +8, as you prefer.