Why is it impossible to cheat on XAYA - RenegadeMinds/testbed GitHub Wiki
We've said many times that it's impossible to cheat in games that are built on XAYA, but "why" that isn't always obvious to everyone. Here we'll look at how XAYA works and why that means that you can't cheat.
While XAYA is a platform to build video games, it's also a cryptocurrency with its roots in Bitcoin, Namecoin and Huntercoin. Consequently, it inherits all kinds of fantastic security and immutability. When you create a transaction, such as sending coins, creating a name, or updating a name (making a move in a game), the transaction is encrypted in such a way that nobody else but you could create that transaction. The transaction is then mined into the blockchain and exists forever there, immutable and unchangeable.
For game moves, this means that everyone in the game knows that you made that move and that nobody else could have done that. In this way, moves are guaranteed secure and nobody can cheat by faking a move.
However, people could submit garbage moves or invalid moves. This isn't a major concern. In order to play the game, everyone must be playing the same game. This means that they all must run the same rules (game logic).
That game logic processes the moves stored in the blockchain or game channel. Invalid or garbage moves are simply ignored. Anyone playing the game with different game logic isn't playing the game; they are playing a different game that nobody else is playing. Effectively, they're off in their own little, meaningless world.
This works because the game itself is played on the blockchain. All the moves are there. In order to "see" the game, you need to read those moves and process them properly. If you're not processing them properly, then whatever you do won't display the game properly. So, you can't cheat like that.
All moves are guaranteed by the strong cryptography provided by the blockchain.
All moves are on the blockchain, but in order to see the state of the game, those moves must be processed by everyone using the same rules. Using a different set of rules can only result in an invalid state that is meaningless.