Fully on chain poker contracts are coming together! Generating Groth16 proofs still too slow in the testing framework but we have some tricks to speed it up.
Major Milestones Completed:
Core Protocol & Cryptography:
✅ Full Barnett-Smart mental poker implementation with zero-knowledge proofs
✅ Complete zkSNARK circuit suite (keyownership, shuffle, reveal, initial encryption)
✅ Multi-party cryptographic key generation and secure deck shuffling
✅ Gas-optimized proof verification with split initial encryption circuits
Game Implementation:
✅ End-to-end Texas Hold'em gameplay from join to showdown
✅ Complete state management (9 game states, 4 betting rounds)
✅ Automated blinds, betting mechanics, and pot distribution
✅ Trustless community card reveals using decryption shares
Smart Contract Architecture:
✅ Modular contract system (PokerTable, DeckManager, Rules Registry)
✅ On-chain hand evaluation and winner determination
✅ Player management with buy-ins and stack tracking
✅ Integration-ready with external pot managers and rule sets
Testing & Verification:
✅ Full end-to-end test suite covering complete poker hands
✅ Cryptographic proof generation and verification testing
✅ All game phases validated from key submission to payout
Been deep in the tank figuring out how to get v0 of poker protocol out on testnet.
React SDK is written and now on to the tricky part of making sure the client works in a web environment. Going to have to make sure circomjs is able to use web workers appropriately and stays in sync with the protocol.
The hardhat test environment proved to be tricky when adding lots of concurrency since there were many unknown tx reverts when running in a single nodejs process. Finally got a basic test harness working but will likely need more sophistication for testing with more sdk clients.
State is tracked locally with zustand so in theory we should be able to make a snappy reactive UI when that’s all hooked up.
Layer 3 (appchains) are interesting and may be the ultimate home for Poker Protocol. Ty @Guz_MassAdopt for the idea.
It’s likely the best way to get the tps required for homomorphic encryption when allowing each player to apply their own randomness. Less messy code optimizations required.
Monorepo migration is complete! Claude 4 in cursor has gotten much better at assisting with devops setup and tool calls. That was much less painful then I thought it was going to be.
Some of the most pleasant surprises:
1. It picked up on the incompatibility of bun with snark generation very quickly. That could have been a really deep rabbit hole if it didn't give me that insight.
2. Relative path changes in scripts can be done with one ask, and it searches and finds all the references and changes it even with multiple relative directory changes.
3. Claude 4 has now gotten as good as gemini at planning and execution of changes, as well as printing enough context to the last output so it can better retain context in long chats.
To make the protocol flexible it needs to support multiple on chain identity providers.
It should be configurable by the platform that creates the table, allowing for compliance requirements to be enforced on chain as well.
The protocol should be as permissionless as the host desires.
1/
Lots of great discussion at BTC Vegas!
Can’t wait to start building the poker client when I’m back.
Still exploring the best revenue model for the protocol…
4/
But there are tradeoffs:
– Adds token overhead
– Might require premine unless a bonding curve model works
– Needs governance — or fully immutable contracts (hard)
Most poker platforms ask you to trust the server.
Even “provably fair” still means: trust us.
I’m building a protocol where:
– No one holds the cards
– Shuffles are verifiable
– Incentives are on-chain
Follow the journey 🃏