Seems like we all pretty much agree that decentralized poker is
possible.
Can we list some reasons why is might be impossible \ too fragile?
By impossible I mean, for example, if there's no way to:
- Deal a deck
- Play a hand
- Pay the winner(s)
Without relaying on a trusted party \ arbitrator (which is not chosen randomly from within the party) \ oracle.
So far it seems that dealing a deck has more or less been solved. If a group of nodes on the network can somehow decide they all want to play a hand together, then dealing a deck between themselves and then knowing which of their secret keys goes to which player is possible.
I don't know enough about Cryptography to know which encryption function will be safe to use though. One reason "Dealing a deck" might be impossible is if there isn't a function that works properly for this use case.
Playing a hand is also easy assuming we have an encryption function that works.
All players should follow the rules of the game, so all players should know which of their private keys they need to publish so all players could see the correct cards for the flop, turn and river.
The hard parts are:
Betting is pretty hard. Where do the bets go?
Bitshares is cool since it kinda provides a mechanism for locking value in the blockchain and later release it given some conditions. A reason why this might not be usable is if all parties would require their own fork of the blockchain, since that would mean they now have to delegate it themselves, and that means an easily attackable chain.
Note: Relaying on delegates in this case does not mean using oracles. The entire economy of the decentralized poker room is internal. There's no need to fetch information from outside.
Player drops is a major problem for this protocol. A paper linked in this thread:
Dropout-Tolerant TTP-Free Mental Poker
Looks promising.
Now that we've played a hand, we need to pay the winners.
In normal, real life poker, the bets would be on the center of the table and the winning player(s) would take his\their share. If someone tries to steal from the pot or not pay his share when he loses, there is a physical solution to make him pay.
On the network, bets would have to be released to the winners from a state where they are not reachable to
anyone (not delegates, not other players, not the player himself), and the release mechanism should be able to figure out, from a given hand of poker, who the winners of the hand are and to release the funds to them (taking into account all side pots, differences in all-ins, etc.)
Decentralized poker is difficult. Relaxing even a single item on this list would mean that the game is no longer purely decentralized and that would unfortunately mean there is no major advantage over the current online casinos.
Thoughts?