I was called to perform a provably fair random drawing for @reversed-bidbot!
There are a 1333 tickets participating in this round.
The merkle root of the block in which this post will appear determines the winner.
@notagenius holds tickets number 0 - 11
@eforucom holds tickets number 12 - 22
@frdem3dot0 holds tickets number 23 - 73
@zero-profit holds tickets number 74 - 550
@curatorbot holds tickets number 551 - 587
@freebornsociety holds tickets number 588 - 633
@builderofcastles holds tickets number 634 - 667
@smjn holds tickets number 668 - 846
@johnvibes holds tickets number 847 - 859
@hueso holds tickets number 860 - 989
@albertvhons holds tickets number 990 - 1024
@paradigm42 holds tickets number 1025 - 1030
@reversed-bidbot holds tickets number 1031 - 1058
@freebornangel holds tickets number 1059 - 1166
@elleok holds tickets number 1167 - 1332
The block in which the above post is included has a merkle root of 5d64d894bc72583eadf1fed027324d8c30f0e50a.
To find the winner we:
5d64d894bc72583eadf1fed027324d8c30f0e50a = 533185083072510277447466028633619559836558615818.
Congratulations!
Why didn't you do the last math?So... 738? @smjn wins?
1052 is the number of the winning ticket. The number of shares is 1333.
But 533185083072510277447466028633619559836558615818 % 1333 still is not 1052 so something went wrong. There should be some obvious mistake.
The real winner is @zero-profit with ticket 469
Silly me believed 1052 was the number of tickets, which is obviously not by the tickets list.
If you run a witness you would have 1/21 chances of cheating the raffle.
That is right, also a witnesses could try to cheat when participating. The latter can be fixed by me publishing a hash of a random number that will be added to the Merkle root. And this is simple to implement. I have not done this since the chance of a witness cheating now is almost zero, but should amounts rise I can do it.
To prevent me form cheating if I were a top 21 witness, users would need to be able to submit hashes and later within a time window provide the corresponding number. That would massively complicate the entire procedure. Right now I don't think this is nessecary as the plan to become a top 21 witness just to cheat 30 cent raffles is a bit redicoulous.
Posted using Partiko Android
thanks for pointing out the mistake. I found the problem. I was doing the following very simple calculation in python
int(merkle_root,16) % tickets
with the merkle root above and tickets = 1333
the correct result is 469, but python only finds that when tickets is an int. Hoever in my code tickets was assumed to be a float.
Ususally this is no problem but it causes python to use a numerical result that eventually fails for very big numbers. In this case python tells me that
533185083072510277447466028633619559836558615818 % 1333 = 469
while
533185083072510277447466028633619559836558615818 % 1333. = 1052
I have now fixed the bug. The old way was still random, but I am not sure it was fair (in the way that all tickets were equally likely to win).
I also changed the way the bot presents the result to make it more understandable what happens.
You got an upvote from @zero-profit at the courtesy of @frdem3dot0
here.
Find more information about @zero-profit
Delegation links: 20SP; 50SP ; 100SP ; 200SP ; 500SP
Yea?