There was some talk a while back about whether BitCoin could serve as a currency for the Open Metaverse - that's the non-centralized version of Second Life, built on a piece of software called OpenSim.https://bitcointalk.org/index.php?topic=49310.0
I've been doing some hacking on this, and I thought I'd post the details of what I'm trying to do in case anyone has any suggestions. I didn't get a wildly enthusiastic response when I raised this on the OpenSim list, so I don't know if any grid operators will actually use what I build, but we won't know until we try. This will be a bit technical...
Currently money in the Open Metaverse works by either:
a) A money server running on each grid which stores balances for the users of that grid. Effectively each grid has its own currency, which may or may not be convertible to other currencies. There is some money server software here: http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?OpenSim%2FMoneyServer
b) A money server running on each grid that talks to an external central money company, usually VirWox.
These money servers kick off transactions when a user tries to buy an object, and deliver the object when the transaction is complete.
My ultimate goal is for metaverse money to be 100% P2P, so neither any central company, nor the grid operator, needs to handle anybody else's money.
I'm working on a customized version of the money server so that:
1) Each grid holds a list of BitCoin addresses for each avatar who may want to receive payment.
2) When one avatar does something requiring a payment to another avatar, the grid looks up a BitCoin address for them and tells them to pay it.
3) Once payment to an address has got a (configurable) number of confirmations (this may be zero), the transaction is completed (eg the object is delivered).
Optionally, I also want preserve the option of having a balance of money stored on each grid, as in the existing option (a) above. This will allow you to pay money into a grid in advance to make things faster and easier, especially if the grid is configured to require enough confirmations to ensure there's no risk of a double-spend. (You don't want to have to wait an hour to upload a texture.)
From a UI perspective, the really annoying part of this turns out to be getting BitCoin addresses into the grid so that sellers can get paid. It's also quite annoying to have to go out to the BitCoin client every time you want to make a payment. To solve this my thought is:
1) Alongside the BitCoin daemon that stores your money and the OpenSim viewer that you use to access the grid, you have another program, which I'll call the BitCoin-Viewer Bridge. This could be running on your own PC, or it could be a web application hosted by somebody you trust.
2) When you log into a grid, it gives you a URL to open, containing a session ID and the URL of the grid, that allows the BitCoin-Viewer Bridge and the Money Server on the grid to talk to each other for as long as you're logged into that grid.
3) Once logged in, your BitCoin-Viewer Bridge will automatically generate addresses for you and pass them to the Money Server in case somebody wants to pay you later.
4) When it prompts you to make a payment, the BitCoin-Viewer Bridge will give you the option of trusting the grid you're connected to to make future payments without asking you, up to a maximum amount. So from then on you'll click "Buy" in the client, and everything else will happen behind the scenes.
I would hope that in future some kind person will build the BitCoin-Viewer Bridge into the existing OpenSim viewer, which will make the whole process seamless.
Any thoughts on this? In particular, if one of the existing online BitCoin wallet sites is interested in hosting a web-application version of the BitCoin-Viewer Bridge, that would make things much easier for people to get started, and in turn make it easier to persuade grid operators to use the thing.