I’m not an expert in crypto, and I would like to design draw system (like a lottery, but choosing one of the participants), the most open possible, allowing a third party to verify the data/draws, and even replaying it with the data, giving the exact same results.

Would it be helpful to verify the draw, if I publish the seed of my RNG, and would it be OK (as in “not compromising any security”) to do so?

Ultimately, my goal is to eliminate any chance of influencing the draws.


Here is a paper that examines one possible approach to do this. In essense, it this allows anyone who cares to through in some randomness; when the deadline occurs, then all the inputs are published (so everyone can verify that their input was included), and then all the inputs are hashed together (using a transform that is slow to compute, but can be verified quickly). The output of this transform can then be used directly to generate the selections for your lottery.

Because the eventual output is a complex (and hard to predict) verifiable function of everyone's input, then anyone who contributes an input knows that lottery was selected honestly. And, because the transform is deliberately hard to compute, they know that no one could do some precomputations a few seconds ahead of the deadline, and generate an input at the last second to skew it.

The paper uses this to select a random elliptic curve; it could just as easily be a lottery...


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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