After the Mt. Gox meltdown, people have become a lot warier of centralised exchanges. Gox, Bitstamp, BTC-E, and other popular exchanges see thousands of Bitcoins traded daily, yet they have nothing like FDIC insurance to really back them up in the event of insolvency. Instead, users are forced to trust these services' accountability and security. Furthermore, such centralised exchanges are huge targets for hackers and scammers, since successful heists can net hundreds of thousands of dollars worth Bitcoins, Litecoins, and other cryptocoins. Centralisation is something that Bitcoin inherently tends to avoid. As such, it only makes sense for Bitcoin exchanges to be similarly decentralised. Fortunately, a new, open-source project called Coinffeine hopes to create a distributed, zero-trust Bitcoin exchange platform. Think of it like BitTorrent for Bitcoins.
How Does it Work?
A Simple Explanation
Good question. It's actually incredibly simple, and you'll wonder why no one has already come up with this idea. Just take a look at these slides to get the general idea before moving on to more technical details.
More Technical Details
To make this system actually work, Coinffeine solves two difficult problems. The first is a distributed broker system (that has not yet been implemented) that pairs "asks" and "bids". The second is a zero-trust exchange algorithm (that is nearly complete) that allows users to exchange Bitcoins and fiat without having to trust any exchange or user. Furthermore, the project is written mostly in Scala. Coinffeine also uses Akka for concurrency and bitcoinJ, a Java implementation of the Bitcoin protocol.
Coinffeine relies on a Bitcoin contract known as Micropayment Channel. This essentially forces users to cooperate in several micro-transactions until the exchange is complete. If users pull out early, they lose money. Users get to decide how many steps they want to take for the transaction to be complete. Next, they deposit a certain amount that expires after some time and is refunded if unused. This deposit prevents users from pulling out early, because deposits are greater than the amount exchanged in each step. The process continues until the final exchange, and the transaction gets confirmed by the miners. A full overview of the protocol is available on the Coinffeine wiki.
When Can I Start Using Coinffeine?
- Version 0.1. First version in which command line peers will be able to perform BTC-fiat exchanges using OKPay (as first supported payment processor) in a distributed fashion. Limitations for this version: price negotiation will be performed in a centralized server and peer communication will be direct and based on protocol buffers RPC, limited parametrization of the process.
- Version 0.2. Remove some of the constraints.
- Replace protobuf RPC by DHT routing
- Introduce a richer order book
- Introduce a GUI
- Version 0.3 Get ready for beta testing.
- Implement a broker set to maintain the order book in a distributed fashion.
How Can I Get Involved?
There are several things you can do to contribute to the Coinffeine project.
- Fork and clone the repo, play with the code, and submit bug reports.
- Improve the code/code new features.
- Join the development mailing list.
- Donate to the team at BTC: 1GZoqGXoKvH3xbbpkYjHj26Qw222kfKwqD.
- Spread the word
Who's Behind Coinffeine?
Coinffeine was conceived by: