GithubHelp home page GithubHelp logo

igcfs / 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 1.48 MB

a libp2p implementation for the JVM, written in Kotlin 🔥 [WIP]

Home Page: https://libp2p.io

License: Apache License 2.0

Kotlin 38.10% Java 61.90%

jvm-libp2p's Introduction

jvm-libp2p

Gitter Build Status Discourse posts

a libp2p implementation for the JVM, written in Kotlin 🔥

⚠️ This is heavy work in progress! ⚠

Roadmap

The endeavour to build jvm-libp2p is split in two phases:

  • minimal phase (v0.x): aims to provide the bare minimum stack that will allow JVM-based Ethereum 2.0 clients to interoperate with other clients that rely on fully-fledged libp2p stacks written in other languages.

    • To achieve this, we have to be wire-compliant, but don't need to fulfill the complete catalogue of libp2p abstractions.
    • This effort will act as a starting point to evolve this project into a fully-fledged libp2p stack for JVM environments, including Android runtimes.
    • We are shooting for Aug/early Sept 2019.
    • Only Java-friendly façade.
  • maturity phase (v1.x): upgrades the minimal version to a flexible and versatile stack adhering to the key design principles of modularity and pluggability that define the libp2p project. It adds features present in mature implementations like go-libp2p, rust-libp2p, js-libp2p.

    • will offer: pluggable peerstore, connection manager, QUIC transport, circuit relay, AutoNAT, AutoRelay, NAT traversal, etc.
    • Android-friendly.
    • Kotlin coroutine-based façade, possibly a Reactive Streams façade too.
    • work will begin after the minimal phase concludes.

minimal phase (v0.x): Definition of Done

We have identified the following components on the path to attaining a minimal implementation:

  • multistream-select 1.0
  • multiformats: multiaddr
  • crypto (RSA, ed25519, secp256k1)
  • secio
  • connection bootstrapping
  • mplex as a multiplexer
  • stream multiplexing
  • TCP transport (dialing and listening)
  • Identify protocol
  • Ping protocol
  • peer ID

We are explicitly leaving out the peerstore, DHT, pubsub, connection manager, etc. and other subsystems or concepts that are internal to implementations and do not impact the ability to hold communications with other libp2p processes.

Adding as a dependency to your project:

Builds are published to JCenter. Maven Central mirrors JCenter, but updates can take some time to appear so if possible, pull directly from JCenter.

Using Gradle

   repositories {
       jcenter()
   }

   implementation 'io.libp2p:jvm-libp2p-minimal:0.3.2-RELEASE'

Using Maven

  <dependency>
    <groupId>io.libp2p</groupId>
    <artifactId>jvm-libp2p-minimal</artifactId>
    <version>0.3.2-RELEASE</version>
    <type>pom</type>
  </dependency>

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 raulk avatar snazha-blkio avatar atoulme avatar yusefnapora avatar chronosxyz avatar zilm13 avatar jrhea avatar schroedingerscode avatar

Watchers

James Cloos 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.