Provably fair
Slots
When you open the game page the server generates a secret and a seed and reveals its hash (using HMAC SHA256 algorithm). The server secret represents initial reels positions. The server seed is a cryptographically secure random alpha-numeric string. The hash of these 2 strings helps to ensure that the initial reels positions are not altered after you choose the number of lines and bet amount. After the game is finished the server secret and the server seed are revealed, so you can easily calculate and verify the hash.
When you play a game you can pass an extra custom string - client seed (if it's not specified a random number is automatically generated by your browser). The server will then calculate another hash using the server secret, the server seed and the client seed. The last 5 chars of this hash (representing a hexadecimal value) will be converted to an integer. Each digit in this number will result in an extra number of spins on the corresponding reel (from left to right). Because the client seed can not be predicted by the server the number of extra spins is completely random and hence you can be sure that the game result is fair.
Card games
When you open the game page the server generates a secret and a seed and reveals its hash (using HMAC SHA256 algorithm). The server secret represents randomly shuffled card deck. The server seed is a cryptographically secure random alpha-numeric string. The hash of these 2 strings helps to ensure that the initial card deck is not altered after you choose the bet amount. After the game is finished the server secret and the server seed are revealed, so you can easily calculate and verify the hash.
When you play a game you can pass an extra custom string - client seed (if it's not specified a random number is automatically generated by your browser). The server will then calculate another hash using the server secret, the server seed and the client seed. The last 5 chars of this hash (representing a hexadecimal value) will be converted to an integer. The result number will be divided by 52 (number of cards in the deck) and N cards will be cut (moved from the top to the bottom of the deck), where N is the remainder of the division. Because the client seed can not be predicted by the server the number of cards cut from the initial deck is completely random and hence you can be sure that the game result is fair.
Roulette
When you open the game page the server generates a secret and a seed and reveals its hash (using HMAC SHA256 algorithm). The server secret represents random roulette position (from 0 to 36). The server seed is a cryptographically secure random alpha-numeric string. The hash of these 2 strings helps to ensure that the initial roulette position is not altered after you make a bet. After the game is finished the server secret and the server seed are revealed, so you can easily calculate and verify the hash.
When you play a game you can pass an extra custom string - client seed (if it's not specified a random number is automatically generated by your browser). The server will then calculate another hash using the server secret, the server seed and the client seed. The last 5 chars of this hash (representing a hexadecimal value) will be converted to an integer. The result number will be used to rotate the roulette wheel N extra times. Because the client seed can not be predicted by the server the number of extra roulette spins is completely random and hence you can be sure that the game result is fair.