Fairlotto V2: Provably Fair STEEM Blockchain Based Lottery - All New Front-End + Features

in #lottery6 years ago (edited)

Introducing the all new V2 of the Fairlotto STEEM Lottery. New front-end and added features


Screenshot 2018-07-26 22.25.22.png

New features

  • All new website https://www.fairlotto.eu
  • Steemconnect integration
  • Subscription model
  • New weekly lottery and increased ticket prices

What is @fairlotto?

Fairlotto offers a way for Steemians to spend some of their hard earned SBD's and have some fun in a lottery that is provably fair.

Goal

The goal for Fairlotto is to offer a well respected lottery on the STEEM Blockchain which grows as the STEEM community is growing. Becoming the #1 lottery on STEEM and eventually offering a monthly lottery with huge prize pools.

How to play

Screenshot 2018-07-27 00.46.09.png

Steemconnect

Participating is very easy with the new front-end, go over to https://www.fairlotto.eu and decide in which lottery you want to partake, Steemconnect will take care of the rest.

Screenshot 2018-07-26 22.27.09.png

Lotteries

Fairlotto currently offers 3 different lotteries: hourly, daily and weekly. Each with their separate prize pool and deadlines. Direct ticket sale is possible to enter 1 lottery, you can buy as many tickets as you want. However, newly added is the subscribe function which offers the option to subscribe for a lottery. When a new lottery starts 1 ticket will be automatically purchased automatically every new lottery until your balance is depleted.

Bonus

The prize pool is made up of all the ticket sales. However additional bonus funds can be added during promotional runs. As an offer to the small minnows on STEEM there is the intent to always offer a bonus for the hourly lottery.

Supported commands in memo

Direct purchases are also available. Send the SBD amount with one of the following memos to @fairlotto.

CommandAction
hourlybuy SBD/ticket_price amount of ticket for the next draw
dailybuy SBD/ticket_price amount of ticket for the next draw
weeklybuy SBD/ticket_price amount of ticket for the next draw
subscribe-hourlyAdd SBD to hourly lottery balance and buy 1 ticket
subscribe-dailyAdd SBD to daily lottery balance and buy 1 ticket
subscribe-weeklyAdd SBD to weekly lottery balance and buy 1 ticket

Lottery statistics

Screenshot 2018-07-26 22.45.02.png


The website shows several tables with all the data relevant to the current lotteries. This includes data like the current prize pool, how many players have entered but also all the transactions. And information relevant to verifying the authenticity of the draws.

Payout and fee structure link

The payout structure is based on the amount of tickets participating in the draw. There need to be at least 2 different users participating in the draw for it to be valid.

  • Between 2 and 5 tickets:
    #1 95% Prize pool + optional bonus
    5% fee

  • Between 5 and 10 tickets:
    #1 75% Prize pool + optional bonus
    #2 20% Prize pool + optional bonus
    5% fee

  • More than 10 tickets:
    #1 50% Prize pool + optional bonus
    #2 10% Prize pool + optional bonus
    5% of tickets receive 20% Prize pool + optional bonus
    10% of tickets receive 10% Prize pool + optional bonus
    10% of tickets receive 5% Prize pool + optional bonus
    5% fee

Provably fair link

The most important thing about a lottery is that it is fair. For this reason this lotto is made provably fair. This means that users will be able to verify the outcome. The server hash is obtained by hashing the server seed, which is a secret used to perform the calculations. The sha256 hash of the server seed is unique and can be used to verify after the drawing the server seed was not changed. As the server seed is revealed after the drawing.

Also used in the calculation is the transaction_id of the last person who bought a ticket. This is a random string which cannot influenced. This prevents calculating in advance which ticket will win and buying the ticket with a separate bot.

To calculate which tickets will win the server hash, transaction id, a colon and a roll number(starting from 0) are string together. This string is hashed with a hmac-sha512() function that gives a 128 character hex string. From this string the first 5 characters are taken and converted to a decimal number. This number will be between 0 and 1048575. If this number corresponds to a ticket number there is a winner, if not the roll number will increase by 1. This process repeats itself until all winners are decided. Each ticket can only win once. Below is a rough outline of the process.

A simple tool to verify the outcome of a draw will be released shortly.

Roadmap: what is on the horizon?

  • Detailed page for all prior lottery draws and and verification tools.
  • User authentication with Steemconnect for active control over subscriptions and overview into user statistics.
  • A monthly mega lottery when there is a big enough user base.
  • Jackpot

STEEM Blockchain

This project runs on the STEEM Blockchain as that user verification and draw validation are done by using data from the blocks that make up STEEM.


Disclaimer: Gambling is supposed to be fun, gamble with caution.

Project by: @juliank

Sort:  

I wish I am lucky...

I Wish I Am Lucky...nice

This is amazing - I was literally thinking that it would be awesome to build a provably fair raffle system on Steem just this morning! Do you think you might open it up for other people to run their own provably fair lotteries / raffles using your system for a fee?

Also, on a technical note, you mention the following:

Also used in the calculation is the transaction_id of the last person who bought a ticket. This is a random string which cannot influenced.

This is unfortunately not true. The transaction_id is not a random string, it's a hash of the transaction, and it can definitely be influenced. It's similar to cryptocurrency mining - you add some additional data to the transaction and compute hashes until you get the result you want.

In this case you are also using a secret seed, so that would need to be known as well, which is the case for the creators/operators of the fairlotto service. So as it currently stands it appears that you would be able to "fix" the results of the lottery. n\Not that you would of course, but the goal is that no one - even the creators, can influence the results.

I would suggest using the block_id of a pre-selected future block instead of the transaction_id. The block_id can be influenced only by the block producer (witness) that produces that block, so that would require a corrupt witness to influence which would then lead to a loss of witness votes if found out which should provide a certain level of deterrence.

I've been thinking about these topics a lot in regards to Steem Monsters, so feel free to reach out if you want to discuss it further!

I would suggest using the block_id of a pre-selected future block instead of the transaction_id. The block_id can be influenced only by the block producer (witness) that produces that block, so that would require a corrupt witness to influence which would then lead to a loss of witness votes if found out which should provide a certain level of deterrence.

Only a very, very limited level of deterrence, because there is not really any way to tell that the witness is colluding. The rigged winner(s) can be some 'third party' shill that has no visible association with the witness (or lottery operator).

All of these sorts of simple methods of generating randomness from a blockchain are flawed and unsuitable if there is significant money at stake or a high value attached to the service being trusted and not subject to FUD attacks of being rigged (whether or not accurate). There are some decent methods but they are much more complicated.

Yes, you are right, but like you said it also depends on the amount of money at stake. Also if a witness does purposely generate a certain block id, they would have to add some "random" data to the block that might be noticeable if scrutinized. Also you could limit the block used to one produced by a top 20 witness vs a backup witness, as top witnesses (like yourself!) are even further incentivized not to do things like this.

Also if you have some time I would be interested to discuss some of the "decent methods" you mentioned. In any case, thank you for the response!

Also if a witness does purposely generate a certain block id, they would have to add some "random" data to the block that might be noticeable if scrutinized

This can be largely if not entirely avoided. For example, the block producer can make changes to the block that are plausible to happen by accident, for example, simply omitting one or two transactions, changing the order, etc.

Also if you have some time I would be interested to discuss some of the "decent methods" you mentioned

I may make a survey post about it when I have time.

I sent 1 sbd for daily, nothing I got back its been 2nd day so I don't know how legit this lotto is, don't invest on daily or weekly. it worked for 1hour I sent 0.1 sbd I got 0.001 sbd. before sending, nothing fair about this lotto. I lost 1.1 sbd so don't send any money for. lotto.

Do you have more information about this? I would like to read into it.

Well, that took about 7 seconds to point out how it could be rigged. you should have just rigged it and won it 27 straight weeks in a row before telling them. lol

Its funny my dear

He explained how the lottery runner could rig it, not the players.

He explained how the
Lottery runner could rig
It, not the players.

                 - felipejoys


I'm a bot. I detect haiku.

Thanks for the advice! I greatly appreciate it will work on a solution. I will look to broadcast the server hashes each round on the blockchain and then use the block_id from that block.

Do you think you might open it up for other people to run their own provably fair lotteries / raffles using your system for a fee?

What do you have in mind exactly? I want to release the tool to verify all bets by Tuesday, that will be available for everyone to use.

Let's say I wanted to raffle off some steem monsters cards, it would be cool if I could go on your website and put in the raffle details and then your tool could track the entries and pick the winner at the end using your provably fair system.

@yabapmatt, sir what if any bot doesn't vote on my bid . Because 12 hours ago I send 3 steem to @upme and I did not get upvote so far . One more user did not get upvote for 45 steem.

Ah I see that is a cool idea and I will look into it. As for now next week I will be cliff diving in Greece for 2 weeks, so it wont be anytime soon.

As for solving the provably fair aspect. I decided to use the hash of the first Ethereum block found after the deadline. In the new process when a deadline expires, first the public hash from the server seed will be published in a transfer on STEEM. Then when a new Ethereum block gets found this hash will be used instead of the transaction id and also published in a transaction on STEEM.

@fairlotto self votes are being countered by @sadkitten for 1 week starting Thursday, July 26th 2018 because they are one of the highest self voters of the previous week. For more details see this post.

I sent 1 sbd for daily, nothing I got back its been 2nd day so I don't know how legit this lotto is, don't invest on daily or weekly. it worked for 1hour I sent 0.1 sbd I got 0.001 sbd. before sending, nothing fair about this lotto. I lost 1.1 sbd so don't send any money wihout understanding it compeletly

I gave you an upvote on your post! Please give me a follow and I will give you a follow in return and possible future votes!

hey man i will do that!! pls do follow me,and do have a look on my blogs.

I've been very skeptical of steemmonsters until I read this comment of yours. Just voted for you as a witness.

I find your excellent information supply very practical and useful

A very beautiful article, Lake!

Wow very nice work. Please follow me if your interested in blockchain and technology. I promise the most in depth reviews/articles around.

I gave you an upvote on your post! Please give me a follow and I will give you a follow in return and possible future votes!

I gave you an upvote on your post! Please give me a follow and I will give you a follow in return and possible future votes!

Good work on this project.
Created a hunt for @fairlotto at steemhunt.
Fairlotto - TRUE STEEM LOTTERY

Very much appreciated! The code verifying Is just a dumbed down version though. The full code will be released tomorrow.

Pretty interesting game.

Hello guys this website is paying free btc. Also there are many proof videos on youtube.
Just paste your btc address and start!

Register here :http://bit.ly/2LvuTwYbtcfree

Very interesting idea! This would be a great system to have in the crypto space.

I only see one issue, depending on the country the player is in. There may have different gambling laws. How would you deal with possible future government interference? To the Government this might as well be a black market lottery system :(

Good question, if the volume gets to big I would just register a company in a country with good jurisdiction. Af for the jurisdiction of the country from the player, that is up to the player.

Good updatw steemdev

I love @lotto

Cool, where does the fee go? To a good cause or is it for profit?

Hi, good question. The fee is used to offer bonuses besides running the website and allowing for further improvement.

Amazing system on the Steem blockchain, I’m enjoying buying my lottery tickets

This is really a great project bro!!!

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.030
BTC 80610.66
ETH 3119.79
USDT 1.00
SBD 2.71