Tools for cryptographic commitment
I want to build a family to tools to enable people to cryptographically commit to different types of values. One use case for this is picking attendees for an event with an RSVP system that closes at a prespecified date and time without rewarding those who RSVP’d earlier. This approach has several benefits over first-come-first-serve (particularly for recurring events with limited spots).
If this process were to take place in person, the host could simply pick out N of M attendees from a hat at random. However, since the participants of the process are asynchronous, having the host arbitrarily selecting N of M prospective attendees requires the attendees to trust the host. In order to make this process entirely trustless and fair, the host needs to precommit to a mechanism for picking N participants from M applicants before the RSVP opens. Furthermore, the mechanism should be completely opaque to the participants but must be entirely determined by the ordering of the RSVPs.
Having the mechanism completely determined by the order of the RSVPs seems insufficient as this permits the host to collude with participants to guarantee attendance. However, if the mechanism were to be determined by some secretly committed value for each participant, there is no room for collusion by the host.