Skip to content

Bump bitcoin-payment-instructions to fork to accept non-compliant LNURL servers#40

Merged
martinsaposnic merged 1 commit into
mainfrom
bump-bpi-skip-desc-hash
May 18, 2026
Merged

Bump bitcoin-payment-instructions to fork to accept non-compliant LNURL servers#40
martinsaposnic merged 1 commit into
mainfrom
bump-bpi-skip-desc-hash

Conversation

@martinsaposnic
Copy link
Copy Markdown
Contributor

Summary

Motivation

Real-world LNURL-pay servers like bringin.xyz mint BOLT11 invoices with d = "Topup <N> sats" and no h tag. Strike pays these fine; upstream bitcoin-payment-instructions rejects them with "BOLT 11 invoice resolved via LNURL must have a matching description hash", so moneydevkit payouts to those addresses currently fail.

Tradeoff

LUD-06 requires the invoice's h tag to commit to sha256(metadata) so the payer's wallet can prove the invoice matches the metadata it displayed. Dropping the check means a malicious or buggy LNURL host can swap the description out from under the user. Acceptable to unblock payouts.

Test plan

  • cargo build clean on this branch
  • Live test against vincenzopalazzo@bringin.xyz via HTTPHrnResolver returned a valid BOLT11 (lnbc230u1p4qkjf0...) where upstream returned the description-hash error
  • Run lightning-js's pay_to_address integration against bringin from a built binary (manual, post-merge)

Followup (not in this PR)

cargo tree -d shows two copies of bitcoin-payment-instructions because ldk-node (via its own Cargo.toml at rev 4309f47) still pins 6796e87 of this crate. Bumping ldk-node to also point at bc7d03f in a separate PR will dedup. Both copies are at v0.6.0 with identical APIs, so this is a hygiene issue, not a correctness one.

Point at the `2025-12-ldk-node-base` branch (rev bc7d03f) of our fork,
which includes a patch to accept LNURL-pay BOLT11 invoices that ship a
plain `d` description tag instead of the LUD-06-required `h =
sha256(metadata)` tag. Unblocks payouts to Bringin lightning addresses
(e.g. vincenzopalazzo@bringin.xyz) and any other LNURL servers with the
same non-compliance.

See moneydevkit/bitcoin-payment-instructions#2.

Builds clean; verified live against vincenzopalazzo@bringin.xyz which
previously failed with "BOLT 11 invoice resolved via LNURL must have a
matching description hash" and now returns a valid invoice.

Note: ldk-node still transitively pins rev 6796e87 of the same crate,
so `cargo tree -d` shows two copies of bitcoin-payment-instructions
until ldk-node is bumped in a follow-up.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant