/swissknife

Bitcoin wallet with account management, Lightning integration through different providers and smart contracts for asset issuance

Primary LanguageRustMIT LicenseMIT

SwissKnife

A self-custodial wallet & transaction orchestrator for Lightning, Nostr and Smart contract protocols on Bitcoin

SwissKnife

Numeraire SwissKnife is a wallet and transaction orchestrator enabling easy integration of Bitcoin, Lightning, Nostr and smart contract protocols to any entity that wishes so without the complexities of above technologies.

GitHub stars If you like what we do, consider starring, sharing and contributing!

Features

  • Lightning Network. Send and receive payments.
  • LNURL support.
  • Lightning Address. Deploy your own Lightning Address infrastructure. Like email, anyone can use identifiers (username@your.domain) to send and receive payments.
  • Generate invoices.
  • Account segregation. Support any amount of users.
  • Internal ledger for instant payments on the same SwissKnife instance.
  • REST API.
  • Frequent contacts.
  • JWKS with automatic public key retrieval
  • JWT token authentication` (tested with Auth0, Supabase).
  • RBAC. Fine grained authorization per route.
  • Data availability through pagination and advanced search.

Numeraire SwissKnife ships with a Dashboard.

Lightning Providers

SwissKnife allows direct Lightning integration, supporting the most used node implementations and well-known providers:

  • Core Lightning:
    • Non-custodial
    • Run your own node
    • Manage your own liquidity.
  • Greenlight:
    • Non-custodial
    • Automatic node management.
    • Manage your own liquidity.
  • Breez:
    • Non-custodial
    • Automatic node management.
    • Automatic liquidity management via LSPs (user can switch LSPs)

Deployment

Documentation website coming soon

Build from source

SwissKnife can be built from source (see Contributing), Docker images and Helm charts will come when the first alpha version is out.

Config

Default configuration is defined in config/default.toml. SwissKnife supports .toml, yaml and json config files. The order of applied configuration is the following:

  1. ENV vars. Defined given the names of the config values in default.toml, adding the prefix SWISSKNIFE. Overriding all sensitive values with ENV vars is recommended.
  2. any file under config corresponding to the RUN_MODE (development by default). Such as development.toml|yaml|json or `production.toml|yaml|json``
  3. The default.toml|yaml|json file.

Inspect the .env.example file for and generate your own .env for sensitive config values.

Work In Progress (WIP)

Features

  • Nostr. NIP-5 and Zap support through Lightning Address
  • Webhooks
  • API keys authentication
  • BOLT12 (offers)
  • Notifications (Email, SMS by Twilio)
  • Documentation website
  • Dockerhub images
  • Desktop applications
  • Helm Charts

Lightning providers

  • Phoenixd
    • Non-custodial
    • Automatic node management
    • Automatic liquidity management via ACINQ.
  • LightSpark
    • Custodial
    • Automatic node management
    • Automatic liquidity management via Lightspark
  • LND
    • Non-custodial
    • Run your own node
    • Manage your own liquidity

Smart contracts