diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..e3d3619 Binary files /dev/null and b/.DS_Store differ diff --git a/_content/0028-web-monetization.md b/_content/0028-web-monetization.md index 4a00d13..ab9b182 100644 --- a/_content/0028-web-monetization.md +++ b/_content/0028-web-monetization.md @@ -17,21 +17,21 @@ Web Monetization is a proposed browser API that uses ILP micropayments to moneti ### Design Goals -- Should be extremely simple for webmasters to use in their site. -- Backend infrastructure should be optional; should be usable on a static site. +- Should be extremely simple for webmasters to use in their sites. +- Back-end infrastructure should be optional, and should be usable on a static site. - Should not require any interaction with the user. -- Should give user's browser a choice about how much to spend, and which sites to support. +- Should give the user's browser a choice about how much to spend, and which sites to support. - Should give advanced webmasters a way to associate payments with their users, in order to unlock premium experiences. - Should pay continuously as the user consumes content. - Should be compatible with existing application and transport protocols on Interledger. ### Relation to Other Protocols -The W3C have published two payments related APIs for browsers, the Payment Request API and the Payment Handler API. +The W3C has published two payments-related APIs for browsers, the Payment Request API and the Payment Handler API. -The reason this API is not using the Payment Request API directly is that Web Monetization is intended for continuous payments rather than discrete payments. It is also not designed to have any user interaction. It is intended to provide a direct alternative to advertisements, rather than an alternative to existing checkout methods. +The reason this Web Monetization API is not using the Payment Request API directly is that Web Monetization is intended for continuous payments rather than discrete payments. It is also not designed to have any user interaction. It is intended to provide a direct alternative to advertisements, rather than an alternative to existing checkout methods. -Some changes will be required to Payment Request and Payment Handler to fully support Web Monetization in future, however this API brings the necessary features to the browser in a way that allows for tighter integration in the future. +Some changes will be required to Payment Request and Payment Handler to fully support Web Monetization in the future, however this API brings the necessary features to the browser in a way that allows for tighter integration in the future. With advertisements, the user's browser decides whether to display the ads and the user decides whether to engage with the ads. With Web Monetization, the user's provider decides whether to pay the site and, if so, how much to pay. @@ -45,9 +45,9 @@ This flow refers to the user's **browser** and the user's **provider**, [defined - The user's browser sets `document.monetization` to an Object which implements [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget). - The user's browser sets `document.monetization.state` to `pending`. - The user's browser observes the `` and looks for a Web Monetization `` tag ([specified below](#meta-tags-set)). - - There MUST be only one `` tag at any given time + - There MUST be only one `` tag at any given time. - The `` Tags Set MUST be in the `` of the document. - - The `` Tags Set MUST be in the top level window (i.e. not inside an iframe) + - The `` Tags Set MUST be in the top level window (i.e., not inside an iframe) - Below is repeated for every semantically (consider `meta.content = meta.content`) new `` tag seen for the life of the page: - If any of the Web Monetization `` Tags Set are malformed, the browser will stop here. The user's browser SHOULD report a warning via the console. @@ -64,10 +64,10 @@ This flow refers to the user's **browser** and the user's **provider**, [defined - This event has a `detail` field with an object containing the Payment Setup Endpoint and the Monetization ID ([specified below](#monetizationstart)). - The user's browser also emits a `monetizationprogress` ([specified below](#monetizationprogress)) event from `document.monetization`, corresponding to this first packet. If there are no listeners the event MAY NOT be emitted. - Payment continues for the lifetime of a given meta tag (or semantically equivalent) - - The provider MAY decide to stop/start payment at any time, e.g. if the user is idle, backgrounds the page, or instructs the browser to do so. + - The provider MAY decide to stop/start payment at any time, such as if the user is idle, backgrounds the page, or instructs the browser to do so. - If the STREAM connection is severed, the provider will redo the SPSP query to the same Payment Setup Endpoint as before with the same Monetization ID. The user's browser MUST NOT re-process the `` Tags Set. - Each time a packet with a nonzero amount is fulfilled, the provider notifies the browser, and the browser emits an event on `document.monetization`. The event's type is `monetizationprogress`. The event has a `detail` field containing the details of the packet ([specified below](#monetizationprogress)). If there are no listeners the event MAY NOT be emitted. - - When a stream is closed the `document.monetization.state` MUST be set back to 'pending' + - When a stream is closed, the `document.monetization.state` MUST be set back to 'pending' ### Payment Handler Flow @@ -94,7 +94,7 @@ A provider can be implemented as a Payment Handler supporting the 'webmonetizati The `` Tags Set MUST be in the document's ``. The `` Tags Set allows the user's browser to pay a site via Web Monetization by specifying a [Payment Pointer](../0026-payment-pointers/0026-payment-pointers.md) or [SPSP](../0009-simple-payment-setup-protocol) url. -The `name` of the `` tags all start with `monetization`. The table below lists the different `name`s and the formats of their `content`. Currently there is only one tag, but this may be expanded in the future so care MUST be given to altering a Tags Set such that `` is the last one modified. +The `name` of the `` tags all start with `monetization`. The table below lists the different `name` values and the formats of their `content`. Currently there is only one tag, but this may be expanded in the future so care MUST be given to altering a Tags Set such that `` is the last one modified. | Name | Required? | Format | Description | @@ -171,4 +171,4 @@ Contains the `Monetization ID` (currently referred to as `requestId` in the even ```http Web-Monetization-Id: dcd479ad-7d8d-4210-956a-13c14b8c67eb -``` \ No newline at end of file +``` diff --git a/_content/community.md b/_content/community.md index 709a07b..ca3220b 100644 --- a/_content/community.md +++ b/_content/community.md @@ -15,7 +15,7 @@ The official Interledger community forum can be found [forum.interledger.org][4] ## Bi-Weekly Calls -We have open community calls **every other Wednesday at 4pm UTC** to discuss the latest in Interledger spec development, the implementations, and to answer any questions people have. Agendas are sent out via the mailing list and anyone can suggest an agenda item by adding to the [topic][5] created for that purpose in the forum. +We have open community calls **every other Wednesday at 4pm UTC** to discuss the latest in Interledger spec development, the implementations, and to answer any questions people have. Agendas are sent out via the mailing list and anyone can suggest an agenda item by adding to the [topic][5] created for that purpose in the forum. Recordings of previous calls are available [here][6]. @@ -25,7 +25,7 @@ Recordings of previous calls are available [here][6]. All announcements, including about upcoming in-person meetings, and many technical discussions are done through the W3C Interledger Community Group Mailing List. Have ideas to share or just want to keep up with the latest developments? [Join the Community Group][7]. -The mailing list archive is available [here][8]. +The mailing list archive is available [here][8]. ### IETF @@ -33,7 +33,7 @@ Since presenting the Interledger project at IETF Berlin, the IETF have establish ## Slack -Want to chat about Interledger or have a question to ask? [Join on Slack][10] +Want to chat about Interledger or have a question to ask? [Join on Slack][10]. ## Twitter @@ -54,4 +54,4 @@ You can watch the videos from the 2019 summit [here][12]. Sign up on the forum o [9]: https://www.ietf.org/mailman/listinfo/ledger [10]: https://communityinviter.com/apps/interledger/interledger-working-groups-slack [11]: https://twitter.com/interledger -[12]: /summit-2019.html \ No newline at end of file +[12]: /summit-2019.html diff --git a/_content/connect-ilp-testnet.md b/_content/connect-ilp-testnet.md index 0a11c09..d1769cc 100644 --- a/_content/connect-ilp-testnet.md +++ b/_content/connect-ilp-testnet.md @@ -12,8 +12,7 @@ This tutorial describes how to: For this tutorial you will need to: -1. Install `moneyd` and SPSP. You can learn how to install `moneyd` -and SPSP from the [Getting Started](getting-started.html) tutorial. +1. Install `moneyd` and SPSP. You can learn how to install `moneyd` and SPSP from the [Getting Started](getting-started.html) tutorial. 2. Install the [moneyd XRP uplink](https://github.com/interledgerjs/moneyd#uplinks) using the command: npm install -g moneyd-uplink-xrp @@ -38,7 +37,7 @@ To configure `moneyd`: js1.xpring.dev -3. Press enter for all other default options. +3. Press Enter for all other default options. ## Starting moneyd diff --git a/_content/getting-started.md b/_content/getting-started.md index bd9e96d..f01056c 100644 --- a/_content/getting-started.md +++ b/_content/getting-started.md @@ -1,20 +1,20 @@ This tutorial describes how to: -1. Install [`moneyd`](https://github.com/interledgerjs/moneyd) on your system -2. Start an [Interledger node](https://github.com/interledgerjs/ilp-connector) on a local test network using moneyd -3. Send and receive value using the [SPSP](https://github.com/interledgerjs/ilp-protocol-spsp) (Simple Payment Setup Protocol) API +1. Install [`moneyd`](https://github.com/interledgerjs/moneyd) on your system. +2. Start an [Interledger node](https://github.com/interledgerjs/ilp-connector) on a local test network using moneyd. +3. Send and receive value using the [SPSP](https://github.com/interledgerjs/ilp-protocol-spsp) (Simple Payment Setup Protocol) API. ## Before you begin -Install a stable version of [Node.js](https://nodejs.org/en/) (10.16.0 LTS is recommended) +Install a stable version of [Node.js](https://nodejs.org/en/) (10.16.0 LTS is recommended). -**Note:** For this tutorial you *do not* need to use any cryptocurrency. Since you will be running ILP -on a local test network, settlement (moving real money) does not take place. +**Note:** For this tutorial you *do not* need to use any cryptocurrency. Since you will be running ILP +on a local test network, settlement (moving real money) does not take place. -## Installing moneyd +## Install moneyd To install `moneyd`, open a terminal and run the following command: @@ -22,7 +22,7 @@ To install `moneyd`, open a terminal and run the following command: $ npm install -g moneyd ``` -## Starting moneyd +## Start moneyd After you’ve installed `moneyd`, run the following command to start your local node: ```shell @@ -31,12 +31,12 @@ $ moneyd local Running the above command creates an Interledger node that listens on port 7768. -## Sending and receiving value +## Send and receive value -Once you have `moneyd` running, you can send and receive value over ILP using the SPSP API. For this tutorial, +Once you have `moneyd` running, you can send and receive value over ILP using the SPSP API. For this tutorial, we’ll use the SPSP command line tool. -### Installing the SPSP client and server +### Install the SPSP client and server To install an SPSP client and server, open a new terminal and run: @@ -44,9 +44,9 @@ To install an SPSP client and server, open a new terminal and run: $ npm install -g ilp-spsp ilp-spsp-server ``` -### Starting the SPSP server +### Start the SPSP server -By default, the SPSP server uses [localtunnel](https://localtunnel.github.io/www/) to create an HTTP endpoint. +By default, the SPSP server uses [localtunnel](https://localtunnel.github.io/www/) to create an HTTP endpoint. Alternatively, you can set up the server on `localhost` and `port` by disabling localtunnel. To receive value, start the SPSP server using the following command: @@ -54,9 +54,9 @@ To receive value, start the SPSP server using the following command: ```shell $ ilp-spsp-server --localtunnel false --port 8080 ``` -The above command will create `http://localhost:8080` as your HTTP endpoint. +The above command will create `http://localhost:8080` as your HTTP endpoint. -### Sending value +### Send value Now, to send value, open another terminal and run: @@ -64,6 +64,6 @@ Now, to send value, open another terminal and run: $ ilp-spsp send --amount 10 --receiver 'http://localhost:8080' ``` -You should see `sent!` on the sending terminal and `got packet for 10 units` on the receiving terminal confirming -that you have successfully sent and received value through the Interledger protocol. You are now ready to [use +You should see `sent!` on the sending terminal and `got packet for 10 units` on the receiving terminal confirming +that you have successfully sent and received value through the Interledger protocol. You are now ready to [use SPSP in your applications.](sending-value-programmatically.html) diff --git a/_content/overview.md b/_content/overview.md index 34a70da..c40ea20 100644 --- a/_content/overview.md +++ b/_content/overview.md @@ -1,20 +1,20 @@ -Traditional payment networks operate independently from each other. Sending value is easy only if the sender and -recipient have accounts on the same network, but it can be slow and expensive if they have accounts on different -networks. Interledger makes it easy to transact in whatever currency or payment network you choose because it is -not tied to any one company, blockchain, or currency. Using Interledger, you can easily send XRP to someone who wants +Traditional payment networks operate independently from each other. Sending value is easy only if the sender and +recipient have accounts on the same network, but it can be slow and expensive if they have accounts on different +networks. Interledger makes it easy to transact in whatever currency or payment network you choose, because Interledger is +not tied to any one company, blockchain, or currency. Using Interledger, you can send XRP to someone who wants to receive ETH, or you can send USD to someone who wants to receive EUR. ## What is Interledger? -Interledger is a network of computers that enables the sending of value across independent payment networks. -Similar to how the Internet routes packets information, Interledger routes packets of value. Computers on the Interledger +Interledger is a network of computers that enables the sending of value across independent payment networks. +Similar to how the Internet routes packets information, Interledger routes packets of value. Computers on the Interledger network are called *nodes*. Nodes can take one or more of the following roles: - Sender – Initiates a value transfer. -- Router – Applies currency exchange and forwards packets of value. This is an intermediary node between the sender -and the receiver. +- Router – Applies currency exchange and forwards packets of value. This is an intermediary node between the sender +and the receiver. - Receiver – Receives the value. @@ -25,22 +25,22 @@ and the receiver. ## How does Interledger work? -At the core of Interledger is the [Interledger Protocol (ILPv4)](https://interledger.org/rfcs/0027-interledger-protocol-4/), -which is a set of rules that define how nodes should send value over the Interledger network. ILPv4 is a *request/response* -protocol, where requests and responses are ILPv4 packets. Typically, a single aggregate -payment from source to destination is split into multiple ILP packets. Each ILP packet contains transaction -information, which is private to the nodes participating in the transaction. ILPv4 has three packet types - *Prepare*, *Fulfill*, and *Reject*. +At the core of Interledger is the [Interledger Protocol (ILPv4)](https://interledger.org/rfcs/0027-interledger-protocol-4/), +which is a set of rules that define how nodes should send value over the Interledger network. ILPv4 is a *request/response* +protocol, where requests and responses are ILPv4 packets. Typically, a single aggregate +payment from source to destination is split into multiple ILP packets. Each ILP packet contains transaction +information, which is private to the nodes participating in the transaction. ILPv4 has three packet types - *Prepare*, *Fulfill*, and *Reject*. ![ILP-packets](assets/img/ilp-packets.png) -The sender constructs and sends a Prepare packet as a request to the connecting router. The routers forward the packet -until it reaches the receiver. The receiver then accepts or rejects the packet by sending a Fulfill packet or a -Reject packet as the response. The routers relay the response from the receiver back to the sender. When the sender -receives a Fulfill packet, it knows that the packet was successfully delivered to the receiver. The sender then -continues to send the remaining Prepare packets until the value is fully transferred. +The sender constructs and sends a Prepare packet as a request to the connecting router. The routers forward the packet +until it reaches the receiver. The receiver then accepts or rejects the packet by sending a Fulfill packet or a +Reject packet as the response. The routers relay the response from the receiver back to the sender. When the sender +receives a Fulfill packet, it knows that the packet was successfully delivered to the receiver. The sender then +continues to send the remaining Prepare packets until the value is fully transferred. -Interledger does not rely on any single payment network for processing value transactions. You can connect with -an ILPv4 router at any time to join the network. Furthermore, Interledger sends value as tiny data packets, +Interledger does not rely on any single payment network for processing value transactions. You can connect with +an ILPv4 router at any time to join the network. Furthermore, Interledger sends value as tiny data packets, which makes transactions fast, secure, and inexpensive. **Tip:** For a deeper dive into how ILPv4 works, see [ILPv4 Flow](https://interledger.org/rfcs/0027-interledger-protocol-4/#prerequisites). @@ -48,31 +48,31 @@ which makes transactions fast, secure, and inexpensive. ## Building on Interledger -Build payments into your apps or other protocols without tying yourself to a specific currency or payment network. -Create accounts on our demo ledgers and start sending Interledger payments with the client libraries. +Build payments into your apps or other protocols without tying yourself to a specific currency or payment network. +Create accounts on our demo ledgers and start sending Interledger payments with the client libraries. Check out [Getting Started](getting-started.html) for more details. ## Interledger architecture -Interledger enables payments across many different types of ledgers. The Interledger Protocol Suite is comprised of -four layers: the Application, Transport, Interledger, and Link protocols. To learn more, see the Interledger +Interledger enables payments across many different types of ledgers. The Interledger Protocol Suite is comprised of +four layers: the Application, Transport, Interledger, and Link protocols. To learn more, see the Interledger [Architecture Overview](https://interledger.org/rfcs/0001-interledger-architecture/). ## Protocol specs and APIs -To dive into the technical specs, see the [Interledger RFCs](https://github.com/interledger/rfcs). Also see the documentation for the components of the +To dive into the technical specs, see the [Interledger RFCs](https://github.com/interledger/rfcs). Also see the documentation for the components of the reference implementation. ## Security -Interledger enables secure, multi-hop payments using [Hashed Timelock Agreements](https://interledger.org/rfcs/0022-hashed-timelock-agreements/). -As of Interledger version 4, these conditions are not enforced by the ledger, as it would be too costly and slow. -Instead, participants in the network use these hashlocks to perform accounting with their peers. This accounting is -used to determine in-flight balances, which are periodically settled with on-ledger transfers or payment channel claims. -For a detailed description of how this works, read the +Interledger enables secure, multi-hop payments using [Hashed Timelock Agreements](https://interledger.org/rfcs/0022-hashed-timelock-agreements/). +As of Interledger version 4, these conditions are not enforced by the ledger, as it would be too costly and slow. +Instead, participants in the network use these hashlocks to perform accounting with their peers. This accounting is +used to determine in-flight balances, which are periodically settled with on-ledger transfers or payment channel claims. +For a detailed description of how this works, read the [Peering, Clearing, and Settlement](https://interledger.org/rfcs/0032-peering-clearing-settlement/) documentation. Next: [Getting Started](getting-started.html) diff --git a/_content/sending-value-programmatically.md b/_content/sending-value-programmatically.md index 31174e4..b90e386 100644 --- a/_content/sending-value-programmatically.md +++ b/_content/sending-value-programmatically.md @@ -4,9 +4,9 @@ This tutorial assumes that you’re running `moneyd` and SPSP server on your com If you're not set up, you can learn how to [set up `moneyd` and SPSP here.](getting-started.html) -## Sending value +## Send value -To send value programmatically, you need to install `ilp-protocol-spsp` and `ilp-plugin` modules. +To send value programmatically, you must install `ilp-protocol-spsp` and `ilp-plugin` modules. Open a command line and use the following commands: ```shell diff --git a/_dactyl/dactyl-config.yml b/_dactyl/dactyl-config.yml index a623561..d997bab 100644 --- a/_dactyl/dactyl-config.yml +++ b/_dactyl/dactyl-config.yml @@ -51,7 +51,7 @@ pages: targets: - en - - name: Sending Value Programmatically + - name: Send Value Programmatically funnel: Docs doc_type: Getting Started html: sending-value-programmatically.html @@ -293,11 +293,12 @@ pages: targets: - en - - name: avascript Ledger Plugin Interface Version 2 + + - name: Settlement API funnel: Docs doc_type: Specs - html: rfcs/0024-ledger-plugin-interface-2/index.html - md: https://raw.githubusercontent.com/interledger/rfcs/master/0024-ledger-plugin-interface-2/0024-ledger-plugin-interface-2.md + html: rfcs/0038-settlement-engines/index.html + md: https://raw.githubusercontent.com/interledger/rfcs/master/0038-settlement-engines/0038-settlement-engines.md template: template-spec.html targets: - en @@ -480,6 +481,15 @@ pages: targets: - en + - name: Javascript Ledger Plugin Interface Version 2 + funnel: Docs + doc_type: Deprecated + html: rfcs/0024-ledger-plugin-interface-2/index.html + md: https://raw.githubusercontent.com/interledger/rfcs/master/deprecated/0024-ledger-plugin-interface-2/0024-ledger-plugin-interface-2.md + template: template-spec.html + targets: + - en + - name: Optimistic Transport Protocol funnel: Docs doc_type: Deprecated diff --git a/_dactyl/filters/__pycache__/filter_external_links.cpython-38.pyc b/_dactyl/filters/__pycache__/filter_external_links.cpython-38.pyc new file mode 100644 index 0000000..6062596 Binary files /dev/null and b/_dactyl/filters/__pycache__/filter_external_links.cpython-38.pyc differ diff --git a/_dactyl/templates/template-base.html b/_dactyl/templates/template-base.html index 6bab5ef..0560613 100644 --- a/_dactyl/templates/template-base.html +++ b/_dactyl/templates/template-base.html @@ -15,7 +15,7 @@ - + diff --git a/_dactyl/templates/template-sidebar_nav.html b/_dactyl/templates/template-sidebar_nav.html index af6b777..5c804b5 100644 --- a/_dactyl/templates/template-sidebar_nav.html +++ b/_dactyl/templates/template-sidebar_nav.html @@ -25,6 +25,7 @@
  • Notes on OER encoding
  • Dynamic Configuration Protocol (ILDCP)
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • ILP over HTTP
  • SPSP Pull Payments
  •  
  • diff --git a/calls.html b/calls.html index 4d09497..20aad76 100644 --- a/calls.html +++ b/calls.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + @@ -109,11 +109,11 @@

    Interledger Community Calls

    @@ -113,16 +113,16 @@

    Github

    Forum

    The official Interledger community forum can be found forum.interledger.org . It's the place for technical discussions related to the Interledger protocol stack, implementations, and applications built on top.

    Bi-Weekly Calls

    -

    We have open community calls every other Wednesday at 4pm UTC to discuss the latest in Interledger spec development, the implementations, and to answer any questions people have. Agendas are sent out via the mailing list and anyone can suggest an agenda item by adding to the topic created for that purpose in the forum.

    +

    We have open community calls every other Wednesday at 4pm UTC to discuss the latest in Interledger spec development, the implementations, and to answer any questions people have. Agendas are sent out via the mailing list and anyone can suggest an agenda item by adding to the topic created for that purpose in the forum.

    Recordings of previous calls are available here.

    Mailing List

    W3C

    All announcements, including about upcoming in-person meetings, and many technical discussions are done through the W3C Interledger Community Group Mailing List. Have ideas to share or just want to keep up with the latest developments? Join the Community Group .

    -

    The mailing list archive is available here .

    +

    The mailing list archive is available here .

    IETF

    Since presenting the Interledger project at IETF Berlin, the IETF have established another mailing list for the IETF community interested in the project; [email protected]

    Slack

    -

    Want to chat about Interledger or have a question to ask? Join on Slack

    +

    Want to chat about Interledger or have a question to ask? Join on Slack .

    Twitter

    Follow @interledger on Twitter for the latest news and annoucements.

    Interledger Summits

    diff --git a/connect-ilp-testnet.html b/connect-ilp-testnet.html index 5d4ad94..e6c675f 100644 --- a/connect-ilp-testnet.html +++ b/connect-ilp-testnet.html @@ -15,7 +15,7 @@ - + @@ -81,28 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -

    Connecting to a Testnet

    +

    Connect to an ILP Testnet

    Connect an Interledger node to an ILP Testnet.

    Connect to an ILP Testnet

    This tutorial will help you start moneyd locally on your computer and connect it to an ILP router on the Testnet .

    @@ -114,8 +114,7 @@

    Connect to an ILP Testnet

    Before you begin

    For this tutorial you will need to:

      -
    1. Install moneyd and SPSP. You can learn how to install moneyd -and SPSP from the Getting Started tutorial.
    2. +
    3. Install moneyd and SPSP. You can learn how to install moneyd and SPSP from the Getting Started tutorial.
    4. Install the moneyd XRP uplink using the command:
      npm install -g moneyd-uplink-xrp
       
    5. @@ -136,7 +135,7 @@

      Configuring moneyd

    6. -

      Press enter for all other default options.

      +

      Press Enter for all other default options.

    Starting moneyd

    diff --git a/getting-started.html b/getting-started.html index ae4d93a..f3ed636 100644 --- a/getting-started.html +++ b/getting-started.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    @@ -106,43 +106,43 @@

    Getting Started

    Start an Interledger node locally and create a local ILP test network.

    This tutorial describes how to:

      -
    1. Install moneyd on your system
    2. -
    3. Start an Interledger node on a local test network using moneyd
    4. -
    5. Send and receive value using the SPSP (Simple Payment Setup Protocol) API
    6. +
    7. Install moneyd on your system.
    8. +
    9. Start an Interledger node on a local test network using moneyd.
    10. +
    11. Send and receive value using the SPSP (Simple Payment Setup Protocol) API.

    Before you begin

    -

    Install a stable version of Node.js (10.16.0 LTS is recommended)

    -

    Note: For this tutorial you do not need to use any cryptocurrency. Since you will be running ILP -on a local test network, settlement (moving real money) does not take place.

    -

    Installing moneyd

    +

    Install a stable version of Node.js (10.16.0 LTS is recommended).

    +

    Note: For this tutorial you do not need to use any cryptocurrency. Since you will be running ILP +on a local test network, settlement (moving real money) does not take place.

    +

    Install moneyd

    To install moneyd, open a terminal and run the following command:

    $ npm install -g moneyd
     
    -

    Starting moneyd

    +

    Start moneyd

    After you’ve installed moneyd, run the following command to start your local node:

    $ moneyd local
     

    Running the above command creates an Interledger node that listens on port 7768.

    -

    Sending and receiving value

    -

    Once you have moneyd running, you can send and receive value over ILP using the SPSP API. For this tutorial, +

    Send and receive value

    +

    Once you have moneyd running, you can send and receive value over ILP using the SPSP API. For this tutorial, we’ll use the SPSP command line tool.

    -

    Installing the SPSP client and server

    +

    Install the SPSP client and server

    To install an SPSP client and server, open a new terminal and run:

    $ npm install -g ilp-spsp ilp-spsp-server
     
    -

    Starting the SPSP server

    -

    By default, the SPSP server uses localtunnel to create an HTTP endpoint. +

    Start the SPSP server

    +

    By default, the SPSP server uses localtunnel to create an HTTP endpoint. Alternatively, you can set up the server on localhost and port by disabling localtunnel.

    To receive value, start the SPSP server using the following command:

    $ ilp-spsp-server --localtunnel false --port 8080
     
    -

    The above command will create http://localhost:8080 as your HTTP endpoint.

    -

    Sending value

    +

    The above command will create http://localhost:8080 as your HTTP endpoint.

    +

    Send value

    Now, to send value, open another terminal and run:

    $ ilp-spsp send --amount 10 --receiver 'http://localhost:8080'
     
    -

    You should see sent! on the sending terminal and got packet for 10 units on the receiving terminal confirming -that you have successfully sent and received value through the Interledger protocol. You are now ready to use +

    You should see sent! on the sending terminal and got packet for 10 units on the receiving terminal confirming +that you have successfully sent and received value through the Interledger protocol. You are now ready to use SPSP in your applications.

    @@ -155,12 +155,12 @@

    On This Page

    diff --git a/index.html b/index.html index d271023..118142b 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ - + diff --git a/libraries.html b/libraries.html index b4aabb3..13e8ec5 100644 --- a/libraries.html +++ b/libraries.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/news.html b/news.html index fdb2630..baabf22 100644 --- a/news.html +++ b/news.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/overview.html b/overview.html index dba79e9..01f3c2b 100644 --- a/overview.html +++ b/overview.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + @@ -104,56 +104,56 @@

    Interledger Overview

    Interledger enables the seamless exchange of value across different payment networks.

    -

    Traditional payment networks operate independently from each other. Sending value is easy only if the sender and -recipient have accounts on the same network, but it can be slow and expensive if they have accounts on different -networks. Interledger makes it easy to transact in whatever currency or payment network you choose because it is -not tied to any one company, blockchain, or currency. Using Interledger, you can easily send XRP to someone who wants +

    Traditional payment networks operate independently from each other. Sending value is easy only if the sender and +recipient have accounts on the same network, but it can be slow and expensive if they have accounts on different +networks. Interledger makes it easy to transact in whatever currency or payment network you choose, because Interledger is +not tied to any one company, blockchain, or currency. Using Interledger, you can send XRP to someone who wants to receive ETH, or you can send USD to someone who wants to receive EUR.

    What is Interledger?

    -

    Interledger is a network of computers that enables the sending of value across independent payment networks. -Similar to how the Internet routes packets information, Interledger routes packets of value. Computers on the Interledger +

    Interledger is a network of computers that enables the sending of value across independent payment networks. +Similar to how the Internet routes packets information, Interledger routes packets of value. Computers on the Interledger network are called nodes. Nodes can take one or more of the following roles:

    ILP-nodes

    Note: The terms Router and Connector are used interchangeably throughout the documentation.

    How does Interledger work?

    -

    At the core of Interledger is the Interledger Protocol (ILPv4) , -which is a set of rules that define how nodes should send value over the Interledger network. ILPv4 is a request/response -protocol, where requests and responses are ILPv4 packets. Typically, a single aggregate -payment from source to destination is split into multiple ILP packets. Each ILP packet contains transaction -information, which is private to the nodes participating in the transaction. ILPv4 has three packet types - Prepare, Fulfill, and Reject.

    +

    At the core of Interledger is the Interledger Protocol (ILPv4) , +which is a set of rules that define how nodes should send value over the Interledger network. ILPv4 is a request/response +protocol, where requests and responses are ILPv4 packets. Typically, a single aggregate +payment from source to destination is split into multiple ILP packets. Each ILP packet contains transaction +information, which is private to the nodes participating in the transaction. ILPv4 has three packet types - Prepare, Fulfill, and Reject.

    ILP-packets

    -

    The sender constructs and sends a Prepare packet as a request to the connecting router. The routers forward the packet -until it reaches the receiver. The receiver then accepts or rejects the packet by sending a Fulfill packet or a -Reject packet as the response. The routers relay the response from the receiver back to the sender. When the sender -receives a Fulfill packet, it knows that the packet was successfully delivered to the receiver. The sender then -continues to send the remaining Prepare packets until the value is fully transferred.

    -

    Interledger does not rely on any single payment network for processing value transactions. You can connect with -an ILPv4 router at any time to join the network. Furthermore, Interledger sends value as tiny data packets, +

    The sender constructs and sends a Prepare packet as a request to the connecting router. The routers forward the packet +until it reaches the receiver. The receiver then accepts or rejects the packet by sending a Fulfill packet or a +Reject packet as the response. The routers relay the response from the receiver back to the sender. When the sender +receives a Fulfill packet, it knows that the packet was successfully delivered to the receiver. The sender then +continues to send the remaining Prepare packets until the value is fully transferred.

    +

    Interledger does not rely on any single payment network for processing value transactions. You can connect with +an ILPv4 router at any time to join the network. Furthermore, Interledger sends value as tiny data packets, which makes transactions fast, secure, and inexpensive.

    Tip: For a deeper dive into how ILPv4 works, see ILPv4 Flow .

    Building on Interledger

    -

    Build payments into your apps or other protocols without tying yourself to a specific currency or payment network. -Create accounts on our demo ledgers and start sending Interledger payments with the client libraries. +

    Build payments into your apps or other protocols without tying yourself to a specific currency or payment network. +Create accounts on our demo ledgers and start sending Interledger payments with the client libraries. Check out Getting Started for more details.

    Interledger architecture

    -

    Interledger enables payments across many different types of ledgers. The Interledger Protocol Suite is comprised of -four layers: the Application, Transport, Interledger, and Link protocols. To learn more, see the Interledger +

    Interledger enables payments across many different types of ledgers. The Interledger Protocol Suite is comprised of +four layers: the Application, Transport, Interledger, and Link protocols. To learn more, see the Interledger Architecture Overview .

    Protocol specs and APIs

    -

    To dive into the technical specs, see the Interledger RFCs . Also see the documentation for the components of the +

    To dive into the technical specs, see the Interledger RFCs . Also see the documentation for the components of the reference implementation.

    Security

    -

    Interledger enables secure, multi-hop payments using Hashed Timelock Agreements . -As of Interledger version 4, these conditions are not enforced by the ledger, as it would be too costly and slow. -Instead, participants in the network use these hashlocks to perform accounting with their peers. This accounting is -used to determine in-flight balances, which are periodically settled with on-ledger transfers or payment channel claims. -For a detailed description of how this works, read the +

    Interledger enables secure, multi-hop payments using Hashed Timelock Agreements . +As of Interledger version 4, these conditions are not enforced by the ledger, as it would be too costly and slow. +Instead, participants in the network use these hashlocks to perform accounting with their peers. This accounting is +used to determine in-flight balances, which are periodically settled with on-ledger transfers or payment channel claims. +For a detailed description of how this works, read the Peering, Clearing, and Settlement documentation.

    Next: Getting Started

    diff --git a/rfcs/0001-interledger-architecture/index.html b/rfcs/0001-interledger-architecture/index.html index bc20536..f325cf8 100644 --- a/rfcs/0001-interledger-architecture/index.html +++ b/rfcs/0001-interledger-architecture/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Interledger Architecture -draft: 6

    -
    -

    Interledger Architecture

    +

    Interledger Architecture

    Interledger provides for secure payments across multiple assets on different ledgers. The architecture consists of a conceptual model for interledger payments, a mechanism for securing payments, and a suite of protocols that implement this design.

    The Interledger Protocol (ILP) is the core of the Interledger protocol suite. Colloquially, the whole Interledger stack is sometimes referred to as "ILP". Technically, however, the Interledger Protocol is only one layer in the stack.

    Interledger is not a blockchain, a token, nor a central service. Interledger is a standard way of bridging financial systems. The Interledger architecture is heavily inspired by the Internet architecture described in RFC 1122 , RFC 1123 and RFC 1009 .

    @@ -126,7 +122,6 @@

    Protocol Layers

    Aside: Not pictured in the diagram are configuration protocols including IL-RFC-31: Interledger Dynamic Configuration Protocol and Route Broadcasting Protocol. These protocols are built on top of the Interledger Protocol layer and support it, but are not considered to be transport or application-layer protocols.

    -

    The following sections describe the general functions of each layer in the protocol suite. For an alternate explanation with detailed depictions of the protocols' data formats, see IL-RFC-33: Relationship Between Protocols.

    Ledger Protocols

    The Interledger protocol suite sits atop a level which we call "ledger protocols". This level represents the existing money systems that Interledger connects. Even though they are not strictly part of the Interledger protocol suite, they are an indispensable part of the Interledger model.

    @@ -136,7 +131,7 @@

    Ledger Protocols

    Settlement for one account MUST NOT depend on the status of any other accounts.

    If settlement of one account in the Interledger is contingent on the status of another account or relationship, this could create the threat of cascading risks and failures, similar to problems that occurred during the 2008 global financial crisis. Nodes can protect themselves from such risks by choosing to use settlement technologies such as collateralized payment channels where available. These types of arrangements can provide high-speed settlement without a risk that the other side may not pay. For more information on different ledger types and settlement strategies, see IL-RFC-22: Hashed Timelock Agreements.

    Nodes can also choose never to settle their obligations. This configuration may be useful when several nodes representing different pieces of software or devices are all owned by the same person or business, and all their traffic with the outside world goes through a single "home router" connector. This is the model of moneyd , one of the current implementations of Interledger.

    -

    Most implementations of Interledger use a plugin architecture to settle obligations automatically while abstracting the differences between different ledger layer protocols. For an example of this, see IL-RFC-24: JavaScript Ledger Plugin Interface version 2.

    +

    Implementations of Interledger are recommended to use settlement engines as defined in IL-RFC-00: Settlement Engines to settle obligations automatically while abstracting the differences between different settlement systems and ledgers.

    Peers in the Interledger Protocol require a way to communicate securely with one another. Since most existing ledgers do not implement two-way authenticated communication between account holders, we need Link protocols to provide this functionality. Link protocols generally convey two types of information:

    -
    -

    deprecated: true

    -

    Spec has been moved to https://github.com/rfcs/crypto-conditions/

    +

    Spec has been moved to https://github.com/rfcs/crypto-conditions/

    @@ -115,8 +113,7 @@

    deprecated: true

    On This Page

    diff --git a/rfcs/0003-interledger-protocol/index.html b/rfcs/0003-interledger-protocol/index.html index 42cd72a..22a9449 100644 --- a/rfcs/0003-interledger-protocol/index.html +++ b/rfcs/0003-interledger-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: The Interledger Protocol (ILP) -draft: FINAL -deprecated: 0027-interledger-protocol-4

    -
    -

    Interledger Protocol (ILP)

    +

    Interledger Protocol (ILP)

    Preface

    This document specifies the Interledger Protocol (ILP). It draws heavily from the definition of the Internet Protocol (IP) defined in RFC 791 . The interledger protocol is the culmination of more than a decade of research in decentralized payment protocols. This work was started in 2004 by Ryan Fugger, augmented by the development of Bitcoin in 2008 and has involved numerous contributors since then.

    Introduction

    diff --git a/rfcs/0004-ledger-plugin-interface/index.html b/rfcs/0004-ledger-plugin-interface/index.html index a56f619..798c394 100644 --- a/rfcs/0004-ledger-plugin-interface/index.html +++ b/rfcs/0004-ledger-plugin-interface/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: The Javascript Ledger Plugin Interface -deprecated: 0024-ledger-plugin-interface-2 -draft: FINAL

    -
    -

    Javascript Ledger Plugin Interface

    +

    Javascript Ledger Plugin Interface

    The Interledger Protocol is a protocol suite for connecting blockchains and other ledgers.

    This spec defines a Javascript ledger abstraction interface for Interledger clients and connectors to communicate and route payments across different ledger protocols. While the exact methods and events defined here are specific to the Javascript implementation, this may be used as a guide for ledger abstractions in other languages.

    To send ILP payments through a new ledger, one must implement a ledger plugin that exposes the interface defined below. This can be used with the ILP Client and Connector and should work out of the box.

    diff --git a/rfcs/0005-optimistic-transport-protocol/index.html b/rfcs/0005-optimistic-transport-protocol/index.html index c080fce..9762779 100644 --- a/rfcs/0005-optimistic-transport-protocol/index.html +++ b/rfcs/0005-optimistic-transport-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,30 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    deprecated: true

    -

    What was formerly known as the "Optimistic Transport Protocol" has been removed from the standard Interledger Protocol stack.

    +

    What was formerly known as the "Optimistic Transport Protocol" has been removed from the standard Interledger Protocol stack.

    @@ -115,8 +113,7 @@

    deprecated: true

    On This Page

    diff --git a/rfcs/0006-universal-transport-protocol/index.html b/rfcs/0006-universal-transport-protocol/index.html index 60abdff..b11dd3d 100644 --- a/rfcs/0006-universal-transport-protocol/index.html +++ b/rfcs/0006-universal-transport-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,30 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    deprecated: true

    -

    What was formerly known as the "Universal Transport Protocol" has been merged into the Interledger Protocol.

    +

    What was formerly known as the "Universal Transport Protocol" has been merged into the Interledger Protocol.

    @@ -115,8 +113,7 @@

    deprecated: true

    On This Page

    diff --git a/rfcs/0007-atomic-transport-protocol/index.html b/rfcs/0007-atomic-transport-protocol/index.html index 0eec682..cf1e3f5 100644 --- a/rfcs/0007-atomic-transport-protocol/index.html +++ b/rfcs/0007-atomic-transport-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,30 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    deprecated: true

    -

    What was formerly known as the "Atomic Transport Protocol" has been removed from the standard Interledger Protocol stack.

    +

    What was formerly known as the "Atomic Transport Protocol" has been removed from the standard Interledger Protocol stack.

    The Atomic mode outlined in the Interledger whitepaper may be used within segments of an Interledger payment path amongst groups of connectors and ledgers that support the required functionality. In an open system of interconnected ledgers, it seems unlikely that all parties in a payment path would have commonly trusted entities between them that could serve as notaries. The protocols used within specific groups need not be standardized because the failure to select commonly trusted notaries would prevent interoperability anyway.

    @@ -116,8 +114,7 @@

    deprecated: true

    On This Page

    diff --git a/rfcs/0008-interledger-quoting-protocol/index.html b/rfcs/0008-interledger-quoting-protocol/index.html index 2d4aa05..2c12b00 100644 --- a/rfcs/0008-interledger-quoting-protocol/index.html +++ b/rfcs/0008-interledger-quoting-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: The Interledger Quoting Protocol (ILQP) -draft: FINAL -deprecated: true

    -
    -

    Interledger Quoting Protocol (ILQP)

    +

    Interledger Quoting Protocol (ILQP)

    The Interledger Quoting Protocol is a method of getting quote information from a Connector in preparation for arranging transfers across two ledgers. The quote returned by a Connector is non-binding, but provides a basis for choosing which connectors to use.

    There are two consumers of the ILQP: sending clients, and other connectors.

    Background and Terminology

    diff --git a/rfcs/0009-simple-payment-setup-protocol/index.html b/rfcs/0009-simple-payment-setup-protocol/index.html index ba1bc41..1aa3f1e 100644 --- a/rfcs/0009-simple-payment-setup-protocol/index.html +++ b/rfcs/0009-simple-payment-setup-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: The Simple Payment Setup Protocol (SPSP) -draft: 8

    -
    -

    Simple Payment Setup Protocol (SPSP)

    +

    Simple Payment Setup Protocol (SPSP)

    Preface

    This document describes the Simple Payment Setup Protocol (SPSP), a basic protocol for exchanging payment information between payee and payer to facilitate payment over Interledger. SPSP uses the STREAM transport protocol for condition generation and data encoding.

    Introduction

    @@ -165,7 +161,7 @@
    Response Headers
    Content-Type -MUST be application/spsp4+json to indicates the response is encoded as JSON and that the ILP payment should be sent via STREAM. +MUST be application/spsp4+json to indicate the response is encoded as JSON and that the ILP payment should be sent via STREAM. Cache-Control @@ -254,7 +250,7 @@

    Simple push payment

    4. If the SPSP Client reaches their sendMax, they end the stream and the connection. If the SPSP Server reaches their receiveMax, they will end the stream and the connection.

    Simple data transmission

    Given the open STREAM connection, either the SPSP Client or the Server begins sending ILP packets of data.

    -

    The size of the data SHOULD be defined setting STREAM maxOffset. Each application built on STREAM and using the principle of data transmission MAY define more restrictive requirements.

    +

    The size of the data SHOULD be defined by setting STREAM maxOffset. Each application built on STREAM and using the principle of data transmission MAY define more restrictive requirements.


    All STREAM parameters - destinationAccount, sharedSecret, sendMax, receiveMax, maxOffset - are defined in STREAM's frame encoding.

    Note that the SPSP Client and Server can send as many STREAM payments and data as they want using the same query response. If the STREAM connection is closed the Client SHOULD attempt to reconnect with the same parameters or it SHOULD query the Server again for new connection parameters once the time indicated in the Cache-Control header has passed.

    diff --git a/rfcs/0010-connector-to-connector-protocol/index.html b/rfcs/0010-connector-to-connector-protocol/index.html index 739eb1d..1ef944e 100644 --- a/rfcs/0010-connector-to-connector-protocol/index.html +++ b/rfcs/0010-connector-to-connector-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: The Connector to Connector protocol -draft: FINAL -deprecated: true

    -
    -

    A well-defined standard for automatic discovery of peers has not been taken up in the network. As such this spec has been deprecated to avoid confusion.

    +

    A well-defined standard for automatic discovery of peers has not been taken up in the network. As such this spec has been deprecated to avoid confusion.

    Connector to Connector protocol

    Discovery

    Connectors discover their peers through out-of-band communication, or by looking at https://connector.land and contacting the administrator of another connector.

    diff --git a/rfcs/0011-interledger-payment-request/index.html b/rfcs/0011-interledger-payment-request/index.html index 6a6b760..b92d643 100644 --- a/rfcs/0011-interledger-payment-request/index.html +++ b/rfcs/0011-interledger-payment-request/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Interledger Payment Requests (IPR) -draft: FINAL -deprecated: true

    -
    -

    The Interledger network, since adopting v4 of the protocol, has moved to a model where individual payments are almost always broken up into multiple smaller packets making it impractical to use IPR. As such this spec has been deprecated.

    +

    The Interledger network, since adopting v4 of the protocol, has moved to a model where individual payments are almost always broken up into multiple smaller packets making it impractical to use IPR. As such this spec has been deprecated.

    Interledger Payment Request (IPR)

    The Interledger Payment Request (IPR) transport protocol is an end-to-end protocol in which the receiver of an Interledger payment first communicates a request for payment to the sender. This document also recommends a method for receivers to generate payment requests such that they can verify incoming payments without storing all outstanding requests.

    Introduction

    diff --git a/rfcs/0012-five-bells-ledger-api/index.html b/rfcs/0012-five-bells-ledger-api/index.html index 688747d..5fe6f40 100644 --- a/rfcs/0012-five-bells-ledger-api/index.html +++ b/rfcs/0012-five-bells-ledger-api/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Five Bells Ledger API -draft: FINAL -deprecated: 0024-ledger-plugin-interface-2

    -
    -

    Since ILPv4 it has been unneccassry to standardize the interface to ledger directly. Settlement functions for a specific ledger are now dealt with in plugins or similar constructs.

    +

    Since ILPv4 it has been unneccassry to standardize the interface to ledger directly. Settlement functions for a specific ledger are now dealt with in plugins or similar constructs.

    Five Bells Ledger API

    The Five Bells Ledger API is a RESTful API served by a ledger (or an adapter), which provides functionality necessary for ILP compatibility. The Five Bells Ledger API provides a single standard API that a ledger can serve in order to ease integration with other Interledger Protocol components and applications, such as the reference ILP Client and ILP Connector. This is not the only way a ledger can become ILP-enabled, but it provides a template that minimizes the integration work necessary for compatibility with ILP software.

    Overview

    diff --git a/rfcs/0014-paid-http-apis/index.html b/rfcs/0014-paid-http-apis/index.html index f62ee91..ad5ce54 100644 --- a/rfcs/0014-paid-http-apis/index.html +++ b/rfcs/0014-paid-http-apis/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Paid HTTP APIs -draft: 5

    -
    -

    Paid HTTP APIs

    +

    Paid HTTP APIs

    A standard for paid HTTP requests.

    diff --git a/rfcs/0015-ilp-addresses/index.html b/rfcs/0015-ilp-addresses/index.html index dc8dd8d..6829681 100644 --- a/rfcs/0015-ilp-addresses/index.html +++ b/rfcs/0015-ilp-addresses/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: ILP Addresses -draft: 6

    -
    -

    ILP Addresses - v2.0.0

    +

    ILP Addresses - v2.0.0

    ILP addresses provide a way to route ILP packets to their intended destination through a series of hops, including any number of ILP Connectors. (This happens after address lookup using a higher-level protocol such as SPSP.) Addresses are not meant to be user-facing, but allow several ASCII characters for easy debugging.

    Routing

    Connectors maintain a routing table, mapping all of their peer connectors to one or more ILP addresses and address prefixes.

    diff --git a/rfcs/0016-pre-shared-key/index.html b/rfcs/0016-pre-shared-key/index.html index 7b8fd6f..1becf88 100644 --- a/rfcs/0016-pre-shared-key/index.html +++ b/rfcs/0016-pre-shared-key/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: The Pre-Shared Key Transport Protocol (PSK) -draft: FINAL -deprecated: 0025-pre-shared-key-2

    -
    -

    Pre-Shared Key Transport Protocol (PSK)

    +

    Pre-Shared Key Transport Protocol (PSK)

    The Pre-Shared Key (PSK) protocol is an end-to-end transport protocol, used by the sender and receiver of an ILP payment to decide on a condition and fulfillment for a payment. By default, the protocol also encrypts any additional data sent along with the payment, using AES-256-GCM . The full ILP payment is authenticated through an HMAC-SHA-256 which is used to generate the fulfillment of a PSK payment. The entirety of the PSK data, including public headers, encrypted private headers, and encrypted private data, is encoded into an octet-stream that forms the data portion of the ILP Packet . The PSK data is authenticated via AES-256-GCM in addition to the HMAC-SHA-256 which authenticates the full ILP payment.

    Pseudocode for this protocol can be read at the bottom of this spec.

    As the name suggests, PSK relies on a pre-shared secret key. In application-layer protocols like SPSP , the receiver generates the shared key and shares it with the sender over an end-to-end secure communication channel such as HTTPS. Alternatively, a Diffie-Hellman key exchange could be used directly to generate the shared secret key.

    diff --git a/rfcs/0017-ledger-requirements/index.html b/rfcs/0017-ledger-requirements/index.html index 94d3fdd..b521283 100644 --- a/rfcs/0017-ledger-requirements/index.html +++ b/rfcs/0017-ledger-requirements/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Ledger Layer Requirements -draft: FINAL -deprecated: 0027-interledger-protocol-4

    -
    -

    Since ILPv4 the protocol has placed no specific requirements on underlying settlement ledgers.

    +

    Since ILPv4 the protocol has placed no specific requirements on underlying settlement ledgers.

    Ledger Layer Requirements

    Introduction

    Ledger protocols are responsible for executing the individual transfers that constitute an Interledger transaction. They are also used by connectors to communicate with each other. Ledger layer protocols can differ widely depending on the type of ledger. For example, a central ledger will likely use a very different protocol than a blockchain, but for interledger purposes they are both ledgers and may be accessed using the same primitive operations as defined in this architecture.

    diff --git a/rfcs/0018-connector-risk-mitigations/index.html b/rfcs/0018-connector-risk-mitigations/index.html index 5811c51..623c99b 100644 --- a/rfcs/0018-connector-risk-mitigations/index.html +++ b/rfcs/0018-connector-risk-mitigations/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Connector Risk Mitigations -draft: 3

    -
    -

    Connector Risk Mitigations

    +

    Connector Risk Mitigations

    Interledger connectors take some risk in exchange for the revenue they generate from facilitating payments. There are also scenarios in which connectors will facilitate payments without taking margin and need to account for greater risk. This document outlines the major categories of risks connectors face and suggests some possible mitigations. This is a work in progress and is not an exhaustive list.

    Monitoring is a must! Even connectors that implement all of these strategies should monitor their transaction patterns and use warnings or kill switches to avoid losing money in the case of an unexpected attack.

    Fulfillment Failure

    diff --git a/rfcs/0019-glossary/index.html b/rfcs/0019-glossary/index.html index bc1826d..ae0786c 100644 --- a/rfcs/0019-glossary/index.html +++ b/rfcs/0019-glossary/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Glossary -draft: 3

    -
    -

    Glossary

    +

    Glossary

    Account

    An administrative item that acts as a bucket of assets on a ledger.

    Application Layer

    diff --git a/rfcs/0020-explain-like-im-five/index.html b/rfcs/0020-explain-like-im-five/index.html index 88ed688..3c7aef9 100644 --- a/rfcs/0020-explain-like-im-five/index.html +++ b/rfcs/0020-explain-like-im-five/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Interledger Protocol - Explain Like I'm Five (ELI5) -draft: FINAL -deprecated: true

    -
    -

    This document describes concepts from older versions of ILP and is therefor mis-leading. It has been deprecated to avoid confusion.

    +

    This document describes concepts from older versions of ILP and is therefor mis-leading. It has been deprecated to avoid confusion.

    Interledger Protocol: Explain Like I'm Five (ELI5)

    Introduction

    A protocol is set of rules about how to do something.

    diff --git a/rfcs/0021-plugin-rpc-api/index.html b/rfcs/0021-plugin-rpc-api/index.html index 84cb3d0..3be8479 100644 --- a/rfcs/0021-plugin-rpc-api/index.html +++ b/rfcs/0021-plugin-rpc-api/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Plugin RPC API -draft: 3 -deprecated: 0023-bilateral-transfer-protocol

    -
    -

    Plugin RPC API

    +

    Plugin RPC API

    This has been superseded by the IL-RFC 23: Bilateral Transfer Protocol (BTP).

    Description

    diff --git a/rfcs/0022-hashed-timelock-agreements/index.html b/rfcs/0022-hashed-timelock-agreements/index.html index 7ba8d13..5aa0891 100644 --- a/rfcs/0022-hashed-timelock-agreements/index.html +++ b/rfcs/0022-hashed-timelock-agreements/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Hashed-Timelock Agreements (HTLAs) -draft: 2

    -
    -

    Hashed-Timelock Agreements (HTLAs)

    +

    Hashed-Timelock Agreements (HTLAs)

    Generalization of Hashed-Timelock Contracts (HTLCs) used to secure Interledger payments.

    diff --git a/rfcs/0023-bilateral-transfer-protocol/index.html b/rfcs/0023-bilateral-transfer-protocol/index.html index 7f43d1b..2c1612b 100644 --- a/rfcs/0023-bilateral-transfer-protocol/index.html +++ b/rfcs/0023-bilateral-transfer-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Bilateral Transfer Protocol 2.0 (BTP/2.0) -draft: 8

    -
    -

    Bilateral Transfer Protocol 2.0 (BTP/2.0)

    +

    Bilateral Transfer Protocol 2.0 (BTP/2.0)

    Preface

    This document describes version 2.0 of the Bilateral Transfer Protocol (BTP), a request/response protocol for bilateral WebSocket links between Interledger connectors.

    diff --git a/rfcs/0024-ledger-plugin-interface-2/index.html b/rfcs/0024-ledger-plugin-interface-2/index.html index fbee341..70efbd2 100644 --- a/rfcs/0024-ledger-plugin-interface-2/index.html +++ b/rfcs/0024-ledger-plugin-interface-2/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: The Javascript Ledger Plugin Interface Version 2 -draft: 3

    -
    -

    Javascript Ledger Plugin Interface Version 2

    +

    Javascript Ledger Plugin Interface Version 2

    The Interledger Protocol is a protocol suite for making payments across multiple different settlement systems.

    This spec defines a JavaScript ledger abstraction interface for Interledger clients and connectors to communicate and route payments across different ledger protocols. While the exact methods and events defined here are specific to the JavaScript implementation, this may be used as a guide for ledger abstractions in other languages.

    To send ILP payments through a new ledger, one must implement a ledger plugin that exposes the interface defined below. This can be used with the ILP Client and Connector and should work out of the box.

    diff --git a/rfcs/0025-pre-shared-key-2/index.html b/rfcs/0025-pre-shared-key-2/index.html index b1c2a20..b1fdd18 100644 --- a/rfcs/0025-pre-shared-key-2/index.html +++ b/rfcs/0025-pre-shared-key-2/index.html @@ -15,7 +15,7 @@ - + @@ -81,33 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Pre-Shared Key V2 (PSKv2) Transport Protocol -draft: FINAL -deprecated: 0029-stream

    -
    -

    Pre-Shared Key V2 (PSKv2) Transport Protocol

    +

    Pre-Shared Key V2 (PSKv2) Transport Protocol

    Version 2 of the Pre-Shared Key Transport Protocol is a request/response protocol built on ILP that handles condition generation and data encryption and authentication. It can be used for individual payments or messages, end-to-end quoting, and as a building block for streaming and chunked payments use cases.

    Table of Contents

    -
    -

    title: Payment Pointers -draft: 2

    -
    -

    Payment Pointers and Payment Setup Protocols

    +

    Payment Pointers and Payment Setup Protocols

    Abstract

    Payment pointers are a standardized identifier for accounts that are able to receive payments. In the same way that an email address provides an identifier for a mailbox in the email ecosystem a payment pointer is used by an account holder to share the details of their account with anyone that wishes to make a payment to them.

    A payment pointer can be resolved to an "https" URL that provides the location of a payment setup service endpoint at which a sender can initiate a payment to the receiver.

    diff --git a/rfcs/0027-interledger-protocol-4/index.html b/rfcs/0027-interledger-protocol-4/index.html index 794d56c..e216699 100644 --- a/rfcs/0027-interledger-protocol-4/index.html +++ b/rfcs/0027-interledger-protocol-4/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Interledger Protocol V4 (ILPv4) -draft: 9

    -
    -

    Interledger Protocol V4

    +

    Interledger Protocol V4

    Interledger is a protocol for sending packets of money across different payment networks or ledgers. ILPv4 is a simplification of previous versions of the protocol that is optimized for routing large volumes of low-value packets, also known as "penny switching". ILPv4 can be integrated with any type of ledger, including those not built for interoperability, and it is designed to be used with a variety of higher-level protocols that implement features ranging from quoting to sending larger amounts of value with chunked payments.

    Overview

    Design Goals

    diff --git a/rfcs/0028-web-monetization/index.html b/rfcs/0028-web-monetization/index.html index a9c15ee..f9d7d21 100644 --- a/rfcs/0028-web-monetization/index.html +++ b/rfcs/0028-web-monetization/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Web Monetization -draft: 9

    -
    -

    Web Monetization

    +

    Web Monetization

    Web Monetization is a proposed browser API that uses ILP micropayments to monetize a site. It can be provided through a polyfill or an extension, but the goal is to eventually implement it directly into the user's browser.

    Overview

    Terminology

    @@ -117,18 +113,18 @@

    Terminology

    Design Goals

      -
    • Should be extremely simple for webmasters to use in their site.
    • -
    • Backend infrastructure should be optional; should be usable on a static site.
    • +
    • Should be extremely simple for webmasters to use in their sites.
    • +
    • Back-end infrastructure should be optional, and should be usable on a static site.
    • Should not require any interaction with the user.
    • -
    • Should give user's browser a choice about how much to spend, and which sites to support.
    • +
    • Should give the user's browser a choice about how much to spend, and which sites to support.
    • Should give advanced webmasters a way to associate payments with their users, in order to unlock premium experiences.
    • Should pay continuously as the user consumes content.
    • Should be compatible with existing application and transport protocols on Interledger.

    Relation to Other Protocols

    -

    The W3C have published two payments related APIs for browsers, the Payment Request API and the Payment Handler API.

    -

    The reason this API is not using the Payment Request API directly is that Web Monetization is intended for continuous payments rather than discrete payments. It is also not designed to have any user interaction. It is intended to provide a direct alternative to advertisements, rather than an alternative to existing checkout methods.

    -

    Some changes will be required to Payment Request and Payment Handler to fully support Web Monetization in future, however this API brings the necessary features to the browser in a way that allows for tighter integration in the future.

    +

    The W3C has published two payments-related APIs for browsers, the Payment Request API and the Payment Handler API.

    +

    The reason this Web Monetization API is not using the Payment Request API directly is that Web Monetization is intended for continuous payments rather than discrete payments. It is also not designed to have any user interaction. It is intended to provide a direct alternative to advertisements, rather than an alternative to existing checkout methods.

    +

    Some changes will be required to Payment Request and Payment Handler to fully support Web Monetization in the future, however this API brings the necessary features to the browser in a way that allows for tighter integration in the future.

    With advertisements, the user's browser decides whether to display the ads and the user decides whether to engage with the ads. With Web Monetization, the user's provider decides whether to pay the site and, if so, how much to pay.

    Web Monetization makes use of SPSP on top of ILP/STREAM to provide a high-level way to send money and data, while still providing tremendous flexibility.

    Flow

    @@ -138,10 +134,10 @@

    Flow

  • The user's browser sets document.monetization to an Object which implements EventTarget .
  • The user's browser sets document.monetization.state to pending.
  • The user's browser observes the <head> and looks for a Web Monetization <meta name="monetization"> tag (specified below).
  • -
  • There MUST be only one <meta name="monetization"> tag at any given time
  • +
  • There MUST be only one <meta name="monetization"> tag at any given time.
  • The <meta> Tags Set MUST be in the <head> of the document.
  • -

    The <meta> Tags Set MUST be in the top level window (i.e. not inside an iframe)

    +

    The <meta> Tags Set MUST be in the top level window (i.e., not inside an iframe)

  • Below is repeated for every semantically (consider meta.content = meta.content) new <meta name="monetization"> tag seen for the life of the page:

    @@ -164,10 +160,10 @@

    Flow

  • Payment continues for the lifetime of a given meta tag (or semantically equivalent)
      -
    • The provider MAY decide to stop/start payment at any time, e.g. if the user is idle, backgrounds the page, or instructs the browser to do so.
    • +
    • The provider MAY decide to stop/start payment at any time, such as if the user is idle, backgrounds the page, or instructs the browser to do so.
    • If the STREAM connection is severed, the provider will redo the SPSP query to the same Payment Setup Endpoint as before with the same Monetization ID. The user's browser MUST NOT re-process the <meta> Tags Set.
    • Each time a packet with a nonzero amount is fulfilled, the provider notifies the browser, and the browser emits an event on document.monetization. The event's type is monetizationprogress. The event has a detail field containing the details of the packet (specified below). If there are no listeners the event MAY NOT be emitted.
    • -
    • When a stream is closed the document.monetization.state MUST be set back to 'pending'
    • +
    • When a stream is closed, the document.monetization.state MUST be set back to 'pending'
  • @@ -191,7 +187,7 @@

    Payment Handler Flow

    Specification

    Meta Tags Set

    The <meta> Tags Set MUST be in the document's <head>. The <meta> Tags Set allows the user's browser to pay a site via Web Monetization by specifying a Payment Pointer or SPSP url.

    -

    The name of the <meta> tags all start with monetization. The table below lists the different names and the formats of their content. Currently there is only one tag, but this may be expanded in the future so care MUST be given to altering a Tags Set such that <meta name="monetization"> is the last one modified.

    +

    The name of the <meta> tags all start with monetization. The table below lists the different name values and the formats of their content. Currently there is only one tag, but this may be expanded in the future so care MUST be given to altering a Tags Set such that <meta name="monetization"> is the last one modified.

    diff --git a/rfcs/0029-stream/index.html b/rfcs/0029-stream/index.html index dd7784f..f86bf6b 100644 --- a/rfcs/0029-stream/index.html +++ b/rfcs/0029-stream/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: STREAM - A Multiplexed Money and Data Transport for ILP -draft: 7

    -
    -

    STREAM: A Multiplexed Money and Data Transport for ILP

    +

    STREAM: A Multiplexed Money and Data Transport for ILP

    Abstract

    This document specifies the STREAM Interledger Transport protocol, which provides for reliably sending money and data over ILP. STREAM is designed to be used in applications that involve streaming payments or data, as well as those that require sending larger discrete payments and messages. A virtual connection is established between a "client" and a "server" and can be used to send authenticated ILP packets between them.

    Table of Contents:

    @@ -243,7 +239,8 @@

    4.3. Client Ad

    Either endpoint MAY change their ILP address at any point during a connection by sending a ConnectionNewAddress frame. To ensure the new address is received and acknowledged, implementations MAY choose to send these frames only in ILP Prepare packets.

    Implementations SHOULD wait for a valid response (encrypted with the same shared secret) from the new address to validate the new path. STREAM uses the authenticated request/response packets in lieu of QUIC's explicit Path Validation . Implementations SHOULD refrain from sending large numbers of packets or large amounts of data to a new ILP address before validating the path to avoid being tricked into participating in a Denial of Service (DoS) attack on a third-party endpoint.

    4.3.1. Connection Asset Details

    -

    Each endpoint MAY expose their asset details by sending a ConnectionAssetDetails frame.

    +

    Each endpoint MAY expose their asset details by sending a ConnectionAssetDetails frame. This frame is optional because some use-cases do not require it.

    +

    Asset details exposed by this frame MUST not change during the lifetime of a Connection.

    4.4. Streams

    Once a connection is established, either endpoint can create streams to send money or data.

    4.4.1. Opening New Streams

    @@ -767,6 +764,7 @@

    5.3.14. ConnectionAssetDetails<

    +

    Asset details exposed by this frame MUST NOT change during the lifetime of a Connection.

    5.4. Error Codes

    Error codes are sent in StreamClose and ConnectionClose frames to indicate what caused the stream or connection to be closed.

    diff --git a/rfcs/0030-notes-on-oer-encoding/index.html b/rfcs/0030-notes-on-oer-encoding/index.html index 07dfb8f..13152d2 100644 --- a/rfcs/0030-notes-on-oer-encoding/index.html +++ b/rfcs/0030-notes-on-oer-encoding/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Notes on OER Encoding -draft: 3

    -
    -

    Introduction

    +

    Introduction

    The Interledger stack consists of a collection of different protocols. In order to keep some consistency between these separate, but related protocols, the Interledger team has decided to use some common choices for encoding formats across at least those protocols we control.

    These choices will not be applicable for all protocols in the Interledger ecosystem. For example, we used a binary encoding while a text-based encoding may be more suitable. We used an encoding with a fixed schema, while a schema-less encoding may be easier to extend by third-parties.

    Nevertheless, designers of new Interledger protocols SHOULD consider staying within the boundaries set by this document. Deviations from these norms should be carefully considered. This is intended to minimize the load on implementors who should be able to write components such as date encoding and decoding once and reuse it across protocols.

    diff --git a/rfcs/0031-dynamic-configuration-protocol/index.html b/rfcs/0031-dynamic-configuration-protocol/index.html index de468a9..ff2fd09 100644 --- a/rfcs/0031-dynamic-configuration-protocol/index.html +++ b/rfcs/0031-dynamic-configuration-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Interledger Dynamic Configuration Protocol -draft: 3

    -
    -

    Interledger Dynamic Configuration Protocol (ILDCP) v1

    +

    Interledger Dynamic Configuration Protocol (ILDCP) v1

    Prerequisites

    This specification assumes the reader is familiar with the following documents:

    -
    -

    title: Peering, Clearing and Settling -draft: 3

    -
    -

    Peering, Clearing and Settling

    +

    Peering, Clearing and Settling

    The Interledger network is a graph of nodes (connectors) that have peered with one another by establishing a means of exchanging ILP packets and a means of paying one another for the successful forwarding and delivery of the packets.

    Further details on the ILP Protocol can be found in the specification.

    Accounts and Balances

    diff --git a/rfcs/0033-relationship-between-protocols/index.html b/rfcs/0033-relationship-between-protocols/index.html index b5f3389..b53f885 100644 --- a/rfcs/0033-relationship-between-protocols/index.html +++ b/rfcs/0033-relationship-between-protocols/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: Relationship between Protocols -draft: 2

    -
    -

    Relationship between Protocols

    +

    Relationship between Protocols

    Prerequisites

    This document assumes the reader is familiar with the following document:

    -
    -

    title: Interledger Node - Requirements Specification -draft: 1

    -
    -

    Interledger Node - Requirements Specification

    +

    Interledger Node - Requirements Specification

    This document defines the basic functions of an ILP node.

    An ILP node is a system that performs the necessary functions to route ILP packets between peers on the open Interledger network.

    The document is specific to the requirements of a "core" node that only operates at the ILP layer and does not concern itself with functionality in the higher protocol layers (e.g. STREAM, PSK2, etc). In other words, this document describes the functions of a node that is neither a sender or receiver of ILP packets but rather a "middlebox", to borrow some Internet terminology.

    diff --git a/rfcs/0035-ilp-over-http/index.html b/rfcs/0035-ilp-over-http/index.html index fbe9b7e..d8f56d2 100644 --- a/rfcs/0035-ilp-over-http/index.html +++ b/rfcs/0035-ilp-over-http/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: ILP Over HTTP -draft: 2

    -
    -

    ILP Over HTTP

    +

    ILP Over HTTP

    A bilateral communication protocol for server-to-server connections

    diff --git a/rfcs/0036-spsp-pull-payments/index.html b/rfcs/0036-spsp-pull-payments/index.html index a0c1558..f448311 100644 --- a/rfcs/0036-spsp-pull-payments/index.html +++ b/rfcs/0036-spsp-pull-payments/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: SPSP Pull Payments -draft: 1

    -
    -

    SPSP Pull Payments

    +

    SPSP Pull Payments

    Preface

    This document describes how to conduct Pull Payments via STREAM once the payment details have been exchanged via the Simple Payment Setup Protocol (SPSP).

    Introduction

    diff --git a/rfcs/0037-spsp-invoices/index.html b/rfcs/0037-spsp-invoices/index.html index e9f883d..6ed428a 100644 --- a/rfcs/0037-spsp-invoices/index.html +++ b/rfcs/0037-spsp-invoices/index.html @@ -15,7 +15,7 @@ - + @@ -81,32 +81,28 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -
    -

    title: SPSP Invoices -draft: 2

    -
    -

    SPSP Invoices

    +

    SPSP Invoices

    Preface

    This document describes how conduct an Invoice Payment via STREAM once the payment details have been exchanged via the Simple Payment Setup Protocol (SPSP).

    Introduction

    diff --git a/rfcs/0038-settlement-engines/index.html b/rfcs/0038-settlement-engines/index.html new file mode 100644 index 0000000..81dc027 --- /dev/null +++ b/rfcs/0038-settlement-engines/index.html @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    +
    +

    Settlement Engines

    +

    Conventions

    +

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 .

    +

    Overview

    +

    Clearing

    +

    In the Interledger protocol, connectors maintain peers, or counterparty connectors whom they transact with. Connectors clear and fulfill ILP packets with their peers, representing conditional IOUs which affect financial accounting balances—accounts—between them.

    +

    A connector may extend a given peer a limited line of credit, or none at all, depending upon their trustworthiness. As the connector receives incoming ILP Prepare packets from a peer, forwards them, and returns corresponding ILP Fulfill packets, that peer's liabilities to the connector accrue. If the peer's liabilities exceed the credit limit assigned to it, the connector may reject and decline to forward additional packets.

    +

    Settlement

    +

    In order to continue transacting, the peer must settle their liabilities. In most cases, this is accomplished through sending a payment on a settlement system that both peers have agreed to use. The connector should credit the incoming payment, irrevocably discharging a sum the peer owed to it, which enables it to clear subsequent Interledger packets from the peer.

    +

    A settlement is the irrevocable discharge of a liability via an unconditional transfer of an asset or financial instrument. Settlements may occur on a settlement system, or medium for exchanging value. Some settlements may transfer funds on a ledger, or registry of account balances and/or transactions, which is a type of settlement system. (Although not all settlement systems are ledgers, here, the terms are sometimes used interchangeably.)

    +

    Examples of systems that settle Interledger credit relationships may include:

    +
      +
    • Traditional banking infrastructure
    • +
    • Cryptocurrencies and distributed ledgers
    • +
    • Payment channels and layer 2 networks
    • +
    • Money transfer services
    • +
    • Mobile money services
    • +
    • Cash or physical delivery of assets
    • +
    +

    Settlement Engines

    +

    Settlement engines are services operated by two Interledger peers that facilitate sending and receiving settlements between them. Since an Interledger connector may have many peers that settle over the same system, a single settlement engine may manage multiple accounts, to settle with many different peers.

    +

    This specification defines a standardized HTTP API for Interledger connectors to interface with their settlement engines, and vice versa. Connectors trigger the settlement engine to perform settlements, and settlement engines trigger the connector to adjust accounting balances when incoming settlements are received, like so:

    +

    Settlement architecture

    +

    Motivation

    +

    Settlement engines supercede the Ledger Plugin Interface (LPIv2) as an abstraction for settlement integrations with Interledger. This new model addresses these issues:

    +
      +
    1. Multi-account plugins necessitated non-trivial connector logic for handling ILP packets.
    2. +
    3. Plugin implementations were tightly coupled with a single bilateral communication mechanism.
    4. +
    5. JavaScript plugins limited interoperability with non-JavaScript connector implementations.
    6. +
    7. Plugins operated in the same process as the connector, which prevented scaling the two services independently.
    8. +
    +

    Concepts

    +

    Accounting

    +

    In a financial accounting context, an account represents amounts received (credits) and amounts owed (debits) for a set of transactions between counterparties. The balance of an account is the net difference between these credits and debits. All the balances and transactions of an account are denominated in a single, fungible asset.

    +

    Interledger connectors are RECOMMENDED to operate an accounting system which keeps a record of two accounts for each peer:

    +
      +
    • Accounts payable, the amount owed by the connector to its peer for packets its peer has fulfilled.
    • +
    • Positive amount indicates the connector is indebted to its peer (a liability for the connector).
    • +
    • Negative amount indicates the connector has sent a pre-payment to its peer.
    • +
    • Accounts receivable, the amount owed to the connector by its peer for packets the connector has fulfilled.
    • +
    • Positive amount indicates its peer is indebted to the connector (an asset to the connector).
    • +
    • Negative amount indicates its peer has sent a pre-payment to the connector.
    • +
    +

    Thus, a given connector's accounts payable balance should mirror its peer's accounts receivable balance. Likewise, a connector's accounts receivable balance should mirror its peer's accounts payable balance.

    +

    Together, a settlement engine and an accounting system interface with one another to perform double-entry bookkeeping with eventual consistency. To ensure accurate, balanced double-entry bookkeeping, settlement engine and accounting system implementations MUST enforce several invariants:

    +

    Account for outgoing settlements

    +

    The accounting system is responsible for triggering outgoing settlements. For example, when the accounts payable reaches a particular threshold, the accounting system could trigger a settlement reducing the amount owed to the peer to a predefined, lesser amount.

    +

    When the accounting system triggers a settlement, it MUST debit the accounts payable, subtracting the amount of the settlement, and then send a request to the settlement engine to settle the amount.

    +

    Account for incoming settlements

    +

    If the settlement engine instructs the accounting system an incoming settlement was received, the accounting system MUST credit the accounts receivable, subtracting the amount of the settlement.

    +

    Settlement symmetry

    +

    The fundamental expected behavior of a settlement engine implementation is the sum of amounts one instance is instructed to settle eventually equals the sum of amounts the recipient instance instructs its accounting system to credit as incoming settlements.

    +

    As long as the instructed settlements do not equal the acknowledged settlements, the double-entry bookkeeping is out-of-balance. Settlement engines SHOULD minimize the time that the bookkeeping is unbalanced.

    +

    The purpose of the settlement engine interface is to enable and account for automated settlements. Settlement engines are not designed to enforce or guarantee that counterparties settle their liabilities or honor incoming payments. Accordingly, malicious counterparties or peers operating incompatible settlement engine implementations break any settlement symmetry.

    +

    Settlement delay

    +

    When the accounting system triggers a settlement, the accounting system preemptively debits the accounts payable balance before any settlement has been initiated. During this time, the accounts payable balance of the settlement sender will be inconsistent with the accounts receivable balance of the settlement recipient.

    +

    Settlement engine implementations necessarily incur settlement delay, or time until an instructed settlement is credited by the counterparty, due to network latency between peers or the time to finalize settlements on an underlying ledger or system.

    +

    Retrying failed settlements

    +

    If an outgoing settlement fails, such as due to network connectivity issues, the settlement engine MUST track the amount of the settlement and retry it later.

    +

    An intentional design decision was to hide failures from the accounting system rather than refunding failed settlements back to the accounts payable. Since the settlement engine tracks these failed amounts, if the settlement engine is able to settle later, a new settlement attempt may safely begin immediately.

    +

    Refunding failed settlements would enable the peer's accounting system balances to appear synchronized. However, if settlement continues to fail, the credit limit would eventually be breached and prevent the peers from transacting, negating this utility.

    +

    Exchanging messages

    +

    In order to settle or receive settlements with a peer, a settlement engine may first need to retrieve or communicate information with the peer's settlement engine. Two peered settlement engine instances may send and receive settlement-related messages among themselves, such as identifiers for their ledger accounts.

    +

    To support multiple interoperable settlement engine implementations for a particular settlement system, implementors may standardize the schema and type of messages their settlement engines use to communicate with one another. This work is out-of-scope of this RFC.

    +

    Interledger connectors use network transports, such as HTTP or WebSockets, to send and receive ILP packets with peers. Settlement engine implementations SHOULD proxy all messages through its Interledger connector's existing transport like so:

    +
      +
    1. Origin settlement engine sends a request to its connector with the settlement-related message to forward.
    2. +
    3. Origin connector encodes the raw message within an ILP Prepare packet (described below), which is sent to the peer's connector using its existing transport.
    4. +
    5. Peer connector receives the message within the ILP Prepare, identifies which settlement engine instance the account is associated with, and sends a request to its settlement engine to handle the message. The peer connector MUST NOT forward the ILP Prepare to any other connectors.
    6. +
    7. Peer settlement engine processes the message and responds with its own message.
    8. +
    9. Peer connector sends the response message back across the transport to the origin connector within an ILP Fulfill or ILP Reject, depending upon the code of the response (described below). If the peer connector was unable to process the request, it MUST respond with an ILP Reject.
    10. +
    11. Origin connector sends the response message back to the origin settlement engine.
    12. +
    +

    ILP Prepare

    +
      +
    • amount: 0
    • +
    • expiresAt: Determined by connector
    • +
    • executionCondition: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    • +
    • destination: peer.settle
    • +
    • data: Request message from sender settlement engine
    • +
    +

    ILP Fulfill

    +
      +
    • fulfillment: 0000000000000000000000000000000000000000000000000000000000000000
    • +
    • data: Response message from recipient settlement engine
    • +
    +

    ILP Reject

    +
      +
    • code: Determined by connector from HTTP status of forwarded request
    • +
    • triggeredBy: peer.settle
    • +
    • message: Determined by connector
    • +
    • data: Response message from recipient settlement engine, or empty if antecedent failure
    • +
    +

    Accounts and identifiers

    +

    Each account MUST be identified by a unique, URL-safe string, immutable for the lifetime of the account.

    +

    The settlement engine MUST be responsible for correlating an account identifier to the peer's identity on the shared ledger or settlement system, if required. To prevent tight coupling, the accounting system is NOT RECOMMENDED to have knowledge of the peer's identity on the shared settlement system.

    +

    Units and quantities

    +

    Asset amounts may be represented using any arbitrary denomination. For example, one U.S. dollar may be represented as \$1 or 100 cents, each of which is equivalent in value. Likewise, one Bitcoin may be represented as 1 BTC or 100,000,000 satoshis.

    +

    A standard unit is the typical unit of value for a particular asset, such as \$1 in the case of U.S. dollars, or 1 BTC in the case of Bitcoin.

    +

    A fractional unit represents some unit smaller than the standard unit, but with greater precision. Examples of fractional monetary units include one cent (\$0.01 USD), or 1 satoshi (0.00000001 BTC).

    +

    An asset scale is the difference in orders of magnitude between the standard unit and a corresponding fractional unit. More formally, the asset scale is a non-negative integer (0, 1, 2, …) such that one standard unit equals the value of 10^(scale) corresponding fractional units. If the fractional unit equals the standard unit, then the asset scale is 0.

    +

    For example, one cent represents an asset scale of 2 in the case of USD, whereas one satoshi represents an asset scale of 8 in the case of Bitcoin.

    +

    Selecting scales

    +

    Account balances in the accounting system SHOULD be denominated in a scale corresponding to the unit settlements are denominated in, but MAY be denominated in a different scale. For example, micropayments may require more precision than can actually be settled, or databases may limit precision to less than the settlement system is capable of.

    +

    Quantity object

    +

    An amount denominated in some unit of a single, fungible asset. (Since each account is denominated in a single asset, the type of asset is implied.)

    +
    Attributes
    +
      +
    • amount — string
    • +
    • Amount of the unit, which is a non-negative integer.
    • +
    • This amount is encoded as a string to ensure no precision is lost on platforms that don't natively support arbitrary precision integers.
    • +
    • scale — number
    • +
    • Asset scale of the unit, between 0 and the maximum 8-bit unsigned integer, 255 (inclusive).
    • +
    +
    Example
    +

    To represent $2.54 in units of cents, where the amount is a multiple of $0.01:

    +
    {
    +  "amount": "254",
    +  "scale": 2
    +}
    +
    +

    Scale conversions

    +

    If the settlement engine receives a request with a Quantity denominated in a unit more precise than it is capable of settling, it MUST persist the leftover amount. The leftover amounts MUST be settled later after they accumulate to a unit feasible for settlement.

    +

    Settlement Engine HTTP API

    +

    Connector → settlement engine

    +

    HTTP/2 is RECOMMENDED for performance reasons, although HTTP/1.1 MAY also be used. Implementations SHOULD support HTTP version negotiation via Application Protocol Negotiation (ALPN).

    +

    Setup an account

    +

    Informs the settlement engine that a new account was created within the accounting system using the given account identifier. The settlement engine MAY perform tasks as a prerequisite to settle with the account. For example, a settlement engine implementation might send messages to the peer to exchange ledger identifiers or to negotiate settlement-related fees.

    +

    Request

    +
    POST /accounts HTTP/1.1
    +Content-Type: application/json
    +
    +
    {
    +  "id": "<id>"
    +}
    +
    +

    Response

    +
    HTTP/1.1 201 Created
    +
    +

    Delete an account

    +

    Instructs the settlement engine that an account was deleted.

    +

    Request

    +
    DELETE /accounts/:id HTTP/1.1
    +
    +

    Response

    +
    HTTP/1.1 204 No-Content
    +
    +

    Perform outgoing settlement

    +

    Asynchronously send an outgoing settlement. The accounting system sends this request and accounts for outgoing settlements.

    +

    Request

    +
    POST /accounts/:id/settlements HTTP/1.1
    +Accept: application/json
    +Content-Type: application/json
    +Idempotency-Key: <key>
    +
    +
    +

    Quantity to settle

    +
    +

    Response

    +
    HTTP/1.1 201 Created
    +Content-Type: application/json
    +
    +

    Handle incoming message

    +

    Process and respond to an incoming message from the peer's settlement engine. The connector sends this request when it receives an incoming settlement message from the peer, and returns the response message back to the peer.

    +

    Request

    +
    POST /accounts/:id/messages HTTP/1.1
    +Accept: application/octet-stream
    +Content-Type: application/octet-stream
    +
    +
    +

    <raw bytes of message>

    +
    +

    Response

    +
    HTTP/1.1 201 Created
    +Content-Type: application/octet-stream
    +
    +
    +

    <raw bytes of response>

    +
    +

    Accounting System HTTP API

    +

    Settlement engine → connector

    +

    HTTP/2 is RECOMMENDED for performance reasons, although HTTP/1.1 MAY also be used. Implementations SHOULD support HTTP version negotiation via Application Protocol Negotiation (ALPN).

    +

    Credit incoming settlement

    +

    Account for an incoming settlement. The settlement engine sends this request as it receives incoming settlements in in order to ensure settlement symmetry.

    +

    Request

    +
    POST /accounts/:id/settlements HTTP/1.1
    +Accept: application/json
    +Content-Type: application/json
    +Idempotency-Key: <key>
    +
    +
    +

    Quantity to be credited to the account as an incoming settlement

    +
    +

    Response

    +
    HTTP/1.1 201 Created
    +Content-Type: application/json
    +
    +

    Send outgoing message

    +

    Send the message to the given peer's settlement engine and return its response. The connector handles proxying the message through the peer's connector.

    +

    Request

    +
    POST /accounts/:id/messages HTTP/1.1
    +Accept: application/octet-stream
    +Content-Type: application/octet-stream
    +
    +
    +

    <raw bytes of message>

    +
    +

    Response

    +
    HTTP/1.1 201 Created
    +Content-Type: application/octet-stream
    +
    +
    +

    <raw bytes of response>

    +
    +

    Idempotence

    +

    Idempotent requests ensure each side effect only happens once, even though the same request may be called multiple times. For example, if a request to perform a settlement fails due to a network connection error, idempotence prevents a client from accidentally triggering multiple settlements when it retries the request.

    +

    Performing idempotent requests

    +

    Requests to settle or requests to credit incoming settlements MUST include an idempotency key, or globally unique string, within an Idempotency-Key: <key> header. To avoid collisions, this key MUST be derived from a cryptographically secure source of randomness.

    +

    Retry behavior

    +

    This retry behavior ensures the client and server are eventually consistent and never perform any unsafe balance rollbacks that could result in lost funds or double payments.

    +

    If the client receives no response or an HTTP error, the client MUST retry the request with the same idempotency key.

    +

    To prevent overwhelming the server, the client SHOULD exponentially backoff after each failed retry attempt and add random "jitter" to vary the retry interval. The maximum retry interval MUST be no greater than 1 hour. Clients also MUST retry indefinitely until they have received an acknowledgment from the server that the request was processed or failed.

    +

    Handling idempotent requests

    +

    Endpoints to settle and endpoints to credit incoming settlements MUST support idempotency keys.

    +

    Before an endpoint responds to the request with a new idempotency key (one it hasn't seen before), the endpoint should persist the idempotency key and the state of its response. If a subsequent request is encountered with the same idempotency key, the endpoint should use the state from the initial request to return the same response.

    +

    For safety, endpoints MUST persist idempotency keys and response state for at least 24 hours since the most recent request with the same idempotency key.

    +
    +
    +
    + + + +
    +
    + + +
    +
    +
    +
    +
    +

    Interledger Interledger Project
    Documentation licensed under CC BY 4.0.

    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/rfcs/asn1/BilateralTransferProtocol.asn.html b/rfcs/asn1/BilateralTransferProtocol.asn.html index a62a7f9..b813a6a 100644 --- a/rfcs/asn1/BilateralTransferProtocol.asn.html +++ b/rfcs/asn1/BilateralTransferProtocol.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    diff --git a/rfcs/asn1/DynamicConfigurationProtocol.asn.html b/rfcs/asn1/DynamicConfigurationProtocol.asn.html index c6be25c..e758b71 100644 --- a/rfcs/asn1/DynamicConfigurationProtocol.asn.html +++ b/rfcs/asn1/DynamicConfigurationProtocol.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/GenericTypes.asn.html b/rfcs/asn1/GenericTypes.asn.html index d64d076..7f5f260 100644 --- a/rfcs/asn1/GenericTypes.asn.html +++ b/rfcs/asn1/GenericTypes.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/InterledgerErrorData.asn.html b/rfcs/asn1/InterledgerErrorData.asn.html index 86e6274..0719e91 100644 --- a/rfcs/asn1/InterledgerErrorData.asn.html +++ b/rfcs/asn1/InterledgerErrorData.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/InterledgerPacket.asn.html b/rfcs/asn1/InterledgerPacket.asn.html index 3901d23..240f401 100644 --- a/rfcs/asn1/InterledgerPacket.asn.html +++ b/rfcs/asn1/InterledgerPacket.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/InterledgerPaymentRequest.asn.html b/rfcs/asn1/InterledgerPaymentRequest.asn.html index 2ec5566..8638d22 100644 --- a/rfcs/asn1/InterledgerPaymentRequest.asn.html +++ b/rfcs/asn1/InterledgerPaymentRequest.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/InterledgerProtocol.asn.html b/rfcs/asn1/InterledgerProtocol.asn.html index b23c91e..6ada59a 100644 --- a/rfcs/asn1/InterledgerProtocol.asn.html +++ b/rfcs/asn1/InterledgerProtocol.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/InterledgerQuotingProtocol.asn.html b/rfcs/asn1/InterledgerQuotingProtocol.asn.html index 878262f..46afd4d 100644 --- a/rfcs/asn1/InterledgerQuotingProtocol.asn.html +++ b/rfcs/asn1/InterledgerQuotingProtocol.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/InterledgerTypes.asn.html b/rfcs/asn1/InterledgerTypes.asn.html index e1a15cf..6b819b8 100644 --- a/rfcs/asn1/InterledgerTypes.asn.html +++ b/rfcs/asn1/InterledgerTypes.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/LegacyInterledgerProtocol.asn.html b/rfcs/asn1/LegacyInterledgerProtocol.asn.html index 4fb72c2..6f57efe 100644 --- a/rfcs/asn1/LegacyInterledgerProtocol.asn.html +++ b/rfcs/asn1/LegacyInterledgerProtocol.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/PreSharedKeyV2.asn.html b/rfcs/asn1/PreSharedKeyV2.asn.html index 8cbc088..9230114 100644 --- a/rfcs/asn1/PreSharedKeyV2.asn.html +++ b/rfcs/asn1/PreSharedKeyV2.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/Stream.asn.html b/rfcs/asn1/Stream.asn.html index 918760a..1fab313 100644 --- a/rfcs/asn1/Stream.asn.html +++ b/rfcs/asn1/Stream.asn.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/rfcs/asn1/index.html b/rfcs/asn1/index.html index ef069e5..3def9b5 100644 --- a/rfcs/asn1/index.html +++ b/rfcs/asn1/index.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • + diff --git a/sending-value-programmatically.html b/sending-value-programmatically.html index abea809..816e4b3 100644 --- a/sending-value-programmatically.html +++ b/sending-value-programmatically.html @@ -15,7 +15,7 @@ - + @@ -81,34 +81,34 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +
    -

    Sending Value Programmatically

    +

    Send Value Programmatically

    Send value over ILP using the SPSP API.

    Before you begin

    This tutorial assumes that you’re running moneyd and SPSP server on your computer. If you're not set up, you can learn how to set up moneyd and SPSP here.

    -

    Sending value

    -

    To send value programmatically, you need to install ilp-protocol-spsp and ilp-plugin modules. +

    Send value

    +

    To send value programmatically, you must install ilp-protocol-spsp and ilp-plugin modules. Open a command line and use the following commands:

    $ mkdir ilp-getting-started
     $ cd ilp-getting-started
    @@ -146,7 +146,7 @@ 

    On This Page

    diff --git a/summit-2019.html b/summit-2019.html index d73133a..966ffaa 100644 --- a/summit-2019.html +++ b/summit-2019.html @@ -15,7 +15,7 @@ - + @@ -81,21 +81,21 @@ +
  • Interledger Protocol 4 (ILPv4)
  • +
  • Interledger Addresses
  • +
  • STREAM Protocol
  • +
  • Simple Payment Setup Protocol (SPSP)
  • +
  • Notes on OER encoding
  • +
  • Dynamic Configuration Protocol (ILDCP)
  • +
  • Peering, Clearing and Settlement
  • +
  • Settlement Engines
  • +
  • ILP over HTTP
  • +
  • SPSP Pull Payments
  • +
  •  
  • +
  • Payment Pointers
  • +
  • Web Monetization
  • +
  • W3C Web Payments
  • +