You are viewing a single comment's thread from:

RE: Redfish Lottery

in #lottery6 years ago

I was called to perform a provably fair random drawing for @reversed-bidbot!

There are a 1333 tickets participating in this round.
@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 merkle root of the block in which this post will appear determines the winner.

Sort:  

The block in which the above post is included has a merkle root of 5d64d894bc72583eadf1fed027324d8c30f0e50a.
To find the winner we:

  1. Convert the merkle root into base 10:
    5d64d894bc72583eadf1fed027324d8c30f0e50a = 533185083072510277447466028633619559836558615818.
  2. Compute the residual after dividing by the number of tickets: 1052.
  3. This is the winning ticket, held by @reversed-bidbot.

Congratulations!

So... 738? @smjn wins?
Why didn't you do the last math?

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

Find more information about @zero-profit here.
Screenshot 2018-10-01 14.23.34.png

Delegation links: 20SP; 50SP ; 100SP ; 200SP ; 500SP

Coin Marketplace

STEEM 0.21
TRX 0.13
JST 0.030
BTC 67334.64
ETH 3519.34
USDT 1.00
SBD 3.10