PROVABLY FAIR
The method to determine the winner of a raffle depends on 3 variables:
- Server seed
- Total number of tickets
- Individual ticket number
First, all user purchases are sorted chronologically, then a ticket list is generated. For example, if user A buys 1 entry at 14:01, user B buys 5 entries at 14:03, and user C buys 3 entries at 14:05, a ticket list would be generated as follows:
User | Ticket # |
---|---|
User A | 1 |
User B | 2 |
User B | 3 |
User B | 4 |
User B | 5 |
User B | 6 |
User C | 7 |
User C | 8 |
User C | 9 |
With this list, for each ticket a random number between 1 and 100.000 is generated using the raffle seed, the total number of tickets, and the individual ticket number:
User | Ticket # | Roll |
---|---|---|
User A | 1 | 70.257 |
User B | 2 | 53.996 |
User B | 3 | 92.611 |
User B | 4 | 57.496 |
User B | 5 | 35.002 |
User B | 6 | 76.366 |
User C | 7 | 20.997 |
User C | 8 | 93.563 |
User C | 9 | 24.399 |
The ticket with the highest roll wins. In this case, ticket #8 from user C would be the winner. In case of a tie, the process is repeated for the tied tickets by appending :tie:1, :tie:2, etc. to the seed to generate a tiebreaker.
For raffles concluded before January 22, 2025, the mechanism was different. Like now, user purchases were sorted chronologically, but instead of generating a random number for each ticket, a number between 1 and the total number of tickets (in this case, between 1 and 9) was generated. The ticket whose number matched that value would have been the winner.