Over the past two and a half years I thought a lot about what I would write when CypherPoker finally achieved its fledgling MVP or Minimum Viable Product stage.
I knew it would be a remarkable occasion because, despite numerous challenges that still lay ahead, the project would be validated at last.
No longer would I have to claim that “it will” and instead could confidently demonstrate that “it does”. No longer would I have to double-guess the sacrifices and efforts I’ve made in the service of an unprecedented vision. No longer would it be a question of “if” or “how” but rather one of simply “when”.
Yet despite all of this rumination I find myself surprisingly short of words now that the moment has actually arrived. The only cogent statement I can conjure up is: CypherPoker v2.0 is finally here!
But then again, why try to dredge up flowery prose when I can simply cut to the chase and invite you to download the Windows installer?
This major milestone has all of the bells and whistles I’d wanted to include for this version but they’re still a little rough around the edges, they’re not fully optimized (for speed), and they haven’t been broadly tested so bugs should be expected. It is, after all, an alpha release1.
A follow-up post describes how to set up CypherPoker for play on the Ropsten “revival” testnet, a close analogue of the main Ethereum network. This will let you get a realistic feel for CypherPoker’s “contract” mode without spending any real Ether.
For now I would encourage you to use the GitHub bug system to report problems with the software. The only thing I ask is that you kindly include steps on how to reliably reproduce the issue; don’t be afraid of including too much information … maybe it’ll help. Once a couple of versions are out I would also ask that you include the version number.
As of version 2.0, CypherPoker has two modes of play: for-fun, and (Ethereum smart) contract.
When playing for fun, any amount of virtual “Ether” may be dispensed to a table since … it’s just for fun. Cheating can be detected at the end of the hand but there are no consequences if it’s found. Ethereum is not used in this mode even if it’s been enabled.
Contract mode makes it possible to play using cryptocurrency — Ether (Ξ) — as well as to employ Ethereum smart contracts to provide decentralized, secure, and provably fair referee / arbitration services in exchange for a small fee.
To get started with CypherPoker’s contract mode you’ll only need to acquire some Ether.
On testing networks like Ropsten there are often faucets that send out Ether at limited rates. Alternatively, there are other sites where you can ask to have some Ether sent to your account gratis. You can also try mining if you have sufficiently powerful hardware.
At present CypherPoker’s smart contracts have only been deployed to Ropsten so that they can get some testing before they’re added to the main Ethereum blockchain.
There are many little innovations crammed into the newest CypherPoker game client including:
- A brand new user-interface based on previous designs. It’s hardware-accelerated, responsive, portable, very easy to customize and to extend. Tutorials on these topics are in the works.
- Gentle introductions. Don’t have Ethereum? CypherPoker will install and synchronize it’s blockchain for you. No account? CypherPoker can make one for you.
- Signed messages. This allows most of the game to happen off of the blockchain when using Ethereum, significantly reducing costs and increasing speeds. Fallbacks exist that can gradually resort to pricier partial or “full-contract” modes when all else fails, something I discussed in an earlier post.
- Modular and independent smart contracts. CypherPoker’s interlocking contracts enable simple updates and upgrades that are independent of the game software. This configuration allows for deployment that is comfortably within the gas limit (more about Ethereum’s gas limit here), while simultaneously isolating any newly-introduced features and potential problems. In addition, should the promises of similar projects to Ethereum hold out, incorporating them into CypherPoker becomes a straightforward process.
The Grander Scheme
I know of at least two projects which appear to be working toward their own Mental Poker implementations. One is still waiting to release their whitepaper while another appears to have taken a step back to re-assess project funding.
In lieu of a discussion paper I chose to document CypherPoker while developing it and living austerely has allowed me to focus more intensely on the project. Even if that austerity was not always by choice it has greatly informed my motivations and decisions and will undoubtedly continue to do so.
I’ve previously hinted at some of the upcoming features of CypherPoker so I won’t rehash them here but I do want to reiterate that there is a long-term plan for the project in which the latest version is just the beginning. There are a number of emerging technologies and services that would make wonderful additions to the software, and along with concomitant opportunities the room for future advances and innovation is staggering. At the very least they make great topics for discussion.
In this regard, life has a habit of throwing unexpected curveballs in my direction so I’ll abstain from making any hard commitments but moving forward I would like to produce more regular posts along with smaller releases. How regular “regular” will be is still somewhat of an open question but I think that, at a minimum, a weekly proof-of-life update should be doable.
In closing I’d like once again to say a big thank-you to everyone who supported this project! Your patience and faith are paying off.
Until next time…