Drugwars as a blockchain-based game - verifiability and irreversibility

Repository

https://github.com/FutureShockco/drugwars.io

This suggestion is reported here: https://github.com/FutureShockco/drugwars.io/issues/51

Components

  • Transaction verifiability
  • Inventory (drug/weapon/alcohol/units) log system
  • "Official" fight alarm app
  • Others (authorization, fight)

Proposal Description

Last week was a roller-coaster ride both for Drugwars players and team members. Probably the titles of the following notices say the most of it:

Whew!

While I'm not an actively engaging player, as a blockchain researcher, I've done some analysis on the game in terms of token economy and technology. Surprisingly I found one (or two) very important thing missing in Drugwars as a blockchain based game.

Realistic token economy? Not really. I mean this isn't a problem per se. Well, this is debatable, but we all know that not everyone can get profits from this game. Unless Drugwars advertised or insinuated that way, that's fine. You should admit that it's not a principal-protected financial product, but a game. You bought an item in the game. That's it! Of course, they still should not change the system too abruptly which they tried without enough grace period. I'm glad to see that they stepped back and promised (not by smart contract or so though :) the gradual reward scheme transition from STEEM toward FUTURE tokens.

Then what?

Verifiability! and irreversibility

Some of main benefits (or characteristics) of blockchain-based games are verifiability, irreversibility, and incentive.

  • Incentive: while an incentive itself is not a requirement, it is usually provided, since nobody may want to play otherwise. Drugwars does have it. Done.
  • Irreversibility: Blockchain is basically irreversible. But the only data written on the blockchain is irreversible. Strictly speaking, many things of Drugwars are off-chain, so not irreversible. But to me this is fine. Without smart contract, we still have no choice but to believe the game owner. Almost everybody believe that Drugwars operate their game honestly (regardless of the fact that the current system is good enough or not). Thus I believe the following verifiability is more important.
  • Verifiability: Any transaction or game item inventory should be verifiable.

Let's say when I log in the game and found all my items gone, even though nobody attacked me. Or Pantheon is being upgraded! which is apparently useless (except for the possibility that makes others jealous) but still takes costs!

But due to the recent change to fight against macro and bot, any transaction except for fight (and sign-up probably) is encoded in the form users cannot decode.

Now, transactions except for attacks (and sign-up) are encoded without opening the encoding spec.

In this way, there is no way for both parties (player and game owner) can prove who's right. How likely we are in the situation isn't the point here. We're talking about the blockchain-based game.

At which time, which transactions should be verifiable depends one the implementation and the game policy. For instance, it we allow almost transaction verifiable, then obviously users who can do programming has too much advantages.

However, they must be verifiable in some way, for instance, delayed verifiability, which I mean transactions can be verified after a certain time. For instance, many dice games are operated this way. The transaction is verifiable after the game.

Inventory (drug/weapon/alcohol/units) log system

Another practical suggestion is the inventory (drug/weapon/alcohol/units) log system. While transaction (if internal transaction is included) verifiability provides the way to verify the inventory at a given time, it needs the replay of all transactions from the beginning, which is inefficient. For instance, a user suddenly came to think the inventory is incorrect, then to verify it, all transactions (including other users to examine the attack) should be examined.

One way to resolve this problem is including the hash of previous "block" as we do for the blockchain itself, but this may be too much for the game. Thus, providing the snapshot of the inventory periodically might be enough.

"Official" fight alarm app
As explained, the only transaction without encoding is fight. I believe the reason why attack isn't encoded is that they want to give a user (who will be attacked) some time for defense. Obviously it's not difficult for users who can do coding to make an attack alarm bot. (I can make a telegram bot easily too if I want.) But this again make other novice users disadvantageous. Thus, such an alarm app should better to be provided "officially."

Other miscellaneous suggestions

  • Steem keychain should also be supported (I believe this is already suggested, but I'd like to emphasize one more unless Steemconnect itself is upgraded so that the posting right authorization is not needed.)
  • No animation and sound in fights? We're living in the 21st century. Even a previous game, Steemmonster provides quite a nice animation and sound. After waiting more than 10 minutes and the just result?

Mockups / Examples

Transaction verifiability

Drugwars should provide certain verifiability for all user-initiated transactions (e.g., upgrade) and internal transactions (e.g., change of reward parameter).

While one way to do this (for user-initiated transactions) is to use custom_json tx without encoding, this may be too much disadvantageous for real human users.

  • (If too much advantages for users using programs is undesirable) transactions should be verifiable. The main idea is the "delayed verifiability."
custom json
required_auths  []
required_posting_auths  
0.  blockchainstudio
id  drugwars
json    {data:"U2FsdGVkX1xMl3Jk5niycpBC01LXhohcZ....", clientseed:"CLIENTSEED"}

user transaction with a clientseed

custom json
required_auths  []
required_posting_auths  
0.  drugwars
id  drugwars
json    {serverseed:"SERVERSEED"}

the server announces the server seed after a certain period time.

After the server seed is announced, all previous transactions since the last server seed can be verifiable with using client seed and the current server seed.

Inventory (drug/weapon/alcohol/units) log system

Verifying the current inventory still requires the replay as explained. To mitigate this burden, providing the following inventory log system would be enough in practice.

One easy way to do this is using encrypted memo.

ex of encrypted memo

Benefits

  • Trust! Without verifiability, why using blockchain?
    Of course, not many people think Drugwars team run away with earned STEEM (even though now many people realize that the reward scheme can change without a enough notice. But again we also know that user feedback can be received :) or manipulate the numbers. However, bugs can happen all the time. Then who can prove which is right? Transactions should be verifiable.
  • Inventory check without login
    Another advantage of the inventory log system is a user can check the inventory even when the drugwars server is busy or without login to their server.

ps. This suggestion is inspired by @emrebeyler's comment on my recent post.
https://steemit.com/drugwars/@emrebeyler/re-blockchainstudio-drugwars-macro-is-prohibited-now-20190323t015724301z
Special thanks to @emrebeyler. Hope Heisenberg will survive in some way.

GitHub Account

https://github.com/economicstudio

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now