You know Rock paper scissors right? If you don’t, that’s a simple game where in each round 2 players make one of 3 moves:
Paper beats rock, scissors beat paper, and rock beats scissors. You can also bet money in each round, to make it more interesting.
I will show you how to do this game in a Solidity smart contract with this video tutorial.
It might seems like it’s easy to do, but there is a caveat: on the blockchain, all data is public, there is no private data. So, if the first player sends his move in clear the smart contract, the second player can read this data, even if you mark the variable as
private in Solidity. Since the second player can always anticipate the move of the first player, he will always win! Not an ideal situation… how can we prevent this? With a “commit – reveal” scheme. This pattern is not just applicable to this game, but also to all situations where you need to deal with private data on the blockchain. Watch this video and I will show you how it works!