Thursday, 22 September 2011

How To Do Instant Transactions?

In my last post, the idea of using zero-confirm bitcoin transactions as a point-of-sale device in the real-world was well and truly crushed. If ZCT ever became popular, then (I claim) merchants would lose money and the bitcoin network would be compromised.

But this does not mean that bitcoin can never be used in POS, it just means it needs a better delivery mechanism. There are several ideas and projects in this direction, so lets have a look.

GOX Codes
I was not sure whether to include this, but since it's probably the most prevalent instant transaction device in use today within the bitcoin community, I probably should.

The system is very simple. You deposit your BTC into MtGOX, then when you want to send money you request a code from MtGOX for a certain amount of currency and give that code to the person you want to send the money to. Since everyone in the known universe trusts MtGOX with their mother's life, the system works quite nicely.

But obviously it is a complete hack - what's so special about MtGOX? What's the point in a super-secure crypto-currency if we all just pile our cash into MtGOX anyway? What if MtGOX gets hacked again? What if MtGOX runs away with our money? What if I get banned from MtGOX because I'm little-endian, or because I 'dissed his family, or some other trivia? What if MtGOX gets shut down by the gubermint? What if MtGOX gets DDoSed by anonymous?

Green Addresses
This is a technique already being used by InstaWallet. Again, a very simple concept where this time people decide to trust certain bitcoin addresses as not being malicious.

This is a slight improvement over GOX codes because it doesn't require a whole new protocol to operate; at its simplest it just requires a simple lookup table of non-malicious addresses. It's also not GOX-centric, you can greenlist whoever you like. Note that you don't have to trust that the green address has the funds available - you can do that using (currently non-standard) blockchain techniques - you just have to trust that the green address isn't attempting a double spend or discount scheme.

One temporary hiccup is that the current bitcoin client (and daemon) do not tell you where an incoming transaction came from, so to use green addresses right now you have to code it yourself or use a dev build of something, or request the data from blockexplorer.

Another problem is that there is no infrastructure around obtaining a reliable list of green addresses. It's unreasonable to expect merchants to keep their own greenlists up-to-date.

Also if you are in possession of a greenlisted address, you need to use a specialized client to ensure that when you send bitcoins, they do come from the green address and not some other address randomly generated by your client.

Finally, to use a green-address anonymously, you need to do it through a third-party like InstaWallet, which runs into the trust problems as with GOX codes.

Ripple is a P2P network of credit-lines. It is entirely trust-based, and works on the principle of the transferable IOU. For example, A trusts B and B trusts C. Therefore A trusts C as long as the transaction is routed through B. Anyone can extend credit to anyone else, and your spending power is limited to how much credit has been extended to you by your neighbours. I've written a little about it here.

Ripple is currency agnostic, and so can be used for bitcoin. A simple setup might run as follows:
Bob deposits bitcoins at various institutions he trusts. 3 BTC at GOX, 1 BTC at InstaWallet and so on. In return, these institutions extend him equal amounts of credit through ripple. In addition, Bob's friends and colleagues also extend him credit.

Bob goes shopping in Alice's store and buys a t-shirt for 5 BTC. While Alice doesn't know or trust Bob, she does trust GOX and Instawallet. She also happens (by coincidence) to trust Bob's friend Chris who has extended Bob 2 BTC credit. This transaction can now proceed because Alice scoops up 5 BTCs worth of IOUs from people she trusts. Bob is happy because he doesn't have all his eggs in one basket - he stored some of his BTC at GOX and some at InstaWallet. Moreover, because his friends extended him credit, he can do some transactions without having to store his bitcoins in any institution at all.
An additional benefit of Bitcoin over Ripple is that the technology he installs into his POS system does not tie him in to only accepting bitcoins. Because Ripple is currency agnostic, it is very simple to add support for Euros or Yen or SolidCoin or BeenieBabies or whatever. This might not seem like a good thing for bitcoin (in fact it is), but it's certainly a good thing for the merchant.

AFAIK, Ripple transactions are instant, although I'm currently a billy-no-mates with no credit extended to me so I'm not sure! is my ripple address, if you fancy it.

Open Transactions
OT is the holy grail of virtual currencies. It is a library, protocol and app that provides support for a dazzling array of funky contracts such as cheques, bonds, payment plans, equities, derivatives and so on. There is a clear divide between currency issuers and transaction processors, allowing transaction processing to be a low-trust operation. This in turn means that it is safe to have transaction servers without having to trust them with your actual assets, and leaves transaction servers to focus on processing transactions rather than breaking rocks (or mining).

Like Ripple, OT is currency neutral so a POS built using OT would extend to other currencies in a simple manner.

OT - or something similar - is clearly the long term solution, but it is a huge project that is not yet ready for use in the real-world.

1 comment:

  1. "In my last post, the idea of using zero-confirm bitcoin transactions as a point-of-sale device in the real-world was well and truly crushed. "

    It wasn't crushed though.