Bitcoin Forum
November 07, 2024, 04:42:54 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3  All
  Print  
Author Topic: Provably Fair Online Poker by Dabs (Beta Test 1)  (Read 5886 times)
Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 15, 2013, 04:18:49 AM
 #1

I'm going to host a 2 or 3 player game of forum based online poker.

Buy in is... uh... ok, let me think about this... maybe 0.10 BTC maximum per player.

I will be the dealer, and I will shuffle a deck, hash it, and show the hashes. Then I will allow players to give me a random character seed, which will be hashed with a fixed and unknown salt (which will be revealed later), to use as the "cut" for the shuffled deck.

Then I will post the final shuffled deck. The game starts. I deal 5 cards to each player. I PM the players their cards and whatever secrets you need to verify that you indeed got the cards you were supposed to.

Players DO NOT see other player's cards until the end of the game, if they deserve to see it.

Then players bet, raise, check, call, whatever.

To keep this game running smoothly in a timely manner, I need at least 2 players, maximum of 4 players, who can reasonably be online on this forum 3 times a week, daily if possible. Remember, the dealer (me) is a very busy person and I might not be online every day as well.

So, what kind of game do we want to play? I was thinking of something very simple.

Summary:

1. I am the dealer.
2. I escrow your buy-in for your "chips".
3. I shuffle the deck.
4. I let the players "cut" the deck according to certain cryptographic rules and sorting, which are provably fair. (see my lotto for an example.)
5. I deal one card from the top of the deck to the first player.
6. I deal the next card, to the next player.
7. Each player gets 5 cards. I send a PM what your cards are.
8. You guys play, bet, call, fold, whatever.
9. The winner, gets the pot. His cards have to be revealed, of course.
10. All players can verify their own cards, and cards that can be seen on the table.
11. No player can see any other cards they are not supposed to see.
12. There is no house rake or dealer rake for this one game (or for the next), but it would be nice to tip the dealer.
13. All BTC will be held in a cold wallet I control, the blockchain will be proof of confirmed buy-ins and payments to the winner.

Ok, tell me I am missing something, because I know I am missing something. For this first game, I would like to keep this simple, so maybe I want 3 players, each sends 0.3 BTC to me (on the table), and this is a simple 5 card poker game. I confirm the order of players. I confirm all "moves". I send the pot to the winner.

This game will take maybe several days. So this is gonna suck for the impatient types. I will not host this on IRC or some chat room, not until I have a "server" up and running where I can just input the needed variables.

What I am still wondering about are the bets or something. How does that go about. Anyway.

Ok, what I need now are volunteers / players. Who's up for this? No free roll or free play, or play money. I am pretty sure I will not attract high rollers, so you guys decide on min / max bets or something. I suggest we start at 0.01 and maximum maybe of 0.30.

Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 15, 2013, 04:19:28 AM
Last edit: August 15, 2013, 04:37:05 AM by Dabs
 #2

Post reserved for shuffling seeds, deck, etc.

SHA256 of Dealer Shuffle 1 seed
5bbef58be675e74d11c88db84d8083d57f3ca50e696f3a7ced5e00fbe95b82b6

SHA256 of Dealer Shuffle 2 seed
4d5016cf416539544bb12a11c118bb01df463555c4a1364ef093f96f2d128eb2

Dealer Shuffle 1 will be used for the initial shuffling of the deck.
Dealer Shuffle 2 will be used for the final shuffling of the deck, after the players have shuffled or cut the deck. Before the game starts.

Both seeds are 64 character alpha numeric.
Both seeds will be revealed either after the shuffling, or after the game.

I'm still thinking how to shuffle the deck, but I have a couple of ideas already in mind.

cparsley
Full Member
***
Offline Offline

Activity: 215
Merit: 100



View Profile
August 15, 2013, 04:22:28 AM
 #3

Depending on what others say for stakes, etc, I'm game for Dabs test at 0 rake.
Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 15, 2013, 04:37:38 AM
 #4

SHA256 of shuffle seeds posted. Someone quote that so I can't change it. I need players now.

Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 15, 2013, 05:10:02 AM
Last edit: August 15, 2013, 06:24:28 AM by Dabs
 #5

I will use a standard 52 card deck as follows: (unshuffled)

Code:
Card (Short)   Card (Long Name)
AS   Ace of Spades
2S   2 of Spades
3S   3 of Spades
4S   4 of Spades
5S   5 of Spades
6S   6 of Spades
7S   7 of Spades
8S   8 of Spades
9S   9 of Spades
TS   10 of Spades
JS   Jack of Spades
QS   Queen of Spades
KS   King of Spades
AH   Ace of Hearts
2H   2 of Hearts
3H   3 of Hearts
4H   4 of Hearts
5H   5 of Hearts
6H   6 of Hearts
7H   7 of Hearts
8H   8 of Hearts
9H   9 of Hearts
TH   10 of Hearts
JH   Jack of Hearts
QH   Queen of Hearts
KH   King of Hearts
AD   Ace of Diamonds
2D   2 of Diamonds
3D   3 of Diamonds
4D   4 of Diamonds
5D   5 of Diamonds
6D   6 of Diamonds
7D   7 of Diamonds
8D   8 of Diamonds
9D   9 of Diamonds
TD   10 of Diamonds
JD   Jack of Diamonds
QD   Queen of Diamonds
KD   King of Diamonds
AC   Ace of Clubs
2C   2 of Clubs
3C   3 of Clubs
4C   4 of Clubs
5C   5 of Clubs
6C   6 of Clubs
7C   7 of Clubs
8C   8 of Clubs
9C   9 of Clubs
TC   10 of Clubs
JC   Jack of Clubs
QC   Queen of Clubs
KC   King of Clubs

Each card is now combined with a secret for each card that only the dealer knows and then hashed. The results are as follows:

Code:
Card   SHA256
AS     b6c673713720aaa4ae164f815a4dd890ad7c8402bcecdf7025114ffe16c7c9cf
2S     7818dcbe0f7d3c1da1204dbcfb43bf464595f49ae9fd44e13bdff41c63aa7186
3S     81a352eab12d47ab4e4c14d3a879be7f8dcd81df03339d5e23a0c51df3031860
4S     085eecd85189ce6c6d984316f1e791006e9df9a5f125598a9a155fef42dd2599
5S     82a96339866ff946178bf5cba3f406c574a76e0ee895d106b4fa2fc29c4828d9
6S     d59d1b1c49e18708a173ca85cbd2f4abc2eee73003cfdd0e1663ae5dcfcb293a
7S     0f0d2449d40789db88eecbdefecba2af0b9c7aad246a6974bfb7ef34f2252ab2
8S     f89d0aedf3d450ad8e10b56c20799078986d7c7ae7d6d58bbaeed5fd894bd4c3
9S     d5504b48da6b720ad352dc969fac829719af6082db3497d57fdb76a7c55f4dc4
TS     7423c3dcbc95f815a898478965beb6a9052c18dfc1f4946159f8e29d5749b46a
JS     bcd38df840fe0120557b3cb0c9c60453fca2f4c8d0540a863789685fbdb87adb
QS     2952ae056852535afef4bf6e824e94004252b00c53277eafce10afb13dda9693
KS     8146174aada39e889503403044ee0e2906386dae78a73ed3236228711f759c84
AH     789203efadc118d2dc423ce0b687216470fe3f8edbc7863144b0a02c1680f204
2H     1123e2d5c55aba7366876409716333faa9646ddae7b89e695250f291dd4ea28a
3H     27b11939837397c36d08ba071f23d4b1327313ac2629cc80ddca05dc50c4df9c
4H     c0849d6b1ffe72df57393bf2dd6a9c1bde4b76f486e43056566fb29f252337bb
5H     8f48d8f528d369c03ed280c34c326e72b2861f850f42c7ae4a258a769234863b
6H     fec2262a406c93122c9fc907d8f5b2030d5bd2d3855268b00a529ee56d384b35
7H     ecfe21260ad3d03c50454b2764c043c2b1e2b604c32297aa88ad5ff02997f625
8H     db017bf0a4cddb72e6f5baed0643f26833e1301d6c53fc486a149d3dc3f4f167
9H     b595142eb87a0ae6518e110c63cf181c468192d88ac2d1168719db93dee85305
TH     6aa7c0ebee736c088044eab138f902c4c989dc7891974ffee4057a049cf4c435
JH     2f07ef0762d6fea99b79b00016915a29541858ed6c75dc057fc0c396d1b3c0ba
QH     fb902e1215dacd53e16d9e3e88dc5b348388bbef4dad151be4c7304dde585789
KH     30da1dfe3008cfb745d783e3d48007f0183a16731ff10f6dc7c17c3fe08c367f
AD     98b69f01c58fb01b1d007196c1af17de315364f59a3a22c30e5b038fdebf09f3
2D     79567b0cfc1d5af70f88af95706157a1928aefb988b2202ed3823bb716bfc867
3D     36bf4f86195b295125723a82e5e98ef6e90b54c613834f6b664847236203ca0e
4D     32a1a3ea027acf0dbed5f8043eb597222331430bb74e612243c17d4aff42f894
5D     cfcc3e94f5b1fb07ebca755fce2f14a6c63599675d1334549e1e39d73678b6cc
6D     126d00d068834737deb3d6f294342be8571325186f813bddaf913242e2e1177d
7D     61828eeec90befb0ec2ac178f59b9583115a25d9abe89ff0a646d090ee3e141b
8D     c5f1e33b0a131ffb737772f543291356f676672186afb4e5052d96fc4c609958
9D     61d2309051ea3cb7876d9e6cbf4f314f74438f66bf837665b42d3a2b7f92a496
TD     c6041383cb51a80ffccdd1ec84936dd6aed4f8411c1029219360e8997707c3ad
JD     0b23ff13cf5c403615a6b2fa85dcbfa707b8aeea9b45c7da1a483351c0922344
QD     d55c2727477df278dd14a9a0903bd10269705d52bf61cc6e592dfabd40b3a9ee
KD     add25360c930a36bfe5d396339632bf26c5df930b3a67cb93cc4ac664d09472a
AC     0f4c8844b145f2863c93d372508b75e2d07c841f4a4ca6ae3e7c446ee742d17c
2C     76dd273ed65fc4383d753261c06939e059bfce985ef46225679a98fd5f572338
3C     72b81f9dc8485379b3c43868334f5bc32f09b6e2d7a87fdd6c0177a4eb81f3bc
4C     8701621af6be52b1e697bbe6473466c22de3bdc77ca25a389ce7d8c3e3140875
5C     8be15bcd7eebfe8c7fe5bd63586068346b69de3619df331417e37124a09ca127
6C     a3ab59d150438550c9634aea52e1461db57af174c65a1695e0c231e450d4be08
7C     170b424ad3a156127e1f65da7cb3a9cf814d9a4659bdc1e24a9158577c49e10b
8C     ad23879095cf1478ed1471d62b9a365157723ad53d82544b23d1878844b49a67
9C     d0e73c0a7f748b0cf273781b5c42f68a5897f31012f434a156124c4749b1c018
TC     6b4c899915f68919882c086950e769a37c7bc515738b60ccf1a11097b731ac0d
JC     d5e958bc8cb3d3852eb3864c45a8e9d9749178446977f848f1a7bf5b848816eb
QC     0e2a5bd9e82cb55e5d2bc162470673ff0b5701162eef51a9e5950313c5c55486
KC     3765d4bbc9c24b0c63094f7073477323c38970eb998cf6d4dd97d6e1f2922e78

You can use the above hash result to verify that I am indeed giving you the card you are supposed to have. At the time I deal the card to you, I may reveal the Card Secret as well.

I then take the Card, Card Secret and Dealer Shuffle 1 Seed, concatenate that, hash that, then sort it.
Code:
01d395b34d7790d6d7d6c2708ccfe3a0f89e404bb0cdfb66ea13ab5b7a4e3408
01dae48ac0572da3f52b25d4c02d032241785cf828c96cc149aebd42a0d9a285
02333d9cc2c0d3a02ef8afeb439caac18a11265cfd63d9f64302bc7afaf7e726
05733b8922f066f0514ed88c7079b2c52baa4591d1213c9ad353d1001472a8b7
0b84a9ea2b0ce5b76ef96f8446c3971a6338b8f8e329b054b641fbe0ff0671c8
0e2628d324f3a4294ade957339881e997135e5bd5a4c9c6f1d5c21ccee325086
0ebd74f404af65ef920a3be3b6b84a12fb8eba89c0f1165b71541319416575aa
1272c17d8d94827c5b9a5d1776d5fffb1c01c77c5046374b54baf72f64e825e1
2764077b74a0899b82b21788c07315696319b02084f048b8bb358a544d5e76fd
2951e40c923719c2a6f9819a0357afcdd583ef251febb188bd0138eb2ec6fdc0
317c3e5f16103b62f3ac81e5649c4ce4f7c103fb10fd3381f3da1123f220fc70
31c2407202ae57d15d9849330397596159fa50ada233e82f9c8451e24fa39f94
35017d80f2945ba16cb4df024d9829be7e9641d3267238f96fb19007e6d4d14f
389efe20f65d0e0bf5c9ce2306a90c98ef557c85eda9bf94c060b127698fea31
40112191338d68f22ce6dd0734b32c8eb5aa032360dd112e6de7880243168feb
45465d9f675e0690a1bf1761116e069ea540d8f9b7cd6fd2ff0b119c4c4d0474
4851b84b0c4eea1e4add4b35d83952d7f2d3d56545972002f0dbfd65db45bd05
4a922a2428252a52a63dbbc3fcfa2b5feb905fdac41fa36ecfd074a639cc8be4
4dfa6deb147254cbce645217f1192aca0cdcc8c24da33bf1d84049688ccaec38
5312486f625c2274cf0ba333bf288e14f85ac19d1f64dbfaa487b6b9618a226d
54bf91afd03dd16b069cd33d5816671f14229564dd6992fdf5234ba2e925b40a
63ef4cf62432d3ddb322fec553a87e1a1b1ca69d2dc8c021bb15b4856d72f85f
6c235d3a5b0388ba35cf6ec7760122579e887d8ba43c60f5e4e0564e37d69fa9
79e8e676b999483b7a93a4b7d29e9df181a8c73f5f6123b192ca88152bc599a8
7bbb9900ea2eb98421862b58323970511138060e991f42d59450d73b1a4a43d0
893bcfa6c1a5782aa2f7b72a8d9d4d67b88232f47b5f20e5f5a47fff5ac0527b
8bdc78a1959738da184c5fce51a79481e353b44318c556217078e8d1368bc900
8d2890b0e4efa4f8d29afe4a4a1f4f4296f8364e684c0b8b0601a16b1fa8a1c1
91e2db175422f7abd2945b5cec2ed300917b343b0ee13fea6a9d8d5f3a2ecb20
92c11bd71f4b532fc2afd242697d6ca5bd2895176e0837ccc23676ea781f6065
93e8680e4773aa3fbc718a4dda722331e0f6152aa2ccbcbd855e3455f247b905
97153d9c246c40ad98f4ce970eee678167498499c71f4a2f875ecef45270d39b
99bdb9dc9c7d42a61c262e5d9a527dfdae3f9358769b9b24a994c90ff4a009f4
9ab28575f4d3a3895e448fe5e41f9e4b880ad5b4be8aefc108a6449397bb92c9
9e9a724403a201e62b18f6d1ccdb54074138af59a6e02bf45ba24576f62c19d0
aa93a4e7af19c0ae5d2b076427c8364ed653b3458160f0260747fa5b90e6e476
ad58b67fa1ca247661db6b8c9fe88346e518b9e5da7f15a90297e21686e7bf9b
b8a43798d03aea00dfddc7cd187348a4b9b5e5bafaf7c5d93dc7e45d52417aa6
ba173e65b72de0c99ecc48aa41c303e5cec0829f120a1193724f765580ffbc49
be9399b9e166f1508e5ab1224952fcc27cd3296e0cc3c2c4df2cacd84101e58f
c3a2f958a47f55742ccb90d147eecb09a0bbf51d9b49321eef9974b842d3a9f9
c4ea65401689ade3185320dc21df9ea7acef460794921a160335f3b7e34ca6d4
c5c0a234525ab2ec16ec16b28f3cba5bc28f18cd7b924646d50de8e85338f478
d93cb1dc87f28dc02dc3501efee23d8ef38da4fbf9df28214b9375959373c9e1
e2353b3ac45030cea176915980885a415663469fc2102b03c01216ae24fb2bbf
e418281881809a1ef35e3058540d8ef58565bb4b5bb9658aadb74851c1f35445
e684710c40cd9ef8390bee85c88d34162b9185abf4967cc86638a80d6e69b2a7
e6a0f2c1cebdbf70d6ebb2bc126efd2021f3e9d31465247518b0fe0d8c2c73de
edcfe151d0441cfe5b8ad7bc958ffa571dc8f75366e07650ee16b45784a278c6
f029586b56409cbfa2aff1c21618d5443f378fb796e786c95462e2defb564ad0
f28ff94c061c6e29dbb8af95d80e11f49593efab4952290ac41bf71e26833343
f2ddba7f013f2d39ad54984879882bc4cfcffbf351a1bc8b63bdb10d9c756797

That now represents the deck of cards shuffled. The Dealer shuffle seed can be revealed now, because it doesn't really matter unless you know the Card secret. When the Card secret is revealed later (when I deal you the cards), you can see where it is in the deck.

But you still can not see any other cards. Only the dealer (in this case, me) can see the deck.

However, I will reveal the Dealer Shuffle Seeds after the game, just so players don't get a clue.

To make this Provably Fair, I will now require each player to provide "Player Seeds" composed of 20 digits. Allowed characters are the numbers from 0 to 9.

You can grab some examples from this link: http://www.random.org/strings/?num=10&len=20&digits=on&unique=off&format=html&rnd=new

I am only allowing numbers to be used, to prevent players from providing seeds which can look offensive (such as profanity.)

I will then use these player seeds, concatenate the seed + the letter P + the digits 01 to 52, hash that, then sort it. This now represents your shuffle. The letter is used to make my spreadsheet know this is a string and not a number. The cards then get sorted per the player hash of the player seed.

This can be done for all players at once, or for each player in order.

Then the Dealer Shuffle 2 Seed is used in the same fashion. All player seeds and dealer seeds are revealed to show that the deck has indeed been shuffled according to all shuffle seeds.

You still don't know what the cards are until I show them to you.

Okay, who wants to play?

Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 15, 2013, 06:56:25 AM
 #6

Oh yah, this was inspired by this other thread:
https://bitcointalk.org/index.php?topic=266791.40

Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 15, 2013, 09:00:45 AM
 #7

http://en.wikipedia.org/wiki/Five-card_draw

This is the game I was thinking. To keep things simple. I need 2 or 3 players. 4 maybe. This is subject to collusion, but not subject to insider access (because I'm the dealer). I urge the players, to play fair anyways. Don't collude. Don't tell the other players what your cards are. I can't stop you though. You could lie to them, they might fold. hehehe. But they won't believe you unless you show the relevant hashes.

darkmule
Legendary
*
Offline Offline

Activity: 1176
Merit: 1005



View Profile
August 15, 2013, 04:56:59 PM
 #8

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

This is a feature that is often abused, which is why many sites don't have it.  Players deliberately disconnect to get protection.  It basically means they're considered "all in" and don't have to call any more bets, but could still win the hand.  Even though I get disconnected sometimes, I generally prefer that a disconnected player gets treated like anyone else, i.e., if they don't call a bet they get folded.

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

I disagree on that.  Precisely because of people like dooglus and others who don't post, but simply collect data, a rigged SD would produce skewed data that would basically scream "rigged."  The same is true of poker sites.  I am nowhere near the statistician that many poker players are, but even I had a couple million hands from Stars at one point and cranked it through SPSS a few times to figure things out.  Obviously, one of the things you want to check is "is it rigged?"  Even though others did it, I also did and found nothing, i.e., the data was consistent with the null hypothesis.

More usefully, I also did population analysis correlating things like VP$IP (percentage of the time the player puts money into the pot voluntarily) against profit with players I had lots of hands on, and unsurprisingly found that at a certain breakpoint, players were almost all losers or winners just based on that stat alone. 

In any event, any significant rigging would stand out like a sore thumb to people who analyze data like this as a hobby.  People like dooglus and probably others we don't see as often would be the canaries in the coal mine, and their analysis of the data could be replicated by others.

Quote
@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:

I'd consult either Hoyle, Scarne, or the original Super/System by Doyle Brunson on draw games.  The rules are actually pretty variable.  I'll just point out where I disagree with this set of rules, but I will note that this is merely my opinion and people have played draw differently.

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

In what used to be the most commonly played variant of five card draw, there was a jacks-or-better minimum to make the first bet.  Once someone did open (and they could be forced to keep their discards and "show their openers" later), anyone else could play regardless of their hand.

In antes only play, everyone would ante before the deal.  However, draw poker can be played with other structures.  Another common structure, especially after the popularity of holdem, is blind bets.  Another possibility (more commonly used in stud games) is an ante with a "come-in."  That is, everyone puts up an ante, but there is a full bet required to "come in" and actually play the hand.

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

It gets more complicated.  There is also a question of how much you can bet or raise.  In limit, there is a specific amount and all bets or raises have to be in that denomination.  For instance, you can bet $1, and the raise is to $2, and subsequent raises are to $3, $4, etc.  Sometimes the limit goes up on later streets, such as in limit holdem (my favorite game).  Then there's no-limit.  Any player can bet or raise any amount from the minimum allowed to their entire stack at any time (with a few exceptions for short-stack all-ins). 

Then there's pot-limit, which I'm sure people love to code.  In pot-limit, you can bet anything from the minimum to the entire contents of the pot, or raise what the pot is after you call the bet to you.  You probably shouldn't start with this, but pot-limit jacks-or-better was sort of the gold standard of draw games when they were still commonly played.  (If the strategy for this game actually interests you, I recommend the long out of print Winning With Game Theory by Nesmith Ankeny.  Good luck finding it.)

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

This is, I think, a good idea.  The actual solutions players have used with physical cards that have evolved over the centuries of card-playing are probably a good analogy for what would work online, especially to solve the same problem, i.e., a fair deal.

Quote
I better start another thread already or we'll derail this one. Sorry mem for hijacking your thread accidentally.

I'm not sure we're really jacking it.  It probably now deserves its own thread, but the example of poker is pretty much a subset of the provably fair problem.

Quote
Here is my thread now:

Provably Fair Online Poker by Dabs
https://bitcointalk.org/index.php?topic=274068.0

I'll join you there, though I probably don't have much to say on the math issues where you are probably the expert.

I do have one suggestion, though.  I think five card stud would actually be a more approachable problem.  Seven card stud, which more people play (even though they're usually in their eighties) would be not much more difficult.

The reason five card stud is rarely played any more is that a skilled player almost invariably wins.
Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 16, 2013, 02:44:52 AM
Last edit: August 16, 2013, 08:01:20 AM by Dabs
 #9


This is a feature that is often abused, which is why many sites don't have it.  Players deliberately disconnect to get protection.  It basically means they're considered "all in" and don't have to call any more bets, but could still win the hand.  Even though I get disconnected sometimes, I generally prefer that a disconnected player gets treated like anyone else, i.e., if they don't call a bet they get folded.

Okay, I agree on this one. Disconnected players will be treated as automatic folds. They lose. Therefore there is an incentive not to disconnect. We run into the problem of people having bad connections due to storms, earthquakes, tsunamis, or whatever.

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

I disagree on that.  Precisely because of people like dooglus and others who don't post, but simply collect data, a rigged SD would produce skewed data that would basically scream "rigged."

...snip...

In any event, any significant rigging would stand out like a sore thumb to people who analyze data like this as a hobby.  People like dooglus and probably others we don't see as often would be the canaries in the coal mine, and their analysis of the data could be replicated by others.

That's the thing. Significant rigging will be seen. But an additional 1% or 2% on top, and it wouldn't look significant, it would look like variance. The fact is, it is possible to cheat. Not saying they did, but it's possible. It's insider or employee "super-user" or something, as what happened in poker sites.

The problem with poker sites is that they are not provably fair. You can't look at their RNG, you can't look at their shuffling, you just get dealt cards and have to accept it. You can't see that the deck has not been tampered with in the middle of the game.

With my system, or in attempt to make it provably fair, you see the deck. You see the order of the cards. What you can't see, are the cards themselves, until they are given to you, or until they are on the table face up.

Quote
This is, I think, a good idea.  The actual solutions players have used with physical cards that have evolved over the centuries of card-playing are probably a good analogy for what would work online, especially to solve the same problem, i.e., a fair deal.

I do have one suggestion, though.  I think five card stud would actually be a more approachable problem.  Seven card stud, which more people play (even though they're usually in their eighties) would be not much more difficult.

The reason five card stud is rarely played any more is that a skilled player almost invariably wins.

I think I will defer to your experience. Pick a game. In fact, I'm open to Texas Hold'em, or even Crazy Pineapple. We just need to agree to the exact rules of play, as well as the limits and betting rules.

I used to play a lot of Pusoy Dos (Big 2) and simple draw poker games. Those were very popular where I am, and people have lost (and won) thousands. Most of the time though, it's social playing, with pennies (or equivalent) as bets. Or chocolate chip cookies, or food. Bragging rights just dont cut it. Poker needs money, or it's not really poker.

Bitcoin in poker is going to be interesting.

Because of the way this is going to be Provably Fair, the advantages are simple: Players know for sure they were dealt fairly, the deck was shuffled fairly, and no one who has a sun sized computer can cheat. (They need several galaxies worth of ASICs to crack SHA256).

The disadvantage: You still need a dealer. You'll need one anyway, so that's not much of a problem. The bigger disadvantage is to me personally. This will become open and anyone can copy it without paying me any licensing or royalty or whatever.

The only other way to cheat is to crack/sniff the traffic, or man-in-the-middle attacks, or trojan the players, or something along those lines, but that's beyond my control already.

If I don't come up with my own poker site, someone else will.

What I could do, for people to attempt to verify this or study it for statistics or analysis, without revealing the mechanism (but most of it has already been posted earlier), is to simulate a million hands, maybe of simply 5 card poker from a deck.

1. shuffle.
2. draw 5 cards.
3. show the 5 cards.
4. repeat 1 million times.

Or would it have to be a complete game with several simulated players who don't fold? (no betting in this analysis.) Or I can change the game to be texas hold'em. Doesn't matter what game, as long as I can have my software simulate a million games.

Edit 1: I'm not a math expert but I do understand what I'm talking about when it comes to secure hash functions.

I could also just do a million dealer shuffles using my algo, then show all the cards, then thats what you audit. I could make it a simple text file with one deck per line.

I don't know if that helps.

Edit 2: Several years ago, I made several programs to shuffle decks, and I came up with the shuffle now known as the Fisher-Yates, without knowing that it was already invented more than 75 years ago. I never got around to coming up with anything more efficient as even back then (some 10 years ago) shuffling arrays of 52 elements was not memory or computing intensive, and taking even 1 second to do it was certainly faster than doing riffle shuffles in a physical deck of cards.

My current shuffling method is actually more inefficient since it uses sorting of large random numbers assigned to the cards. 256 bit numbers. There is a very improbable chance of collisions using this method, but I think even if I use 100 decks of cards, the odds are negligible and I can ignore it.

For the purists and other computer scientists, this will not do. For testing purposes, this will have to do. I only need 226 bits to produce all the possible permutations of a 52-card deck.

Finally, I think I found a potential use for Jokers. And in fact more than 2 if it helps. The Jokers will have to be identified distinctly and uniquely from each other. After the final shuffling, the Jokers and their positions in the deck can be revealed, then they are simply not used anymore.

I could have, for example, 13 Jokers, which is essentially a 5th suit.

AJ = Ace of Jokers
2J = 2 of Jokers
3J = 3 of Jokers
...
JJ = Jack of Jokers
QJ = Queen of Jokers
KJ = King of Jokers

Their only purpose is to show the audience the provable fairness of the shuffle and the game. The deck will end up being shuffled as many times as there are players plus the two dealer shuffles. In fact, I can skip the final dealer shuffle I just thought to include it, just in case the last player to shuffle somehow finds out the cards and manipulates the deck to his advantage.

Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 16, 2013, 08:24:00 AM
 #10

@darkmule and others who suggest a particular poker game: Kindly include at each step of the way, whether the cards will be seen by the player only, everyone else, or no one.

We'll avoid burning cards since it is pointless in online play (the original purpose of burn cards are to prevent players from cheating by reading physical marks on the tops of the cards).

I could always reveal ALL the cards after a game, but that might only work or make sense for freerolls. Anything involving any amount of bitcoins (or chips converted from BTC) should work like in a normal physical environment, ie: mucked cards are never revealed to others.

This leaves analyzing the cards difficult for non-players who never see anything but upface or community cards.

annnyyywhooo, who wants to play? The deck is shuffled and ready, I just need some players. If no one wants to play for "real coins", (since some may argue that this is a beta test), I prefer no one is allowed to fold. I do suggest to play at least one game for real and maybe a minimum of 0.0001, the transaction fee limit just to have a reasonable number.

vlees
Full Member
***
Offline Offline

Activity: 196
Merit: 100



View Profile
August 16, 2013, 09:38:03 PM
 #11

Post reserved for shuffling seeds, deck, etc.

SHA256 of Dealer Shuffle 1 seed
5bbef58be675e74d11c88db84d8083d57f3ca50e696f3a7ced5e00fbe95b82b6

SHA256 of Dealer Shuffle 2 seed
4d5016cf416539544bb12a11c118bb01df463555c4a1364ef093f96f2d128eb2

Dealer Shuffle 1 will be used for the initial shuffling of the deck.
Dealer Shuffle 2 will be used for the final shuffling of the deck, after the players have shuffled or cut the deck. Before the game starts.

Both seeds are 64 character alpha numeric.
Both seeds will be revealed either after the shuffling, or after the game.

I'm still thinking how to shuffle the deck, but I have a couple of ideas already in mind.


Quoted as requested.

Also I'm in for 0.01. Quite tired now so I don't feel like looking it up but I assume "Five Card Draw" is the original poker? Like Yahtzee, but face down cards and you can replace any amount of cards once. Also the Deck has jokers included?

BEEP BEP
darkmule
Legendary
*
Offline Offline

Activity: 1176
Merit: 1005



View Profile
August 16, 2013, 11:32:32 PM
 #12

IIRC Jacks or Better draw poker was often played with a single joker that acted as a "bug." That is, it could fill out a straight or a flush, and was otherwise considered an ace.

AFAIK, there is no poker variant where all players get to see all cards of all opponents.  All variants of poker, at least that I have considered, are limited information games.  I may have failed to consider some variant.

Five card stud is the least information limited variant I know, because only one card is secret.
Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 17, 2013, 01:03:51 PM
Last edit: August 17, 2013, 03:36:29 PM by Dabs
 #13

So, do I have three players? vlees, we haven't decided a specific game to play yet. Those were just suggestions.
@darkmule, big2 or pusoy dos is one variant where everyone eventually sees all the cards, at the end of the game, or it depends on the variant. Some games continue until all players have shed their cards. Some stop after the winner has won.

My current deck that is now posted above has no jokers, its the standard 52 card deck.

If I have 3 players, you guys position yourselves on the table, and label them as Player 1, Player 2, and Player 3. That will be the order for dealing out the cards once the game starts, after all players have had their chance to cut or shuffle the deck.

You guys suggest a variant. A community card based game like hold'em is actually a good idea, since the public can see the flop. Only the players will see their own cards, unless you reveal it here.

Here, I thought I was going to "sell" the idea, to some poker site, but after this game is over, you'll see how it works. I had this crazy idea to sell it for 100 BTC or 1% of the rake for a year or something. Then I realized, I've practically just given it away already. If you don't get it now, you will.

As for "mental poker", the problem with that is if any player disconnects, the entire game is ruined. Did I understand that right? In this version, as long as the dealer/operator/website is present, only disconnected players ruin their game by being considered folded.

So, both solutions have their disadvantages.

The holy grail, if ever, is a P2P version that has the audience acting as escrow, dealer, shuffler, verifier, etc. without them knowing what the cards are unless its the flop. A bigger audience or those acting as the poker network allows for decentralized provably fair "servers" similar perhaps to bitcoin or bittorrent. Games older than yesterday, or are finished, can be discarded so all clients don't store any "poker chains".

Edit: five card draw is also good. It tests the provable fairness while keeping secret what should be kept secret. And I'm guessing no one will fold, so everyone has the chance to see the cards.

Edit2: Can someone show me a deterministic Fisher-Yates shuffle? I mean, providing the same seed, it will result in the same exact shuffle. I might change the Player seed thing, to allow all players to submit any 256 bit number they want, 20 digits might be too small. I have an idea already, but my solution tends to be overkill and inefficient. I'll use the player seed and append a counter to generate as many hashes are needed to do a shuffle instead of my sorting method.

The sorting method is only used for the first dealer shuffle to satisfy provable fairness and be verifiable. If I do a regular Fisher-Yates shuffle at the start, it will leak all cards unless I keep the seed secret. If I keep the dealer seed secret, no one can verify the shuffle.

Or maybe you still can, but it's late and I'm typing this reply on an ipad, so ...

Edit3: Optional, but I can GPG encrypt any PMs to you so your cards remain secure and secret. Regular PMs will work fine, but staff, mods, or admins might be able to read it. Just PM me your public key, or make one just for this game. If not, I'll send a plaintext PM with your cards.

Edit4: Wow, I just read some stuff on PokerStars and they fold you after 20 to 35 seconds. I think thats too fast, I mean this isn't like an RTS game of StarCraft or a FPS like Quake or Counter-Strike. Or do I just think too slow. I've never played any online poker game at all. Maybe I should try them out one of these days. If ever I turn this into a website, whats a good time before you get forced folds?

It seems to me that online poker rooms are more like MMORPGs. Okay, I'm going to take World of Poker as my name if it hasn't been already.

dooglus
Legendary
*
Offline Offline

Activity: 2940
Merit: 1333



View Profile
August 19, 2013, 06:45:32 PM
 #14

Ok, tell me I am missing something, because I know I am missing something.

I think the biggest problem with your proposed scheme, and the thing keeping it from being provably fair, is that you know everyone's hand.  You can make a sockpuppet account and play and have a massive advantage.

The point of "mental poker" is that there isn't a trusted third party who could be cheating.  Everyone's equal, and can be sure there's no cheating going on.

Or did I misunderstand your scheme?

Just-Dice                 ██             
          ██████████         
      ██████████████████     
  ██████████████████████████ 
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
    ██████████████████████   
        ██████████████       
            ██████           
   Play or Invest                 ██             
          ██████████         
      ██████████████████     
  ██████████████████████████ 
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
██████████████████████████████
    ██████████████████████   
        ██████████████       
            ██████           
   1% House Edge
Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 19, 2013, 11:26:59 PM
Last edit: August 19, 2013, 11:48:35 PM by Dabs
 #15

You understand that problem correctly, but this is the same kind of problem you have with your dice site, for example; knowing the secrets, knowing the lucky numbers.

The way around that, for now, is that investors simply trust you. And I will of course state that I will not allow any kind of cheating, colluding, super users, sock puppets, etc.

In general, most other big gambling sites, even non-bitcoin sites, have to be trusted, or they would be found out by the players. But poker sites, so far, are not even a little bit "provably fair". Not even at all.

Mental poker would be ideal, but my concern with that is all other players have the encryption keys. What happens if a player disconnects and doesn't come back? Or two players?

How about in tournaments?

And who holds the pot while the game is going on?


I know one solution, but it slows down your dice site significantly, and it might make my poker game take longer than usual, unbearably so that no one will play both games.


(Replied from ipad, sorry if any typos.)

Edit1: If this ever gets implemented in a website or client/server software, there would no need to have server secret access, to do audits. Or not as much as other poker sites. Players can at least see their own cards (and any community cards) and prove those.

darkmule
Legendary
*
Offline Offline

Activity: 1176
Merit: 1005



View Profile
August 19, 2013, 11:35:22 PM
 #16

In general, most other big gambling sites, even non-bitcoin sites, have to be trusted, or they would be found out by the players. But poker sites, so far, are not even a little bit "provably fair". Not even at all.

Not remotely.  The best you can say about even the most extensive collection of hand data you get after the fact, as it is incomplete, is to say the data (that you actually have) are consistent or inconsistent with a fair deal to some degree of probability. 
Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 19, 2013, 11:53:37 PM
Last edit: August 20, 2013, 12:54:07 PM by Dabs
 #17

I made a minor edit.

What I attempting to prove (as far as proving using hashes) is to show a fair shuffle. Knowing what you know after the fact, after you've seen your own cards, what is the probability that the other cards you never see are not part of the same deck?

Edit1: Other players can prove their own cards, and they don't have to tell you what the cards are, just that they verified themselves. If all or some players do that, you know that all the cards on the table, face up and face down are valid and belong to the same deck.

I think this is good enough for now. I might have an additional layer of "provability" by using additional secrets (which I'm still working on if it makes sense or not), and for now, it would be infeasible to attempt to find collisions just to manipulate cards in a deck when I have already published hashes of the cards (even if you never see them) and published a randomized order of cards with a different set of hashes that are linked to the card secrets.

I don't know the exact numbers, but I dare say you are still looking at close to 2^256 for every single card.

From the other thread, this was said:

I think we want two solutions to this:

1. With a central server that does not need to be trusted (but can generate the shuffling.)
2. P2P version of poker. No need for servers (except maybe to find other players.)

I like option 1, too. Total decentralization is like the holy grail of online poker, but it seems to me that a central server would still be needed to organize the games, keep them moving along at a reasonable pace, and to act as a trusted escrow service to transfer funds back and forth. Maybe you could build a p2p client to handle all that, but then you'd get cheaters building their own clients to get around any constraints.

It's an interesting problem anyway and I'm pretty sure there is a big market for it. My own informal survey of bitcoin gaming sites tells me that the most profitable sites are also the 'provably fair' sites (bitZino, Just-Dice, etc). People aren't fools (for the most part). A provably fair HU poker site would almost certainly get a lot of action from high-rollers ... is my guess. I can see the $$ in their eyeballs now.

So mental poker falls into #2, while I am attempting to solve #1. We have to take some assumptions, like for example, that the dealer / site operator / owner can be trusted.

And, if there are two player tables (heads up poker), then obviously I can't play my sockpuppet there. That would be too obvious, and someone is going to notice very quickly. I'd rather play as myself, while declaring that I'm not cheating.

But like dooglus, I will probably stick to limit games or low stakes, because, with a house rake, I don't need to play to make money. I will play just to be better at poker myself.

Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 20, 2013, 01:05:43 PM
 #18

In general, most other big gambling sites, even non-bitcoin sites, have to be trusted, or they would be found out by the players. But poker sites, so far, are not even a little bit "provably fair". Not even at all.

Not remotely.  The best you can say about even the most extensive collection of hand data you get after the fact, as it is incomplete, is to say the data (that you actually have) are consistent or inconsistent with a fair deal to some degree of probability.  

I take it, you mean, that you can't prove anything on almost all other poker sites (bitcoin or not), at all. So you can't even check your own cards or the cards on the flop. Not unless the site eventually reveals the entire deck (and then they will have less players because of that.)

darkmule
Legendary
*
Offline Offline

Activity: 1176
Merit: 1005



View Profile
August 20, 2013, 06:25:49 PM
 #19

Not remotely.  The best you can say about even the most extensive collection of hand data you get after the fact, as it is incomplete, is to say the data (that you actually have) are consistent or inconsistent with a fair deal to some degree of probability.  

I take it, you mean, that you can't prove anything on almost all other poker sites (bitcoin or not), at all. So you can't even check your own cards or the cards on the flop. Not unless the site eventually reveals the entire deck (and then they will have less players because of that.)

I think we're basically agreeing here.  Statistics don't really "prove" anything.  However, they've generally been good enough at keeping sites on the straight and narrow as far as PRNG goes, because a PRNG that was biased enough to make more rake would also (probably) produce cards visible to the player on showdown that, if collected in large enough numbers, would show bias.  While this is far from a gold standard, like provable fairness, when you can rule out the null hypothesis with something like 99.99% certainty, that's good enough for most purposes.

Similarly, the insider cheating accounts on Absolute/UB were exposed by statistical analysis.  Players were already suspicious of these accounts, but running the numbers showed they were winning something like six sigmas out.  I forget the exact amount, but a win rate like that was highly, highly unlikely.  

Provable fairness has the significant advantage that you can actually prove that any individual event was generated fairly, and actually have mathematical certainty to it.  Considering a lot of Bitcoin gambling is spread by operations that could easily just start cheating at any time, make a lot of money, then take a runner before they get caught, that kind of certainty is preferable.  It makes the defection strategy less profitable for less of a period of time.  I.e., the first big rigged wager is probably the last anyone will make.
Dabs (OP)
Legendary
*
Offline Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
August 21, 2013, 09:51:36 PM
 #20

The more I think about this, the more I'm sure the current setup is enough, considering the mathematical certainty. However I am still thinking of using additional card secrets to further attempt to prove the mathematical certainty of the cards you do not see.

The public cards are easy. Your own personal cards as a player is almost as provable, at least to yourself. The others you do not see, while certain, can still leave some doubts.

As seen above, the first and only card secrets so far, unique for each card, proves those cards. The dealer seed or first shuffle seed links the same set of cards to a new set of hashes that can not be seen until the corresponding card secrets are revealed.

What I am trying to establish is that the cards are not changing or swapping or somehow finding a collision for the same hash result of a different rank or suit.

Another card secret might help, linked to both the first card secret and the dealer secret, but not shown until after the first shuffle, but before the players cut the deck, so I can sort of prove the entire set without showing any cards at all.

Then the more cards are revealed, to all players, the more the probabilities approach provable fairness for one secret.

The result will not be 1 in 2^256 but it will definitely still be better than 1 in 2^128. Maybe its 52 in 2^128 for a deck that is never seen, or just 1 card revealed. I don't know exactly.

The order of the cards, after players have cut or reshuffled the deck, can be clearly seen. In fact, you can see it now, as the last group of hashes is what I will use to represent the deck. I just sorted it, so it gets randomized.

It can be played or dealt from, as is. But I want players to cut or reshuffle it further. This is the second requirement of provable fairness, players can influence the deck card order.

The proposed 2nd dealer shuffle is to prevent the last player from attempting to stack the deck (which I find unlikely anyway). The hash is shown before it is done, so I can't change that particular secret anymore.

Okay, who is playing? And what are we playing?

In case of weird betting structures, you can just send in 10x the minimum bet as the buy in. The winner gets the pot. The rest who didn't go all-in get refunded their balance.

This is going to be a single ring game or cash game, unless the same players agree to play more than one hand.

Pages: [1] 2 3  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!