I've seen no less than ten different threads pop up here from people wanting to start a P2P decentralized/distributed exchange, but each and every single time, without fail, the definition of what a P2P distributed exchange actually is gets totally forgotten and the thread dies... Sometimes without a single mention of the word Ripple, too!
The sad thing is, Bitcoin desperately NEEDS a P2P Exchange... It's not like we don't know already that MtGox is a single point of failure that could severely set us back any day now... We all instinctively know this, and most of us know that if uncle sam made bitcoins "illegal," they'd come after ALL of the exchanges at the same time, yes, even in England, Germany, Canada and Oz too. Obomba's done worse already.
So we all agree that we need to replace these central-points-of-failure (CPOF) allowing access into the bitcoinoshpere, but we simply have not yet been able to agree on what the replacement should look like.
...Which is silly actually,
because a P2P distributed exchange is a VERY specific thing! It must have all the functionality of a full, real-time trading platform (MtGox or better) yet be completely distributed software with no CPOF. This marriage of unique properties would require a very specific feature set and design, yet every time a thread pops up on here calling for one, half of the forum chimes in with comments like "Open Transaction can do that," "Buttercoin was made to do that," "LocalBitcoins can do everything you need," and of course: "Ripple already does it!"
I got news for you weekend bitcoin warriors: Those services ARE NOT distributed replacements for MtGox... They just aren't,
by design. So in order to combat this huge problem that we all desperately need solved, I'm making this thread to DEFINE what criteria exactly a P2P Distributed Exchange needs to meet. These are my ideas, but please feel free to throw in your own.
A P2P Distributed Exchange MUST:- 1. Be without any central points of failure, since a government or two WILL be coming after it one day. I suggest a Bitorrent-like software schematic.
- 2. Show everyone a very large number of possible trades to choose from, (thousands?) so assets can form a stable price. (e.g. a Bitcoin is going for $120)
- 3. Transact trades pretty much INSTANTANEOUSLY, so when you're watching a graph and want to trade at a very specific time you can do so. (This is extremely important for arbitragers and other traders who help keep the price fluctuation down.)
- 4. Offer Graphs and APIs for for graphing like MtGox does.
- 5. Have three-user (trustless) trading, so a non-interested 3rd party always hosts the trade between the buyer and seller. (And should provide Escrow too!)
- 6. Hold and transfer VALUE, not just IOUs. (With Cryptocurrency this is easy... With fiat? Not so much.)
Those are my must-haves. I will
never spend a second helping out any software that doesn't meet all 6 of those criteria. You shouldn't either. Again, if you know something I've overlooked, feel free to add it below.
Having thought really hard about this nonstop since the April bubble pop, I've devised most of the system and exactly how it would work, with the exception of exactly one thing... Holding the value of the Fiat (nationalized currencies) within the software.
If we can solve this one issue, I'm convinced we'll change the entire investing world with this software and make bitcoin safe from all attacks that don't involve nuclear weapons... However even if we don't fix this, the system can be programmed up right now to trade between cryptocurrencies just fine.
Before someone says: "Hey, colored coins can move Fiat..." I assure you that so far everyone talking about them has only suggested holding an IOU in colored coins, which is simply not good enough for our needs. Any attempt to have some kind of bank fulfill an IOU is to make a CPOF again.
But we know that the actual value of Fiat can and already is held in software now! Most of the planet's Fiat DOES exist only as digital currency, and moves just fine through networks like Wire transfers, SWIFT, SEPA, and ACH. -So if those networks can get access to the value of nationalized currency, then we should be able to as well... As an example, think of doing an ACH transfer to a software client, and from there it exists only in your online wallet as fiat credit.
So that's the final problem to solve, and once we fix that, the rest of this program will fall into place:
That's a diagram of the parts of a fully P2P Distributed software client that is self-promoting. All you have to do is download this thing, keep it running, and it will make you money as fees for other people's trades. Like bitcoin miners, first adopters will get paid the most often, so it's sure to take off and spread worldwide easily like bitcoin did.
How would a transaction work? I've charted some of that process too:
After the trade is matched on Mary's machine, both Tim and Bob send their currencies to Mary's escrow wallet, and as the 2nd of those is received, she sends out the traded currencies MINUS HER FEE from both. (This amount could either be hard-coded in, or a user setting like the BTC transaction fee.)
All of that will be done hands free, and Mary's client will send out a "stop" signal to all clients for those traded amounts. An API feed can also be generated for anyone to graph all of these trades from the viewpoint of any particular client.
Anyway, long post I know, but I hope we are starting to get on the same page here. THIS is a P2P exchange, and of course it's not the only way to do one but no one else here has mentioned anything else at all that meets all of the criteria for a truly distributed P2P exchange before.
Again, if you can think of more necessary criteria for my list above, please add it here.
Now let's get this thing made!