Kryptokrona Java SDK for building decentralized private communication and payment systems.

Overview

XKR Kryptokrona Java SDK Kryptokrona SDK Main Pipeline

Kryptokrona is a decentralized blockchain from the Nordic based on CryptoNote, which forms the basis for Monero, among others. CryptoNote is a so-called “application layer” protocol further developed by TurtleCoin that enables things like: private transactions, messages and arbitrary data storage, completely decentralized.

Kryptokrona SDK for Java is currently the most fully featured implementation of the Kryptokrona Network protocols and includes many useful components and tools for building decentralized private communication and payment systems.

Table of Contents

Development Resources

  • Web: kryptokrona.org
  • Mail: [email protected]
  • GitHub: https://github.com/kryptokrona
  • Hugin: sdkdevs board on Hugin Messenger
  • It is HIGHLY recommended to join our board on Hugin Messenger if you want to contribute to stay up to date on what is happening on the project.

Dependencies

The following table summarizes the tools and libraries required to build.

Dep Min. version Optional Purpose
OpenJDK 17 NO Java Development Kit
Gradle 7.4 NO Build Tool
RxJava 3.1.4 NO Functional Reactive Programming
Google HTTP Client 1.41.8 NO HTTP Request Library
JUnit 5.8.2 NO Unit Testing Library
Lombok 1.18.24 NO Lombok Library
JaCoCo any NO Code Coverage Library
Checkstyle any NO Styleguide checks
PMD any NO Source Code Analyzer
Spotbugs 5.0.4 NO Find Bugs
gson 2.9.0 NO JSON Parser
IPAddress 5.3.4 NO IPAddress Handling IP Addresses and Subnets
Spring 2.5.2 NO Spring Framework
Hibernate any NO ORM Framework
PostgreSQL 1.6.17 NO Database to Store Wallet(s) data

Installation

To get it up and running locally you need to clone the repository:

Using SSH:

Using HTTPS:

  • git clone https://github.com/kryptokrona/kryptokrona-sdk.git

Tests

We use unit tests, static code analysis and code coverage to ensure that we always write quality code. We can either run them seperatly to view the status or run everything with one command:

  • ./gradlew test

Unit Testing

We are using JUnit 5 to conduct our unit tests. All tests are located under src/test.

To run unit tests run:

  • ./gradlew test

An HTML file will be generated so that we can open up in our browser to view in more detail the test results. The file is located in build/reports/tests/test/index.html

Static Code Analysis

The static code analysis tool used in this project is cpd. All configuration for the static code analysis can be found in gradle/static-code-analysis. To run the static code analysis:

  • ./gradlew checkStyleMain
  • ./gradlew cpdCheck
  • ./gradlew pmdMain
  • ./gradlew spotbugsMain

HTML files will be generated so that we can open up in our browser. The files are located in:

  • build/reports/checkstyle/main.html
  • build/reports/spotbugs/main/spotbugs.html
  • build/reports/pmd/main.html

Code Coverage

The code coverage tool of this project is JaCoCo. To run:

  • ./gradlew jacacoTestReport

An HTML file will be generated so that we can open up in our browser. The file is located in build/kryptokrona-sdk-report/index.html

Build

We are using Gradle as the build tool for this project. The easiest way to build if you are not running IntelliJ is to run the command:

  • ./gradlew build

This command will also run all the unit tests at the same time so if you want to avoid that, just run the command:

  • ./gradlew assemble

There might be some trouble doing this multiple times, then we need to do a cleanup:

  • ./gradlew clean

If you want to visualize how the Gradle tasks are run in what order by their dependencies. Run the command:

  • ./gradlew taskTree

To list all the tasks provided in this project run:

  • ./gradlew tasks

Tip: you can also run the commands in short form e.g. ./gradlew tT or ./gradlew jTR that is for the jacocoTestReport task.

CI/CD

We also have a CI/CD flow for this project that will assemble the code, run static code analysis, run unit tests, run code coverage, and save the artifact of the build to GitHub Packages.

This artifact can then be downloaded and imported manually if that need exists for the project. Instructions on how to do this can be read in the installation instructions above.

Whenever you submit a pull request a pipeline will run with the following steps:

  • Assemble
  • Static Code Analysis
  • Unit Test
  • Code Coverage

The only thing different here from the main pipeline that runs is that we do not publish an artifact to GitHub Packages.

GitHub Pages

We use GitHub Pages for displaying the documentation of this project in addition to this README file. Go to https://kryptokrona.github.io/kryptokrona-sdk/ to view all the links to the releases and other additional information.

Javadoc

We use Javadoc for our in depth documentation that is available on GitHub Pages. To generate javadoc and getting these into version control so it can get deployed we need to run:

  • ./gradlew copyJavaDoc

This has a dependency to javadoc gradle task so we don't need to run two commands.

NOTE: The files will be located under docs/<version> and the version is picked up by what it says inside the file gradle.properties.

Contribute

If you would like to contribute to this project there is two ways:

  • Send a pull request
  • Donate to XKR address

Pull request

We appreciate all contributions whether it be small changes such as documentation of source code to major improvement of code.

The easiest way is to make a fork and then make a pull request into our develop branch. To make the PR go through make sure to include this information:

What does this PR do?

Why are these changes required?

This PR has been tested using (e.g. Unit Tests, Manual Testing):

Extra details?

NOTE: Remember to update existing diagrams if there is some bigger improvements of code so it's up to date with the implementation.

Donate

XKR: SEKReXXU9aJPiwjX2XkpbK8ACMWbUNXcYPxUVSiUYpNdhj8Z2snEy8CjjorZUNyswQNfzAmVWuGksU72Sf3Kq79Zd3fJWHq4Nyx

Kryptokrona QR Code

Contributors

The following contributors have either helped to start this project, have contributed code, are actively maintaining it (including documentation), or in other ways being awesome contributors to this project. We'd like to take a moment to recognize them.

mjovanc

License

The license is GPL-3.0 License.

You might also like...

first open-source brawl stars private server written in java!

Java-Brawl first open-source brawl stars private server written in java! (and first open-source v23 private server!) some stuff you should read thank

Sep 22, 2022

A private messenger for Android.

A private messenger for Android.

Signal Android Signal is a messaging app for simple private communication with friends. Signal uses your phone's data connection (WiFi/3G/4G) to commu

Sep 29, 2022

TrashEmail is hosted Telegram bot that can save your private email address by offering disposable email address

TrashEmail is hosted Telegram bot that can save your private email address by offering disposable email address

TrashEmail is hosted Telegram bot that can save your private email address by offering disposable email address. It can create, manage, disposable email address and link them with your telegram bot chat.

Sep 16, 2022

Flights metasearch engine simulation using Java, GraphQL and React.js, developed for COMP30220 Distributed Systems.

Flights metasearch engine simulation using Java, GraphQL and React.js, developed for COMP30220 Distributed Systems.

Distributed Airways For the full project report, see ./report.pdf. A demonstration video is available here. Requirements Docker JDK 8 and Apache Maven

Jan 13, 2022

This repository should serve as a guide to everybody who wants to study software and hardware for embedded systems but doesn't know where to start.

Roadmap to Embedded Engineering This repository should serve as a guide to anyone who wants to study software and hardware for embedded systems but do

Sep 27, 2022

React Native wrapper around Indy SDK Java and Objective-C wrappers.

React Native Indy SDK React Native Indy SDK wrapper. Installation with npm: $ npm install indy-sdk-react-native --save with Yarn: $ yarn add indy-sdk-

Sep 14, 2022

A Sentry SDK for Java, Android and other JVM languages.

A Sentry SDK for Java, Android and other JVM languages.

Bad software is everywhere, and we're tired of it. Sentry is on a mission to help developers write better software faster, so we can get back to enjoy

Sep 27, 2022

Alibaba Cloud Dedicated KMS Transfer SDK for Java can help Java developers to migrate from the KMS keys to the Dedicated KMS keys.

Alibaba Cloud Dedicated KMS Transfer SDK for Java Alibaba Cloud Dedicated KMS Transfer SDK for Java can help Java developers to migrate from the KMS k

May 12, 2022
Comments
  • Create GitHub Actions pipeline

    Create GitHub Actions pipeline

    We need a simple GitHub Actions pipeline to compile, unit test and generate coverage report. We do not need to produce a Docker since this will be published on Maven Central manually on every release. However we could generate a .jar file for manual adding of dependencies in a project.

    feature 
    opened by mjovanc 5
  • Add static code analysis

    Add static code analysis

    Investigate appropriate tooling for static code analysis. We need this to enforce a good standard to write quality code.

    Different tools: https://www.baeldung.com/java-static-code-analysis-tutorial#:~:text=Static%20Code%20Analysis%20is%20a,dereferencing%2C%20and%20other%20simple%20scenarios.

    feature 
    opened by mjovanc 0
  • Generate Java documentation

    Generate Java documentation

    Generate Java Documentation and publish on github.io such like this:

    • https://ibm.github.io/java-sdk-core
    • https://ibm.github.io/java-sdk-core/docs/latest/
    feature 
    opened by mjovanc 0
Operating Systems - Concepts of computer operating systems including concurrency, memory management, file systems, multitasking, performance analysis, and security. Offered spring only.

Nachos for Java README Welcome to Nachos for Java. We believe that working in Java rather than C++ will greatly simplify the development process by p

Sabir Kirpal 1 Nov 28, 2021
A blockchain system to manage monetary transactions between the different nodes of a decentralized network.

Blockchain under a clear vision A blockchain system to manage monetary transactions between the different nodes of a decentralized network. Authors @s

SamDik 3 Jun 9, 2022
☁ Tencent Cloud IM Server SDK in Java | 腾讯云 IM 服务端 SDK Java 版

Tencent Cloud IM Server SDK in Java The Tencent Cloud IM Server SDK for Java enables Java developers to easily work with Tencent Cloud IM. Requirement

Doocs 52 Sep 25, 2022
A simple live streaming mobile app with cool functionalities and time extension, and live chat. With a payment system integrated. Server is designed with socket.io to give you full flexibility.

Video Live Streaming Platform Android A simple live streaming mobile app with cool functionalities and time extension, and live chat. With a payment s

Dev-Geek 1 Oct 16, 2021
Hexagonal Architecture Demo Project about Ticketing and Payment

This project is a sample production-ready implementation for demonstrating the power of Hexagonal Architecture (aka Ports And Adapters Pattern) written in Java.

Alican Akkuş 360 Sep 27, 2022
Saga pattern with Java => order -> payment -> stock microservices are ready to use

Order_Payment_Stock_Saga_Pattern Saga pattern with Java => order -> payment -> stock microservices are ready to use Docker-compose.yaml You can see th

Gurkan İlleez 6 Feb 14, 2022
Integrates with XRPLedger to send token payment to trustline addresses

strategyengine token distribution rest service This service also runs here -- https://fsedistributionservice-56gpv2b23a-uc.a.run.app/ #How to run loca

strategyengine 7 Jan 9, 2022
Welcome to the EHS robotics club's GitHub repository, this will also be used as our primary community center and means of communication. Also be sure to join our remind for on the go updates @EHSFTC21

NOTICE This repository contains the public FTC SDK for the Ultimate Goal (2020-2021) competition season. Formerly this software project was hosted her

null 5 Feb 25, 2022
This repository contains the code for the Runescape private server project, and this repo is soley maintained by @Avanae and @ThePolyphia and @Xeveral

Runescape: The private server project. A Runescape private server based on the 2009 era. This repository contains the code for the Runescape private s

ProjectArchitecture 3 Apr 15, 2022
Rate limiting private REST APIs using Java Spring-boot, spring-security and bucket4j

Rate limiting REST APIs using Spring-security filter and Bucket4J Deployed Application (Swagger-ui on heroku) Inspired from: Baeldung Article Applicat

null 20 Jul 18, 2022