Skip to content

mycitadel/mycitadel-node

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
February 24, 2021 14:46
August 31, 2021 12:46
src
August 31, 2021 12:46
February 15, 2021 14:23
December 29, 2020 15:49
December 29, 2020 15:06
February 24, 2021 14:46
August 31, 2021 12:46

MyCitadel Node

Node operating MyCitadel wallet (can be embedded, self- or cloud-hosted) providing synchronization between bitcoin blockchain, lightning node (LNP Node) and RGB assets stash state (RGB Node). It supports

  • Arbitrary-complex descriptor-based wallets
  • Miniscript-based wallet spending policies
  • Complex multisignature schemes
  • Lightning network (in generalized format, with planned support for multi-peer channels, DEX etc)
  • RGB assets
  • Universal invoices, supporting on-chain descriptor- and PSBT-based invoices, Lightning network, RGB assets, repeated payments, multiple beneficiaries etc...
  • Taproot & Schnorr signatures (WIP)
  • Partially signed bitcoin transactions
  • Arbitrary complex derivation paths, including new identity-based derivations for multisigs and taproot (see https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-February/018381.html)
  • Complete separation of private keys to external HSMs or multiple signature servers etc (via PSBTs)

MyCitadel Node demonstrates how modern censorship-resistant self-sovereign privacy-focusing P2P software can be developed basing on LNP/BP Association standards, frameworks and libraries for LNP/BP & Internet2 protocols.

This repository can run (in embedded mode) or connect to external RGB Node and LNP Node, plus it require external Electrum Server accessed via ElectrumX protocol (in future will be replaced by BP Node).

MyCitadel Node is based on:

MyCitadel node can be either run as a daemon or as an embedded library. It can be accessed using command-line tools, shipped as a part of this repository:

  • mycitadel-cli, for connecting to a standalone mycitadeld daemon run in background/in the cloud
  • mycitadel, which contains embedded node and does not require any daemon

or from platform-specific GUI applications, which support both embedded and external node operation mode:

  • Native iOS, iPadOS, macOS created with SwiftUI
  • Native Android (planned)
  • Cross-platform desktop (Linux, macOS, Windows) – GTK+-based (planned)

MyCitadel node ships with C library (libmycitadel) providing FFI which can be used from other languages (it is currently used by native mobile MyCitadel wallets, but also can be interfaced from NodeJS, React Native, Python, Go and other runtimes and languages). It also includes native Swift class library (MyCitadelKit) which simplifies interaction with the node for Apple mobile & desktop applications (similar Java class library is planned for Android & JRE).

Design & architecture

High-level architecture: Wallet architecture

More details on modules: Wallet components

Microservice architecture Microservices

About

Node operating MyCitadel wallet (can be embedded, self- or cloud-hosted)

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published