# Universal Circuits(Alpha):zkShuffle

## zkShuffle Alpha

zkShuffle provides an easy access for Ethereum developers to create "mental poker" games utilizing zero-knowledge proofs. The concept of "mental poker" refers to the implementation of a fair gaming protocol over a communication system that doesn't involve any trusted third-party. The term was initially proposed in 1979 by Adi Shamir, Ron Rivest, and Leonard Adleman in a paper where they discussed the idea of creating a fair poker game in which players could not see each other's cards or shuffle and deal the cards themselves. The challenge of building a “mental poker” game is to ensure that no one can cheat while maintaining the communications reliable, efficient and low-cost.

zkShuffle is an efficient mental poker emphasizing the reduction of gas cost on Ethereum. zkShuffle can be applied beyond poker to many different types of card or board games where secure and fair card shuffle and deal is required without a trusted third party.

### State Diagram[​](https://docs.manta.network/docs/zkShuffle/Overview#state-diagram) <a href="#state-diagram" id="state-diagram"></a>

The following state diagram provides an overview of the game process managed by the ShuffleManager contract. To initiate a new game, it must first be created. Upon creation, the manager contract assigns a unique ID to this game and players can join the game with that ID. Once the final player has registered, the game starts. Players can check the current turn within the game. If it's their turn to perform an action (shuffle, deal or open), they carry out the action accordingly.

<figure><img src="https://1565083566-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuOb3LNRAlY0gZK6Eoiyd%2Fuploads%2Fk9WWZp8Em4iloERBh3wF%2Fimage.png?alt=media&#x26;token=81ce7308-8ddd-4962-809b-79b8114f6a5d" alt=""><figcaption></figcaption></figure>

