Respectfully, perhaps you believe you do, but from your writing it
seems otherwise.
> and I understand that just
> because a Ripple transaction goes through atomically, it doesn't mean
> that the underlying systems magically lose all their inherent
> restrictions and gain some new capabilities just because they now hold
> a Ripple commit token. Please understand that I never thought
> otherwise.
What's the point of them then? Define, concretely and succinctly, what
they provide.
To me it seems that you have been claiming that they provide a view to
all nodes that the transaction has succeeded or failed.
Leaving aside the question of "what for?" - most natural exchange both
within the conventional world and emerging networks seems to occur
more organically without explicitly declaring intent to all
participants within a multi-hop flow ahead of time - I'll tell you why
that makes no sense to me.
It makes no sense because they are a simplification of external
systems - often invalid - that encourage incorrect thinking regarding
financial realities. They engender a naive risk model, reduced
responsiveness to complex transactions' intra-settlement developments,
and a forced architecture that is demonstrably expensive and
unsuitable to many situations.
If you can't see this, given the number of examples I've raised
already, I really don't know how to explain it any better without
getting in to drawing pictures. Perhaps another email ... but I don't
have time for that now.
> Now please read carefully, because I am going to try again to explain
> all that Ripple requires of a system to participate in atomic
> transactions:
>
> * It can freeze funds for a transaction, and guarantee that those
> funds are available for that transaction if it commits within a
> certain time frame
OK, Ripple's scope as you describe it has apparently further expanded.
When you say "freeze funds for a transaction" - this is basically
local resource management. From my perspective it's incorrect to
argue that's really being provided by a protocol (either IFEX or
Ripple). Regardless of what kind of transaction system is in use, a
node has to do that anyway. In reality, the freezing of funds is
handing them to someone, whether it's your internal "frozen for
imminent third-party transfer" department accountant, or a third
party.
It seems to me that the risk model for local resource liquidity is
perhaps not something that a protocol should get in to. I can
understand the need if one is writing a settlement system (ie. prevent
double-spending), but that is not what IFEX seeks to be. If that's
what Ripple seeks to be, then so be it.
> That's it.
>
> I'm interested if you know of settlement systems that can't meet that
> criterion. Banks can clearly meet it, because they participate in
> point-of-sale debit transactions, which must guarantee funds in the
> same way.
Many people think so, because it does sound like common sense, but in
fact, like many things in economics when viewed through the lens of
popular perception, that is actually the naive perspective and
demonstrably wrong.
(Before going further it's worth noting that putting 'banks' in one
lump and combining them with point of sale networks is a mistake.
There is much variation within either one of those categories, the use
of 'debit' is also a loaded qualifier that "does not always do what it
says on the tin". This must be pointed out because you re-use the term
similarly naively later.)
> (You can't say to the merchant the next day, sorry, that
> transaction had to be reversed because it actually couldn't complete,
> even though we said it was approved, sorry.)
Sorry but it is very clear from your words that you don't have much
experience with this sort of thing.
It happens many thousands of times per day, every day.
It happens on Paypal, it happens on Mastercard/Visa card networks, it
happens on Bitcoin, and it certainly happens on other networks.
> Debit networks are actually a good analogue to what Ripple is trying
> to accomplish.
It's very much unclear here what you mean by 'debit networks'.
> The ultimate transfer is guaranteed immediately, and
> then whatever settlement mechanisms are necessary (if any) grind it
> out afterwards behind the scenes. The difference is, where debit
> networks rely on a closed system and global trust between participants
> enforced by global authorities, Ripple is an open system that relies
> on local trust/agreements between connected participants and two-phase
> commit for value transfer without needing global trust or authorities.
This is far too inspecific to comment on, but basically this suggests
that Ripple is trying to be a settlement network rather than describe
external settlement networks (ala IFEX).
> Now, I would understand if some settlement systems would need to make
> special arrangements to guarantee funds are available for Ripple
> transactions in all circumstances, such as providing a contingency
> fund to cover failed settlements. My understanding is that such
> systems would already have such contingencies in place. But if not,
> then perhaps they would see participating in Ripple transactions as
> too risky, or the risk-mitigation required as too expensive. This is
> obviously a subjective area, and I don't have the experience with
> actual settlement systems to know the answer. If you can give
> specific examples that would help me understand the issues here
> better, I would appreciate it.
Again asking for examples of my concerns, you have them. They are
concrete. You have not responded to them. (I believe you dismissed
them as baseless argumentative verbiage, but they were not.)
> What I would expect generally though, is that Ripple counterparties
> would make their own private agreements as to the meaning of an
> unsettled Ripple obligation under extraordinary circumstances, like
> bankruptcy of one of the parties. Obviously the assumption is that
> the vast majority of transactions can be settled predictably.
The following combination in Ripple as described on this thread does
not sit well for me.
- unspoken "obvious" "assumptions" that affect all parties to a
multi-hop transaction in ill-defined ways ... with no clear means for
resolution.
- claims of "Atomicity"
- claimed of planned scope including being able to wrap or describe
arbitrary settlements on arbitrary networks in arbitrary
currencies/commodities with arbitrary properties
> Now maybe the difference between Ripple and IFEX is that IFEX would
> never permit unsettled obligations to exist.
I repeat again, IFEX's view is that it (and, if the arbitrary
settlement system thing is in scope, then also I believe Ripple)
cannot control the state of external obligations. Sure, it can
declare "that should not be!", but in fact it cannot prevent this from
occurring. Attempting to do so would be imperfectly representing the
reality outside of the system, which is a recipe for costly
miscalculations and reduced efficacy in accounting related processes.
> But, as I understand it,
> IFEX permits the case where one system in a multihop transaction rolls
> back its transfer, leaving an implicit unsettled obligation, as funds
> may have already been delivered further down the chain.
One can't prevent this if one wants to describe transactions occurring
over popular settlement networks. All that one can do is model it
accurately and then make various node-local decisions based upon a
more informed risk model. This is IFEX's approach.
> And Ripple
> can give the exact same degree of assurance that unsettled obligations
> will not exist, if participating systems use the following integration
> mechanism:
>
> * Settle funds *before* agreeing to the Ripple transaction (ie,
> accepting promises and passing them on), and then roll back the
> settlement if the commit token does not appear.
Oh, sure. We all want perfect knowledge that things have gone without
a hitch. But how does it happen?
It seems to me that you're now defining a magical parallel reality
where the internet settlement ponies have mystically shared the pot of
gold at the end of the rainbow "before" the transaction occurs
(without breaking down in to bitter factionalised pony-warfare in
which vast numbers of innocent bystanders and their transactions are
trampled without remorse.)
In short, that's a cop-out because it's just pushing all the juicy
problems and details out of scope to the pre-trasactional pony
pasture. It doesn't actually address them.
> This heuristic makes the Ripple transaction operate identically to the
> IFEX transaction, except that Ripple still doesn't require global
> trust between participants, because of the way all the settlements in
> the chain are linked together by the single commit token.
Hrrm... "and one token to bind them! ... the pony-token!"
*cue ambient feel-good music; slow pan across New Zealand landscape,
with bushwalking 180 kilo German Megahobbit in foreground, Joe Bidden
and the MPAA SWAT team approaching in helicopter in midground,
spectacular middle-earth mountains in background*
Voiceover: "It is said that when engaging in a multi-hop settlement
over arbitrary networks, he who possesses the pony-token has knowledge
that all of his single hop component settlements have already gone off
without a hitch, and that all of his relations in trust, business and
communications with intermediate ponies have also gone off without a
hitch. The common people fear him, the great ponies come to pay
homage, and he rules over the greatest of the exchanges. For his
reputation is known far and away throughout all of Middle Earth and
the outer realms, and in every part of all of the lands, no child of a
hundred moons has gone without hearing his name. They call him...
*extended drumroll* ... SETT-LOR!"
*fade to reality*
"Err, man ... so like... what happens if a pony gets shot?"
> In a sense, the commit token establishes sufficient trust between the
> necessary participants *at transaction time*,
Sorry, but again, it seems to me that's a logical fallacy.
The commit token pushes the problem of doing this back to things that
happen "before the transaction". Functionally, at least in terms of
99% of potential issues, it basically represents the *end* of the
transaction.
> In that light, I think my design for two-phase commit could fall
> within your notion of a cryptographic proof-of-transfer from the
> recipient, and as we've already established, could be integrated
> within the existing extensible IFEX framework. I'm sure other such
> designs are possible, and since both frameworks are extensible, both
> could accommodate such designs.
Err, let's get this straight. Neither of us are cryptographers.
Let's not try to design new cryptographic systems, but rather
implement well known cryptographic primitives.
The primitive in question is the signature.
"I, <x*>, attest that, <y>".
(Realistically we often attempt to extend this to)
..." under penalty of <z**>"
* Where <x> is potentially a throwaway identity.
** Where <z> is often a fairly weak threat to the effect that "I'm
not playing with you anymore".
You see, we haven't designed anything at all, we're just
re-implementing the 99999th instantiation of 'Applied Cryptography',
albeit the 'Pony playground (sponsored by KimDotCom) limited edition'.
> I suppose then, the real difference between IFEX and Ripple is a
> matter of taste about what a more elegant approach to where the
> boundaries lie between different components of a multihop transaction
> system.
But, think of the ponies!
> And the root of that might be that IFEX's goal is
> primarily to allow fresh approaches to settlement to integrate with
> existing financial systems,
I would write 'arbitrary', rather than 'existing'. (Though it is
certain that any financial system that cannot integrate with existing
systems stands very little chance of widespread deployment.)
> and Ripple's is primarily to allow fresh
> approaches to settlement to integrate with *each other*, assuming
> existing systems will only integrate when forced to by the market.
Forgive me for being frank: that sounds a little like a really poorly
defined scope.
> As
> such, Ripple can afford to be more unconventional in its approach, as
> well as more opinionated about the kinds of trust-brokering protocol
> extensions that participants ought to implement. But I'm content that
> functionally they are (or can be made to be, by extending the existing
> designs) fairly equivalent.
I'm glad that you're content, but ask yourself this - is there value
in describing the areas where equivalence is not absolute between
arbitrary trust relationships? Does a lack of equivalence potentially
represent a vulnerability within the distributed trust model, of which
no particular node has complete knowledge? How do the settlement
ponies preceding the pony-token in Ripple actually handle this issue
.. or is there complete trust between all ponies in the
pre-transaction pony pasture?
Perhaps, as it seems you have simultaneously claimed that the pony
token is issued before the transaction, and that the pony token is
issued after the transaction's real-world money transfer is complete
(ie. for all intents and purposes, "the transaction"), that perhaps it
follows that time does not exist in the pre-transaction pony pasture.
And as we know, when time does not apply, then trust is a non-issue,
right?
Honestly, I'm having problems following your logic.
> It might be interesting to talk more about the degree to which
> existing financial systems are actually interested in implementing
> multihop settlement protocols that facilitate integration of
> potentially disruptive new entrants, but that could be a new thread...
Perhaps, but in short they can't prevent it.
> PS: If you're like me, and begin rebutting point-by-point before
> you've read the whole email, I'd appreciate if you'd go back and omit
> argumentative sections that don't really address the central thrust of
> our discussion. That's what I've been trying to do on the last few
> emails, and I don't think we've really lost anything for not sorting
> out a few minor technicalities that are in all likelihood meaningless
> once we come to a better understanding generally.
I do usually re-read, but believe the contrary - what you apparently
see as argumentative bits included concrete examples of problems that
you fail to address.
You're still missing my point, and I am at a loss as to how to explain
it more clearly than the numerous examples already rendered*.
- Walter
* Now with added ponies.