From 190ba6d67831e94f6988ec7f70f9bf2d4d929fb1 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 23 Oct 2025 08:10:12 +0200 Subject: [PATCH] copy pr message into readme --- dlt-connector/README.md | 63 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/dlt-connector/README.md b/dlt-connector/README.md index d56e77437..8c7722092 100644 --- a/dlt-connector/README.md +++ b/dlt-connector/README.md @@ -1 +1,62 @@ -# Elysia with Bun runtime +# DLT Connector + +## Overview + +This implements the **DLT Connector** using [gradido-blockchain-js](https://github.com/gradido/gradido-blockchain-js) as a Node module. +[gradido-blockchain-js](https://github.com/gradido/gradido-blockchain-js) builds the native library [gradido_blockchain](https://github.com/gradido/gradido_blockchain) via SWIG, making it accessible to Node.js. + +Most of the Logic is handled by gradido-blockchain. +The connector’s purpose is to send Gradido transactions, serialized in blockchain format, through the Hiero SDK into the Hedera Network as Topic Messages. +The [gradido-node](https://github.com/gradido/gradido_node) listens to these Hedera/Hiero topics, validates the transactions, and stores them efficiently. +Transactions can then be retrieved via a JSON-RPC 2.0 API from [gradido-node](https://github.com/gradido/gradido_node) + +--- + +## Structure + +The module makes extensive use of schema validation with [Valibot](https://valibot.dev/guides/introduction/). +All objects without internal logic are represented as Valibot schemas, with their corresponding TypeScript types inferred automatically. +Valibot allows clear separation of *input* and *output* types, reducing the need for repetitive `null | undefined` checks. +When a function expects an output type, TypeScript ensures that the data has been validated via `parse` or `safeParse`, guaranteeing type safety at runtime. + +--- + +### `src/bootstrap` +Contains initialization code executed once at program startup by `src/index.ts`. + +### `src/cache` +Contains code for caching expensive computations or remote data. +Currently used only by `KeyPairCacheManager`. + +### `src/client` +Contains the client implementations for communication with +[`gradido-node`](https://github.com/gradido/gradido_node), the backend, and the Hiero service. +Each `Client` class is a singleton providing: +- configuration and connection management +- API-call methods mirroring the target service +Each client may include optional `input.schema.ts` and/or `output.schema.ts` files defining Valibot schemas for its complex data structures. + +### `src/config` +Contains the Valibot-based configuration schema, default values, and logic for parsing `process.env`. +If a required field is missing or invalid, the module prints an error and terminates the process. + +### `src/data` +Contains DCI (Data-Context-Interaction) Data Objects: +simple domain objects that are difficult to express as Valibot schemas, as well as Logic Objects containing core business logic. +Also includes domain enums. + +### `src/interactions` +Contains complex business logic (Interactions in DCI terms). +Each use case resides in its own subfolder with one Context Object and corresponding Role Objects. + +### `src/schemas` +Contains Valibot schemas shared across multiple parts of the program. + +### `src/server` +Contains the [Elysia](https://elysiajs.com/at-glance.html)-based REST API used by the backend to submit new Gradido transactions. +It is intended to integrate with Valibot schemas; currently, it uses `@sinclair/typebox` to convert Valibot schemas to the native format expected by Elysia. + +### `src/utils` +Contains small, generic helper functions that do not clearly fit into any of the other directories. + +---