I have never played online poker in any other website, and I have not downloaded any client. So I am coming in, attempting to do this, from a fresh perspective.
I'll take a look at the more popular online poker sites later.
Also, I want to implement this provably fair poker without needing a client. It will either be java or html5 or something that is browser based. I would like to appeal to anyone who can browse using current browsers regardless of OS. Downloadable clients mean I'd have to make one for MacOS, Windows, Linux, Android and iOS. Only the last two would deserve their own clients, the desktop computers should have "optional" clients.
Based on my initial research, browser based poker sites can be played by everyone, except they don't have the client features that some players would want. All those extra features are optional. I'm guessing I can make a browser based poker site with an API so everyone is free to make their own client, but without one, you can just go play.
Verifying the results, might be impractical, but with the game being "provably fair", someone out there will make a script to do this. They would not need to trust the website. All the website needs to do is spit out the hashes and cards which the players can verify, but only for cards they can see.
For disconnecting players, I think a default fold if you don't connect is best. The "all-in" on disconnect does not make sense to me. But I've not played any online poker, so what do I know...
As for cheating, the server can always cheat, that's a given. All casinos can cheat. All dice site owners / operators can cheat. There just isn't a practical way around that. And even if the site does not cheat, what if it does not pay out the pot? All new casinos are probably scams until they have stood the test of time, or the reputation of the operator is at stake. EV could have cheated SD, we would never know. dooglus has said, he could do the same for JD, but he claims he does not.
Collusion, well, not much we can do about that if I want my poker site automated. That would require staff to watch the games and do analysis. Which is what Poker Stars is known for.
Again, I have never played any online poker game. I just did a lot of reading on it two days ago.
I already have an idea on how to implement this provably fair poker shuffling and dealing and verifying only the cards the players may see, but I've got to test it some how. (either on my napkin drawings, my computer or through some ugly looking website.)
@darkmule, would you be so kind as to enumerate a typical 5 card draw poker game with 4 players, for example. I was thinking of just making a simple game where:
1. Players seed. Dealer shuffles.
2. Dealer gives 5 cards to each player, face down.
3. Players see their cards. Players can immediately verify they were dealt the cards they were meant to have.
4. Player 1 has to check, bet, or fold. This is the blind or opening. He'll fold if he doesn't like his hand.
5. Player 2 can check, raise, or fold.
6. errr.. betting goes around the table to Player 3, to 4, then back to 1.. or.. well, I wanted to keep it simple. This is getting complicated already.
7. Showdown to whoever is left.
So, the players see cards in the showdown and their own cards. Other players do not see mucked or folded cards, and do not see the rest of the deck.
I understand that even with one deck of 52 cards, you can have as many as 10 players in a table.
I can shuffle the deck randomly and fairly now, and I can show players only their cards while keeping the rest secret. What I'm having trouble trying to do is get players to contribute to the shuffle and proving they did so without revealing the entire deck.
I think a solution is that the dealer does the shuffling. The players are only allowed to "cut" the deck. Without knowing the cards, they can cut anywhere and it just changes the order the cards are dealt.
Whoa. Wait. While I was typing the above paragraph, it just dawned on me that the players can still shuffle the deck, without knowing the cards. Shuffling = cutting the deck multiple times, it can even be randomly ordered as many times as needed, and a script can be used to verify all of this.
In fact, the dealer does not have to do any shuffling at all. But I'll make it so that there is an initial shuffle, and then a final shuffle after the last player, and both shuffles are provably fair.
aha... I have to test this.
Now, I just need someone to program a website for me, charge 1% rake, and make some money hosting a trusted bitcoin based online poker site. (incidentally, what do non-bitcoin poker sites charge anyway? I only thought of 1% because all the bitcoin dice sites have 1% house edge.)
My implementation will use a 64 character alphanumeric string as the dealer seed, and each player supplies something equivalent (with a limited character set, to prevent players from using obscene words as their seed values), and SHA256 as the hash function.
I'll upgrade it to larger values or to SHA512 later once I get this working.
In fact, to test this for real (after testing it locally on my own computer), I will make a thread, (a forum based poker game) where players post their moves. This is going to be really slow, since I will wait for each player to make a move, and could take days. I'll be the dealer, and I need at least 2 players who aren't going to disconnect on me. Since this is a forum based game, I will consider you disconnected if you don't reply after 3 days.
Yes, that is going to suck because of the wait times.
But it will all be provably fair. How's that?
I better start another thread already or we'll derail this one. Sorry mem for hijacking your thread accidentally.
Here is my thread now:
Provably Fair Online Poker by Dabs
https://bitcointalksearch.org/topic/provably-fair-online-poker-by-dabs-beta-test-1-274068