Resources on Lightning privacy

Receiver privacy with LNproxy

  • lnproxy takes a bolt 11 invoice and generates a “wrapped” invoice that can be settled if and only if the original invoice is settled. The “wrapped” invoice has the same payment hash, expiry, and description, as the invoice it wraps but adds a small routing fee to the amount. The “wrapped” invoice can be used anywhere the original invoice would be used to trustlessly hide the destination of a payment.

  • use the API in your .bashrc (available in the Raspiblitz v1.9.0 and above with a CLI shortcut as well):

    function lnproxy() {
      echo "Requesting a wrapped invoice from http://rdq6tvulanl7aqtupmoboyk2z3suzkdwurejwyjyjf4itr3zhxrm2lad.onion ..."
      torify curl http://rdq6tvulanl7aqtupmoboyk2z3suzkdwurejwyjyjf4itr3zhxrm2lad.onion/api/${1}
  • Code and how to run yourself:

  • Improved alias verifying the payment hash:

Unannounced channels - shadow liquidity

  • use parallel private channels to hide capacity and UTXOs


    To hide public channel balances, a node may open unannounced channels in parallel to announced ones. Depending on the relation between the balances of announced and unannounced channels, the attacker may still be able to discover unannounced channel balances (e.g., if the balance of the unannounced channel exceeds the balances of announced channels). Even in that case, the standard probing technique needs to be modified

Open channels with improved privacy


  • create channels from coinjoin outputs

    • private channels are not announced, use them especially if there is a public channel to the peer already

    • open one channel at a time

    • create no change

    • avoid round amounts

  • close cooperatively to an external address (eg a Joinmarket wallet running as a Maker))

  • Creating a Core Lightning channel funded by JoinMarket:

  • syntax for LND with Balance of Satoshis:

    bos open PUBKEY --amount SATS --coop-close-address EXTERNAL_ADDRESS --type private --external-funding

Mutiny wallet



LN wallets

Mobile wallets (LN node on the phone)

Tor support and private chain info

  • OBW - Tor + Electrum server support

    • optional custodial hosted channels support - payments are private from the provider

  • Breez - Tor and neutrino backend

  • Blixt - Neutrino block source

Custodial wallets

Traditional custodians provide no privacy from the maintainer.

  • Wallet of Satoshi

  • Bitcoin Beach Wallet (phone number required)

  • CoinOS (Liquid compatible LN <-> Liquid gateway)

LN compatible chaumian (blinded) mints

LN protocol improvements


Channel jamming



Reading list

Onion routing

  • BOLT #4: Onion Routing Protocol

  • Route Blinding proposal

  • CLI tool for constructing & peeling onions both with and without route blinding.

Listening and videos

Last updated