9 unstable releases (3 breaking)

0.6.0 Nov 11, 2019
0.5.1 Oct 31, 2019
0.4.1-beta.3 Oct 10, 2019
0.4.1-beta.1 Sep 28, 2019
0.3.0 Dec 12, 2018

#2996 in Magic Beans

50 downloads per month
Used in 2 crates

Apache-2.0

700KB
6.5K SLoC

Interledger.rs

This crate bundles all libraries that comprise the Rust implementation of the Interledger Protocol Suite.


lib.rs:

Interledger.rs

A library bundle for the Rust implementation of the Interledger Protocol stack.

interledger-api

HTTP API for interacting with the Interledger.rs components. See the ilp-node for how this is used in practice.

interledger-btp

Client and server implementations of the Bilateral Transport Protocol (BTP). This is a WebSocket-based protocol for exchanging ILP packets between directly connected peers.

Because this protocol uses WebSockets, only one party needs to have a publicly-accessible HTTPS endpoint but both sides can send and receive ILP packets.

interledger-ccp

This crate implements the Connector-to-Connector Protocol (CCP) for exchanging routing information with peers. The CcpRouteManager processes Route Update and Route Control messages from accounts that we are configured to receive routes from and sends route updates to accounts that we are configured to send updates to.

The CcpRouteManager writes changes to the routing table to the store so that the updates are used by the Router to forward incoming packets to the best next hop we know about.

interledger-http

Client and server implementations of the ILP-Over-HTTP bilateral communication protocol. This protocol is intended primarily for server-to-server communication between peers on the Interledger network.

interledger-ildcp

Client and server implementations of the Interledger Dynamic Configuration Protocol (ILDCP).

This is used by clients to query for their ILP address and asset details such as asset code and scale.

interledger-router

A service that routes ILP Prepare packets to the correct next account based on the ILP address in the Prepare packet based on the routing table.

A routing table could be as simple as a single entry for the empty prefix ("") that will route all requests to a specific outgoing account.

Note that the Router is not responsible for building the routing table, only using the information provided by the store. The routing table in the store can either be configured or populated using the CcpRouteManager (see the interledger-ccp crate for more details).

interledger-spsp

Client and server implementations of the Simple Payment Setup Protocol (SPSP).

This uses a simple HTTPS request to establish a shared key between the sender and receiver that is used to authenticate ILP packets sent between them. SPSP uses the STREAM transport protocol for sending money and data over ILP.

interledger-stream

Client and server implementations of the Interledger STREAM transport protocol.

STREAM is responsible for splitting larger payments and messages into smaller chunks of money and data, and sending them over ILP.

Dependencies

~3–14MB
~304K SLoC