Skip to main content

polkadot-java-client

  • Proposer: splix
  • Payment Address: bc1qce0nvef6txyahe9xvrdjavvw7qemzvhyp4ux55

Project Description 📄​

We propose the creation of a Java client library to access Polkadot based networks. Witch is the main target of JVM based server-side applications. Java, and JVM in general, are the de-facto standard platform used by an enterprise or large-scale internet services. It's critical to have a JVM based client library to get adoption by enterprises.

We have extensive experience with booth blockchain, including Polkadot, and Java technologies. As an example, we previously created a Java library for Ethereum called Etherjar https://github.com/emeraldpay/etherjar, and a have some implementation of Polkadot protocol in JVM with the project Moonbeam https://github.com/emeraldpay/moonbeam. We want to continue our work and create a JVM library targeting the Polkadot.

Please note that a full-featured client library is usually being involved during the whole lifetime of the target system (i.e., Polkadot). Therefore, as a result of the current project, we expect to build only an initial implementation, which should meet most of the current critical needs by a Java developer. But over the following months, maybe even years, the library is going to be developed with advanced features.

The main target is server-side Java 11, which is the current LTS release (2018-2023) of Java. But in addition, we want to leave a possibility to support older versions and/or Android.

The library is going to be released under the Apache 2 license. Build artifacts are going to be published to a publicly accessible Maven repository, with Javadoc and documentation in the Github repo and/or on the company website.

Team 👥​

Development Roadmap 🔩​

  • Total Estimated Duration: 3 months
  • Full-time equivalent (FTE): 0.8
  • Total Costs: 4.35 BTC

Milestone 1​

Initial domain specific model, types and encoding.

  • Estimated Duration: 1 month
  • FTE: 0.8
  • Costs: 1.45 BTC
NumberDeliverableSpecification
1.SS58 encodingJava class to encode/decode with SS58
2.SCALE codedJava class to encode/decode with SCALE
3.Base typesJava classes to hold and operate Address, Hash, and DOT
4.Unit TestsUnit tests covering at least 75% of the code
5.DocumentationA standalone document, describing usage

Milestone 2​

Client for HTTP JSON RPC. With the focus on the following APIs: chain, contracts, and state.

  • Estimated Duration: 1 month
  • FTE: 0.8
  • Costs: 1.45 BTC
NumberDeliverableSpecification
1.HTTP ClientA Java wrapper around standard HTTP JSON RPC, to read current state needed by a typical service
2.Example AppAn example app that accesses a node and prints the current status of the blockchain to the console
3.Unit TestsUnit tests covering at least 75% of the code
4.DocumentationA standalone document, describing usage

Milestone 3​

Modules to read, create and broadcast extrinsic. Plus the API module which should provide access to the following APIs: account, author, and payment.

  • Estimated Duration: 1 month
  • FTE: 0.8
  • Costs: 1.45 BTC
NumberDeliverableSpecification
1.schnorrkel/sr25519 moduleWrapper around Rust crypto library
2.Signing and signature validation moduleJava classes to sign data or verify an existing signature
3.Example AppAn example app to create and broadcast an extrinsic
4.Unit TestsUnit tests covering at least 75% of the code
5.DocumentationA standalone document, describing usage