Supported ledger protocols

We got the following question via email and since it's a common one I
figured I'd share the answer with the group:

Shaul Kfir wrote:

> I've started going over the paper and it looks great. The one thing that
is unclear to me is if
> you plan to make the implementation (I've only briefly looked at the
Interledger code) allow
> for two-phase commits and connectors between different ledger protocols,
or only on top of
> the Ripple protocol. We see great value and network effect in building a
standard for atomic
> transactions between protocols, but at the moment it's not clear to me
how we would do this
> with the current Interledger five-bells demo implementation.

Thanks for the question! I'd like to first explain what ILP can
theoretically do and then talk about what is implemented today:

In order to make an ILP payment across ledgers, what is needed is for all
ledgers to support cryptographic escrow with a common cryptographic
primitive. E.g. Bitcoin has a SHA256 opcode, so it can be part of an ILP
transaction as long as the other ledgers also support escrow using a SHA256
condition.

Participants (sender, recipient and connectors) generally only need to
understand the ledger protocols of the ledgers they are directly connected
to. In other words, if you wanted to use Bitcoin as an intermediary ledger
between connectors, only the connectors would have to support it. If you
wanted to send ILP payments from a Bitcoin wallet, then that wallet would
have to add ILP support and there would have to be a connector connecting
Bitcoin to other ledgers.

Our current connector implementation (five-bells-trader) supports the API
of five-bells-ledger, but ledger support is pluggable, so you can write
support for other ledger APIs. As an example, you can look at the two
ledger plugins that currently exist:

- Five Bells Ledger:
https://github.com/interledger/five-bells-trader/blob/master/lib/ledgers/five-bells-ledger.js
- Ripple Consensus Ledger:
https://github.com/ripple/five-bells-trader-lib-ripple/blob/master/index.js

Basically, a ledger plugin needs to support two functions, "putTransfer"
for creating/fulfilling escrow transfers and "subscribe" for subscribing to
ledger events.

Received on Wednesday, 18 November 2015 20:53:30 UTC