I was previously a participant with the MillionaireMakers subreddit and there are 2 main problems with the event. The first problem is that there is often very little money for the winners (way less than a million dollars) and the second problem is that some losers don’t pay up as they should have.
The idea is to have a provably fair game using the Flipstarter campaign. The results can be proven to be fair and there won’t be a result until the full amount is raised. That means the winner will always get what they expected and the losers will always pay up. If the total amount is not reached, then the game won’t happen. Another advantage is that users may always back out of the game at any time since they are in control of their own money up till the final moment of the game.
The organizer of the game takes a cut of the winnings. The only risk to this is if the organizer doesn’t pay the winner. Therefore, reputation is extremely important for the organizer.
Here’s how the game works.
- A hash is generated from a random 50 to 200 alphanumeric key. This hash will be published in the Flipstarter campaign information section. Therefore, we know that the server has already choosen a number which will not change.
- Every user can bet arbitrary amounts and the winning probability is correlated to the amount they pledged.
- Every user must indicate their Bitcoin Cash address in the “Comment” field. They may also indicate a number of their own choosing between 1 and 1000000 in the “Comment” field. These numbers will influence the outcome of the game results. Any numbers outside of this range will be ignored.
- There will be 1 million tickets for the event. Tickets are assigned based on what’s shown in the Flipstarter campaign. Let’s take a simple example where the total Flipstarter campaign is $1000.
User A pledged $500 (Indicated 12345678 in the Comment) – In this case, user A will have ticket number #1 to #500,000.
User B pledged $300 (Indicated 1 in the Comment) – In this case, user B will have ticket number #500,001 to #800,000.
User C pledged $200 (Did not indicate any number in the Comment) – In this case, user C will have ticket number #800,001 to #1,000,000.
- Here are the steps to get the final game results. An excel spreadsheet is provided for users to manually entering these information to verify the fairness of the game result.
The server’s alphanumeric key will be revealed. All alphabets in the key will be converted into their numeric position (eg. A=1, B=2, C=3, X=24 , Y=25 , Z=26). If the key is ABCXYZ then the server’s generated number from the key will be 123242526.
Add up all the user indicated numbers plus the server’s generated number. In this example, that would be 123242526 (server’s number) + 12345678 (user A’s number) + 1 (user B’s number). In this example, the resulting number is 135588205.
To avoid the last user influencing the results, we will also be using the block hash containing the Flipstarter transaction to determine the winning number. We convert the block hash into their numeric position (like in step 1), then add this number to the resulting number from step 2. To simplify the example, let’s say the block hash is 1000000, then we just add 135588205 to 1000000 and the final number is 136588205.
Perform a Modulo operation by 1,000,000 on the final number. In this example, the end result is 588,205. The winning ticket number is 588,205. The winnings (minus commission fees) will be sent to the Bitcoin Cash address specified in the Flipstarter campaign for the person holding the ticket number 588,205.
- This means that the server key and the users input and the block hash will together have an influence on the winning ticket number. It makes cheating and collusion much harder. The advantage of this lottery is that anyone can start one today using Flipstarter for your own friends or social network. I think it would be an interesting way to get them to start using Bitcoin Cash during social events. =)
Links: https://flipstarter.cash/en/how-to (How to create and host a Flipstarter campaign)