Skip to content

dotnet infrastructure for cosmos chain data ingestion and query api (Terra v2, Kujira)

License

Notifications You must be signed in to change notification settings

sapient-fi/dotnet-cosmos-indexer

Repository files navigation

Cosmos data indexer

Ths repository contains a Cosmos block and transaction indexer.

Getting started

This code is written in dotnet 6 which is available cross platform.

Ensure that you have the latest dotnet 6 SDK installed and Docker (+docker compose), then getting started is as simple as:

docker compose up -d

And then run the API

dotnet run --project src/ServiceHost/ServiceHost.csproj

The default launch-settings will not start downloading data, as this is both CPU and network heavy. If you want to download data, edit the file src/ServiceHost/Properties/launchSettings.json and add BACKGROUND_WORKER to the SAPIENT_SERVICE_ROLES_ENABLED config variable.

Code Structure

The solution structure is based on the Clean Architecture pattern which is also described as Common web application architectures by Microsoft.

  • terra dotnet

    • To be separate repository down the road with everything related to parsing Terra transactions / messages
  • Kernel types

    • Entities (business model classes that are persisted)
    • Aggregates (groups of entities)
    • Interfaces
    • Domain Services
    • Specifications
    • Custom Exceptions and Guard Clauses
    • Domain Events / Contracts
    • Extension methods
  • Infrastructure types

    • Database migrations and setup / configuration
    • Data access implementation types (Repositories)
    • Infrastructure-specific services (for example, FileLogger or SmtpNotifier)
    • MassTransit Consumers
    • Terra data fetchers
    • API integrations
  • ServiceHost types

    • GraphQL resolvers/mutations and types
    • MassTransit configuration
    • Startup
    • Configuration parsing and setup

The origin of the project

This project started life as the Pylon Board (which was also created by us), but since the crash of Terra Classic, we have decided to branch out and make this a Cosmos thing instead.

Thunder Client

This repository contains a thunder-tests folder, which contains definitions from the Visual Studio Code plugin called thunder-client. These definitions can be used to dig around in the various APIs that this service uses.

About

dotnet infrastructure for cosmos chain data ingestion and query api (Terra v2, Kujira)

Resources

License

Stars

Watchers

Forks

Packages

No packages published