Skip to the content.

Introduction

Specification

Back-end services

Overview

The backend of Growr has microservices architecture based on MoleculerJS. Besides the traditional features, such as load balancing, service discovery, and fault tolerance, MoleculerJS has the ability to distribute messages across multiple nodes using the TCP gossip protocol and allows easy switching of the transport technology depending on the use case.

Below is a table containing a summarized list of the back-end services:

Group Service Data storage
Access API gateway -
Access Discovery -
Identity Organization local
Identity User local
Identity Identity Local / External
Identity Credential issuing -
Identity Credential verification -
Financing Project distributed
Financing Loan distributed
Financing Investor local
Financing Funding distributed
Payment Payment local
Payment Bitcoin external (L1)
Payment Lightning external (L2)
Payment Rootstock external (L1)
Publishing Nostr external (Nostr)

API gateway

The API gateway controls access to the back-end services. It exposes APIs using GraphQL, providing a flexible and efficient way to retrieve data from the services.

Discovery service

The Discovery service ensures the discoverability of Growr nodes and the possibility to use other node services (for example, Verification or Issuing) using the TCP Gossip transport protocol.

Identity services

The main Identity service (also called SSCR Agent) is based on Self Sovereign Identity (SSI) standard. SSI is designed for managing identity data in a decentralized, secure way. It supports the creation, management, and sharing of verifiable credentials that can be used to prove identity attributes without revealing sensitive personal information.

In the current protocol implementation, the Identity service is implemented as a custodial service that operates the self-sovereign credit record (SSCR) of the user with his permission. It controls the DID of the borrower and his/her verifiable credentials.

The Credential issuing service is responsible for issuing verifiable credentials for given borrowers based on data received or verified by the originator or other third parties. The Credential verification service is responsible for the validation of presentations of verifiable credentials and assessing the eligibility of a given user to apply for a loan. To be trusted by all network participants, those two services have well-known DIDs and deployment addresses.

The Organization service and the User service are responsible for the registration and management of the users of the frontend applications in the node. They read and write data to database collections having the same name.

Financing services

The Project service: is responsible for creating and managing the lending projects. It reads and writes data to the Project book.

The Loan service: controls the approval, creation, utilization and repayment of loans. It reads and writes data to the Loan book.

The Funding service: is responsible for project funding and project repayment operations. It reads and writes data to the Funding book.

The Project investor service: provides onboarding and contract management services for project investors. It reads and writes data to a database collection having the same name.

Payment services

Growr protocol implements a set of services with payment management functions.

The main Payment service is responsible to track all payments related to activities in the protocol. It reads and writes data to the Payment book.

The Bitcoin service, Lightning service and Rootstock service provide integration with the respective payment networks. They are responsible for wallet management, transaction execution and transaction listening.

Publishing services

Growr protocol implements publishing through NOSTR. It is an innovative protocol designed to create censorship-resistant global social networks. Its tamper-proof design is based on cryptographic keys and signatures, relying on a network of distributed relays to ensure messages are sent in a robust and censorship-resistant manner.

Growr Nostr service is responsible for creating a public Nostr profile and posting various types of messages on behalf of this profile.

Supporting services

The backend of the Growr protocol contains also a set of supporting services that are not directly exposed via APIs but are used internally by the other services. They include: