Why do we need to find out exactly where in the scrypt hashing the verification failed? Why not say "the proof of work is incorrect, do not send a dogetoken" and that be the end of it?
I think I understand the answer. It's so only that one hashing instance, where they disagree, can be run on the ethereum network. Therefore using the least amount of gas. Sorry for posting. Took me a bit to think about and understand.
The verification game has two outcomes one of proposer or challenger will win.
But there are many other circumstances that affect the way the game will play:
- A challenger might be sending spam. A proposer have to defend itself against challenges in good or bad faith.
- A proposer or challenger runs out of funds and cannot finish the game. A unverified block prevent new blocks being accepted.
- Challenges needs a timeout. Long enough to accept valid challenges, but not too long that it causes a DoS to the contract.
- A challenge can only prove if the result is wrong, but it cannot prove it is right.