- Live orderbook that is reliable and accurate (Mt.Gox's is manifestly not)
I suspect that this one is easy to say, but hard to do. If I were designing the system, I think I'd be basing it all off a log system. Orderbook adjustments and sales all appended to the same DB table and piped out to the same stream. The engine's job would simply be to execute lines of the log and push that fact out to the live stream. I'd also be looking at ways to reverse proxy out the live stream, making it semi-peer-to-peer. That would hopefully prevent the dreadful performance that Mt.Gox suffers at exactly the moments that things get interesting.
- When you really get down to it, the exchanges aren't primarily about exchanging bitcoins (perversely), they are the interface to the existing financial system. Bit-instant has the right idea. All the exchanges would benefit from being able to use other exchange's bank accounts as their interface. It would provide a comfortable redundancy for the users too -- if Intersango's account breaks (again), I would know that I could still use Mt.Gox's account to transfer funds out. (I don't hold out a lot of hope for this one)
Yeah, I didn't expect that it would happen. Although on the optimistic side -- Bitcoinica and Mt.Gox are pretty easily transferred between. I guess it's simply a matter of maintaining an account at Mt.Gox (and any other exchange with a deposit code system).
- A decent buy-sell interface. I really shouldn't need to get a calculator out to work out amounts when using the exchange. Mt.Gox has a reasonable implementation: when you type in the USD field it fills in the BTC field automatically, and vice-versa. It could be better though -- there is a difference between BUY BTC and a SELL USD from a user perspective, and affects how the trade engine should handle slippages
I may not have used the right word. I'll give an example. Consider this orderbook:
Bid Volume
5.00 750
4.95 500
Assume I have 1000 BTC. Let's say I place my order as a BTC SELL of 1000 BTC at a limit of $4.9. When executed with the above orderbook, that will turn into:
- 750 @ $5 = $3750 (leaving 250BTC outstanding)
- 250 @ $4.95 = $1237.5
I end up with $4987.50; which is more than the (4.9*1000) $4900 my limit order implies (obviously I'm happy, there were people bidding higher than I was asking, so placing my order later than them gets me a bonus of $87.50). The difference between these two is what I meant when I said "slippage".
Now start again. This time I place the order as a USD BUY of $4900 at a limit of $4.9. Given the same orderbook as the previous example, this turns into:
- 750 @ $5 = $3750 (leaving $1150 outstanding)
- 232.3232 @ $4.95 = $1150
I end up with $4900 and 17.6767BTC.
The difference should be obvious. In one case my "bonus" is in USD, in the other it's in BTC. At present no exchange agrees with me that this is relevant (particularly the Intersango guys who say there is no difference between BUY USD and SELL BTC).
Here's my use-case: I am a merchant. I want to sell my widget for $100. I quote a price in BTC, say 20.40 BTC. My order system instantly hedges against price changes by issuing a "BUY 100 USD" to an exchange. $100 is all I want, the rest of my hedge fund can be left as BTC. Eventually I will receive the BTC from the customer (6 confirmations); but I won't care if the exchange price has changed during that hour.
Obviously the opposite case is possible as well when you are the customer. SELL USD and BUY BTC are different things.
BitAvenue Zero Fee Exchange
My pleasure; I am glad to have been of use. Hopefully the above clarifies some of my suggestions.
Depends on how you make the analogy. Gold's primary function is "being gold" -- in that it's density and non-erodability make it hard to fake or tarnish. Bitcoin's primary function is "being two special numbers that make a public and private key".
Gold's secondary function is "looking pretty". Bitcoin's secondary function is "being compatible with the Bitcoin network".
If you believe in "inherent value", then it is that secondary function that gives bitcoins an inherent value. It's unusual in that it's value is provided by the computers and software that run the network rather than the magic numbers themselves -- it is definitely value though.