Hey guys,
This is going to be a long post, describing an idea I have about integrating gaming and the blockchain technology. I do not consider myself an expert in blockchain tech, so I might be off in some areas, but overall I believe that the general idea has some merit, at least for discussion. I will appreciate any comments on the idea, both supporting it and criticizing it. After all, truth lies in discussion.
So here it is - proof-of-play.
Introduction
One of the biggest criticisms against bitcoin and the rest of the currently adopted blockchains is that creating and validating new blocks consumes too much electricity. In fact, it is more than the electricity used by some countries. Of course, the upcoming PoS algorithm, as well as the DPoS algorithm used in graphene blockchains aims to solve this; however we should always be looking for ways to improve these systems.
The proof-of-play algorithm's main concept is that gamers who play a particular game are the ones who create and validate new blocks. This way we piggyback on users who already spend their personal time and computer processing resources. To implement this, we need to have a game that records all of its "moves" on the blockchain, and allows them to create/validate whenever certain conditions are met.
Choice of game
Games that would be suitable for this algorithm should not rely on low network latency due to the nature of how transactions are confirmed on the blockchain. Even with graphene blockchains, we only have transaction confirmation every few seconds, so ideally we don't want real-time but rather a turn-based game. Furthermore, we want the game to be hard to master in order to make it more difficult for attackers to create bots that are able to meet the conditions for creating/validating blocks (more on this later). Therefore, I believe that a game that can be used for this purpose should be exclusively PvP (player vs. player). A good example of a game that meets this criteria would be chess, although it might be preferable to choose a game that doesn't allow draws.
Another type of game that might be very suitable for this purpose would be some form of a CCG (Collectible Card Game), because while it meets the above requirements, it also fits blockchain technology really well - cards can be digital assets that reside on the blockchain and the in-game currency used for purchasing cards/packs can be cryptocurrency itself. Randomness that exists in most modern CCGs might be a problem, however such randomness is purely due to game design and is not embedded into the definition of a CCG in any way.
Another consideration would be the average length of a game. I believe that short games are preferable, mostly because it would result in blocks being created more often.
Rules for creating and validating blocks
A new block can be created as soon as someone finishes a game. Since many players finish a game during a time period, we need an algorithm that chooses which player would be the one that is going to create a new block, and what would his reward be. Frankly, I haven't given this much thought, but even choosing someone at random should work. To make this fair for everyone, we should give the same reward to block creators and validators. In practice we're going to have a pool of transactions that are pending approval, as well as a pool of players that have finished their game and are waiting to create or validate the next block of transactions. Ideally, the game is extremely popular, millions of players play it, and this waiting time is very short.
To ensure security, we need to have an economic incentive as well as make it difficult for the attacker to just flood the network with game clients that finish a game and validate their own version of the new block. The economic incentive is the easy part - just award a set amount of cryptocurrency to the players that win their games, and allow only winners to create/validate blocks.
To protect against a 51% attack, I propose two things:
- Have all game clients purchase a licence from the game developer. This way we also incentivize game developers and they get compensated for their work.
- Scale the validating power of players depending on their in-game ranking.
This way a potential attacker would not only need to purchase a ton of game licences, but also make sure that they can all reach relatively high ranking in order for their validation power to be sufficient for a 51% attack.
Proof-of-play
Since the game itself would be a dapp, it needs to run on a blockchain network. I think the better approach would be to have the game run on a separate blockchain, for example on EOS (as it would be feeless).
Since all moves in a single game would be recorded on the blockchain, we will have a provable list of winners waiting to create/validate the next block. As soon as a sufficient number of winners are available as well as a sufficient number of waiting transactions, we get a new block created/validated, and we reward a set amount of cryptocurrency to all the winners.
Consistency
We cannot rely on a single game for this to be consistent and trustworthy. I believe the better approach would be to have a number of games that can all be played to mine coins, with these games being approved if they meet certain criteria. For example, we could have voting from all the token holders on whether or not to allow a new game to be accepted in the network. Ideally, we will have tens or even hundreds of different games being played that cater to different kinds of players.
Potential problems
I'm sure there would be many issues with this idea that I haven't thought about, but one thing that comes to mind would be the increased possibility of an attack during a time when less people play the game. Still, if the game (or games) is played globally, there should be sufficient number of users at all times. Another potential issue would be the approval of new games. If voters like a game that wants to be accepted for its gameplay then it might have inherent design patterns that allow attackers to have more validating power by automated play. Maybe voting is not the best approach here? I'm eager to hear your thoughts on this.
P.S. There's a lot more I could write, but I'll keep this post short (oops, fail) to see what everyone thinks. After all, if the whole idea is generally flawed due to something I'm missing, there's no point forcing you guys to read an even bigger wall-of-text.
P.P.S. I am very new to the Steem network and have next to no followers. It would be awesome if more influential Steemians resteem this post so it can reach a broader audience. Thanks guys, and I'm waiting for your comments.