Referral program winners draw - understanding process fairness

Hi together
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 | c1239db6e4efac6e19d9404f885273a4ecb6e27e | 4 | 52e17b67fd82b0545bb4fbdc5748ed23104133c7 | 2 | 0c29247190f99f369ccbb87e6741d25fba5d73b5 | 1 | 823776525776c8f23a87176c59d25759da7a52c4 | 3

total valid tickets: 10

So the unsorted list will be something like:


sorted it might be something like:


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.

  1. 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.

  2. 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.

  1. Yes, it is possible (the answer to this question is here on the forum)

Yes, Indeed, it is the same Lottery if you buy 10.000 tickets for the an local lottery with 1.000.000 tickets in total. For example there are 10.000 prizes.

You can win with all the tickets you have, all the 10.000 prizes.

I think it is fair. :grinning:

If you don’t think it is fair you have to work harder, for getting more friends on the Nash platform for more referrals. :wink:


I did not say that I think it is unfair. I was just questioning this out.

What about my second question? I was not able to answer this by myself.

Man, sometimes I just sit here in absolute awe at how smart/mathematically-minded some people are. Kudos for this, my eyes glazed over when I read how the winner’s would be picked. This sheds a light on how it works – thank you!!

Inb4 iTs’S nOt ThAt HaRd

I think around 0,0068 % chance that you win a price, if you have one ticket.

Good Luck!

How do you know how many tickets have been activated ? :face_with_monocle:

It’s “priZe”.

Bunder, you can not tell the odds until you know how many tickets got activated.

Anyway, this was not my question. My question was how probable is it that integer modulo T will get position 1 of the list as a result?

It’s saying, ‘I think’ …

Why do you think there will be 14.7k activated tickets? Why not 5k or 50k?

There’s 1.5k registered users and 150 active in the last 30 days.

I’d say that 1000 users have on average 5 tickets activated, so I’d rather go with 5k. But I could be way off ! :smile:

I would say 5k indeed.

34 / 5k = 0.0068 %

Mathematics was not my best subject in the past

34/34=1 LOL, what!??

34 prizes and 5000 activated tickets…

What math is behind all this? I showed that it’s nonsense to divide total number of prizes by a number of activated tickets.

34 prizes divided by 34 activated tickets can give us 1% of a chance? :rofl:

The probability of winning one prize is equal to 1 - (4999/5000)^34 = 0.006778
Not in percent.