I was thinking about the winner selecting procedure explained in the terms of the giveaway program
The program will end and the prize draw will take place at 18:00 UTC on 26 December 2019. Winners will be selected according to the following procedure:
- A hash will be generated from each participant’s email address. The email hashes of all participants will be collected into a list. If a participant has N valid tickets for the giveaway draw, N copies of their email hash will be included in the list. This list will then be sorted lexicographically.
- Each of the thirty-four prizes will be assigned a code (a “salt”). For each prize, the
salt will be combined with the hash of the first Bitcoin block to be mined after 18:00 UTC on 26 December 2019. The combination of prize salt and blockhash yields a large integer that is used to determine the winner.
- For each prize, this large integer is divided modulo T, where T is the total number of valid tickets for the draw. The resulting number gives a position in the sorted list of participants’ email hashes, which corresponds to the winner of the prize.
First the sorting order is lexicographically so basically an alphabetical order of the hashes generated.
Example overview - email address hash and valid tickets:
email address example | hash | valid tickets
email@example.com | c1239db6e4efac6e19d9404f885273a4ecb6e27e | 4 firstname.lastname@example.org | 52e17b67fd82b0545bb4fbdc5748ed23104133c7 | 2 email@example.com | 0c29247190f99f369ccbb87e6741d25fba5d73b5 | 1 firstname.lastname@example.org | 823776525776c8f23a87176c59d25759da7a52c4 | 3
total valid tickets: 10
So the unsorted list will be something like:
c1239db6e4efac6e19d9404f885273a4ecb6e27e c1239db6e4efac6e19d9404f885273a4ecb6e27e c1239db6e4efac6e19d9404f885273a4ecb6e27e c1239db6e4efac6e19d9404f885273a4ecb6e27e 52e17b67fd82b0545bb4fbdc5748ed23104133c7 52e17b67fd82b0545bb4fbdc5748ed23104133c7 0c29247190f99f369ccbb87e6741d25fba5d73b5 823776525776c8f23a87176c59d25759da7a52c4 823776525776c8f23a87176c59d25759da7a52c4 823776525776c8f23a87176c59d25759da7a52c4
sorted it might be something like:
0c29247190f99f369ccbb87e6741d25fba5d73b5 52e17b67fd82b0545bb4fbdc5748ed23104133c7 52e17b67fd82b0545bb4fbdc5748ed23104133c7 823776525776c8f23a87176c59d25759da7a52c4 823776525776c8f23a87176c59d25759da7a52c4 823776525776c8f23a87176c59d25759da7a52c4 c1239db6e4efac6e19d9404f885273a4ecb6e27e c1239db6e4efac6e19d9404f885273a4ecb6e27e c1239db6e4efac6e19d9404f885273a4ecb6e27e c1239db6e4efac6e19d9404f885273a4ecb6e27e
Now for each price a salt is generated. It is not mentioned if this will be an integer salt but I assume it is not since the block has is also not an integer.
So price salt will be for example:
price 01 | ir9b3wuwzn price 02 | wxrk6frq96 .... price 34 | xs0ob1fkxl
Block hash is for example:
This block will be combined with each price salt to generate a large integer
I assume there will be a hashing function generating integer out of these 2 parameters
price 01 | 634735139 price 02 | 373061531 .... price 34 | 794500971
All these integer are now divided modulo T (T is 10 in my example)
So in my example the winners are:
price | position in list
price 01 | 3 price 02 | 3 .... price 34 | 7
So in my example the participant on position 3 in the list wins 2 prices.
Is this possible?
- If yes, is this fair?
- If the position will be deleted from the list, will the other positions of the same participant remain in the list? So he can win with another position again?
- Or will the participant be deleted with all positions from the list after winning one price?
Otherwise it could be the case that 1 participant wins all prices because he has such a huge amount of positions in the list.
I am not a mathematic genius but how probable is it that integer modulo T will get 1 as a result?
If I am wrong please help me out understanding this.