Crates.io | fedimint-api-client |
lib.rs | fedimint-api-client |
version | 0.4.3 |
source | src |
created_at | 2024-07-18 18:18:16.594647 |
updated_at | 2024-10-10 16:31:06.162223 |
description | fedimint-api-client provides common code used by client. |
homepage | |
repository | https://github.com/fedimint/fedimint |
max_upload_size | |
id | 1307831 |
size | 88,816 |
Fedimint is a module based system for building federated applications. It is designed to be a trust-minimized, censorship-resistant, and private alternative to centralized applications.
Fedimint is alpha software released under an MIT License. This means that the software here is provided "as is", without warranty of any kind. We are a small development team with limited resources. If you experience a loss of funds due to a bug in this software, we may not have the means to help you recover the funds. We recommend you run Fedimint on testnets like mutinynet, or on mainnet with small amounts of money. You can find our latest release here.
Fedimint ships with 3 default modules - Bitcoin, Lightning, and Chaumian Ecash - for out-of-the-box best practices for private and trust-minimized payments. You can write custom modules that define further consensus items and transaction types leveraging the payments modules to build your own federated applications.
The Fedimint Developer Discord is the best place to get help and ask questions. Join the Discord and say hi! We are extremely active and work to onboard developers of all skill levels to Fedimint and associated open-source Bitcoin projects. Fedimint touches many different areas of Bitcoin development, so there is something for everyone. See below for more information on how to get involved.
It's easy to set up and run your own federations. Fedimint is designed to
be Byzantine Fault Tolerant so is resilient to m
malicious nodes in a
federation of 3m + 1
nodes. If you run a federation of 4 guardians you are resilient to 1 malicious guardian, if you
run a federation of 7 guardians you are resilient to 2 guardians, etc.
Fedimint can also be run in "solo mode" with a single guardian. This is useful for testing and development, but is not recommended for production use.
To do lightning payments, Fedimint requires a Lightning Gateway: a user of the federation that is willing to swap ecash in exchange for sending/receiving lightning payments. The Lightning Gateway is not a guardian and acts as an untrusted economic actor serving the federation.
See the Fedimint Mutinynet Setup Guide. You can modify the configuration options to deploy it with.
We are actively looking for developers to help build Fedimint and associated open-source Bitcoin projects. Fedimint touches many different areas of Bitcoin development, so there is something for everyone. The best places to get started are:
For contribution guidelines, Areas of contributions and how to get involved, please refer to the Contributing Guidelines.
Fedimint is a Rust project and uses the Nix package manager to manage dependencies and build the project.
We have a detailed tutorial on how to use the cli to send/receive ecash, lightning payments, and perform other developer operations in the Fedimint Developer Tutorial.
Fedimint's developer environment and rust build pipeline is managed through Nix Flakebox. To get started, install Nix.
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
Then fork and clone the Fedimint repo.
git clone https://github.com/your-username/fedimint.git
Then enter the nix developer environment.
nix develop
and use this command to start a local regtest network with 4 guardians, a bitcoin node, and a lightning gateway.
just mprocs
You can then interact with the guardians and lightning gateway using the cli. For more details on how to use the cli, see the Fedimint Developer Tutorial.
If you want to run with UIs, see the UI repo for developer environment instructions.
Area | Lead-Maintainer | Co-Maintainers | Status |
---|---|---|---|
Project Lead | @elsirion | @dpc @joschisan | X |
Core Server | @joschisan | X | mostly well factored, no known issues |
Core Consensus | @joschisan | @bradleystachurski | polished and documented |
Lightning Module | @joschisan | @m1sterc001guy | active development, known issues |
Mint Module | @joschisan | X | active development, known issues |
Wallet Module | @bradleystachurski | @dpc @joschisan | active development, critical issues |
Core Client | @dpc | X | X |
Lightning Gateway | @m1sterc001guy | @joschisan | X |
Database | @m1sterc001guy | X | X |
Networking | X | X | X |
CI / Nix | @dpc | @maan2003 @bradleystachurski | X |
Testing | @bradleystachurski | X | X |
Devimint | @maan2003 | X | X |
Config Generation | X | X | X |