Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Following the epic fiascos of the two main Bitcoin exchange sites (Mt.Gox, which went offline due to sheer traffic load during the worst market crash in the history of Bitcoins, leaving people with falling prices and a complete inability to sell their assets; and Bitcoin-24, which was apparently ran by someone who didn't even know what a database transaction is), something is becoming increasingly clear: these sites started as hobby projects, when Bitcoin was just some obscure nerd stuff, and were totally unprepared to manage Real Money. Thus, of course, they failed miserably at it.

The reasons are always the same you find in hobby projects who unexpectedly have to scale up to real world needs: lack of design, lack of planning and testing, lack of real programming expertise, lack of knowledge about how to design and operate production mission-critical systems, and so on, and so forth.

My question is simple: how should one properly design such a system? Main requirements would be:

  • Security. It should not be subject to any tampering, and people should be able to put their money into it and get it back (unless they lose it while trading, of course).
  • Scalability. It should be able to handle the current and projected traffic load for the foreseeable future, and should ideally be able to scale by adding more servers to it as needed, without the need for a complete redesign.
  • Speed. This kind of market just needs real time processing.
  • Availability. It should simply not go down.

These requirements, of course, translate into lots of design considerations, including hardware specs, software tools (platform, database, language...), application architecture, security, clustering/load balancing... I know there are lots of things involved, and I can think about a whole bunch of them, but the question arises exactly from this: I can not think about all of them, having no direct experience in this field.

Disclaimer: I'm not trying to build an online trading system, for Bitcoins or anything else; I'm just curious about how a production-quality online trading system which handles Real Money should be designed and operated.

I'm posting this question to StackOverflow, too, for the more development-specific stuff.

share|improve this question

closed as not constructive by pauska, Ward, Khaled, Dave M, Jenny D Apr 16 '13 at 12:12

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
The FAQ of ServerFault says; "You should only ask practical, answerable questions based on actual problems that you face. Chatty, open-ended questions diminish the usefulness of our site and push other questions off the front page." I would think this question is rather open-ended for ServerFault & may get down voted and/or closed. –  Snellgrove Apr 16 '13 at 7:28
    
There's a bitcoin.se currently in beta, it may be worth asking there as well. Although I'd be quite interested to know. –  tombull89 Apr 16 '13 at 7:40
    
With respect to your 31k points, this is clearly against FAQ. –  Edwin Apr 16 '13 at 8:52
    
I know there's no definite answer here; but I'm quite interested in a discussion about proper design for high-traffic, reliable, production-quality financial systems; and I think I'm not alone here. However, if you feel compelled to VTC, I won't for sure blame you for that. –  Massimo Apr 16 '13 at 9:11
    
Thing is, we actually have a user or two here who have built systems for stock-exchanges. The principles are very similar. –  sysadmin1138 Apr 16 '13 at 11:27

1 Answer 1

Security. Tons of.

In case of bitcoin, the worst offenders I Knew of were:

  • PURE STUPIDITY - some idiot running an exchange on non-durable amazon storage, then turning the VM off and there went the exchange wallet, without backup.

  • Allowing outgoing transfers without review. There is NO Reason for an exchange to allow that. ALL outgoing transfers should be with review. An exchange is not an online shop or a wallet service. My broker requieres me to call him, too. There is actually no reason to keep any money on the exchange computers in a way that can be sent out.

  • Tons of firewalling. Good programming. Especially a bitcoin exchange isa hugh pprimary target.

Regular trading applications have the advantage of multiple seucrity layers. Try breaking into my network - nice. Try getting money out of my accounts - impossible (requires email + verbal confirmation). Try trading bruitally - have fun, there are external risk monitors from the broker that will shut down the link "just in case".

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.