No description
Find a file
2025-04-07 23:50:58 +02:00
.github/workflows init 2025-04-02 17:38:52 +02:00
src workaround for xpay-handle-pay bug: use xpay if cln version supports it 2025-04-07 23:50:58 +02:00
tests tests: fix timing flake 2025-04-02 17:48:55 +02:00
tools init 2025-04-02 17:38:52 +02:00
.gitignore init 2025-04-02 17:38:52 +02:00
Cargo.lock Downgrade Cargo.lock version 2025-04-02 19:46:11 +02:00
Cargo.toml init 2025-04-02 17:38:52 +02:00
CHANGELOG.md add CHANGELOG 2025-04-02 18:00:50 +02:00
coffee.yml init 2025-04-02 17:38:52 +02:00
flake.lock init 2025-04-02 17:38:52 +02:00
flake.nix init 2025-04-02 17:38:52 +02:00
LICENSE init 2025-04-02 17:38:52 +02:00
README.md init 2025-04-02 17:38:52 +02:00

latest release on CLN v25.02 latest release on CLN v24.11 latest release on CLN v24.08.2

main on CLN v25.02 main on CLN v24.11 main on CLN v24.08.2

cln-nip47

A core lightning plugin to connect wallets via Nostr Wallet Connect (NWC) as specified in NIP-47.

Installation

For general plugin installation instructions see the plugins repo README.md

Release binaries for

  • x86_64-linux
  • armv7-linux (Raspberry Pi 32bit)
  • aarch64-linux (Raspberry Pi 64bit)

can be found on the release page. If you are unsure about your architecture you can run uname -m.

They require glibc>=2.31, which you can check with ldd --version.

Building

You can build the plugin yourself instead of using the release binaries. First clone the repo:

git clone https://github.com/daywalker90/cln-nip47.git

Install a recent rust version (rustup is recommended) and in the cln-nip47 folder run:

cargo build --release

After that the binary will be here: target/release/cln-nip47

Note: Release binaries are built using cross and the optimized profile.

Documentation

Options

  • nip47-relays: Specify the relays that you want to use with your NWC. Can be set multiple times to use multiple relays, but it is highly recommended to use your own relay since public relays may limit content length, amount of public keys per IP or require unsupported things like proof of work or payments. Each NWC you create is a separate public key and the list_transactions method can have quite a large content length! You must set this atleast one time.

Methods

  • nip47-create label [budget_msat] [interval]

    • create a new NWC string (uri) with the currently configured relays. For example: nip47-create mynwc 10000 1d will let you spend 10 satoshis every day using that NWC
    • label: a label to identify this NWC
    • budget_msat: optional. Set an absolute budget in msat that this NWC is allowed to use. This will also be your balance in your wallet. If you don't set this, the NWC will be allowed to use your whole node balance and show that aswell in your wallet! Set it to 0 to disable paying anything with this NWC
    • interval: optional. Set an amount of time after which the budget will be refreshed to the amount specified in budget_msat, e.g.:5seconds or 4weeks. Supported time units are:
      • seconds: "second", "seconds", "sec", "secs", "s"
      • minutes: "minute", "minutes", "min", "mins", "m"
      • hours: "hour", "hours", "h"
      • days: "day", "days", "d"
      • weeks: "week", "weeks", "w"
  • nip47-revoke label

    • revoke and remove all data related to a previously created NWC with label
    • label: the label the NWC was created with
  • nip47-budget label [budget_msat] [interval]

    • update/add an existing NWC budget a new NWC string with the currently configured relays. For example: nip47-create mynwc 10000 1d will let you spend 10 satoshis every day using that NWC
    • label: a label to identify this NWC
    • budget_msat: optional. Set an absolute budget in msat that this NWC is allowed to use. This will also be your balance in your wallet. If you don't set this, the NWC will be allowed to use your whole node balance and show that aswell in your wallet! Set it to 0 to disable paying anything with this NWC
    • interval: optional. Set an amount of time after which the budget will be refreshed to the amount specified in budget_msat, e.g.:5seconds or 4weeks. Supported time units are the same as in nip47-create
  • nip47-list [label]

    • list all NWC configurations or just the one with label
    • label: optional. The label the NWC was created with

Supported NWC methods

  • pay_invoice
  • multi_pay_invoice
  • pay_keysend (no preimage in request allowed since CLN only supports generating it itself)
  • multi_pay_keysend (no preimage in request allowed since CLN only supports generating it itself)
  • make_invoice
  • lookup_invoice
  • list_transactions
  • get_balance
  • get_info (no block_hash)

Supported NWC notifications

  • payment_received
  • payment_sent

Supported content encryption: