The Miden Note Transport service is a communications system focusing on performance and privacy for the secure exchange of private notes.
The system is based mostly on a request-reply client-server communication scheme, supporting end-to-end encryption. The (optionally encrypted) notes are stored on-server allowing for async note exchange between users.
This repository contains the following crates:
node: Node/server library;proto: Protobuf definitions and generated code;
This repository contains the following binaries, built upon the above crates:
node: Node/server implementation, wrapping the respective library;cli: Client command-line-interface, wrapping the respective (Rust) library. Easy-to-use application able to send and fetch notes from the Transport Layer;load-test: Load testing tool for the node implementation.
Three main functions are used to interact with the Transport Layer:
send_note(note, address)allows a client to push a note, directed to a recipient (identified by its address), to the Transport Layer. The note is kept in the Transport Layer for a certain retention period (30 days);fetch_notes(tag)allows a client to fetch notes associated with a certain tag;stream_notes(tag)similarly tofetch_notes(), but the client subscribes to a tag and receives new notes periodically.
Metrics and Traces are provided for the node implementation. Data is exported using OpenTelemetry. A Docker-based setup is provided, with the following stack:
- OpenTelemetry Collector;
- Tempo (Traces);
- Prometheus (Metrics);
- Grafana (Visualization).
At minimum, please see our contributing guidelines and our makefile for example workflows e.g. run the testsuite using
make testNote that we do not accept low-effort contributions or AI generated code. For typos and documentation errors please rather open an issue.
This project is MIT licensed.