rustdoc-index.md
1 # Fedimint Technical Reference Documentation 2 3 <!-- this page is used a landing page for https://docs.fedimint.org/ --> 4 <!-- lots of links in this document are relative to the generated document, so disabling linkcheck altogether: --> 5 <!-- markdown-link-check-disable --> 6 7 ## Target audience 8 9 This documentation is automatically generated from the Fedimint source code, 10 and it's meant for developers, builders and people who want to understand 11 the Fedimint project on an implementation level. 12 13 If you are looking for higher level documentation and help, please check: 14 15 * [Fedimint website](https://fedimint.org/) 16 * [Fedimint github](https://github.com/fedimint/fedimint) 17 * [Fedimint chat](https://chat.fedimint.org/) 18 19 ## State 20 21 This is a recently added document and subject of continuous change. Please report problems and submit improvements. 22 23 # Overview 24 25 Fedimint is implemented in [Rust](https://www.rust-lang.org/) and consists of multiple Rust crates. 26 On a high-level Fedimint architecture consist of: 27 28 * Server side: [`fedimintd`](./fedimintd/index.html) 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. 29 * Client side: [`fedimint-client`](./fedimint_client/index.html) library, that handles client side state handling and 30 communication with Fedimint peers. This library can be used to build Fedimint client applications that can run on 31 desktop computers, mobile devices and in web browsers (WASM). 32 33 More high level documentation is available as a part of [`fedimint-docs`](./fedimint_docs/index.html) crate. 34 35 # Modules 36 37 Fedimint architecture is extensible using a modular design. Fedimint modules can build on top of Fedimint consensus to implement additional functionality and applications. 38 39 In fact core functions of Fedimint are implemented as modules: 40 41 * [fedimint-mint-server](./fedimint_mint_server/index.html) and [fedimint-mint-client](./fedimint_mint_client/index.html) implement ecash. 42 * [fedimint-wallet-server](./fedimint_wallet_server/index.html) and [fedimint-wallet-client](./fedimint_wallet_client/index.html) implement on-chain deposits and withdrawals. 43 * [fedimint-ln-server](./fedimint_ln_server/index.html) and [fedimint-ln-client](./fedimint_ln_client/index.html) implement lightning integration. 44 45 Some additional built-in modules are also available: 46 47 * [fedimint-meta-server](./fedimint_meta_server/index.html) and [fedimint-meta-client](./fedimint_meta_client/index.html) implement guardian managing additional ("meta") information about the Federation. 48 * [fedimint-empty-server](./fedimint_empty_server/index.html) and [fedimint-empty-client](./fedimint_empty_client/index.html) are a reference "empty" module that can be used as a starting point for new modules. 49 * [fedimint-dummy-server](./fedimint_dummy_server/index.html) and [fedimint-dummy-client](./fedimint_dummy_client/index.html) are a test-only modules, possibly useful as a simple example. 50 51 Developers and builders are encouraged to create their own modules. Check ["Fedimint Modules" Discussions](https://github.com/fedimint/fedimint/discussions/categories/fedimint-modules/index.html) for ideas and help. 52 53 # Notable crates 54 55 You might consider viewing the following top-level crates: 56 57 * [fedimint-core](./fedimint_core/index.html) is a core common code shared between client and server. 58 * [fedimint-cli](./fedimint_cli/index.html) is a command line client. 59 * [fedimint-client](./fedimint_client/index.html) is a client library. 60 * [fedimint-server](./fedimint_server/index.html) is a core server side logic. 61 * [gatewayd](./gatewayd/index.html) is a LN Gateway implementation. 62 * [gateway_cli](./ln_gateway/index.html) is a command line client for LN Gateway. 63 * [fedimint_dbtool](./fedimint_dbtool/index.html) implements a helpful database helper tool. 64 * [recoverytool](./recoverytool/index.html) implements an on chain multisig recovery tool for defunct/test Federations.