GithubHelp home page GithubHelp logo

ladrl / jvm-libp2p Goto Github PK

View Code? Open in Web Editor NEW

This project forked from libp2p/jvm-libp2p

0.0 1.0 0.0 2.15 MB

a libp2p implementation for the JVM, written in Kotlin ๐Ÿ”ฅ

Home Page: https://libp2p.io

License: Apache License 2.0

Java 22.47% Kotlin 77.53%

jvm-libp2p's Introduction

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.

jvm-libp2p's People

Contributors

jezhiggins avatar nashatyrev avatar shahankhatch avatar ajsutton avatar stefanbratanov avatar mbaxter avatar raulk avatar ianopolous avatar snazha-blkio avatar jtraglia avatar bogdanstirbat avatar web-flow avatar dhuseby avatar yusefnapora avatar atoulme avatar chronosxyz avatar zilm13 avatar jimmygchen avatar jrhea avatar salvatoret avatar schroedingerscode avatar diegomrsantos avatar kevodwyer avatar libp2p-mgmt-read-write[bot] avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.