GithubHelp home page GithubHelp logo

iotaledger / inx-chronicle Goto Github PK

View Code? Open in Web Editor NEW
13.0 12.0 11.0 16.95 MB

IOTA permanode implemented using the IOTA Node Extension (INX) interface.

License: Apache License 2.0

Shell 0.11% Rust 99.70% Dockerfile 0.19%
iota rust inx storage permanode hacktoberfest

inx-chronicle's Introduction

inx-chronicle

ci Canary Coverage Status

Chronicle is the permanode (sometimes also called indexer or scanner) for the IOTA-based networks. It connects to a Hornet via the IOTA Node Extension (INX) interface. Through the INX interface, Chronicle listens to all blocks in the Tangle that are referenced by a milestone and stores them in a MongoDB database.

Documentation

The documentation for Chronicle can be found in our wiki, the supported APIs are documented here.

Development

This project uses conventional commits to automatically generate a CHANGELOG.md which signals breaking changes. The changelog can be created using the following command (requires the conventional-changelog-cli package on NPM):

conventional-changelog -p conventionalcommits -i CHANGELOG.md -s

Docker deployment configuration of credentials through environment variables

Docker compose will automatically load credentials for different services from a .env file that must either be located in the same directory as the docker-compose.yml file, or specified using the --env-file flag. You therefore must create such a file before you do a docker compose up. An example .env file could look like this:

MONGODB_USERNAME=root
MONGODB_PASSWORD=root
INFLUXDB_USERNAME=root
INFLUXDB_PASSWORD=password
JWT_PASSWORD=password
JWT_SALT=saltines
HORNET_CONFIG_PATH=config_testnet.json

inx-chronicle's People

Contributors

alex6323 avatar daughterofmars avatar dependabot[bot] avatar dr-electron avatar grtlr avatar junwei0117 avatar lucas-tortora avatar pvdrz avatar trungtt198x avatar

Stargazers

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

Watchers

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

inx-chronicle's Issues

Tracking Issue - `Analytics`

There are several statistics that can help us better understand how a network is used. The following analytic endpoints should be supported by Chronicle:

The activity analytics should be implemented for set time intervals of 24h, 7d, 30d, and 90d.

In addition to these required statistics @Alexandcoats has some more brainstorming ideas below, which we could tackle afterwards.

Here is what the endpoints will look like:

Activity

  • /activity ?startIndex & endIndex
    • /blocks (total count)
      • /transaction
      • /tagged-data
      • /milestone
      • /treasury-transaction
    • /outputs (total count/amount created
      • /alias
      • /basic
      • /nft
      • /foundry
      • /storage-deposit
    • /base-tokens (use ledger update table)
    • /native-tokens (use ledger update table)
    • /nfts (use ledger update table)

Ledger Status

  • /ledger ?ledger_index (total count unspent)
    • /storage-deposit (byte cost at ledger index)
    • /nfts (count of the number of unspent nft ouputs)
    • /native-tokens (count of the number of unspent foundry outputs)

Manually set actor names

We should probably set the actor names manually so that they will appear less verbose in the tokio console

Sync missed milestones

Description

Chronicle should request and store milestones from the past that are available.

Requirements

  1. On startup, an actor should be started which will send message requests to the InxWorker.
  2. The range of milestones to request should be configurable.
  3. If messages are not available because they have been pruned, that milestone can be skipped.
  4. We should spawn multiple syncers and request in chunks, to avoid the situation where large swaths are unavailable and block requesting newer milestones.

Open questions

  • Should we request in forward or backward order?
  • This actor may need to be work-limited, so that it does not slow down the system.

Are you planning to do it yourself in a pull request?

No

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.