Bitcoin Forum
November 08, 2024, 05:09:08 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 »  All
  Print  
Author Topic: Poker and the shared pot at the table in a decentralised network  (Read 14719 times)
genjix (OP)
Legendary
*
expert
Offline Offline

Activity: 1232
Merit: 1076


View Profile
October 18, 2010, 03:53:15 AM
Last edit: December 19, 2010, 12:51:04 AM by genjix
Merited by ABCbits (2)
 #1

Hey,

Over the past days having discovered bitcoin has driven my mind wild. All this year I've been reading a lot about distributed networks. I was a programmer and I'm hugely interested in maths.

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. Many players hate this.

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 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.

This would be a great boost for bitcoin. My scheme is full of holes though. Looking for ideas.
genjix (OP)
Legendary
*
expert
Offline Offline

Activity: 1232
Merit: 1076


View Profile
October 18, 2010, 06:23:50 AM
 #2

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.
FreeMoney
Legendary
*
Offline Offline

Activity: 1246
Merit: 1016


Strength in numbers


View Profile WWW
October 18, 2010, 06:56:26 AM
 #3

I am very interested in this. It seems very hard to implement, but I really wouldn't know.

One thought:

Won't players need to send bitcoins to an 'account' so that each bet doesn't need to go through the bitcoin system and to verify for table stakes purposes? Do some multiple escrows hold this?

Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
Drifter
Sr. Member
****
Offline Offline

Activity: 364
Merit: 252


View Profile
October 18, 2010, 07:54:50 AM
Merited by ABCbits (2)
 #4

 I think I trust a company more in this situation than any escrow type system.  You're asking escrows to approve every round of betting, but do you think this would be done for free? The rake would have to pay them, but it wouldn't be easy at all having to approve every round of betting, and in that sense I also trust a well-polished program that detects error rather than an escrow approving bets when they never even see what's working behind the scenes and can't see face down cards.

A Bitcoin casino that allows deposits, gives people fake poker money to play with, then cashes out for real Bitcoin whenever they're finished feels like much less of a hassle, especially considering withdrawals could be made nearly instant.

A much easier system would be: Players sit at table, agree on escrows, send their money, and they're given the equivalent in play money at the poker table to play with. The players play the game normally, allowing the computer to handle bets and wins. When it's time to leave the table and they're done playing, they turn in their play money for the Bitcoin equivalent. At this point the escrow could also take a 1-2% fee, as I wouldn't expect for something like this to be entirely free. Given the fact that almost all poker sites take around 5% rake, you'd save 2-3%. Depending on your dedication, it could be worth it, but I think it's going to be a long time before the security I have with a real poker table is worth giving up for 2-3%.

grondilu
Legendary
*
Offline Offline

Activity: 1288
Merit: 1080


View Profile
October 18, 2010, 08:24:31 AM
Last edit: October 18, 2010, 08:37:46 AM by grondilu
 #5

Well, playing a fair game of poker online is a very tough subject indeed.

First, I'm not sure mental poker is already reliable.  I've red that right now it works only for two players games.

Second, how exactly do you intend to prevent collaboration ?  As I see it, the only way to prevent this, is to make sure none of the players know each other.  This is tricky, and in my opinion it can only be done in a anonymous network, such as Freenet or something.

Third, as far as an escrow service is concerned, it is also tricky.  It is not a pronlem specific to poker, though.  I didn't understand well your solution, but I think one can use a principle that would be close to the bitcoin system.  A network of anonymous nodes would offer escrow services, and the choice of the actual node for a game would be chosen in a random way.  The escrow node would have to perform some proof of work in order to gain the priviledge of being the third party.  Hopefully if honnest nodes are numerous enough, the escrow service would work fine.

Finally, I think it would be great if it was possible to create some kind of a robot on an anonymous network.  This robot would act like a virus, and would be programmed to organize poker games.  He would chose players, not letting them know each other, and would collect bets as a third party.  I don't know if such a bot would be feasible, though.  Plus, there should be a way to make sure the robot is honnest, for instance by making it open source.  But then, I don't know how could people be sure the instance they are playing with is really the one they think.

I think this subject is a little too advanced for me, but I reckon it is a very interessant and important one, as far as information technology is concerned.

I have the feeling that a good solution for online fair poker games won't be found during this century...

genjix (OP)
Legendary
*
expert
Offline Offline

Activity: 1232
Merit: 1076


View Profile
December 19, 2010, 12:27:38 AM
 #6

Hey,

Over the past days having discovered bitcoin has driven my mind wild. All this year I've been reading a lot about distributed networks. I was a programmer and I'm hugely interested in maths.

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. Many players hate this.

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 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.

This would be a great boost for bitcoin. My scheme is full of holes though. Looking for ideas.
HostFat
Staff
Legendary
*
Offline Offline

Activity: 4270
Merit: 1209


I support freedom of choice


View Profile WWW
November 29, 2011, 10:27:47 AM
 #7

Are there any news about this project?
It seems an atomic bomb Grin

NON DO ASSISTENZA PRIVATA - https://t.me/hostfatmind/
BTCurious
Hero Member
*****
Offline Offline

Activity: 714
Merit: 504


^SEM img of Si wafer edge, scanned 2012-3-12.


View Profile
November 29, 2011, 10:37:36 AM
 #8

We probably can't assume at least half of the table is genuine, can we? That would make things easier… Maybe half of the table's processing power? Or half of the poker network's processing power?

dogisland
Sr. Member
****
Offline Offline

Activity: 262
Merit: 250



View Profile
November 29, 2011, 12:30:08 PM
 #9

Could the M of N contracts be used for this ? https://en.bitcoin.it/wiki/BIP_0011

You would 2 people out of the N to transfer payment i.e. the winner and the site operator.
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
November 29, 2011, 02:11:56 PM
 #10

I think I trust a company more in this situation than any escrow type system.  You're asking escrows to approve every round of betting, but do you think this would be done for free? The rake would have to pay them, but it wouldn't be easy at all having to approve every round of betting, and in that sense I also trust a well-polished program that detects error rather than an escrow approving bets when they never even see what's working behind the scenes and can't see face down cards.

A Bitcoin casino that allows deposits, gives people fake poker money to play with, then cashes out for real Bitcoin whenever they're finished feels like much less of a hassle, especially considering withdrawals could be made nearly instant.

A much easier system would be: Players sit at table, agree on escrows, send their money, and they're given the equivalent in play money at the poker table to play with. The players play the game normally, allowing the computer to handle bets and wins. When it's time to leave the table and they're done playing, they turn in their play money for the Bitcoin equivalent. At this point the escrow could also take a 1-2% fee, as I wouldn't expect for something like this to be entirely free. Given the fact that almost all poker sites take around 5% rake, you'd save 2-3%. Depending on your dedication, it could be worth it, but I think it's going to be a long time before the security I have with a real poker table is worth giving up for 2-3%.

If you are going to use an escrow this is the way to do it. 

Essentially when you sit down with $x the $x gets escrowed and you get x play money chips.  The network of players can manage the play money chips.  When you leave whatever you final chip count (checked by getting consensus of all other players) is what the escrows pays out.  Same thing happens for any rebuys.

Thus at any particular time the amount in escrow = amount of play chips in play. 

I think an escrow could do it for 1% or maybe less as it wouldn't require any manual intervention just smart programming to avoid tricking the escrow.  That is the weakest link.  If I can trick the escrow into letting me cashout more chips than I have well I can rob the other players blind.


Having all players in the hand sign each hand (including a ledger of current balances) would go a long way towards ensure the escrow computer isn't "tricked".  The details on exactly how to do that should be subject to open and robust debate as that is the most likely point of attack.
HostFat
Staff
Legendary
*
Offline Offline

Activity: 4270
Merit: 1209


I support freedom of choice


View Profile WWW
November 29, 2011, 02:24:23 PM
 #11

I hope that will be found a way to totally avoid escrows ( totally decentralized and disconnected from thirty party ).
Is BIP_0011 the first step?

NON DO ASSISTENZA PRIVATA - https://t.me/hostfatmind/
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
November 29, 2011, 02:28:32 PM
 #12

how exactly do you intend to prevent collaboration ?  As I see it, the only way to prevent this, is to make sure none of the players know each other.  This is tricky, and in my opinion it can only be done in a anonymous network, such as Freenet or something.

That is a harder problem.  This is actually where a good poker network earns it rake.  Catching cheaters can't be done w/ software alone.  It requires human fraud specialists and the ability for the poker operator to acts as final judge.  Yes cheaters do get through and sometimes innocent persons are wrongly accused of cheating but the combinations of heuristic software and good fraud detection employees is the biggest benefit a poker network can provide.

The only way I see a decentralized network being able to handle collusion is w/ a game like "Rush poker".  For those who don't know Rush poker (an invention by Full Tilt Poker) works on the premise of each hand you play w/ different players.  You join a Rush "pool" and are assigned tables randomly.  When you fold or the hand ends you are immediately assigned to another random table.  I hate it but it is very popular.  The popularity comes from the speed.  Since when you fold you go into a new hand almost instantly you get to do more playing and less waiting.

Rush poker would make collusion very difficult assuming the number of legit players is large relative to the number of players in the largest collusion gang.  Say a gang of 8 colluders tries to cheat the network which has 100 players at a particular stakes.  They have a decent chance.  Now the same 8 into a pool of 8,000 players makes colluding essentially useless.  Rush tournaments could also be created although if the colluders survive long enough (or starting pool is too small) then as the field narrows the risk of collusion rises.

Normal poker when players can choose their seats likely can't be properly policed by a decentralized network.  Poker is at its most basic a game of incomplete information.  Player gain (legitimate) advantage over other players by using proper deductive reasoning to fill in the games.  Information is the most value asset in the game and those who can/will share information have an unfair advantage which is difficult to detect.
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
November 29, 2011, 02:30:33 PM
Last edit: November 29, 2011, 02:50:53 PM by DeathAndTaxes
 #13

I hope that will be found a way to totally avoid escrows ( totally decentralized and disconnected from thirty party ).
Is BIP_0011 the first step?

I think BIP_0011 is a way to make escrows more honest.  To cashout a player would require 51% of players PLUS the escrows consent.  Just relying on BIP_0011 would be very dangerous though as if you sit down w/ a table with 51% cheaters they could use the network to rob you blind.  If someone can they will.  Any network where you sit down and instantly lose unless you cheat will only be popular among cheaters.  Smiley

Alternatively you could use BIP_0011 to require 100% consensus before releasing funds from mutual escrow but "greifers" will ruin that.  If I lost all my money I can just be an asshole and vote against releasing any funds.  Granted I likely will never get my lost money back but I can ruin the game for everyone else.

I don't see a way around the need for an escrow but if the network supports multiple independent escrows and uses multi-party signing I think the risk of a "bad" escrow can be reduced.  Even at an escrow fee of 0.5% poker is a high cashflow business.  You are essentially collecting 0.5% of average player's stake every day.  

How much is that?  A lot.  Take a site like PokerStars. Has about 7,000 players online and playing at any particular time.  Average buy-in is probably $25.  Say average player sits down to 10 games per week.  That's 0.5% * $25 * 10 * 7000 * 52 =  ~half a million per year.  Even at a 0.1% escrow we are talking a hundred grand.  Obviously for a smaller poker rooms room revenue would be lower but at any particular time the escrow only has the funds currently in play.  If the escrow involves multi-sig then the amount of assets at risk would be a fraction of total assets (depends on how you setup the multi-sig).  This limits the amount they escrow can steal while being legit is still lucrative and would continue to grow with popularity (the whole risk vs reward).  Ironically pushing escrow fees too low actually upsets risk vs reward and makes stealing more likely.
btc_artist
Full Member
***
Offline Offline

Activity: 154
Merit: 102

Bitcoin!


View Profile WWW
November 29, 2011, 02:48:20 PM
 #14

Decentralized poker.  This needs some thought.

BTC: 1CDCLDBHbAzHyYUkk1wYHPYmrtDZNhk8zf
LTC: LMS7SqZJnqzxo76iDSEua33WCyYZdjaQoE
etotheipi
Legendary
*
expert
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
November 29, 2011, 09:22:10 PM
 #15

I have given a lot of thought to this problem in the past, starting with commutative encryptions for decentralized deck-shuffling (which is possible, btw).  When Bitcoin came out, I thought it was the final piece of the puzzle to creating completely anonymous, decentralized poker for "real" money.  However, the one part I couldn't figure out was how to stop players from colluding with themselves.   The more focus there is on anonymity, the less possible it is to prevent someone from filling 7 seats of a poker table themselves.  Forget other people...if I have 7 windows open at the same poker table, I'm going to run over the other 3 players no problem, and it's going to be more profitable with the near-zero rake of a decentralized service. 

Sure, you can try doing IP filtering, or various kinds of magic, but smart players will get around it, and a poker site with "real money" needs strong credibility and a customer support system.  The more anonymous you make it, the less credible it's going to be.  To make it credible enough, I believe you're going to have to add centralization and remove anonymity -- which destroys the whole spirit of this discussion.

I do find DeathAndTaxes' comment about Rush Poker to be an interesting one.  I used to play a lot of poker, and that was an interesting experiment....arguably I didn't care much for it either, but it does offer a very narrow, niche solution here.  If you can force players to constantly cycle tables, and the player pool is large enough to generally dilute collaboration that exists at any one table, then it will work for those that want to play Rush Poker....

But unfortunately, that's a serious niche.  Part of the edge of a good poker player is being able to sit down at a table (virtual or real) and start figuring out which players are weak and how to exploit them, not tangle with other good players, etc.  Playing a completely generic game with different players every hand is really not going to satisfy any generalized "online poker" market.

I looked at this very seriously about 6 months ago when I stopped playing so much poker and started getting into Bitcoin.  It's a fantastic thought experiment, but I think it's just that.  There's just too many pitfalls to make it actually viable.

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
HostFat
Staff
Legendary
*
Offline Offline

Activity: 4270
Merit: 1209


I support freedom of choice


View Profile WWW
November 29, 2011, 10:41:15 PM
 #16

Idea:
Can you add a p2p database where every user can give a +1/-1 to others?
This DB will be common between all peers, and everyone will have a private key and public key.
Then if I chose to give a +1 to another one, I will be able to see his +1 and -1. So I'll chose make my choices to enter or not in a table by seeing these votes.

I'm thinking about a community driven poker system ( decentralized/serverless/anonymous )

You wont have a perfect solution to go against the problem, but you will give to the community all the tools to protect itself and blacklisting bad players.

Example:
After the first installation, there will be some automatic filters and advice, and one can be: "Who is the first player that you trust and you want to add as a friend? Add his address"

I hope that you get the line of my idea Smiley

( I get this idea from the Osiris Anarchy forum rules )

NON DO ASSISTENZA PRIVATA - https://t.me/hostfatmind/
etotheipi
Legendary
*
expert
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
November 29, 2011, 10:56:27 PM
 #17

Idea:
Can you add a p2p database where every user can give a +1/-1 to others?
This DB will be common between all peers, and everyone will have a private key and public key.
Then if I chose to give a +1 to another one, I will be able to see his +1 and -1. So I'll chose make my choices to enter or not in a table by seeing these votes.

I'm thinking about a community driven poker system ( decentralized/serverless/anonymous )

You wont have a perfect solution to go against the problem, but you will give to the community all the tools to protect itself and blacklisting bad players.

This requires people to make an "identity" system in a anonymized service.  Not only will players always choose to use a new identity for every table they sit down at, but blacklisting a player is pointless when there's trillions of other anonymous identities anyone can use.  Not only that but,
  • (1) When do you assign someone a +1?  When you win a hand against them?  When they lose all their money?  When they make a witty comment?  There are plenty of scammers who will go months looking like a regular player without any reason to suspect them.  Frequently it's only long-term statistical analysis that can identify the cheaters -- which is pretty tough when players are constantly changing their identity and there's no central authority to police it.
  • (2) There is really no way with this system to avoid having packs of colluders (or 100 identities attached to myself) all +1'ing my other identities.  In fact, almost no matter how you design this idea, the scammers will figure out how to be the ONLY ones with 100,000+ ratings...

The only answer I have been able to come up with for an actually viable pokersystem using Bitcoin is just a normal, centralized one, that accepts Bitcoins instead/in-addition to USD,etc.  That may be a great idea, but it's not what we're looking for, here.

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
btc_artist
Full Member
***
Offline Offline

Activity: 154
Merit: 102

Bitcoin!


View Profile WWW
November 29, 2011, 11:14:08 PM
 #18

However, the one part I couldn't figure out was how to stop players from colluding with themselves.
Would it not work if there is a big enough pool of players and players are assigned to tables randomly? You choose a game, but you get assigned randomly to a table. 

BTC: 1CDCLDBHbAzHyYUkk1wYHPYmrtDZNhk8zf
LTC: LMS7SqZJnqzxo76iDSEua33WCyYZdjaQoE
BTCurious
Hero Member
*****
Offline Offline

Activity: 714
Merit: 504


^SEM img of Si wafer edge, scanned 2012-3-12.


View Profile
November 29, 2011, 11:28:56 PM
 #19

However, the one part I couldn't figure out was how to stop players from colluding with themselves.
Would it not work if there is a big enough pool of players and players are assigned to tables randomly? You choose a game, but you get assigned randomly to a table.
How about I just spawn 1000 players? I guess you'd have to be forced to pay up-front though, that would solve it.

DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
November 29, 2011, 11:39:36 PM
 #20

However, the one part I couldn't figure out was how to stop players from colluding with themselves.
Would it not work if there is a big enough pool of players and players are assigned to tables randomly? You choose a game, but you get assigned randomly to a table.
How about I just spawn 1000 players? I guess you'd have to be forced to pay up-front though, that would solve it.

Limit it to 1 player per IP address and have a blacklist of proxies?
Pages: [1] 2 3 4 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!