/quilt

Hyperledger Quilt - An implementation of the Interledger Protocol

Primary LanguageJavaApache License 2.0Apache-2.0

Hyperledger Quilt Discuss twitter

circle-ci codecov lgtm-cq lgtm-alerts issues

Quilt is a Java implementation of the Interledger protocol.

This library can be used to send and receive Interledger payments using STREAM. It also supports a variety of other core Interledger primitives and protocols.

Note that this library does not implement a full Java Connector. For this functionality, see the Java ILP Connector project, which is built using Quilt.

Modules

Quilt is organised as a Maven multi-module project. Each module exists in a subdirectory that has its own child POM and README file. Dependency and plugin versions are managed in the parent project.

Issues are labelled and prefixed to make it easy to identify which project they relate to.

ilp-core GitHub issues

The ilp-core module is the base library for any Interledger Java projects, providing service interfaces, packet definitions, and data models supporting the ILPv4 protocol (defined in IL-RFC-27).

These primitives form the foundation of the Interledger suite of protocols, and are used throughout the other modules in this project.

ILP Module Javadoc Link
ilp-core Javadocs

READ MORE

btp-core GitHub issues

The btp-core module contains primitives to support the Bilateral Transfer Protocol (BTP v2.0) as defined by IL-RFC-23.

BTP Module Javadoc Link
btp-core Javadocs

codecs-parent

The codecs-parent module contains an encoding and decoding framework plus serializers for ASN.1 OER formats defined in each IL-RFC. This module supports all primitives for the following protocols: ILP v4.0, IL-DCP v1.0, BTP 2.0, and STREAM v1.0.

Codec Module Javadoc Link
codecs-framework Javadocs
codecs-btp Javadocs
codecs-ilp Javadocs
codecs-ildcp Javadocs
codecs-stream Javadocs

ildcp-core GitHub issues

The ildcp-core module contains primitives to support the Interledger Dynamic Configuration Protocol (IL-DCP v1.0) as defined by IL-RFC-31.

IL-DCP Module Javadoc Link
ildcp-core Javadocs

jackson-datatypes GitHub issues

The jackson-datatypes module contains utilities to marshal and unmarshal various Quilt primitives to and from JSON using the Jackson library.

Jackson Module Javadoc Link
jackson-datatypes Javadocs

link-parent

The link-parent module contains libraries that can be used as a network transport for Interledger accounts. Currently supported links are ILP-over-HTTP as defined in IL-RFC-35.

Link Module Javadoc Link
link-core Javadocs
link-ilp-over-http Javadocs

spsp-parent GitHub issues

The spsp-parent module contains libraries that can be used to resolve Payment Pointers (as defined in IL-RFC-26 as well as the broader Simple Payment Setup Protocol (SPSP) as defined in IL-RFC-009.

SPSP Module Javadoc Link
spsp-core Javadocs
spsp-client Javadocs

stream-parent GitHub issues

The stream-parent module contains libraries for sending and receiving packetized payments using the STREAM protocol, defined in IL-RFC-29.

Stream Module Javadoc Link
stream-core Javadocs
stream-client Javadocs
stream-receiver Javadocs

examples GitHub issues

The examples modules shows how to use the Quilt library in your code.

READ MORE

Usage

Requirements

Unlimited Strength Encryption Policy Files

In order to properly build this project, you must download and install Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy files. For more details, follow the instructions here.

Maven

Modules in this library can be included in your Maven project by adding the Maven dependency for the module you would like to use. For example, to import ilp-core, use the following coordinates:

<dependencies>
  ...
  <dependency>
    <groupId>org.interledger</groupId>
    <artifactId>ilp-core</artifactId>
    <version>1.0.3</version>
  </dependency>
  ...
</dependencies>

Gradle

Modules in this library can be included in your Gradle project by adding the Maven dependency for the module you would like to use. For example, to import ilp-core, use the following coordinates:

dependencies {
    ...
    compile group: 'org.interledger', name: 'ilp-core', version: '1.0.3'
    ...
}

Artifacts

Artifacts for this project are published to Maven Central. For a complete list, see: https://search.maven.org/search?q=g:org.interledger.

Development

We welcome any and all submissions, whether it's a typo, bug fix, or new feature. To get started, first download the code:

git clone https://github.com/hyperledger/quilt
cd quilt

Maven

This project uses Maven to manage dependencies and other aspects of the build. To install Maven, follow the instructions at https://maven.apache.org/install.html.

Snapshot dependencies for this library can be included in your project by first adding a Snapshot Repository to your pom.xml file, like this:

<repositories>
    ...
    <snapshotRepository>
        <id>sonatype</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    </snapshotRepository>
    ...
</repositories>

Next, add the following Maven dependency:

<dependencies>
  ...
  <dependency>
    <groupId>org.interledger</groupId>
    <artifactId>ilp-core</artifactId>
    <version>HEAD-SNAPSHOT</version>
  </dependency>
  ...
</dependencies>

Gradle

To import this library into a project that uses gradle, first add the Snapshot Repository to your gradle.properties file, like this:

repositories {
    mavenCentral()
    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
}

Next, import this library as a dependency, like this:

dependencies {
    ...
    compile group: 'org.interledger', name: 'ilp-core', version: 'HEAD-SNAPSHOT'
    ...
}

Docker

By default, the build runs integration tests which depend on Docker daemon to be running. If you don't have Docker running, you can skip integration tests using -DskipITs (e.g. mvn clean install -DskipITs).

Otherwise, to install docker, follow the instructions at https://docs.docker.com/install/

Build the Project

To build the project, execute the following command:

$ mvn clean install

Checkstyle

The project uses checkstyle to keep code style consistent. All Checkstyle checks are run by default during the build, but if you would like to run checkstyle checks, use the following command:

$ mvn checkstyle:checkstyle