Tuesday, April 21, 2015

P2P open source poker program proposal

Note: This is no longer a proposal, This project has already been released  as a fully functional system, details can be seen here: 
https://github.com/sacarlson/pokerth_accounting/wiki

This article now only remains as a historic document of when it was just an idea.

I was thinking about setting up a P2P open source poker game for some time and had already done much research on it's possibilities.  My original plan was to use the already running open source pokerth game with some modifications that would allow a payment module to be plugged into it.  The original plan of the payment system was to use bitcoins built in multisign scripting to allow for a completely uncentralized escrow method of payment.  I had already done some programing in bitcoin and created a branch called multicoin that would enable testing using worthless crypto currency to start to just keep score and to test out if the idea would really work for real bitcoins first?   I later had other interests and dropped out of my software development of Multicoin.  I just recently went back to look again at what we now have in open source crypto finance and found something even better than bitcoin for poker p2p finance called Ripple.  Ripple doesn't fully replace Bitcoin but it actually can be used to transact and auto convert bitcoin if desired to any desired currency at even faster speeds of 5 seconds per transaction compared to bitcoin that would take up to 1 hour at times to do a transaction.  Ripple has everything we need to both play with real money in virtually any currency at the same time.  Ripple not only provides a way to transact  funds over a no name no address accounts much like bitcion with just a big number and secrete number, but also has the built in tools of multisign to allow again for the escrow to hold the pot of a game until the winners of the game are determined and can be paid out.  Ripple being uncentralized much like Bitcoin can't be taken down or controlled by governments to sease assets and there is no central point of all assets that can just run off with all the money.    It can also be setup to play in a virtual fake money to start that can be used just to keep score in the beginning and to test for problems so we can debug and fix them.  And to also allow those to continue to play and just keep track of there score by looking at there virtual Ripple coin accounts to see there status.   If that ends up working it would only require switching to the standard Ripple network to allow for real money games at cost per game money transactions of as little as 0.0001usd per game so we are taking about playing poker for 100 years for like $6 for a lifetime.  Ripple also allows for controlled credit limit loans so you could even have poker bankers involved in the games if desired in real or fake money.   Also since the cost of the transactions are so low you can also play in micro pots of like 1 cent or less even in real money.  So at these numbers people wouldn't need to have so much trust to get started in it.  Also inside of Ripple transactions there is memo data that can be added and used to add notes of what games the transaction was used for and who the players were that you won it from and what software was used in the game.   One other thing I think that will be needed is a method of tracking trust of players.   I'm sure there will be some cheaters or attempted cheaters, but at some point there will also be reputable people that many people will get to trust.  With the cryptographic signatures you will be sure you are playing with the same people you know each time.

There are still many unanswered questions as to how all this would have to be setup to make it almost impossible to cheat or at least just work.  

One feature I would like is that it would be cool if you could exit a game at any time and take what you already won or leave with what you have left.  At this point this would be hard for me to do but not impossible.

 At the beginning to make it simple all that join a poker game would be part of the multisign escrow.   Each player would put in some random decided pot amount that would buy you some random number of chips to start the game.  Each player would play until they have no chips left or have won the entire pot.  Any number of players could play from 2 – 10 people.   When the final two players finish the game the destination address for payment is set in the escrow by the winner and each of the players signs off that he was the winner so he gets the total funds transfered into his Ripple account.  In the event that something goes wrong in the game for any reason.  There can be a dispute of the group of players that would have to conclude with more than 50% that there was a problem with software or other.  In this case all the money goes back to each of the players less a small transaction fee if needed in the Ripple transaction.  Ripple also has time values that can be added into the escrow contract, so if no one signs the transaction over some period of time that would also be concluded as something went wrong and the money again returned to the original players.  The escrow time can also be set to allow some time for the players to ether agree or setup a dispute.  In most cases this would not be seen by the players.  It would all be handled invisibly and automatically in most cases by the pokerth payment system.  At some point we could also add a third party trusted entity to some games if desired that can mediate if needed in bigger money games.  In this case the third party would most likely want some money to act in such a capacity.

On the side of cheating. How can we be sure that some players don't use a modified version of the open source game to allow them to cheat by looking at cards or changing card values in play?  I'm hoping others can figure that one out as I'm not really sure.  I haven't looked at the pokerth code that closely yet.  I don't know anyone that presently cheats in pokerth but that maybe due to the fact that it's used to play with fake money not real.   So until we get the fake money in Ripple working with pokerth, we can figure this part of the security out later if we find we need it.   The cryptographic playing card section of p2p poker might be another project in itself for all I know.   I can only say that I've played Pokerth for many hours  with very few problems to date.  It seems very stable as is.

See the references below for more details on the proposed multisign features of Ripple:
https://ripple.com/
https://www.stellar.org    we switched to stellar.org

https://wiki.ripple.com/Multisign
https://wiki.ripple.com/Contracts
https://wiki.ripple.com/Main_Page
and the pokerth site:
http://pokerth.net/


Present links to the now completed pokerth_accounting project:
https://github.com/sacarlson/pokerth_accounting/wiki

Method to contact us to feedback your thoughts in real time chat:
https://kiwiirc.com/client/irc.freenode.net/#pokerth

Also note that some of these multisign and contract features of Ripple are said to be future features.  I'm looking to see if the code in any of the Github branches  already has some at least partly working version of  these features that we can start to test with.  I see them speaking about it months ago that sounds like they almost had something.  So we might just have to wait and see.
by Scott Carlson (c) Apr 21 2015

Update Jul 10, 2015
We now have a working prototype of our dream software that is now published on github: https://github.com/sacarlson/pokerth_accounting  also see the more up to date wiki for more details https://github.com/sacarlson/pokerth_accounting/wiki that also contain links to screen shots .  We have now tested the software with over 2300 transactions without any noticable problems.  Added voice status so you can play poker and know what the accounting is doing and what your recieveing.  We still need to integrate Stellars built in escrow system and the mental poker shuffle algorithum and then it will be complete.

Sunday, April 5, 2015

How to pigyback a wifi gateway on an already existing wifi infrastructure system

This is an experimental method to pigyback on the PBC buildings wifi ifrastructure, or most any buildings or shops infrastructure to allow distribution of another available Internet connection to the PBC buildings already available wifi distribution.  Rather than run another wifi system to distribute my network.  I just pigy back on the already installed systems.  This can allow the users a better, faster network service than is presently normally available on the buildings wifi network or at times allow them some service even when the normal wifi service is no longer functional at all.  It was much easier before, but now the system they have installed on this buildings wifi distrubution has added some kind of arp poisoning to there security system that made it a bit more difficult for me to figure out how to do it.  So I thought I would share it here so others didn't have to go through the trouble I did to have to figure it all out.  I have not as yet added any notes on how this can also be done on windows yet but I know it can be done.  I'm a linux guy so I"m slow on windows research.  These notes, scripts and screen shots are for using a tp-link or most any box running an openwrt firmware that acts as the added gateway on the wifi system.  The client_perm_arp.sh is an example of what needs to be run on a linux client to put it in static llc mode.  The settings will be lost when the laptop or tplink box is rebooted.  If you desire it to become permanent on reboot you will have to set that up yourself.  Also for easy setup I saved a backup of the openwrt config as backup-OpenWrt-2015-04-05.tar.gz  that can be installed from luci system restore on openwrt from your browser.  for more details see the link to the files in my google drive here: https://drive.google.com/folderview?id=0B4pSHwxHXW9Sd1NVWTVqa2pyazg&usp=sharing