Code Monkey home page Code Monkey logo

chronicle's Introduction

Chronicle

Light weight, blazing fast blockchain indexer

This is originally built for Educational purposes

Run | Developer Docs

๐Ÿšง Under active development, see status below. ๐Ÿšง

Overview

Chronicle in simple terms is an indexing software, indexing transactions and modules (Smart contract, Parachain, and so on) Events. Chronicle stores these data in a Postgress DB and renders these data using an GraphQL interface. Chronicle is designed to achieve high-performance and high-reliability in cloud deployments via a modular architecture, Developers can hand-pick modules to build whatever, seeing the components of the Chronicle as pieces of Legos.

Chronicle architecture

Motivation

The motivation behind Chronicle lies in its mission to provide developers with a comprehensive, yet highly customizable toolset for indexing transactions and events across various blockchain networks. Whether it's monitoring smart contract interactions, tracking parachain activities, or analyzing decentralized finance (DeFi) protocols, Chronicle offers a unified solution that simplifies the complexities of data indexing.

Status

Chronicle is under active development. Use in production at your own risk.

Chain Support

Chronicle is built to be very modular, add new chains is very frictionaless. Here are the categories of chains Chronicle is currently implemented for.

  • EVM compatible chains
  • Para chains (Polkadot)

Developers

Contributing

See CONTRIBUTING.md.

Running

TODO? on Docker implementation.

Developing

Clone the repository and checkout submodules:

git clone https://github.com/developeruche/chronicle
cd chronicle

Add config file to the root of the project:

name = "chronicle_name"

[[indexer]]
event_name = "event_name"
state_machine = "EVM"
rpc_url = "wss://eth-mainnet.g.alchemy.com/v2/ALCHEYM_API_KEY"
address = "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984" # UNI token
event_signature = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" # Transfer(address,address,uint256)
block_number = 19711184
db_url = "host=localhost user=postgres"

[server]
db_url = "host=localhost user=postgres"
server_url = "127.0.0.1:8010"
cargo build --release
./target/debug/chronicle --config-path .config.toml

Run unit tests:

cargo test

License

The Chronicle library (i.e. all code outside of the bin directory) is licensed under the GNU Lesser General Public License v3.0.

The Chronicle binaries (i.e. all code inside of the bin directory) is licensed under the GNU Lesser General Public License v3.0.

chronicle's People

Contributors

developeruche avatar

Stargazers

OFUZOR CHUKWUEMEKE avatar soma avatar  avatar Blessing Samuel avatar Perelyn avatar

Watchers

 avatar

Forkers

jonathansoufer

chronicle's Issues

[Features] Add missing trace log.

#Motivation
While some action is been done on the Indexer server, some logs is needed to inform the operation on actions that has been done on the indexer application.

Some sections where logging is needed are;

  1. A log indicating that events from the specified block-number is (been queried, query complete).
  2. A log to indicate the indexing process has kicked in.

Fell free to add more logs to sections you think it would be necessary.
trace log to indicate init indexing has started and ended and the subscription is on (creating and Issue)

[Feature] Add Dockerfile to Chronicle

Currently running Chronicle requires running it locally pointing to the target binary, but this ought to be done using a Docker setup.
This issue is raised to address that :)

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.