Pages:
Author

Topic: A generic protocol for cryptographic assets (Read 4719 times)

legendary
Activity: 1372
Merit: 1002
February 11, 2012, 07:56:31 AM
#24
BGP is essentially a fully-trust based flood fill algorithm, these days with some manually-maintained filtering rules to make it not completely trust based. It's not really applicable to something like Ripple.

I think for Ripple it's best to give up on the idea of decentralized routing. Just do a Satoshi and scale it through brute force. Every node has full knowledge of the trust relationship graph. You can then use one of the well known graph routing algorithms on it (A* or whatever).
Actually, maybe it's really simple.  You could pull a satoshi in the sense that you're broadcasting most things throughout the p2p network, but I don't think you necessarily need all nodes to maintain a global view of the trust network…maybe it's as simple as this:
...

What you want to implement is a p2p "Market" (as described on the proposal), but I prefer to leave that for later.

I'm reading about zeroMQ and it seems very interesting. Maybe it would be a good choice for implementing a simple prototype.
http://www.zeromq.org/

The more I think about this, the more changes I want to make to this draft. It still has lots of holes. I'm going back to specification and later to design.
I also want to support chains as timestamper and accounter without acting like Minters. A chain that allows users to issue their own tokens. We could call iouChain or somethign like that. But scalability and DoS attacks scare me there.

Anyway, there would be three types of tokens:
1) Tokens: Issued and accounted "centrally".
2) TokenCoins: Issued "centrally" (by anyone) and accounted by a chain.
3) Coins: Issued and accounted by a chain.

*Better ideas for the names are welcomed.

Any combination of them should be tradeable atomically. When a chain is involved, the protocol should be able to "compile" to a bitcoin transaction the part that needs to be solved in that chain.
When one of the "currencies" involved is not a basic token (but some of the two type of coins), its chain must be the timestamper (maybe a timestamper is needed if we consider "green addresses" transactions, but I'm not sure we should).
When more than a chain is involved, contracts are needed. I can imagine a trade with more than two chains by adding more secrets, but maybe there's problems I fail to see.
Would an atomic trade like this be possible and secure?

A gives btc and gets nmc
B gives nmc and gets usdCoin
C gives usdCoin and gets btc

SecretA enables B to gets the usdCoins by revealing secretB, which enables C to get the btc's if he reveals secret C, which enables A to get the nmc's using secretA (which is already public).
A must sends his secret to C for him to sign his payment, etc.
Mike, do you see any problems with a trade like this?
hero member
Activity: 868
Merit: 1008
BGP is essentially a fully-trust based flood fill algorithm, these days with some manually-maintained filtering rules to make it not completely trust based. It's not really applicable to something like Ripple.

I think for Ripple it's best to give up on the idea of decentralized routing. Just do a Satoshi and scale it through brute force. Every node has full knowledge of the trust relationship graph. You can then use one of the well known graph routing algorithms on it (A* or whatever).
Actually, maybe it's really simple.  You could pull a satoshi in the sense that you're broadcasting most things throughout the p2p network, but I don't think you necessarily need all nodes to maintain a global view of the trust network…maybe it's as simple as this:

- a node (A) in the p2p network announces an order (not to be confused with the trust network)
- everyone hears about it and adds it to their order books
- another node (B) sees that they have a matching order (or someone places a matching order)
- node B announces that they've got a matching order to their trust neighbors
- the trust neighbors forward to all of their trust neighbors (other than B), appending info about the route back and fees, as well as the maximum size of the order that can be filled (if it's less that the total amount of the order…credit limits could make it such that some paths are only able to do a partial fill)
- original node starts hearing back about the matching order and various paths…it selects the path that is most ideal (able to fill entire order, has lowest fees, fewest hops in the trust network, etc)…it might execute along multiple paths if no single path is able to fill the entire order
legendary
Activity: 1372
Merit: 1002
I think for Ripple it's best to give up on the idea of decentralized routing. Just do a Satoshi and scale it through brute force. Every node has full knowledge of the trust relationship graph. You can then use one of the well known graph routing algorithms on it (A* or whatever).

That was my idea but not exactly.
Markets can apply the graph routing algorithms on the part of the trust relationship they know but they don't necessarily know the whole graph. Every client can run their own market if they want and different markets can have different policies for sharing offers and promises.
But, yes, I expect them to be mostly public. Specially the market dedicated servers (like BitTorrent trackers, they're there to assist).

I want to stress that ripple debts are treated just like any other asset and markets build the graphs directly from the offers (and promises or "binding offers").
Markets don't even know what kind of assets are being traded (with the exception of block-chain assets), only the public key of the minter.
legendary
Activity: 1526
Merit: 1134
BGP is essentially a fully-trust based flood fill algorithm, these days with some manually-maintained filtering rules to make it not completely trust based. It's not really applicable to something like Ripple.

I think for Ripple it's best to give up on the idea of decentralized routing. Just do a Satoshi and scale it through brute force. Every node has full knowledge of the trust relationship graph. You can then use one of the well known graph routing algorithms on it (A* or whatever).
legendary
Activity: 1372
Merit: 1002
There's no need to blind assets. They just don't need to be in the transaction message, only their hashes in the Script messages.
The actors involved in each asset share them to sign them but the rest of the participants involved in the transactions don't read them.
I've edited the first post to reflect this.
legendary
Activity: 1372
Merit: 1002
I like the idea of everyone issuing their own currency that works much like bitcoin (with the exception that the issuer determines the official chain of transactions instead of the mining network).  However, I don't think that's necessary to get a first version of a p2p exchange system up and running.  And a p2p exchange system is something I think is urgently needed.

My point is representing debt like that. "B owns 10 aUSD" is equivalent to "A owes 10 USD to B".
Others may disagree, but I think this is simpler. There's no credit lines, only assets and offers. The clients put the limits on the "credit lines" by not accepting more than a certain quantity of the currency issued by certain friend.
hero member
Activity: 868
Merit: 1008
I don't like RIpple as it was when last I studied it, as it just seemed like something I'd be crazy to actually use, as if it were designed from the ground up as a fishing-hole for people who create an identity, join the network, exhaust andy and all credit they can get and all their neighbor's credits too, and change identity to do it again.
Yeah, except Andy's neighbor isn't going to forget that Andy owes him money and he knows where Andy lives.

I don't think Ripple alone makes a lot of sense as a money system.  But the way it routes debt would be a great complement for bitcoin exchange (note: the intention of having and routing debt is just as a very short term way of recording and then settling the fiat side of a bitcoin trade).  When you deposit money with mtgox, you are trusting that they don't just run away with it.  Just like your example, mtgox could take as many deposits as they can and then just disappear and later setup a new site, mtgoxxed.com.

There are real world systems that work exactly like this, have been in place for centuries, and work extremely well.  Hawala is one such example.
legendary
Activity: 1372
Merit: 1002
I don't like RIpple as it was when last I studied it, as it just seemed like something I'd be crazy to actually use, as if it were designed from the ground up as a fishing-hole for people who create an identity, join the network, exhaust andy and all credit they can get and all their neighbor's credits too, and change identity to do it again.

Ok, what about exchanging assets atomically (thanks to a blind signer who just acts as a timestamper) without transitive payments (like ripple)?
It's just a capability of the system, but it's not mandatory to use it.
Can you trade OTusd for OTbtc atomically without making any deposit? And OTusd for btc?
Can offers in from separate OT servers be executed together?

If so, there's no need for the system I'm describing.

Also, what's wrong with transitive transactions?
A has mtgoxUSD and wants tradehillUSD. B offers BTC for mtgoxUSD. You have tradehillUSD and want BTC.
Isn't it great to be able to sell tradehillUSD for mtgoxUSD and those same mtgoxUSD for BTC atomically?
Or tradehillUSD for mtgoxUSD and those same mtgoxUSD for mtgoxBTC atomically and instantly?
legendary
Activity: 2940
Merit: 1090
What *exactly* is it in "common law" that makes vexels incomprehensible, or in "statutory law" that causes them to become comprehensible?

Can you perhaps invent a statute that, if it here made law, would redenr vexels comprensible?

I fidn it hard to even imagine a law making something comprehensible, I thought most people's experience is that even the most comprehensible of things often become incomprehensible when described in "legal language".

I don't like RIpple as it was when last I studied it, as it just seemed like something I'd be crazy to actually use, as if it were designed from the ground up as a fishing-hole for people who create an identity, join the network, exhaust andy and all credit they can get and all their neighbor's credits too, and change identity to do it again.

-MarkM-
hero member
Activity: 868
Merit: 1008
Actually my approach to ripple is to allow every node to issue their own currency and trade them for their ripple neighbor's currencies.
I like the idea of everyone issuing their own currency that works much like bitcoin (with the exception that the issuer determines the official chain of transactions instead of the mining network).  However, I don't think that's necessary to get a first version of a p2p exchange system up and running.  And a p2p exchange system is something I think is urgently needed.

Quote
I don't know much about BGP, but I want to completely decouple the communication network from the credit network. In fact different communication protocols could be used (TLS, Tor, whatever).
Yes, the p2p communications network and credit network are separate things.  BGP was designed to decentralize routing on the internet.  I thought it might be a good thing to look at when figuring out how to do routing through the credit network (and do it in a decentralized manner).

I can't wait until we have a p2p exchange system.  I'm very intrigued to see how it evolves.  I suspect as adoption of bitcoin grows, people will simply stop bothering to settle up fiat debt, but instead use debts that are owed to them to buy bitcoin (which they then spend on various goods and services).  People might also just choose to leave debts outstanding (it's not really so different from having a bank account balance…which is also debt…it's just that your balance is with a trusted colleague, friend or relative instead of with a company).
legendary
Activity: 1372
Merit: 1002
@2112
I didn't get anywhere with the link you posted for Wechsel. Can you make a summary of what it is?

I'm not quite following you here.  Note that ripple isn't about circulating anything…you're never selling or trading any debt on any kind of market.  There are only ever bi-lateral debt obligations created in ripple.  They aren't like bonds that you would trade on a market.

Actually my approach to ripple is to allow every node to issue their own currency and trade them for their ripple neighbor's currencies.
 
I don't know much about BGP, but I want to completely decouple the communication network from the credit network. In fact different communication protocols could be used (TLS, Tor, whatever).

The "markets" defined here will run the searching algorithms using the offers (or promises) they have receive from users and other markets. You could have your own market on your pc, but maybe your cell phone just can't do it and you need to outsource it to a market server.

Although the roles are very separated, I think they would be combined very often.
hero member
Activity: 868
Merit: 1008
I never called Ripple "bunk" and I never called Bitcoinica "scam". Pretty much everything you wrote about me is a simple lie, rooted in your compulsion to read between the lines and obsessive search for strawmen to refute:
I'll admit that I may have read too much into your post.  It just seemed like you were suggesting Bitcoinica is a scam operation and that ripple isn't an idea worth exploring.  Note: I'm not endorsing Bitcoinica, it could be a scam for all I know.  I have played with it and I do know that the spreads he charges are huge.  I don't think he actually needs to scam anyone…he's making huge money off those spreads and that should be completely obvious to anyone trading on his system.
Quote
Ripple is a high speed computer network and cryptographic implementation of the old, well known concept of Wechsel.
Ok…so right here I disagree.  From what you've been describing of Wechsel, it's not comparable to Ripple.  You can convince me otherwise, but nothing I've found on Wechsel on the web has done so.  If anything, it's convinced me that Wechsel is more like a bond market for the common man.  This is not at all what ripple is.  Again, if you don't see the difference, then I claim you really don't understand ripple.
Quote
There is a big problem in explaining this in English because the concept of Wechsel is only known and used in countries with statutory law system, but English-speaking countries have common law system.
I understand law.  I know what statutory, common and regulatory law means.  I understand how the legal enforcement of a trading system like Wechsel might be differently impacted by statutory and common law.  What I fail to understand is how it's relevant.  Ripple makes an assumption that there is little or no legal enforcement of the debt obligations created between trusted parties.  This is why they are called trust relationships.  You trust them to fulfill their obligation regardless of what any legal system might have to say about the matter (whether statutory or common law).  I do business with mtgox despite the fact that I realize I would have little recourse if they simply vanished with my money.  Why?  Because I trust them (with a little bit of money anyway).
Quote
The concept of Ripple is to the large extent isomorphic to concept of Wechsel, most of the differences are in the implementation. In particular they both have similar benefits and drawbacks. The most commonly exploited drawback of the vexels will be the most commonly exploited drawbacks of Ripple.
Please elaborate on the benefits and drawbacks.  I am genuinely interested to hear these benefits and drawbacks that you believe are common to Ripple and Wechsel's.  I am not discounting the possibility that Wechsel's and Ripple are very similar, it's just that from what I've read, I don't yet see the similarities.  I much prefer discussing specifics and technicals than broad generalities.
Quote
There are thick books written about the vexels and their circulation. Too bad that those books aren't in English. As they say "you can lead a horse to water, but you can't make it drink". The same thing happened here: "you can give Steve links to the documentation, but you can't make him read".
Great.  I read what I could.  I'm not convinced the parallels are as strong as you believe.  I can assure you I'm very familiar with a lot of forms of debt and investment.  As I said before, Wechsel's seem like a bond and trading system for the common man (most people in the US aren't very literate when it comes to bond investing and typically only invest in bonds indirectly, if at all…hence, bond investing isn't something you can assume everyone has the literacy to discuss).
legendary
Activity: 2128
Merit: 1073
I'm doing a full quote from Steve just to keep the proof that he cannot read with comprehension.

I never called Ripple "bunk" and I never called Bitcoinica "scam". Pretty much everything you wrote about me is a simple lie, rooted in your compulsion to read between the lines and obsessive search for strawmen to refute:

A bucket shop isn't necessarily a scam.

Bitcoinica is a blend of a pure "bucket shop" with partially hedged own-account speculation by the owner. No matter what it is, it isn't an exchange. Since I never called Bitcoinica "scam" this is a classic strawman.

Ripple is a high speed computer network and cryptographic implementation of the old, well known concept of Wechsel. There is a big problem in explaining this in English because the concept of Wechsel is only known and used in countries with statutory law system, but English-speaking countries have common law system.

The concept of Ripple is to the large extent isomorphic to concept of Wechsel, most of the differences are in the implementation. In particular they both have similar benefits and drawbacks. The most commonly exploited drawback of the vexels will be the most commonly exploited drawbacks of Ripple.

There are thick books written about the vexels and their circulation. Too bad that those books aren't in English. As they say "you can lead a horse to water, but you can't make it drink". The same thing happened here: "you can give Steve links to the documentation, but you can't make him read".

You haven't even attempted to explain it.  You just make some assertions that it's beyond the capacity of a native english speaker to comprehend.  I think english is expressive enough that it should be possible to explain such a thing.
Not all "native English speakers" have problem understanding vexels. Only the subset of them: those who refuse to learn any other human language and assume that if it isn't in English then it isn't worth trying to understand.

I want to thank everyone for the patience. I hope that those of you who can read at least one other language will find intellectual stimulation in the link I gave.

Oh well, I tried.
Not really…you just pointed to some websites and made a claim that it proves ripple is bunk without any actual explanation.

Quote
The system you describe does exist and the difference is that instead of exchanging cryptographic certificates people exchange little paper forms with hand-signatures and stamps (pictures are on the German Wikipedia page I linked.)

The attacks are not "against the system", but "against the users who don't want to learn how the system works."

The little stamps are there to finance the collections: if somebody tries to repudiate the vexel, the stamps are proof that the owner paid the taxes and is entitled to the help of marshals in the attachment of furniture or other valuables.
It sounds like a vexel is a bond that can be traded and whose repayment is backed by government force.  You don't trade debt with ripple (I suppose you could, but it's beyond the scope of ripple).  If you don't understand that, then you don't understand Ripple.  I'm not sure why you think ripple and vexel's are the same thing.  You haven't even attempted to explain it.  You just make some assertions that it's beyond the capacity of a native english speaker to comprehend.  I think english is expressive enough that it should be possible to explain such a thing.

Quote
On the Speculation forum Zhoutong is giving lessons for people who don't bother to understand the difference between a bucket shop and an exchange. His customary charge for that lesson is "all of your deposit (USD & BTC)".
A bucket shop isn't necessarily a scam.  It just a derivative betting service on some underlying asset.  Intrade.com is a bucket shop.  It does happen to be illegal in a lot of places (but that probably has more to do with the fact that it is betting and it takes business away from the actual exchanges…wall street probably didn't like the competition).  I won't speculate on whether Bitcoinica is a scam or not…I do know that he needs competitors…he's making way too much money with the spreads he charges.  Other people could probably make a nice living if they cut into his business a little.
hero member
Activity: 868
Merit: 1008
Oh well, I tried.
Not really…you just pointed to some websites and made a claim that it proves ripple is bunk without any actual explanation.

Quote
The system you describe does exist and the difference is that instead of exchanging cryptographic certificates people exchange little paper forms with hand-signatures and stamps (pictures are on the German Wikipedia page I linked.)

The attacks are not "against the system", but "against the users who don't want to learn how the system works."

The little stamps are there to finance the collections: if somebody tries to repudiate the vexel, the stamps are proof that the owner paid the taxes and is entitled to the help of marshals in the attachment of furniture or other valuables.
It sounds like a vexel is a bond that can be traded and whose repayment is backed by government force.  You don't trade debt with ripple (I suppose you could, but it's beyond the scope of ripple).  If you don't understand that, then you don't understand Ripple.  I'm not sure why you think ripple and vexel's are the same thing.  You haven't even attempted to explain it.  You just make some assertions that it's beyond the capacity of a native english speaker to comprehend.  I think english is expressive enough that it should be possible to explain such a thing.

Quote
On the Speculation forum Zhoutong is giving lessons for people who don't bother to understand the difference between a bucket shop and an exchange. His customary charge for that lesson is "all of your deposit (USD & BTC)".
A bucket shop isn't necessarily a scam.  It just a derivative betting service on some underlying asset.  Intrade.com is a bucket shop.  It does happen to be illegal in a lot of places (but that probably has more to do with the fact that it is betting and it takes business away from the actual exchanges…wall street probably didn't like the competition).  I won't speculate on whether Bitcoinica is a scam or not…I do know that he needs competitors…he's making way too much money with the spreads he charges.  Other people could probably make a nice living if they cut into his business a little.
legendary
Activity: 2128
Merit: 1073
Oh well, I tried.

As for exploits by traders, I think you're imagining attacks against a system that doesn't even exist yet.
The system you describe does exist and the difference is that instead of exchanging cryptographic certificates people exchange little paper forms with hand-signatures and stamps (pictures are on the German Wikipedia page I linked.)

The attacks are not "against the system", but "against the users who don't want to learn how the system works."

The little stamps are there to finance the collections: if somebody tries to repudiate the vexel, the stamps are proof that the owner paid the taxes and is entitled to the help of marshals in the attachment of furniture or other valuables.

What I find most interesting about all the discussions I had about RipplePay and Wechsels is that pretty much only the mono-lingual English speakers cannot comprehend the equivalence between the two concepts. On the other hand, if I discuss the two concepts in English and the interlocutor immediately grasps them, it turns out that his/her mother tongue is either Hebrew or Yiddish.

Anyway, this is an international forum and as most of the forums it has at least 10 lurkers for each poster. Anyone who is reading this can learn the underlying concepts on their own, I have nothing to sell.

On the Speculation forum Zhoutong is giving lessons for people who don't bother to understand the difference between a bucket shop and an exchange. His customary charge for that lesson is "all of your deposit (USD & BTC)".

I guess sometime in the future somebody else will be giving lessons to the people who don't bother learning to understand the concept of "negative discount". And his charges for the lesson will be "all the money you've got".
hero member
Activity: 868
Merit: 1008
January 23, 2012, 06:55:02 PM
#9
Borrowing from BGP is a certain way to produce bad software that will be easily exploited by any moderately competent trader.
I'm not suggesting the BGP code be used directly…just that it's a system designed for decentralized routing that one could learn from (perhaps learning what not to do).  As for exploits by traders, I think you're imagining attacks against a system that doesn't even exist yet.

Quote
There is one thing I absolutely hate about Ripple-pay: their hardcore anglophone financial schizophrenia. What they are doing is a computerized analogue to the circulation of vexels (German: Wechsel). The problem is that all English language countries are also rooted in the common-law legal system, which never developed a system for circulations of vexels. If you are capable to understand any other language than English you will also understand the concept of statutory-law and the concept of exchange of vexels.
...
I'm not quite following you here.  Note that ripple isn't about circulating anything…you're never selling or trading any debt on any kind of market.  There are only ever bi-lateral debt obligations created in ripple.  They aren't like bonds that you would trade on a market.  And ripple like debts created in a p2p bitcoin exchange system would be designed to be settled in very short time timeframes (daily, weekly, etc).  Ripple is a great way to describe it because value "ripples through" many bilateral credit agreements in order to find a trusted path through that network that ultimately facilitates a trade between two parties that don't have a direct trust relationship.

PS.  It's worth noting the existing exchanges already work like this…two people that don't trust each other can execute a trade on mtgox…but they both have to trust mtgox.  Each person allows mtgox to run a negative balance…one person deposits ฿100 with mtgox and another deposits $600.  Mtgox owes one of those people ฿100 and the other $600 (and reflects that in their account balance).  The trade happens and each withdraws their balance from mtgox, which is settles the debt.  There are 2 bilateral credit arrangements.  A p2p exchange would simply add the ability to do the same thing over multiple hops.
legendary
Activity: 2128
Merit: 1073
January 23, 2012, 05:30:31 PM
#8
Could you explain that a bit more?  I'm not sure how a particular hop in ripple could have a negative cost associated with it.  It could have zero cost, but how could it be negative?  People pay you to execute a trade through their node?
Exactly. Node owners would pay to execute transactions through their node to increase their credit standing. This is an equivalent to a negative additive cost.

The other option is to have a trade that involves currency exchange. This is an equivalent of a multiplicative cost less than 1.

If the cost is the trade fee that they charge, each hop would either increase the cost or not, but how would it reduce cost?  In any case, I think we could borrow heavily from BGP when designing a decentralized ripple routing scheme.
Borrowing from BGP is a certain way to produce bad software that will be easily exploited by any moderately competent trader.

There is one thing I absolutely hate about Ripple-pay: their hardcore anglophone financial schizophrenia. What they are doing is a computerized analogue to the circulation of vexels (German: Wechsel). The problem is that all English language countries are also rooted in the common-law legal system, which never developed a system for circulations of vexels. If you are capable to understand any other language than English you will also understand the concept of statutory-law and the concept of exchange of vexels.

Here is the link to the German Wikipedia page about vexels:

http://de.wikipedia.org/wiki/Wechsel_(Urkunde)

Do not just click over to English translation: promisory note is not an equivalent to a wechsel. To understand the difference you'll need to plod through the automated translation to English or switch to any other language from the country where the vexel-circulation is written into the law statues. At least check if the diagrams and pictures are similar to the ones on German Wikipedia.

I intentionally used the neologism "vexel" in the above reply because the Internet is full of incorrect information about Wechsels translated to English by lawyers unschooled in a non-anglophone legal tradition.
hero member
Activity: 868
Merit: 1008
January 23, 2012, 04:48:07 PM
#7
Then I'd take a very close look at BGP (border gateway protocol). [...]
It strikes me that finding paths through a ripple network is the exact same problem.
[...]
Not really. BGP deals with monotonically increasing cost of transit. Paths in Ripple may have costs that are negative (with regards to the starting node or ending node). The algorithms required for non-monotonically increasing costs are significantly more complex.
Could you explain that a bit more?  I'm not sure how a particular hop in ripple could have a negative cost associated with it.  It could have zero cost, but how could it be negative?  People pay you to execute a trade through their node?  If the cost is the trade fee that they charge, each hop would either increase the cost or not, but how would it reduce cost?  In any case, I think we could borrow heavily from BGP when designing a decentralized ripple routing scheme.
legendary
Activity: 2128
Merit: 1073
January 23, 2012, 03:54:51 PM
#6
Then I'd take a very close look at BGP (border gateway protocol). [...]
It strikes me that finding paths through a ripple network is the exact same problem.
[...]
Not really. BGP deals with monotonically increasing cost of transit. Paths in Ripple may have costs that are negative (with regards to the starting node or ending node). The algorithms required for non-monotonically increasing costs are significantly more complex.
hero member
Activity: 868
Merit: 1008
January 23, 2012, 03:26:20 PM
#5
I would suggest solving the p2p exchange problem first.  It's something that many people recognize is needed and if implemented well, will become an overnight sensation.  Many people might get lost in the detail (or not have time to study the detail) of an all encompassing proposal like this, but solve a real problem with it and you'll be successful.

I've felt and written many times that it would be fairly easy to take some existing exchange software, package it such that it's easy for anyone to download and install, then add the ripple like capabilities to it.  There would be two networks involved…one is a p2p communications network very similar to they way bitcoin propagates blocks and transactions.  The second would the the ripple network.  The ripple network forms by users installing this software and creating accounts for peers (or allowing open registration of accounts).  For each peer, you would set the maximum amount of debt allowed (default would be zero, but for some trusted peers you might allow them to run a negative balances).  A person could accept a deposit from a peer and credit their account.  All peers would have a balance at all times (positive or negative).

Then I'd take a very close look at BGP (border gateway protocol).  BGP was designed to solve the problem of decentralized routing on the internet.  By design, it doesn't require any node to have a complete view of all routing paths on the internet.  Each node maintains tables used to make routing decisions in it's localized portion of network (including metric that associate a cost with certain paths).  It strikes me that finding paths through a ripple network is the exact same problem.  The cost associated with a certain path would be the fees that a given node might charge for exchanges (similar to the metric that routing protocols assign to a path).  A path might also be reachable, but not be able to accommodate the full amount of credit that needs to be exchanged.

Orders would be announced and propagate through the p2p communications network.  A node that is originating an active, matching order would then proceed to try and find a ripple path back to the source of that order.  If successful, a trade is created and signed by the endpoints and all intermediate nodes.  To preserve privacy, the trade may optionally be encrypted such that only the nodes involved can decrypt it.  Once signing is complete, the bitcoins are delivered with the bitcoin transaction hash and order hash signed by the seller of the coins.  When the nodes see the signed delivery (and verify the correct amounts), they update their account balances.  Nodes can settle up with peers as they see fit (once a day, once a week, via paypal, ACH, wire, etc).  

Since an order and a trade are separate items, nothing prohibits an order from being a partial fill.  Orders can have an expiration on them and if someone doesn't honor an order, you can flag that node to avoid trades with it in the future.

The full order book can be established simply by listening to the p2p network, optionally tuning out orders from nodes you don't trust (or that have proven to be untrustworthy).  All nodes can optionally publish the trades they witness (optionally choosing to respect a request that it not be published).  Others can subscribe to order execution feeds of nodes they trust.  Dark orders are simply orders that don't get announced on the p2p network and that listen and try to execute on matching public orders when they appear.  Some nodes can allow dark orders to be placed directly with them and automatically matched with other dark orders on the same node.

Because at every step of the way, you are only dealing with trusted peers, many of the issues of creating two way, multi-block chain atomic transactions aren't really necessary.  I realized some time ago that even if you did that, you still have to trust the issuer of the coins you're trading for bitcoin…and if you have to trust the issuer, you're only going to want to accept coins issued by a limited number of people that you have some established relationship with…since there is trust involved either way, you really don't need the complexity of another block chain and atomic transactions between the two chains.

Super nodes will arise in this network (perhaps the existing exchanges will be super nodes) but the network overall will be very resilient against any one node going offline.  Many people already have a trust relationship with the existing exchanges (i.e. you extend mtgox a line of credit when you allow them to hold your dollars or coins).  This would be no different than installing p2p exchange software and extending mtgox a line of credit for whatever amount of dollars you're comfortable with (then actually sending them the dollars so that you can execute trades through them).
Pages:
Jump to: