0

I am working on a Quiz game application where users can submit questions with answer options, that other users then can try to solve. My initial goal was to make the process non-interactive, that is, once a user submits a question, all answers that come can be verified by the blockchain automatically. However, the more I think about it, the more it seems like this is impossible to achieve. For something like that to be possible, I'd have to store something on-chain, that allows the chain to verify the answer. But this in turn would allow the user to verify the answer before submitting as well since everything stored on the blockchain is visible to every user.

At first, I thought that zk-SNARKS might be the answer to that problem, but it turned out that this is no solution. Any form of cryptography would have to include a secret that is not stored on the chain, which would again require the question asker to interact with the system to verify an answer.

Is there any theoretical way, f.e. a protocol (even if it is impractical) that would enable me to do this? I expect the answer to be no, however, since my intuition is not a mathematical proof, I'm still asking it out of curiosity.

1 Answer 1

0

How about comparing the answer to a hashed answer?

This way it's not possible to know the answer but still check an existing one.

Of course this won't work if there are only a few answers, as it can be brute forced.

1
  • Unfortunately, that still doesn't solve the problem itself. Even if I had open questions instead of Single-Choice and I stored the hash of the answer, maybe the user could not brute force it as easy anymore, but still could make sure to only submit an answer to a question if he actually has got the right solution, which would undermine the whole idea of the game.
    – TechnoX
    May 25, 2022 at 10:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.