Crate fedimint_core

source ·
Expand description

Fedimint Core library

fedimint-core contains are commonly used types, utilities and primitives, shared between both client and server code.

Things that are server-side only typically live in fedimint-server, and client-side only in fedimint-client.

§Wasm support

All code in fedimint-core needs to compile on Wasm, and fedimint-core includes helpers and wrappers around non-wasm-safe utitlies.

In particular:

Re-exports§

Modules§

  • Admin (guardian) client types
  • Federation-stored client backups Federation-stored client backups
  • Gradual bitcoin dependency migration helpers
  • Legacy serde encoding for bls12_381
  • Federation configuration
  • Fundamental types Fedimint Core API (common) module interface
  • Database handling Core Fedimint database traits and types
  • Consensus encoding This module defines a binary encoding interface which is more suitable for consensus critical encoding than e.g. bincode. Over time all structs that need to be encoded to binary will be migrated to this interface.
  • Common environment variables
  • Formatting helpers
  • Hex encoding helpers
  • Federation invite code
  • Common macros
  • Extenable module sysystem Fedimint supports modules to allow extending it’s functionality. Some of the standard functionality is implemented in form of modules as well.
  • Peer networking
  • Runtime (wasm32 vs native) differences handling Copyright 2021 The Matrix.org Foundation C.I.C. Abstraction over an executor so we can spawn tasks under WASM the same way we do usually.
  • Atomic BFT unit containing consensus items
  • Task handling, including wasm safe logic
  • Types handling per-denomination values
  • Types handling multiple per-denomination values
  • Time handling, wasm safe functionality
  • Timing helpers
  • Fedimint transaction (inpus + outputs + signature) types
  • Peg-in txo proofs
  • General purpose utilities

Macros§

Structs§

  • Represents an amount of BTC inside the system. The base denomination is milli satoshi for now, this is also why the amount type from rust-bitcoin isn’t used instead.
  • OutPoint represents a globally unique output in a transaction
  • A transaction id for peg-ins, peg-outs and reissuances

Enums§

Constants§

Traits§

  • Trait which applies to hashes of all types.
  • for consensus-related calculations given the number of peers

Functions§

Attribute Macros§