Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 03, 2013, 02:36:33 AM |
|
Yeah, how can you complain when I just fire up my mobile poker app, and I see Dealer: Dabs it's your turn, you have 8 seconds to act. But I've tried about 4 or 5 online poker rooms, they're all that fast. So when I say this is just a test, and the buy in is only 10 BB (Big Blinds)... Think of it as almost a cash game, or a mini 3 or 4 player Sit n Go winner take all or whatever you have left when you decide to leave. I just need 3 or 4 people to participate in this experiment, and hopefully more than once. Also, I'm changing the buy-in / blind structure. 4. Buy-in 0.01 BTC. Big Blind 0.001, Small Blind 0.0005. No Limit. Will become: Small Blind / Big Blind = 0.001 / 0.002 and the Buy-in is only 0.01. No Limit. Don't buy in again, (not for now). That effectively limits this to 1 or 2 hands or maybe even 3. This is an experiment after all. However, if majority of the players prefer a lower stake game, I can adjust it, to say 0.0002 / 0.0004. I don't want to run this for more than a month, or for more than 10 hands.
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 03, 2013, 04:02:03 AM |
|
I was just thinking about how to prove that cards and decks can be almost provably fair without you ever seeing the deck that is used. One suggested method is to shuffle and prepare more than 1 deck of 52 cards. Then allow players to choose 1 deck to use, the rest are exposed or revealed.
That way, players can see that, if the site or dealer wanted to stack the deck or cheat or whatever.
For example, I use 2 decks of cards. I will reveal one deck at random, not at my choosing. The players choose or some provably fair method of determining this is used, such as hashes etc. That leaves one secret deck to be used for the actual game. Everyone now can see the other deck, and see that it is fairly shuffled and has 52 unique cards of the standard deck.
Do this for every hand, and there is a 50% chance that any unfairly shuffled decks or stacked or duplicated or cheated decks will be discovered at every hand.
Extend it to 4 decks. 3 decks are revealed. 75% chance of discovering the stacked deck. 75% certain the remaining deck is fair. Extend it to 8 decks. 7 decks are revealed. 87.5%
If we use 128 decks, 127 of which are revealed to be fair, we have more than 99% certainty that the remaining deck must be fair.
However, all this takes computing power and time if I were to use so many decks (someone suggested 65535 / 65536 decks for 99.99847412% .) Using just 2 should be enough, since I can not guess which deck will be used, therefore both decks have to be fair. If I were cheating or stacking the deck, I'd be found out half the time.
*edit* Of course decks can be uniquely identified. I will use a common secret for the same cards of the same deck, or a deck secret.
This can't be implemented now, unless I reset the whole game. I can do it for the next hand, although that might be too much work (this can be easy to implement in a proper client/server/website.)
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 09, 2013, 05:20:57 AM |
|
And, ... I dunno, but this is taking longer than expected. Anyway, I've had time to think about further improvements to the poker protocol. These include using HMAC instead of just the regular hash functions. Although I don't see how this particular implementation can get affected by length or prefix attacks, using HMAC isn't that much more difficult to do. I found some 3rd party sites that you can use to check but this one seems to use javascript: http://myeasywww.appspot.com/easyweb?command=UTILITY&ID=2And if you'd like, you can even use this http://code.google.com/p/crypto-jsHere is a summary of future changes, which, if I figure it out before people start playing, I might as well implement. 1. HMAC-SHA-512 2. Usage of 2 or more decks 3. Usage of 2 or more card secrets So for example, the 4 of Hearts can be hashed as follows: hmac-sha-512 ("cardsecret", "4h") = 8a0791801b9c656dc8f6eb842d4942128a6cdc32dda6d09e0a33c42cfd091c84e33df8014793ec5 562f0b8a1110c2d9ef52666f0a5d2daefeca6cbfa2e2041fe Getting overkill huh? I could stick to just to SHA-1 while it's undergoing testing so I don't use too much string space. hmac-sha-1 ("cardsecret", "4h") = 6e122d2b3414aad5cd09bf1ffd77358f0ea4c1e0 hmac-sha-1 is not considered broken, as in fact currently used in Google Authenticator. And if used in this manner, I'll add in either a salt, or concatenate the dealer secret inside the "message". Or use the dealer secret as the key and the card + card secret as the message. Either way, it goes towards making this Provably Fair.
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 12, 2013, 06:07:18 AM |
|
I'm doing a test run of SHA-512 hashing of at least 100,000 decks of 52 cards, sorting them, and only keeping the low hash card (the top of the deck). This is prior to any player cuts or shuffles. Then I'm going to take this data and do a frequency analysis of the card ranks and suits.
It takes my slow laptop about 1 second to create 10 shuffled decks. While not very accurate, as it uses a different RNG for the card secrets, it should be representative of what it will spit out whenever I get this online or on a server.
It is slow though. If I have 30 tables, it will take 30 seconds to shuffle their decks. Maybe you won't notice it right before the next hand, if it's only your table that needs a new deck. Maybe I should store the pre-shuffled decks in some file or database and have the server pull it from there. Sort of like the random entropy pool in most computer systems.
Anyway, I'll let my deck generator run for about an hour and use that. Later on if I have time, I'll make it run overnight so I get a million decks.
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 12, 2013, 09:00:21 AM |
|
H:\stuff-01\dabs-sha-512>cardstat.EXE Ac: 2552 1.98414% Expected: 2473.46 1.92308% 2c: 2445 1.90095% Expected: 2473.46 1.92308% 3c: 2489 1.93516% Expected: 2473.46 1.92308% 4c: 2440 1.89706% Expected: 2473.46 1.92308% 5c: 2549 1.98181% Expected: 2473.46 1.92308% 6c: 2434 1.89240% Expected: 2473.46 1.92308% 7c: 2485 1.93205% Expected: 2473.46 1.92308% 8c: 2469 1.91961% Expected: 2473.46 1.92308% 9c: 2406 1.87063% Expected: 2473.46 1.92308% Tc: 2485 1.93205% Expected: 2473.46 1.92308% Jc: 2427 1.88695% Expected: 2473.46 1.92308% Qc: 2389 1.85741% Expected: 2473.46 1.92308% Kc: 2544 1.97792% Expected: 2473.46 1.92308% Ad: 2461 1.91339% Expected: 2473.46 1.92308% 2d: 2607 2.02690% Expected: 2473.46 1.92308% 3d: 2478 1.92661% Expected: 2473.46 1.92308% 4d: 2453 1.90717% Expected: 2473.46 1.92308% 5d: 2521 1.96004% Expected: 2473.46 1.92308% 6d: 2461 1.91339% Expected: 2473.46 1.92308% 7d: 2438 1.89551% Expected: 2473.46 1.92308% 8d: 2469 1.91961% Expected: 2473.46 1.92308% 9d: 2430 1.88929% Expected: 2473.46 1.92308% Td: 2366 1.83953% Expected: 2473.46 1.92308% Jd: 2413 1.87607% Expected: 2473.46 1.92308% Qd: 2349 1.82631% Expected: 2473.46 1.92308% Kd: 2544 1.97792% Expected: 2473.46 1.92308% Ah: 2548 1.98103% Expected: 2473.46 1.92308% 2h: 2480 1.92816% Expected: 2473.46 1.92308% 3h: 2429 1.88851% Expected: 2473.46 1.92308% 4h: 2581 2.00669% Expected: 2473.46 1.92308% 5h: 2541 1.97559% Expected: 2473.46 1.92308% 6h: 2346 1.82398% Expected: 2473.46 1.92308% 7h: 2567 1.99580% Expected: 2473.46 1.92308% 8h: 2500 1.94371% Expected: 2473.46 1.92308% 9h: 2470 1.92039% Expected: 2473.46 1.92308% Th: 2523 1.96159% Expected: 2473.46 1.92308% Jh: 2421 1.88229% Expected: 2473.46 1.92308% Qh: 2403 1.86829% Expected: 2473.46 1.92308% Kh: 2598 2.01990% Expected: 2473.46 1.92308% As: 2509 1.95071% Expected: 2473.46 1.92308% 2s: 2522 1.96081% Expected: 2473.46 1.92308% 3s: 2506 1.94838% Expected: 2473.46 1.92308% 4s: 2473 1.92272% Expected: 2473.46 1.92308% 5s: 2429 1.88851% Expected: 2473.46 1.92308% 6s: 2417 1.87918% Expected: 2473.46 1.92308% 7s: 2494 1.93905% Expected: 2473.46 1.92308% 8s: 2416 1.87840% Expected: 2473.46 1.92308% 9s: 2423 1.88384% Expected: 2473.46 1.92308% Ts: 2454 1.90795% Expected: 2473.46 1.92308% Js: 2546 1.97947% Expected: 2473.46 1.92308% Qs: 2401 1.86674% Expected: 2473.46 1.92308% Ks: 2519 1.95848% Expected: 2473.46 1.92308% Decks : 128620 7.54599999999482 seconds
I took about 2 hours to generate 128620 decks, shuffle it, then grab the top card, put it in a file. Then it took about 7.5 seconds to count the cards from a file. I'll make it run some more and see what I get. Going for half a million decks.
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 12, 2013, 11:49:37 PM |
|
Decks: 500000 41313.896 seconds
H:\stuff-01\dabs-sha-512>cardstat.EXE Ac: 9701 1.94020% Expected: 9615.38 1.92308% 2c: 9736 1.94720% Expected: 9615.38 1.92308% 3c: 9643 1.92860% Expected: 9615.38 1.92308% 4c: 9556 1.91120% Expected: 9615.38 1.92308% 5c: 9743 1.94860% Expected: 9615.38 1.92308% 6c: 9548 1.90960% Expected: 9615.38 1.92308% 7c: 9522 1.90440% Expected: 9615.38 1.92308% 8c: 9731 1.94620% Expected: 9615.38 1.92308% 9c: 9642 1.92840% Expected: 9615.38 1.92308% Tc: 9555 1.91100% Expected: 9615.38 1.92308% Jc: 9554 1.91080% Expected: 9615.38 1.92308% Qc: 9623 1.92460% Expected: 9615.38 1.92308% Kc: 9661 1.93220% Expected: 9615.38 1.92308% Ad: 9585 1.91700% Expected: 9615.38 1.92308% 2d: 9472 1.89440% Expected: 9615.38 1.92308% 3d: 9579 1.91580% Expected: 9615.38 1.92308% 4d: 9558 1.91160% Expected: 9615.38 1.92308% 5d: 9617 1.92340% Expected: 9615.38 1.92308% 6d: 9769 1.95380% Expected: 9615.38 1.92308% 7d: 9669 1.93380% Expected: 9615.38 1.92308% 8d: 9664 1.93280% Expected: 9615.38 1.92308% 9d: 9826 1.96520% Expected: 9615.38 1.92308% Td: 9551 1.91020% Expected: 9615.38 1.92308% Jd: 9656 1.93120% Expected: 9615.38 1.92308% Qd: 9540 1.90800% Expected: 9615.38 1.92308% Kd: 9745 1.94900% Expected: 9615.38 1.92308% Ah: 9530 1.90600% Expected: 9615.38 1.92308% 2h: 9543 1.90860% Expected: 9615.38 1.92308% 3h: 9498 1.89960% Expected: 9615.38 1.92308% 4h: 9484 1.89680% Expected: 9615.38 1.92308% 5h: 9697 1.93940% Expected: 9615.38 1.92308% 6h: 9615 1.92300% Expected: 9615.38 1.92308% 7h: 9788 1.95760% Expected: 9615.38 1.92308% 8h: 9480 1.89600% Expected: 9615.38 1.92308% 9h: 9609 1.92180% Expected: 9615.38 1.92308% Th: 9617 1.92340% Expected: 9615.38 1.92308% Jh: 9550 1.91000% Expected: 9615.38 1.92308% Qh: 9410 1.88200% Expected: 9615.38 1.92308% Kh: 9619 1.92380% Expected: 9615.38 1.92308% As: 9574 1.91480% Expected: 9615.38 1.92308% 2s: 9663 1.93260% Expected: 9615.38 1.92308% 3s: 9596 1.91920% Expected: 9615.38 1.92308% 4s: 9505 1.90100% Expected: 9615.38 1.92308% 5s: 9690 1.93800% Expected: 9615.38 1.92308% 6s: 9577 1.91540% Expected: 9615.38 1.92308% 7s: 9573 1.91460% Expected: 9615.38 1.92308% 8s: 9662 1.93240% Expected: 9615.38 1.92308% 9s: 9538 1.90760% Expected: 9615.38 1.92308% Ts: 9711 1.94220% Expected: 9615.38 1.92308% Js: 9610 1.92200% Expected: 9615.38 1.92308% Qs: 9650 1.93000% Expected: 9615.38 1.92308% Ks: 9765 1.95300% Expected: 9615.38 1.92308% Decks : 500000 652.190999999999 seconds It took less than eleven and a half hours to generate and shuffle half a million decks. It took almost 11 minutes to tally the numbers.
|
|
|
|
Financisto
|
|
September 14, 2013, 07:39:00 PM Last edit: September 14, 2013, 07:52:54 PM by Financisto |
|
I'm bored. Where are my players? Ok, I grabbed a table from one of them games, then did some photo shop work on it. Hey Dabs! If you succeed in order to automate that provably fair Poker game, I volunteer to be your partner when the game's site is set up! I'll try to find some place (garage) for us at Silicon Valley (some parties and some hot chicks too)! BTW, this experiment is getting more interesting each day it evolves. Congrats! Cheers!
|
|
|
|
b!z
Legendary
Offline
Activity: 1582
Merit: 1010
|
|
September 16, 2013, 10:35:48 AM |
|
I'll be one of your first players :-)
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 16, 2013, 12:16:22 PM |
|
H:\stuff-01\dabs-sha-512>cardstat.EXE Ac: 19415 1.94150% Expected:19230.77 1.92308% 2c: 19374 1.93740% Expected:19230.77 1.92308% 3c: 19269 1.92690% Expected:19230.77 1.92308% 4c: 19136 1.91360% Expected:19230.77 1.92308% 5c: 19419 1.94190% Expected:19230.77 1.92308% 6c: 19082 1.90820% Expected:19230.77 1.92308% 7c: 19048 1.90480% Expected:19230.77 1.92308% 8c: 19359 1.93590% Expected:19230.77 1.92308% 9c: 19234 1.92340% Expected:19230.77 1.92308% Tc: 19038 1.90380% Expected:19230.77 1.92308% Jc: 19338 1.93380% Expected:19230.77 1.92308% Qc: 19160 1.91600% Expected:19230.77 1.92308% Kc: 19450 1.94500% Expected:19230.77 1.92308% Ad: 19272 1.92720% Expected:19230.77 1.92308% 2d: 19040 1.90400% Expected:19230.77 1.92308% 3d: 19225 1.92250% Expected:19230.77 1.92308% 4d: 18930 1.89300% Expected:19230.77 1.92308% 5d: 19026 1.90260% Expected:19230.77 1.92308% 6d: 19273 1.92730% Expected:19230.77 1.92308% 7d: 19325 1.93250% Expected:19230.77 1.92308% 8d: 19337 1.93370% Expected:19230.77 1.92308% 9d: 19536 1.95360% Expected:19230.77 1.92308% Td: 19146 1.91460% Expected:19230.77 1.92308% Jd: 19292 1.92920% Expected:19230.77 1.92308% Qd: 19019 1.90190% Expected:19230.77 1.92308% Kd: 19415 1.94150% Expected:19230.77 1.92308% Ah: 19177 1.91770% Expected:19230.77 1.92308% 2h: 19265 1.92650% Expected:19230.77 1.92308% 3h: 19213 1.92130% Expected:19230.77 1.92308% 4h: 18991 1.89910% Expected:19230.77 1.92308% 5h: 19357 1.93570% Expected:19230.77 1.92308% 6h: 19331 1.93310% Expected:19230.77 1.92308% 7h: 19317 1.93170% Expected:19230.77 1.92308% 8h: 19159 1.91590% Expected:19230.77 1.92308% 9h: 19391 1.93910% Expected:19230.77 1.92308% Th: 19246 1.92460% Expected:19230.77 1.92308% Jh: 19125 1.91250% Expected:19230.77 1.92308% Qh: 19016 1.90160% Expected:19230.77 1.92308% Kh: 19335 1.93350% Expected:19230.77 1.92308% As: 19230 1.92300% Expected:19230.77 1.92308% 2s: 19254 1.92540% Expected:19230.77 1.92308% 3s: 19193 1.91930% Expected:19230.77 1.92308% 4s: 19113 1.91130% Expected:19230.77 1.92308% 5s: 19318 1.93180% Expected:19230.77 1.92308% 6s: 19052 1.90520% Expected:19230.77 1.92308% 7s: 19093 1.90930% Expected:19230.77 1.92308% 8s: 19336 1.93360% Expected:19230.77 1.92308% 9s: 19155 1.91550% Expected:19230.77 1.92308% Ts: 19310 1.93100% Expected:19230.77 1.92308% Js: 19071 1.90710% Expected:19230.77 1.92308% Qs: 19398 1.93980% Expected:19230.77 1.92308% Ks: 19396 1.93960% Expected:19230.77 1.92308% Decks : 1000000 2772.909 seconds 45 Minutes just to tally a million cards from a million decks. @b!z, ok great! Pick a seat. From 1 to 6. I'm making this 6 max. Play starts when there are at least 3. Small Blind / Big Blind = 0.001 / 0.002 and the Buy-in is only 0.01. No Limit Hold'em. Send your BTC to the 1Poker address somewhere in this thread. I'll hold on to it until you "stand up" and leave or everyone else lost. Seat #4 = gektek The others are still "watching".
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 17, 2013, 04:59:58 AM |
|
|
|
|
|
zachcope
|
|
September 19, 2013, 12:52:28 PM |
|
Just found this thread from my thread re the correspondance poker. Unfortunately I'm not motivated enough to play your manual provably fair game but would eventually be interested in the outcomes from this. Note heads up play is the easiest way to prevent collusion over time and removes a significant problem with anonymous online poker.
With regards to decentralised poker, would it be possible to have a P2P poker network where players can become 'anonymous dealers'. They basically hold some of the secret keys etc through the hand and reveal them at the end. They would hold the bitcoin balances for the tables but perhaps post an escrow in case their server went down during a hand / match . There could be a trust system built in so that players can rate the dealers. Over time and over many hands (ie a dealer would provie resources for many tables at a time) open player result stats might show crooked dealers who might also be communicating with crooked players. Each dealer could charge their own rake so that high trust might lead to higher rake, or more tables allowed, or higher stakes. As the dealer identity is a public key the 'dealer' servers/computer could move location or site if jurisdiction issues arise, with an inbuilt incentive to build up dealer trust. Perhaps player 'trust' could be built in so that suspicion of collusion or playing too much on dodgy dealers would become a flag in itself.
Perhaps this would work - my understanding is that there is no fully trustless poker possible so far for p2p poker without some kind of dealer function- or am I incorrect?
|
|
|
|
gektek
Full Member
Offline
Activity: 237
Merit: 100
I rave ... whats your excuse?!?
|
|
September 19, 2013, 06:00:03 PM |
|
Sry...just got myself moved to a new place. Hoping to be organized later today or tomorrow...
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 20, 2013, 04:26:56 AM |
|
@zachscope, the issue with heads up, is, uh, it's just the two of you. I guess you get rid of collusion there, but it's more fun in a ring game or 1 table tournament where there are two blinds, sometimes an ante, and 9 others contribute to the pot.
I am to set up something similar to what you describe, and I'll be one of the first "dealers".
There is that elusive "Mental Poker" but in my opinion too difficult to implement, and not something I would be willing to play if disconnects cause the deck to reshuffle (the disconnected player's cards go back to the deck.) It doesn't feel right to me.
The way I have it set now, you can clearly see where all the cards are. You just don't know what they are.
|
|
|
|
zachcope
|
|
September 20, 2013, 07:46:51 AM |
|
Keep up the good work Dabs - I will sit at your tables at some point!
One more thought (naive thoughts as I am not too up to date on the concepts) - could multiple dealers be used somehow in a p2p scheme? Ie cards are shared between multiple dealers, with another dealer managing payouts and coordinating player actions? One dealer would therefore not know all the cards at any given time, which would make collusion more difficult, unless you happened to get dealers from the same crooked dealer pool on the same table? There would have to be some redundancy however, in case a dealer holding keys to a few cards went offline during a hand.
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 20, 2013, 10:45:31 AM |
|
Whats that dealer supposed to do if he doesn't know the cards he is dealing? Doesn't make sense to me. The dealer's job in a real card room is to deal, shuffle, take bets, enforce the rules, save your chips in case you stand up, get you more chips (thru a runner) if you run out.
It should be easier in a P2P setting where all he has to do is run a dealer program.
|
|
|
|
darkmule
Legendary
Offline
Activity: 1176
Merit: 1005
|
|
September 20, 2013, 06:50:45 PM |
|
Incidentally, a game in which every provably fair dealer was also a player would avoid a lot of legal issues, especially in the U.S., where the primary illegality of an "illegal gambling operation" is some business collecting a rake. With no rake and players playing with each other fairly, especially when it's provable, there is no crime in most jurisdictions.
Sorry I haven't participated in the games to date, but I'd hate causing delays.
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
September 21, 2013, 06:42:56 AM |
|
Well, the dealer can't play his own game. Obviously. Instead of rake, I'm going to call it a mandatory donation... heheheh.
|
|
|
|
b!z
Legendary
Offline
Activity: 1582
Merit: 1010
|
|
September 22, 2013, 05:34:43 AM |
|
@b!z, ok great! Pick a seat. From 1 to 6. I'm making this 6 max. Play starts when there are at least 3.
Small Blind / Big Blind = 0.001 / 0.002 and the Buy-in is only 0.01. No Limit Hold'em. Send your BTC to the 1Poker address somewhere in this thread. I'll hold on to it until you "stand up" and leave or everyone else lost.
Seat #4 = gektek
The others are still "watching".
Ok, I'll take a seat. What's the address? And what game is it? texas holdem?
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
November 12, 2013, 08:28:53 AM |
|
Address: 1PokerUdZ36KMsg7rmp1ruAiufVT2jAFpf Buy-in: 0.01 BTC Small Blind / Big Blind = 0.001 / 0.002 Game: No Limit (Table Limit) Texas Hold'em
Seat #4 = gektek,
Pick a seat from 1 to 5. #1 is the first dealer button. But it will eventually rotate around, so it doesn't matter in the long run. (Although, with a 10 BB buy-in, the game might be over after 2 or 3 hands.)
|
|
|
|
Dabs (OP)
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
April 23, 2014, 08:54:06 AM |
|
5 months later, and I just want to bump this. And I still have the dealer seeds.
|
|
|
|
|