October 18th, 2010, 12:17 AM
Poker and the shared pot at the table in a decentralised network
When we play Poker online, we are using a centralised network. You deposit your cash online, sit down at a game and play. You place your trust in the site to be secure; no other players can see your hands and no money is being secretly stolen from you. Even big name sites have been known to cheat and smaller sites just shut down and steal your money.
There are two well known sites- PokerStars and Full Tilt Poker. By being secure, they charge you excessive amounts to use their service. The market is monopolised by them since small sites are untrustworthy. This year I played on PokerStars and made $3k profit and payed $4.5k in rake- so I had to win $7.5k in total and hand over more than half my winnings to PokerStars.
A decentralised Poker network (using bitcoin). Here's the advantages:
+ Government heavily taxes Poker sites. Decentralised networks are outside the law.
+ No rake.
+ Don't need to place your trust in a company
+ Customise your client since you own the source!
+ No tracker sites gathering statistics on your play against the rules of Poker
How could such a thing be implemented?
Mental poker (check wikipedia for algorithm) is a scheme for neutrally verifying cards among players but is slow. Yet I imagine there's ways to speed it up by relying on trust/probabilistic methods.
The real problem is money put into the pot. For those unfamiliar with Poker I'll explain: People bet on the strength of hands, and put money in a pot. After so many betting rounds, both players show their hands. The strongest hand wins the money put in the middle. How can this be decentralised?
The best scheme I imagined was if the pot was stored by a third party. We want to protect against collaboration so using the other players not involved in the hand at the table is not possible (5 of the 6 players on the table could be collaborating together and just steal your money). Each player could nominate a few escrows each that hold fractional amounts of the money. Since people disconnect (bad internet .etc), the escrows would need to be dedicated services.
6 players sit down at a table. Each nominates 2 escrow services that hold the money (12 in total). Player A and B start betting and putting money in the pot. $200 goes into 12 escrows or $17 each. After they show the hand everyone agrees player A won. But one escrow refuses to award their share of the $7 to A... Everyone at the table blacklists that escrow to never trust them again and alerts everyone else in the network. If the majority of the players at the table >50% agree that an escrow is bad, then everyone blacklists them.
My scheme is full of holes though. Looking for ideas.
October 18th, 2010, 03:17 AM
In an escrow:
1. A offers to sell laptop for 2000 coins, and escrows X coins as security.
2. B offers to buy and escrows X coins as security.
3. B pays 2000 coins to A.
4. If A refuses to send the laptop, both A and B have lost X coins. Therefore, A has an
* * incentive to send the laptop, and B can't use this system to put A out of business.
5. A sends the laptop to B.
6. If B refuses to acknowledge receipt of the laptop, both A and B have lost X coins.
* * Therefore, B has an incentive to acknowledge receipt of the laptop.
where X > 2000 (e.g X = 2500)
In Poker here, the transaction confirmation is when the hands are revealed and the escrow confirms the winner. I'm asking about a distributed escrow in essence.
October 18th, 2010, 09:40 PM
No, not really.
Personally I'm more apt to trust a company that I know nothing about than an individual I know nothing about (especially an anonymous individual).
If the escrows were dedicated services then it wouldn't be decentralized anymore. Unless by "dedicated" you just mean not playing at the table. In which case, what security does that add? Are they not just as likely to drop as someone at the table? Can they not be rigged just as easily (since they are nominated by players)?
What if you have 5/6 people at the table collaborating and they blacklist your (good) escrow? Or they choose not to blacklist a bad escrow?
Having each player nominate 2 escrow services doesn't really increase the diversity. You may as well just have each player nominate 1. If someone is able to game the system into having one rigged escrow service, why couldn't they just do it twice to have 2 rigged escrow services?
How are you going to uniquely identify escrow services? If you can't uniquely identify them you can't blacklist them. It's virtually impossible to uniquely identify a node on the internet, especially if your network protocol is open source.