Skip to main content

Bitcoin and Lightning development

Software for Bitcoin and Lightning from developers who have worked with the protocol for many years — from trading platforms and payments to wallets, mining, and hardware.

Hand-drawn illustration for Bitcoin and Lightning

Tools and frameworks we use

  • Bitcoin Core
  • BDK (Bitcoin Dev Kit)
  • Descriptors and miniscript
  • Electrum
  • Lightning (lnd)
  • BTCPay Server
  • Stratum V2
  • Nostr
  • Rust
  • Go
  • C#
  • Flutter
  • ESP32

Bitcoin development with protocol experience

Bitcoin places different demands on software than ordinary payment systems. Transactions cannot be reversed, keys must be handled with great care, and many users expect to run the software on their own hardware. We have worked with Bitcoin for many years and know the protocol, the libraries, and the surrounding ecosystem.

For Bitmynt, Norway’s oldest bitcoin exchange service, we contributed to a new platform with automated trading. We have also reconstructed historical BTC/NOK prices for 2010–2014, and we maintain Canary, a self-hostable service that monitors wallets with xpubs and descriptors through BDK and Electrum, without ever having access to the funds.

Architecture choices in Bitcoin projects: keys, nodes, and regtest

In Bitcoin, the most important decisions are often made before the first line of code. These are the choices we make in most projects:

  • Watch-only wherever possible. Services that monitor, report, or create invoices get only descriptors or xpubs. Signing happens with the user, ideally on a hardware wallet via PSBT.
  • A deliberate choice of data source. Your own Bitcoin Core node gives the best privacy and the least trust in others, while an Electrum server is quicker to get started with. We make the choice explicit, and let users of self-hosted software point to their own node.
  • Amounts as integer satoshis. Never floating point, and conversion to NOK or other currencies only where the amount is displayed.
  • Reorgs taken seriously. The logic must cope with a transaction disappearing from a block, and the number of confirmations is matched to the amount.
  • Regtest in the tests. Integration tests run against real nodes on a local regtest network, where we can mine blocks and provoke failures in seconds, before anything is tried on testnet or signet.

Lightning, BTCPay Server, and hardware

We have built a BTCPay Server plugin in C# that receives Lightning payments directly into Bare Bitcoin, and an integration that records donations in WordPress and WooCommerce. We have worked on Lightning wallets based on lnd and Flutter, on Stratum V2 solo mining in Canary Mining, and on Nostr identities derived from passkeys. On the hardware side, we have written a Go library for Satscard and other NFC cards, and an offline, dice-based seed generator for ESP32.

Typical engagements

Trading and payment platforms

Secure, automated trading and payments in bitcoin, with integrations to external services and in-house systems.

Wallets and monitoring

Wallet monitoring with xpubs and descriptors, without access to private keys, and Lightning wallets for mobile.

BTCPay Server and Lightning payments

Plugins and integrations that let shops and organisations accept bitcoin and Lightning, including in WordPress and WooCommerce.

Self-hosting, mining, and hardware

Software for StartOS, myNode, and Umbrel, Stratum V2 solo mining, and hardware projects with NFC and ESP32.

Relevant experience

Projects and open-source work where the technology has been used in practice.

Open source

  • canary

    Self-hostable Bitcoin wallet monitoring with xpubs and descriptors, with email and Nostr alerts. Built in Rust with BDK and Electrum.

  • btcpayserver-plugin-barebitcoin

    A BTCPay Server plugin in C# that lets shops receive Lightning payments directly into a Bare Bitcoin account.

  • tapcards

    A Go library for communicating with Satscard and other Coinkite NFC cards.

  • lilygo-tdisplay-bitcoin-dice-seed-generator

    An offline, dice-based BIP39 seed generator for the LilyGO T-Display ESP32 board.

  • canary-mining

    A self-hosted Stratum V2 server for solo mining against Bitcoin Core over IPC, written in Rust.

Frequently asked questions

Do you have experience with Bitcoin in production?

Yes. Among other things, we contributed to the new trading platform for Bitmynt, Norway’s oldest bitcoin exchange service, and we maintain several open-source projects for Bitcoin and Lightning.

Do you work with other cryptocurrencies?

No. We work with Bitcoin and Lightning, and with adjacent protocols such as Nostr.

Can you add bitcoin payments to an online shop?

Yes. We often use BTCPay Server, which connects to WooCommerce and other platforms, and we can build custom plugins where needed.

How do you handle key security?

We design solutions so private keys live in as few places as possible, ideally only with the user. Services that monitor or report are built with public keys and descriptors.

Can you build software for self-hosted nodes?

Yes. Canary is packaged for StartOS and myNode, and we have experience with how apps are distributed on platforms such as Umbrel.

Need help with Bitcoin and Lightning?

Tell us briefly about the product, the team, or the system. We will respond with a practical suggestion for the next step — a complete delivery, senior capacity in your team, or technical advice.

Your email address and message are used only to respond to your enquiry.

Location
Oslo, Norway