Giter VIP home page Giter VIP logo

kryptokrona / kryptokrona-api Goto Github PK

View Code? Open in Web Editor NEW
32.0 1.0 4.0 2.35 MB

Kryptokrona API for caching and processing data from the blockchain.

Home Page: https://kryptokrona.org

License: Other

Kotlin 70.26% Dockerfile 0.21% Shell 2.20% Jinja 2.92% Python 1.53% HTML 0.32% Svelte 13.89% JavaScript 7.97% TypeScript 0.05% SCSS 0.64%
blockchain crypto cryptocurrency gradle kotlin kryptokrona xkr kotlin-dsl ktor ktor-framework

kryptokrona-api's Introduction

Kryptokrona API

alpha build kotlin release license discord

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 API in Kotlin, Ktor and Kryptokrona SDK for caching and processing data from the blockchain to provide faster access for services.

Development Resources

Getting Help

Are you having trouble with Kryptokrona API? We want to help!

  • If you are upgrading, read the release notes for upgrade instructions and "new and noteworthy" features.

  • Ask a question we monitor stackoverflow.com for questions tagged with kryptokrona-api. You can also chat with the community on Hugin or Discord.

  • Report bugs with Kryptokrona API at https://github.com/kryptokrona/kryptokrona-api/issues.

Reporting Issues

Kryptokrona API uses GitHub’s integrated issue tracking system to record bugs and feature requests. If you want to raise an issue, please follow the recommendations below:

  • Before you log a bug, please search the issue tracker to see if someone has already reported the problem.

  • If the issue doesn’t already exist, create a new issue.

  • Please provide as much information as possible with the issue report. We like to know the Kryptokrona API version, operating system, and JVM version you’re using.

  • If you need to paste code or include a stack trace, use Markdown. ``` escapes before and after your text.

  • If possible, try to create a test case or project that replicates the problem and attach it to the issue.

Deployment

Currently, we deploy to two servers, one for staging and one for production. The staging server is used for testing and replicating the production environment and the production server is obviously used for production.

All endpoints are available on both servers. Check out the OpenAPI Specification for more information on how to use the API.

If you want to deploy the API yourself you can checkout the ansible directory for how to run the Ansible playbook.

Staging

To use the staging server you have three options:

Production

To use the production server you have three options:

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 recommend using IntelliJ to work on this project.

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

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 appelskrutt34 mjovanc TechyGuy

Powered by

Kotlin Ktor Svelte Liquibase PostgreSQL Prometheus Ansible Docker Keycloak GitHub Actions

License

The 3-Clause BSD License.

kryptokrona-api's People

Contributors

appelskrutt34 avatar marcuscvj avatar mjovanc avatar renovate[bot] avatar techyguy17 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

kryptokrona-api's Issues

Backend is not running sync inside Docker container

kryptokrona_api_backend     | [main] INFO ktor.application - Autoreload is disabled because the development mode is off.
kryptokrona_api_backend     | [main] INFO org.ktorm.database - Connected to jdbc:postgresql://db:5432/kryptokrona_api_dev, productName: PostgreSQL, productVersion: 15.2 (Debian 15.2-1.pgdg110+1), logger: org.ktorm.logging.Slf4jLoggerAdapter@6090f3ca, dialect: org.ktorm.support.postgresql.PostgreSqlDialect@37a64f9d
kryptokrona_api_backend     | [main] INFO ktor.application - Application started in 0.64 seconds.
kryptokrona_api_backend     | [DefaultDispatcher-worker-1] INFO HuginSyncer - Synchronizing data...
kryptokrona_api_backend     | [DefaultDispatcher-worker-2] INFO ktor.application - Responding at http://0.0.0.0:8080

Add cleanup strategy in HuginSyncer

We need after a certain time handle how we will clean the ArrayList for storing items in knownPoolTxsList so the garbage collector will free memory.

Implement endpoints

General endpoints

/api/v1/blocks
/api/v1/hashrates
/api/v1/outputs
/api/v1/transactions
/api/v1/supplies (coin supply)
/api/v1/statistics (rewards, amount of posts, hashtags)
/api/v1/nodes (info about which is online/offline and such)
/api/v1/pools (info about which is online/offline and such)
/api/v1/info

Hugin endpoints

/api/v1/hashtags
/api/v1/posts
/api/v1/posts-encrypted
/api/v1/posts-encrypted-group

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • Update dependency @octokit/rest to v19.0.13
  • Update dependency ch.qos.logback:logback-classic to v1.4.8
  • Update dependency ch.qos.logback:logback-core to v1.4.8
  • Update dependency io.ktor:ktor-server-config-yaml-jvm to v2.3.2
  • Update dependency io.ktor:ktor-server-test-host-jvm to v2.3.2
  • Update dependency io.micrometer:micrometer-registry-prometheus to v1.11.1
  • Update dependency keycloak-js to v21.1.2
  • Update dependency postcss to v8.4.25
  • Update dependency svelte to v3.59.2
  • Update dependency svelte-check to v3.4.5
  • Update dependency typescript to v5.1.6
  • Update ktor_version to v2.3.2 (io.ktor:ktor-server-tests-jvm, io.ktor:ktor-client-logging, io.ktor:ktor-server-cors, io.ktor:ktor-server-netty-jvm, io.ktor:ktor-serialization-jackson-jvm, io.ktor:ktor-server-metrics-micrometer, io.ktor:ktor-server-openapi, io.ktor:ktor-server-servlet, io.ktor:ktor-serialization-kotlinx-json-jvm, io.ktor:ktor-client-content-negotiation, io.ktor:ktor-client-cio, io.ktor:ktor-client-core, io.ktor:ktor-utils-jvm, io.ktor:ktor-server-content-negotiation-jvm, io.ktor:ktor-server-core-jvm)
  • Update plugin io.ktor.plugin to v2.3.2
  • Update dependency @sveltejs/adapter-node to v1.3.1
  • Update dependency gradle to v8.2
  • Update dependency org.liquibase:liquibase-core to v4.23.0
  • Update dependency sass to v1.63.6
  • Update dependency vite to v4.4.2
  • Update plugin org.jetbrains.kotlin.plugin.serialization to v1.9.0
  • Update actions/checkout action to v3
  • Update dependency prettier to v3
  • Update dependency svelte to v4
  • 🔐 Create all rate-limited PRs at once 🔐

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

ansible
ansible/roles/liquibase/tasks/main.yml
docker-compose
docker-compose.yml
dockerfile
Dockerfile
  • gradle 8-jdk17
  • openjdk 17.0.2
monitor/Dockerfile
  • node 18-alpine
  • node 18-alpine
github-actions
.github/workflows/backend-ci.yml
  • actions/checkout v3
  • actions/setup-java v3
  • actions/upload-artifact v3
  • actions/checkout v3
  • actions/setup-java v3
  • actions/checkout v3
  • benjlevesque/short-sha v2.2
  • docker/login-action v2
  • actions/download-artifact v3
.github/workflows/backend-pr-ci.yml
  • actions/checkout v3
  • actions/checkout v3
  • actions/setup-java v3
  • actions/upload-artifact v3
  • actions/checkout v3
  • actions/setup-java v3
  • actions/checkout v3
  • benjlevesque/short-sha v2.2
  • actions/download-artifact v3
.github/workflows/deploy-cd.yml
  • actions/checkout v2
  • dawidd6/action-ansible-playbook v2
  • actions/checkout v3
  • actions/setup-python v4
.github/workflows/monitor-ci.yml
  • actions/checkout v3
  • actions/setup-node v3
  • actions/checkout v3
  • benjlevesque/short-sha v2.2
  • docker/login-action v2
.github/workflows/monitor-pr-ci.yml
  • actions/checkout v3
  • actions/setup-node v3
  • actions/checkout v3
  • benjlevesque/short-sha v2.2
gradle
gradle.properties
  • org.kryptokrona.sdk:kryptokrona-core 0.1.1
  • org.kryptokrona.sdk:kryptokrona-http 0.1.1
  • org.kryptokrona.sdk:kryptokrona-util 0.1.1
  • io.ktor:ktor-server-core-jvm 2.3.1
  • io.ktor:ktor-server-content-negotiation-jvm 2.3.1
  • io.ktor:ktor-utils-jvm 2.3.1
  • io.ktor:ktor-client-core 2.3.1
  • io.ktor:ktor-client-cio 2.3.1
  • io.ktor:ktor-client-content-negotiation 2.3.1
  • io.ktor:ktor-serialization-kotlinx-json-jvm 2.3.1
  • io.ktor:ktor-server-servlet 2.3.1
  • io.ktor:ktor-server-openapi 2.3.1
  • io.ktor:ktor-server-metrics-micrometer 2.3.1
  • io.micrometer:micrometer-registry-prometheus 1.11.0
  • io.ktor:ktor-serialization-jackson-jvm 2.3.1
  • io.ktor:ktor-server-netty-jvm 2.3.1
  • io.ktor:ktor-server-cors 2.3.1
  • io.ktor:ktor-client-logging 2.3.1
  • org.ktorm:ktorm-jackson 3.6.0
  • org.slf4j:slf4j-api 2.0.7
  • org.slf4j:slf4j-simple 2.0.7
  • org.ktorm:ktorm-support-postgresql 3.6.0
  • org.postgresql:postgresql 42.6.0
  • org.ktorm:ktorm-core 3.6.0
  • org.liquibase:liquibase-core 4.22.0
  • io.ktor:ktor-server-tests-jvm 2.3.1
  • org.jetbrains.kotlin:kotlin-test-junit 1.8.21
settings.gradle.kts
build.gradle.kts
  • org.jetbrains.kotlin.jvm 1.8.21
  • io.ktor.plugin 2.3.1
  • org.jetbrains.kotlin.plugin.serialization 1.8.21
  • org.liquibase.gradle 2.2.0
  • io.ktor:ktor-server-config-yaml-jvm 2.3.1
  • javax.xml.bind:jaxb-api 2.3.1
  • com.jessecorbett:diskord-bot 4.0.1
  • io.bkbn:kompendium-core 3.14.3
  • org.apache.commons:commons-dbcp2 2.9.0
  • info.picocli:picocli 4.7.3
  • ch.qos.logback:logback-core 1.4.7
  • ch.qos.logback:logback-classic 1.4.7
  • javax.xml.bind:jaxb-api 2.3.1
  • com.squareup:kotlinpoet 1.14.2
  • io.ktor:ktor-server-test-host-jvm 2.3.1
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.1.1
html
monitor/src/app.html
  • font-awesome 6.4.0@sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==
npm
monitor/package.json
  • @octokit/rest ^19.0.7
  • @sveltejs/adapter-static ^2.0.1
  • apexcharts ^3.37.1
  • dotenv ^16.0.3
  • keycloak-js ^21.0.1
  • prometheus-query ^3.3.1
  • @sveltejs/adapter-node ^1.2.1
  • @sveltejs/kit ^1.5.0
  • autoprefixer ^10.4.14
  • postcss ^8.4.21
  • prettier ^2.8.4
  • prettier-plugin-svelte ^2.9.0
  • sass ^1.59.3
  • svelte ^3.54.0
  • svelte-check ^3.0.1
  • svelte-preprocess ^5.0.2
  • tailwindcss ^3.2.7
  • tslib ^2.4.1
  • typescript ^5.0.0
  • vite ^4.0.0

  • Check this box to trigger a request for Renovate to run again on this repository

Add statistics

Setup new service functions and routes to provide this data.

Add monitoring

  • Integration to Discord
  • Check response times of nodes
  • Compare transaction length
  • Check uptime

Add more meta description of monitor

When for example pasting the link to the monitor: https://stage.xkr.mjovanc.com/monitor make sure to include a picture of the Kryptokrona API located in resources in the repo. As well as additional information about the service. Currently we get:

Skärmavbild 2023-04-10 kl  19 49 29

Add a simple dashboard

Using Svelte in the frontend dir. Create a simple dashboard with the Kryptokrona logo with charts from the statistics endpoint.

When clicking on the node name links it redirects to wrong path

It redirects to https://xkr.mjovanc.com/nodes/Blocksum which should be https://xkr.mjovanc.com/monitor/nodes/Blocksum. It's probably the same issue as we solved in the TopNav. Just check this. Pools link to external website so there should be fine!

See screenshot for what I mean:

Skärmavbild 2023-04-11 kl  15 39 39

Implement all Hugin API endpoints

Kryptokrona API could host all data if the host of the API wants to. And if only Hugin messenges, they can use the standalone Hugin API.

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.