ilp-plugin-http

ILP Plugin over HTTP

Usage no npm install needed!

<script type="module">
  import ilpPluginHttp from 'https://cdn.skypack.dev/ilp-plugin-http';
</script>

README

ILP Plugin HTTP

ILP Plugin that uses HTTP requests

Overview

Plugin HTTP allows for a bilateral or multilateral Interledger relationship which doesn't maintain state around websockets like Plugin BTP. It can also easily be placed behind a load balancer so that packets are distributed between a cluster of connectors.

To learn more about the architecture this plugin is designed for, read this article by @emschwartz.

Usage

For an example of usage, see the test script in test/test.js.

new PluginHttp({
  multi: true, // whether to behave as a multilateral plugin
  multiDelimiter: '%', // to specifiy a delimiter other than default `%`
  ildcp: {
    // ildcp details. fetched if multilateral and unspecified.
    clientAddress: 'test.example',
    assetCode: 'XRP',
    assetScale: 9
  },
  incoming: { // (required) describes the http server
    port: 4000, // (required) port to listen on

    // Simple bearer authentication
    staticToken: 'shhh', // (required if using simple)

    // JWT authentication
    jwtSecret: 'shhh' // (required if using JWTs)
  },
  outgoing: { // (required) describes outgoing http calls
    url: 'https://example.com/ilp/%', // (required) endpoint to POST packets to
    // if url contains a percent and the plugin is in `multi` mode, then the
    // segment after this plugin's own address will be filled where the `%` is
    // when routing packets.

    // Simple bearer authentication
    staticToken: 'othersecret', // (required if using simple)

    // JWT authentication
    jwtSecret: 'othersecret', // (required if using JWTs)
    jwtExpiry: 10 * 1000, // how often to sign a new token for auth

    http2: false, // whether `url` uses http2
    name: 'alice' // name to send in `ILP-Peer-Name` header, for ilp addr.
  }
})

Protocol

Authentication

Two token formats are supported:

  • Simple auth, using simple, static bearer tokens
  • JWT auth, using JSON web tokens

Both peer plugins must be configured with the same authentication method.

Note: v1.6.0 and greater use bearer tokens by default. However, to peer with a plugin using v1.5.0 or lower, the secret (for JWT auth) or secretToken (for simple auth) configuration options must be provided instead.