W3C home > Mailing lists > Public > public-interledger@w3.org > December 2016

Re: A Survey of ILP Account Identifiers?

From: Stéphane Canon <stephane.canon@scarlet.be>
Date: Thu, 8 Dec 2016 09:15:07 +0000
Message-Id: <EF1ABD27-2E36-43F7-8857-A8D5B6BC8506@scarlet.be>
Cc: David Fuelling <dfuelling@sappenin.com>, Interledger Community Group <public-interledger@w3.org>
To: Stefan Thomas <stefan@ripple.com>
Stefan,

Stefan,

Why using Webfinger and not DNS ?

I don’t understand how the SPSP address can be resolved. Real life scenario is that the payer pays the payee using his SPSP address. Is there something like a central Webfinger service?

“Connectors to simplify routing tables”: why do they need routing tables? If the SPSP address can be resolved, it can be resolved to identify the “ledger authority” (the account servicing bank / the ledger). 

In the current financial ecosystem, one SPSP address can be mapped to several ILP addresses: if the (european) payee is doing business in USD, he will ask to have an USD compartment on his account (e.g. EUR account). By doing this, the payee can receive payment in USD without exchange. This is also a way to avoid the multiplication of account numbers (and the confusion for payers and payees): all currencies can be paid to the same account number and the servicing bank will route the payment to the corresponding currency compartment. If there is no compartment for a currency, the bank will do the exchange. The decision to exchange currency is then under the control of the Payee.

“ILP addresses are … similarly ephemeral as IP”: for multiple operational and legal reasons, ILP addresses must be immutable. The mapping between SPSP and ILP address must be modifiable to allow for “account number portability”: changing ledger without having to change the “public address”.

Regards,
Stephane

 
> On 7 Dec 2016, at 22:04, Stefan Thomas <stefan@ripple.com> wrote:
> 
> Hey David,
> 
> That's awesome, thanks for putting together this write-up. I want to contribute by explaining how I think about the identifiers and hopefully that will help clarify things a bit further.
> 
> Specifically, I think it's important to point out that each of the identifier types corresponds to a different layer in the protocol stack. (SPSP is the highest layer - application layer, ILP is below that - internetworking layer and Five Bells is below that - ledger layer.)
> 
> 1. ILP Address
> 
> Used by: Interledger Protocol (ILP)
> Used for: Routing payments to the correct destination
> Equivalent in the data world: IP Address
> 
> Example: ilp:us.usd.nexus.stefan
> 
> The ILP Address is a low-level identifier used by ILP Connectors to forward a payment to the intended destination. They're designed such that accounts that are close to each other in the ILP topology tend to have common prefixes, which will allow connectors to simplify their routing tables.
> 
> Our experience so far is that the most confusing thing about ILP Addresses is that they are ASCII characters, whereas IP Addresses are just numbers. Many people have interpreted that to mean that ILP Addresses are user-facing. They are not! They are similarly ephemeral and low-level as IP Addresses, and a user should never see one. They are used for routing and nothing else.
> 
> By convention, they consist of a country code, one or more asset identifiers, one or more ledger identifiers, one or more account identifiers and zero or more subject identifiers  (e.g. invoice ID, etc.). An ILP Address essentially specifies which account (in an accounting sense) a payment should be delivered to. It goes from less specific to more specific, so to give an extreme example:
> 
> A payment to:
> 
> ilp:us.usd.nexus.acme.commercial.rnd.vanderbilt.5db6a086-35cf-4944-94c8-df0377c63e8c
> 
> Would be a payment to:
> 
> - Country: Some account under US jurisdiction
> - Asset: Denominated in USD
> - Ledger: With USD backed up by "nexus"
> - Subledger: On behalf of "acme" corporation
> - Subledger: For its "commercial" activities
> - Subledger: In the "rnd" department
> - Account: For the "vanderbilt" project
> - Subject: Related to incident "5db6a086-35cf-4944-94c8-df0377c63e8c"
> 
> Note that the scheme is meant to be very flexible and it doesn't matter if people use very different schemas as long as:
> 
> - Ledgers with shared prefixes tend to be close together in the liquidity graph
> - Prefixes of subledgers start with the prefix of their parent ledger
> 
> 2. SPSP Address
> 
> Used by: Simple Payment Setup Protocol (SPSP)
> Used for: Permanently identifying a real-world payment destination (a user account, an invoice) that is associated with rich meta-data
> Equivalent in the data world: Email Address
> 
> Example: stefan@nexus.justmoon.com <mailto:stefan@nexus.justmoon.com>
> 
> The SPSP Address is a user-facing identifier for quickly and easily referencing an account. Using the SPSP protocol, an SPSP address can be resolved into a set of rich metadata which specifies the types of payments that are possible to do with that destination.
> 
> Some use case examples include:
> 
> - bob@acme.com <mailto:bob@acme.com> is Bob's account at ACME. SPSP clients would be able to get Bob's name and avatar (if Bob chose to make that information public) and submit a message to Bob to go along with the payment. They would also be able to learn about limits - for instance, Bob's banks has a rule that he can't be sent more than 100 USD at once.
> 
> - 138591359@amazon.com <mailto:138591359@amazon.com> could be a specific Amazon invoice. SPSP clients would be able to ensure that the invoice can't be paid twice by accident, can't be overpaid and even provide the user with links to things like order status etc.
> 
> 3. Five Bells Account URI
> 
> Used by: Five Bells Ledger API, Common Ledger API (proposed)
> Used for: Identifying an account on a ledger
> Equivalent in the data world: MAC Address
> 
> Example: https://nexus.justmoon.com/ledger/accounts/stefan <https://nexus.justmoon.com/ledger/accounts/stefan>
> 
> The Five Bells Account URI is the identifier used by Five Bells ledgers and their clients to refer to accounts.
> 
> Note that different types of ledgers will have different ways to refer to accounts. Ripple, for instance, refers to accounts with a URI like ripple:rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn. For Bitcoin, it is: bitcoin:12A1MyfXbW6RhdRAZEqofac5jCQQjwEPBu. In other words these identifiers are not standardized by ILP and are totally up to the specific ledger protocol.
> 
> - Stefan
> 
> On Sun, Dec 4, 2016 at 10:57 AM David Fuelling <dfuelling@sappenin.com <mailto:dfuelling@sappenin.com>> wrote:
> Hey All,
> 
> There seems to be several different ways to define the format and characteristics of an ILP Ledger Account identifier (e.g., ILP Address, email address, URL, etc).  
> 
> For me, this has led to some confusion as I've tried to reason about when and where to use which style of identifier.  So, I created the following wiki page to try to and collect my thoughts and formalize my understanding of these different proposed identifiers, when to use them, and why:
> 
> https://github.com/fluid-money/ilp-connector-java/wiki/A-Survey-of-Interledger-Account-Identifiers <https://github.com/fluid-money/ilp-connector-java/wiki/A-Survey-of-Interledger-Account-Identifiers>
> 
> While I feel like this has clarified some thing for me, it has prompted a few more questions, which I tried to outline in the last section called "FAQ" -- I provided some strawman answers and counter-answers in there, but I'm curious if anyone has input/opinions/clarifications/corrections about what I've put together overall.  Feel free to share your thoughts, and if there's any interest I'd be happy to move this page over to the Interledger project on Github if people find it useful.
> 
> Thanks,
> david
Received on Thursday, 8 December 2016 09:15:46 UTC

This archive was generated by hypermail 2.3.1 : Thursday, 8 December 2016 09:15:47 UTC