Author

Topic: Provably fair html5 poker (Read 2105 times)

legendary
Activity: 1232
Merit: 1014
FPV Drone Pilot
October 26, 2012, 02:28:58 PM
#15
1)  I envision a standard P-2-P poker client eventually being written and open-sourced.  This will take years and years

2)  I envision a blockchain-like hand history system where every hand ever dealt is available to everyone, and "hidden card" are of course "private keys" and you can show a guy only 1 card by only sending him 1 of your 2 keys.  (obviously you can show both too, when u need to prove the huge bluff to a guy)

3) I envision trusted nodes like SealsWithClubs as "tournament hosts" who will do things like put on huge guaranteed tournaments, the p-2-p clients would only be able to register and play if the guaranteed prizepool was provably available in a wallet.  The site would earn a small fee - and I do mean small - I want Tourney fees of 1-4%.  10% is the current industry standard for online, and live tournaments have just gotten insane.  I think my buddy in Florida just played a "$100 tourney"
 aka $81+$19  - but I digress - to have a "guaranteed poker tourney" on a P-2-P perfect poker client, you would still need a trusted node to make the guarantee, set the structure and the start time.


hero member
Activity: 614
Merit: 500
October 26, 2012, 12:13:45 PM
#14

If each player sends his entrance fee to the site operator before the game, and the operator splits it between the winners of the MTT at the end, that could work.  There's no need to mess with private keys - a simple "return winnings to address the funds came from" (like SatoshiDice does) could work.  You're having to trust the site operator to hold the funds for the duration of the game anyway, so you can also trust them to split it up correctly.

I like this. Could a p2p poker client be developed and scripted in such a way that the tourney deposits are floating around in the cloud, so to speak, and returned to the winners without the bitcoins ever being in anybody's hands during the tourney?
legendary
Activity: 2940
Merit: 1333
October 26, 2012, 11:58:19 AM
#13
disconnect issues have already been solved in poker.  Pretty much every poker site has rules against Disconnect and some type of Disconnect Protection.  It's really not a problem at all.

Right, but under the "Mental Poker" provably fair scheme, every play encrypts every card, and so if any player drops out, no further cards can be decrypted.  If a player drops out after the flop, the turn and river cannot be dealt.
legendary
Activity: 2940
Merit: 1333
October 26, 2012, 11:53:31 AM
#12
Why bother with encrypting the deck?  What's the point? Just do a continuous deck shuffle where the deck is being shuffled at all times like most poker sites. 

I'm highly interested in building a bitcoin poker site, thus why I ask?  Maybe there is something i'm not understanding.

There's no point unless you care about the word "provably" in the thread title.  SealsWithClubs probably runs "fair" poker.  But there's no way we can prove it.  For all we know, FreeMoney cheats sometimes, looks at other play hole cards, and wins more than he should.

Using "mental poker" techniques it's possible to be sure that nobody is cheating, since nobody is able to see other player's cards until they are meant to.  Under such a scheme there's no central authority (like FreeMoney is for all Seals games) who could potentially cheat his players.

the problem with that i think is breaking the private key up into the payout structure of the MTT.

If each player sends his entrance fee to the site operator before the game, and the operator splits it between the winners of the MTT at the end, that could work.  There's no need to mess with private keys - a simple "return winnings to address the funds came from" (like SatoshiDice does) could work.  You're having to trust the site operator to hold the funds for the duration of the game anyway, so you can also trust them to split it up correctly.
full member
Activity: 217
Merit: 100
October 26, 2012, 08:55:18 AM
#11
the problem with that i think is breaking the private key up into the payout structure of the MTT.
hero member
Activity: 614
Merit: 500
October 25, 2012, 05:42:54 PM
#10
Another question I have.

Would it be possible to design a system in such a way that the owner of the website doesn't take direct deposits?

For example. Right now the player deposits money into the owner's wallet. When he wants his money back, he has to withdraw it. Problem here is that the player has to worry about the wallet getting ripped off, and also worry about the integrity of the owner. Maybe one day he'll run off with everybody's deposits.

So, consider this:

The player wants to buy in to a tournament, for example. Instead of sending a deposit to the owner, he sends payment to a new bitcoin address that is specifically for that tournament, or table, alone. The private key may be temporarily held by the owner of the website, but once the tournament is finished, the private key gets emailed, or something, to the winner of the tournament. The idea behind this is that the owner of the website is only ever holding private keys, or bitcoins, for table that's in play, and not huge amounts of deposits that aren't in play.

Is this possible? I'm just thinking it would be nice to send bitcoin payments to the cloud, and the access to the bitcoins isn't revealed until the tournament has been won.
legendary
Activity: 1246
Merit: 1016
Strength in numbers
October 25, 2012, 04:26:20 PM
#9
Why bother with encrypting the deck?  What's the point? Just do a continuous deck shuffle where the deck is being shuffled at all times like most poker sites. 

I'm highly interested in building a bitcoin poker site, thus why I ask?  Maybe there is something i'm not understanding.

He is worried about anyone at all (even the site) knowing the deck because of things like the AP/UB superuser.

There is clever math you can do where no one knows any part of the deck they shouldn't until they should. Ultimately you could play poker without there even being a site, you just use whatever client you want and connect to whomever you want. One of the problems of implementing this is that you can't have players running off while you still need them to finish the hand.
full member
Activity: 217
Merit: 100
October 25, 2012, 02:59:19 PM
#8
Why bother with encrypting the deck?  What's the point? Just do a continuous deck shuffle where the deck is being shuffled at all times like most poker sites. 

I'm highly interested in building a bitcoin poker site, thus why I ask?  Maybe there is something i'm not understanding.
legendary
Activity: 1246
Merit: 1016
Strength in numbers
October 25, 2012, 02:44:04 PM
#7
disconnect issues have already been solved in poker.  Pretty much every poker site has rules against Disconnect and some type of Disconnect Protection.  It's really not a problem at all.


In the type of setup the OP is referring to know one at all knows the full deck during the hand and you need all of the players to help decrypt the deck at showdown. Perhaps some techniques could allow decryption with n of m players, but then you'd have to worry that n players were working together to decrypt ahead of time.
full member
Activity: 217
Merit: 100
October 25, 2012, 02:23:11 PM
#6
disconnect issues have already been solved in poker.  Pretty much every poker site has rules against Disconnect and some type of Disconnect Protection.  It's really not a problem at all.

Disconnect Extra Time

While each user is responsible for his or her own Internet connection, PokerStars makes an effort to help a player if he is disconnected during the final stages of a tournament that has a buy-in. We give the player disconnect extra time (DET) to act before his hand is folded.
For regular multi-table tournaments, the DET is available only at the final table. The DET is as follows:
First action: 240 seconds
Second action: 120 seconds
Third action: 60 seconds
Fourth (and subsequent) actions: No extra time added, but as the player is "sitting-in", he/she will get the regular time to act before being folded.
For sit and go tournaments with fewer than forty-five players, the DET is available when you are down to the number of players that will be paid plus one. For example, four players are paid in an 18-player Sit & Go, so DET will be available when there are five players remaining. The DET is as follows:
First action: 120 seconds
Second action: 60 seconds
Third (and subsequent) actions: No extra time added, but as the player is "sitting-in", he/she will get the regular time to act before being folded.
For heads-up tournaments, the DET is available throughout the tournament. The DET is as follows:
First action: 120 seconds
Second action: 60 seconds
Third (and subsequent) actions: No extra time added, but as the player is "sitting-in", he/she will get the regular time to act before being folded.
For all actions above, the player will remain in "sitting-in" state after being folded, and will therefore be given the indicated amount of time when action returns to them.
Note that for all tournaments, the DET is reset each time the user reconnects. So suppose a player is at the final table of a multi-table event, disconnects, and is down to 30 seconds per action, then reconnects. If he disconnects again, he'll start with 240 seconds for his next action.
During any time that the system is waiting on a disconnected player, the tournament clock (that raises blind levels) is stopped.
Note: The rules described above may vary between tournaments; therefore not all tournaments will necessarily behave exactly as described. DET may not be provided for each tournament; PokerStars reserves the right to change these rules without prior notification.
Again, we remind you that you, the player, are responsible for your Internet connection. If you lose (or place lower in) a tournament because of your Internet connection, PokerStars takes absolutely no responsibility for that.
legendary
Activity: 2940
Merit: 1333
October 25, 2012, 09:38:56 AM
#5
One problem with this technique for real-time games is that it is very high latency. The biggest problem I see though is that if one player drops their connection, the game is completely ruined until that player reconnects (or ruined forever if the player never reconnects). This is not only an inconvenience, but it could actually allow adversarial players to basically cheat, by just dropping out (or getting a colluding friend to drop out) whenever they're about to lose. As long as the last cards can't be dealt, they can never truly lose.

That is a problem.  I hadn't thought of that.

You could make players who drop out of hands and don't come back forfeit their stack, but that seems unfair to people who are having legitimate connection problems.  It also doesn't solve the problem because the person dropping out could have a tiny stack, and only be dropping out to help out his partner in collusion.

I wonder if players would accept a provably fair poker where after each hand the entire deck is made available.  That would allow you to easily provide a provably fair game, but at the expense of players never being able to 'muck' their cards.  I'm not sure that's a trade-off serious players would be willing to make.
legendary
Activity: 1246
Merit: 1016
Strength in numbers
October 25, 2012, 12:54:16 AM
#4
Well, what about having a trusted third party and provably fair? I suppose the two are incompatible?

Bitzino seems well suited for HTML5 poker. Any chance of building it?

If you trust the third party and they say it is fair then that's it. It's fair without trust that is hard, though I am convinced it is possible and will eventually come.
hero member
Activity: 614
Merit: 500
October 24, 2012, 10:47:45 PM
#3
Well, what about having a trusted third party and provably fair? I suppose the two are incompatible?

Bitzino seems well suited for HTML5 poker. Any chance of building it?
sr. member
Activity: 266
Merit: 252
October 24, 2012, 10:44:48 PM
#2
Provably fair multi-player games are hard! There are a class of cryptography techniques called Mental Poker if you're interested in reading more. The basic technique is that each player encrypts the deck of cards (encrypting each card separately) and then reshuffles it. Then whenever a new card is dealt, each player provides their encryption key for that card to only the players that should see the card.

One problem with this technique for real-time games is that it is very high latency. The biggest problem I see though is that if one player drops their connection, the game is completely ruined until that player reconnects (or ruined forever if the player never reconnects). This is not only an inconvenience, but it could actually allow adversarial players to basically cheat, by just dropping out (or getting a colluding friend to drop out) whenever they're about to lose. As long as the last cards can't be dealt, they can never truly lose.
hero member
Activity: 614
Merit: 500
October 24, 2012, 09:51:59 PM
#1
Why doesn't this exist already? Can it be done? I want!
Jump to: