Fedimint Technical Reference Documentation

Target audience

This documentation is automatically generated from the Fedimint source code, and it’s meant for developers, builders and people who want to understand the Fedimint project on an implementation level.

If you are looking for higher level documentation and help, please check:

State

This is a recently added document and subject of continuous change. Please report problems and submit improvements.

Overview

Fedimint is implemented in Rust and consists of multiple Rust crates. On a high-level Fedimint architecture consist of:

  • Server side: fedimintd daemon typically running on Linux servers, serving a role of a a “peer” in a Federation by communicating with other “peers” to form a consensus.
  • Client side: fedimint-client library, that handles client side state handling and communication with Fedimint peers. This library can be used to build Fedimint client applications that can run on desktop computers, mobile devices and in web browsers (WASM).

More high level documentation is available as a part of fedimint-docs crate.

Modules

Fedimint architecture is extensible using a modular design. Fedimint modules can build on top of Fedimint consensus to implement additional functionality and applications.

In fact core functions of Fedimint are implemented as modules:

Some additional built-in modules are also available:

Developers and builders are encouraged to create their own modules. Check “Fedimint Modules” Discussions for ideas and help.

Notable crates

You might consider viewing the following top-level crates:

List of all crates