Bitcoin Forum
November 13, 2024, 12:03:03 PM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1]
1  Alternate cryptocurrencies / Altcoin Discussion / Bitcoin backed virtual currency on: April 01, 2014, 08:38:43 PM
Considering the extremely large number of *coin variants, I assume that something like this has been implemented before - so I figured I'd ask here to get pointers to implementations, as well as suggestions for changes.

The central idea here is that Bitcoins aren't really suitable for some forms of virtual currency, such as online rpg currency.  People don't want to transfer .0004 Bitcoins when playing a game, they want to get 1000 Gold Pieces, or a million smackers, or whatever makes sense for the game.   However, there is no reason a game could not be designed in such a way that the in game currency provides some portability by backing it with bitcoins.

MMORPG systems generally have their own internal economy.   Assigning a 'value' to the economy is difficult as the amount in circulation is malleable.   This has lead to many complex exchange markets so you can convert your online currency from one game into another game.

So, my thought was to create a multi-tiered bitcoin based currency system.

At the base, every "world" in the game must generate a Bitcoin address and in some manner fund that address with some amount of bitcoins.  The worlds bitcoin address is published, so it is easy to verify how many bitcoins it has.

Internally, the game engine will generate internal world currency using an internal bitcoin system.  call it GECoin.   Unlike bitcoin generation, the difficulty for coin generation can be modified by the system internally in order to generate as many 'coins' as it needs.  For every player who registers, the game engine generates a valid GECoin set of keys[which are also valid bitcoin keys]   in game currency is tracked via GECoin transactions.  These tramsactions must be publicly available from some source - and since their bitcoin transactions, they can be analyzed using any of the existing programs designed to track them.  It also means that the total game currency issued is available.

The game engine must have a way to destroy currency  As i understand it, using provable unspendable scripts can be used for that? https://en.bitcoin.it/wiki/Script

Now the game world economy has a valuation: Circulation(Game Coins)/Bank(Bitcoins)

Now for the fun part, by using Bitcoin the game world can easily integrate with other game worlds using the same system.
For example,two different game currencies: FantasyGameCoin and HorrorGameCoin

Assuming that the Fnatasy game world currently has 100 BTC in it's bank, and the fantasy game economy has 20,000 FGC in circulation
The horror game world has 1000 BTC in it's bank, and it's internal economy is a total of 1000 HGC
Keys involved:
FG Engine Key, FG Player Key, HG Engine key, HG Player key
Wallets:
FG Engine: 100 BTC
FG Player: 0 BTC
HG Engine: 1000 BTC
HG Player: 0 BTC

A player wishes to transfer funds from his FantasyGame account to his HorrorGame account.
He needs to provide the fantasy game with his HorrorGameCoin public key AND the public key of the Horror Game Engine[which he gets from his settings page].   Or just the signatures if that is preferred for convenience. He is sending 10FantasyGame coins out.

The FantasyGameEngine will then issue 2 transactions:
A) Internally, it issues a transaction to destroy 10 FantasyGameCoins from the players account.  It uses the multi-signature method where the request must be signed by multiple keys and uses the players game key, the fantasy engine game key, and the horror game engine key, and the horror game player key.   It also signs that transaction with both the fantasy player key and the fantasy game engine key - making it a valid transaction.
B) The players 10FGC is 10/20000 is .0005 of the total game wealth.  So that equates to .05 BTC.  So the FantasyGameEngine creates a Bitcoin transaction to send .05BTC from the game engine to the players horror game address[which is a valid bitcoin address].  For the signature verification, we use sign multiple and include all four keys - and sign it with the FG Engine key and the FG Player key.

Wallet:
FG Engine: 99.95 BTC
FG Player: 0 BTC
HG Engine: 1000 BTC
HG Player: 0.05 BTC

The Horror Game Engine monitors all bitcoin transactions for transactions using the sign any code which includes the game engines key but were not signed by the game engine. 
For that subset of transactions, it checks to see if the transaction was being sent to one of it's players.  When it detects the new transaction it waits for it to be validated and then:
A) It generates a bitcoin transaction transferring .05 BTC from the Horror Player key to the Horror Engine key.  It uses the sign multiple script and includes the ALL the keys specified on the receiving transaction and signs it with both the horror engine and horror player keys.

Wallet:
FG Engine: 99.95 BTC
FG Player: 0 BTC
HG Engine: 1000.05 BTC
HG Player: 0 BTC

B) Internally, it must credit the player with his new coins.   The conversion rate from BTC to HGC is 1000.05BTC/1000 HGC.  .05 BTC is therefore worth 0500025 HGC
B-optional) If the horror game world does not have the amount on hand, it generates more, adjusting the difficulty as needed 
B1) The Horror Game creates an internal transaction and uses the sign multiple script, including all 4 keys and providing both horror engine and player signatures


This allows for complete transparency between game systems and exchanges.  Using the sign multiple option allows for specifying all 4 keys in the transaction, so an external review of block chains can easily deduce:

Fantasy Block chain:
Some unknown player[we only have the key] withdrew 10 game coins from his account and sent it to some unknown player[we only have the horror player key] on the horror game[known horror game engine key]

Bitcoin Block Chain:
Some unknown player[we only have the key] withdrew .05 BTC from his account and sent it to some unknown player[we only have the horror player key] on the horror game[known horror game engine key]
The horror game engine transferred .05 BTC from some unknown player to the game engine account[known key]

Horror Block Chain:
Some unknown horror game player was credited .0500025 game coins by the game engine due to a BTC transfer from the fantasy game engine[known key] on behalf of some unknown player.

Untrusting players can therefore very easily work out what the exchange rate should have been at that point in time, and verify that the correct amounts were transferred.


From a community relations standpoint, the webCoins should set a slightly higher transaction rate then normal transactions as payment for providing the verification service.  I have not included the calculation of those fees above as I assume that game engines will batch transactions for efficiency and cost savings.

Example:
Assuming an overly generous .01 Transaction fee, the fantasy game transaction might look like:
Input: FGE Bank: 1BTC
Outputs:
HG PLayer A: .049 BTC
HG PLayer B: .049 BTC
HG PLayer C: .099 BTC
HG PLayer D: .799 BTC
Total: .99BTC, leaving .01BTC for the transaction fee
Multi Signature required
Possible keys: Fantasy Game Engine, Fantasy Game Players A-M, Horror Game Engine, Horror Game Players A-D
Signed by: Fantasy Game engine, Fantasy Game Players A-M


Note: Due to transaction batching, it is possible to have more players sending or receiving and there is no way to determine which player from one game is sending them to which player on another game.  IE if 4 fantasy players send 1 horror player BTC it can be sent in a single transaction.   It is possible to examine the fantasy game blockchain to determine possible transactions which were included in the batch - but honestly most of the time we don't really care about identifying specific end to end transactions, just totals.  IE if 3 players in one game each send 1 BTC to a player in another game, they will want to verify that the total sent from their game server to that player was credited to that player by his server.  By the same token, the receiving player may need to verify after receiving 3 BTC from the fantasy game which players sent him money.   If the recipients or senders require more fine grained detail, then they have to use some other mechanism.

In addition to sending in game currency from one game to another with a trusted, verifiable exchange rate - this mechanism allows for:
Players to purchase in game currency directly with bitcoins.  As long as the recipient is the players bitcoin/gamecoin key - and the game engine key is included in the list of possible signatures, the game engine can still detect the transfer and apply it.  The game server doesn't care who/what other keys are included.

Players can withdraw game currency directly as bitcoins.  They can provide any key as the "server key" the transaction is going to since it is only used for informational purposes.  The bitcoins will go to the recipient key regardless of whether it is a key generated by a game server, or a key generated by the end user directly.

This same system can be extended to allow for "pools" of game servers.   IE instead of generating a 'bank' for each fantasy game world, we could have a single centralized fantasy game engine bank which owns all the bitcoins, and generates fantasy game engine coins.  Each fantasy game world would 'own' fantasy game engine coins, and generate their own world coins.   Players can then transfer currency from one world to another without incurring BTC transaction fees - it is only when they want to send money outside of the "pool" that it will go through a BTC transaction.




Pages: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!