- From: Stefan Thomas <stefan@ripple.com>
- Date: Wed, 18 Nov 2015 12:52:39 -0800
- To: public-interledger@w3.org
- Message-ID: <CAFpK0Q2VH9p7gEeDDWPc1BvxC5cob+qS6Mqty9ss+OvnkEMB7g@mail.gmail.com>
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