Hyperledger Quilt
Hyperledger Quilt has been moved to End of Life status by the original project maintainers. Although Hyperledger Quilt is not currently being developed or maintained, the code is still available under an open source license so you would be welcome to reactivate this project. If you are interested in continuing development of this code, please consider submitting a PR at https://github.com/hyperledger/hyperledger-hip and sending and email to [email protected]. See more details about project proposals at: https://hyperledger.github.io/hyperledger-hip/
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
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 |
btp-core
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 |
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 |
|
codecs-btp |
|
codecs-ilp |
|
codecs-ildcp |
|
codecs-stream |
ildcp-core
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 |
jackson-datatypes
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 |
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 |
|
link-ilp-over-http |
spsp-parent
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 |
|
spsp-client |
stream-parent
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 |
|
stream-client |
|
stream-receiver |
examples
The examples
modules shows how to use the Quilt library in your code.
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