Our project has grown quite a lot since when it started. As it is still in active development, I'm moving it to the project development section, and changing the OP to explain what it is now:
Bitfinex offers 3 main functions, working together. There is 3 different types of wallet, each one having a dedicated function.Meta-exchange
Bitfinex works as a meta-exchange. It allows you to acess the orderbooks of others main bitcoins exchanges to have the best liquidity possible, while keeping fees lows. You can see the global orderbook of bitfinex combining all orderbooks available (level 2 order book).The three main functions of BitfinexBitcoins exchange
The exchange part works like any regular bitcoins exchanges: you put your offer to buy or sell bitcoins, on the global orderbook. You can choose to execute your orders only on mtgox, or only on bitfinex, for example; that's the routing feature. When an order is matched against another, it is executed.
The exchange wallet type is used for this feature.Margin trading
Our margin trading feature is unique in the Bitcoin world. Basically, it allows you to borrow funds from lenders (see next feature) to trade bitcoins. If you make a profit, you get the profit and pay the depositor interests. If you make a loss, you reimburse the depositors the whole borrowed amount.
For example, let's say you want to open a long position for 100 bitcoins. That means you want to buy 100 bitcoins hoping to the price will go up. The system will borrow for you 100 * the bitcoin price US dollars (let's say 1300 USD) from lenders, at the best rates available. Your position will have a maximum period (defined by lenders), after which you will have to reimburse the 1300 USD (close the position). Each hour you will be charged an interests rate going to your(s) lender(s). If later you want to increase your position, you can borrow more funds, which will have there own maximum period.
At any time before the expiration date, you can close your position. This will reimburse your lender, and you will keep the profit.
The same goes for short position (selling bitcoins), where you borrow bitcoins instead of dollars.
If there is no lender available, you will not be able to open your position. Your order status will be "NO RESERVE ACTIVE", which means that it will be executed as soon as there is funds available.
The trading wallet is used for margin trading. It does not serves the purpose of buying or selling bitcoins, it serves only as margin requirements; that is, even if you have 1000 US dollars in this wallet, if you open a 10 BTC long position, you will borrow the needed USD. Funds in this wallet are to cover for eventual losses that may occurs. When the losses covers almost all your wallet balances, you may get a margin call and have your position force-closed to avoid further losses.Lending
Our lending feature goes hand to hand with the margin trading feature described above. If you don't feel like a trader and/or prefer safer investments, this feature is for you. Bitfinex allows you, using your deposit wallets, to lend bitcoins and/or dollars to traders. You can put offers with your chosen terms (which rates, for how long, and how much). When an offer is taken by a trader, the money in your wallet will be used to buy or sell bitcoins, and a loan will be opened. When the loan expires (the trader closes his position), bitcoins are bought or sold back and money is reimbursed to your wallet.
You don't have the exchange risk when you lend with bitfinex. The exchange risk is taken on by the trader, and, in case his position loses money, he will cover the loss with funds in his trading wallet. If by any chances losses are greater than what the trader can afford, the loss is on Bitfinex, we will cover for the missing amount.
You can then see how the risks are minimal, while the rates are great (bitcoins price being very volatile, traders can afford to borrow at a high premium)Security
When it comes to security, we're always paranoid. We have unique security features in the bitcoin world, which are:
- A watch-only wallet (cold wallet) on the production server, to monitor bitcoins transactions without giving keys to spend them
- Trade only exchanges API keys
- Automatic backup of the database once a day
- Duplication of backup data automatically across 3 servers
- Paper backup of wallet and exchanges keys and passwords
Your bitcoins are stored in cold wallet only, and the servers only use watch-only wallet, powered by Armory, to monitor deposit and balances. We have a bitcoind (official daemon) running only to handle the blockchain transactions), and the wallet is handled by the Mav Armory Server script (open-source, you can find it here: https://github.com/thedawnrider/BitcoinArmory-Daemon
All bitcoins withdrawals requests are processed manually, once a day, every business day.Trade-only API Keys:
The API keys (like currently the Mtgox API key) are stored encrypted on one of the production server. This key provides only right to get balances and buy and sell bitcoins on Mtgox. That's why you are able to deposit instantly using mtgox codes, but the mtgox code withdrawals are handled manually.Automatic backup of the database
Once a day, the database of the platform is backed up, encrypted and compressed as an archive. The passwords of users it contains are encryptedDuplication of backup data
As soon as a new backup is ready (database, log files,...), it is sent to others servers in 2 several physical location.Paper backup of wallet and exchanges keys
These crucial informations are printed on paper, which is kept with us in a physical wallet in bitfinex place. As well, the cold wallet is printed on paper, and Armory (the bitcoin client we use) allows to restore wallet from paper if needed.Questions?
If you have others questions or suggestions to make, it will be a pleasure to receive them on firstname.lastname@example.org!