Skip to content

Latest commit

History

History
153 lines (124 loc) 路 8.43 KB

README.md

File metadata and controls

153 lines (124 loc) 路 8.43 KB

jvm-libp2p

Gitter Build Status Discourse posts

Libp2p implementation for the JVM, written in Kotlin 馃敟

Components

List of components in the Libp2p spec and their JVM implementation status

Component Status
Transport tcp 馃崗
quic 馃崊
websocket 馃崑
webtransport
webrtc-browser-to-server
webrtc-private-to-private
Secure Communication noise 馃崗
tls 馃崑
plaintext 馃崑
secio (deprecated) 馃崗
Protocol Select multistream 馃崗
Stream Multiplexing yamux 馃崑
mplex 馃崗
NAT Traversal circuit-relay-v2 馃崑
autonat 馃崑
hole-punching
Discovery bootstrap
random-walk
mdns-discovery 馃崑
rendezvous
Peer Routing kad-dht
Publish/Subscribe floodsub 馃崑
gossipsub 馃崗
Storage record
Other protocols ping 馃崗
identify 馃崗

Legend:

  • 馃崗 - tested in production
  • 馃崑 - prototype or beta, not tested in production
  • 馃崊 - in progress

Gossip simulator

Deterministic Gossip simulator which may simulate networks as large as 10000 of peers

Please check the Simulator README for more details

Android support

The library is basically being developed with Android compatibility in mind. However we are not aware of anyone using it in production.

The examples/android-chatter module contains working sample Android application. This module is ignored by the Gradle build when no Android SDK is installed. To include the Android module define a valid SDK location with an ANDROID_HOME environment variable or by setting the sdk.dir path in your project's local properties file local.properties.

Importing the project into Android Studio should work out of the box.

Adding as a dependency to your project

Hosting of artefacts is graciously provided by Cloudsmith.

Latest version of 'jvm-libp2p' @ Cloudsmith

As an alternative, artefacts are also available on JitPack.

Using Gradle

Add the required repositories to the repositories section of your Gradle file.

repositories {
  // ...
  maven { url "https://dl.cloudsmith.io/public/libp2p/jvm-libp2p/maven/" }
  maven { url "https://jitpack.io" }  
  maven { url "https://artifacts.consensys.net/public/maven/maven/" }
}

Add the library to the implementation part of your Gradle file.

dependencies {
  // ...
  implementation 'io.libp2p:jvm-libp2p:X.Y.Z-RELEASE'
}

Using Maven

Add the required repositories to the dependencyManagement section of the pom file:

<repositories>
  <repository>
    <id>libp2p-jvm-libp2p</id>
    <url>https://dl.cloudsmith.io/public/libp2p/jvm-libp2p/maven/</url>
  </repository>
  <repository>
    <id>JitPack</id>
    <url>https://jitpack.io</url>
  </repository>
  <repository>
    <id>Consensys</id>
    <url>https://artifacts.consensys.net/public/maven/maven/</url>
  </repository>
</repositories>

Add the library to the dependencies section of the pom file:

<dependency>
  <groupId>io.libp2p</groupId>
  <artifactId>jvm-libp2p</artifactId>
  <version>X.Y.Z-RELEASE</version>
</dependency>

Building the project

To build the library you will need just

  • JDK (Java Development Kit) of version 11 or higher

For building a stable release version clone the master branch:

git clone https://github.com/libp2p/jvm-libp2p -b master

For building a version with the latest updates clone the develop (default) branch:

git clone https://github.com/libp2p/jvm-libp2p

To build the library from the jvm-libp2p folder, run:

./gradlew build

After the build is complete you may find the library .jar file here: jvm-libp2p/build/libs/jvm-libp2p-X.Y.Z-RELEASE.jar

Notable users

  • Teku - Ethereum Consensus Layer client
  • Nabu - minimal Java implementation of IPFS
  • Peergos - peer-to-peer encrypted global filesystem

(Please open a pull request if you want your project to be added here)

License

Dual-licensed under MIT and ASLv2, by way of the Permissive License Stack.