Skip to content

Conversation

ConorOkus
Copy link
Collaborator

I've added a recommendation to also include BOLT 12 in the default BIP(3)21 URI. We are now at a stage where prominent bitcoin wallets are supporting it as evidenced at bolt12.org. It will also be supported soon in bLIP-52/LSPS2 for inbound liquidity.

The mockups should include the ability to generate a QR code with a BOLT 12 offer.

Splicing also offers significant advantages for managing Lightning Network channels, making the user experience more fluid and cost-effective. It doesn't require a third party to help facilitate the swap. Phoenix wallet offer this functionality by default.

Copy link

netlify bot commented Sep 11, 2025

Deploy Preview for bitcoin-design-site ready!

Name Link
🔨 Latest commit 73ae18a
🔍 Latest deploy log https://app.netlify.com/projects/bitcoin-design-site/deploys/68c43e74b78e300008593dfb
😎 Deploy Preview https://deploy-preview-1194--bitcoin-design-site.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@ConorOkus ConorOkus requested a review from sbddesign September 11, 2025 21:57
@GBKS GBKS requested a review from Copilot September 12, 2025 07:55
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates the daily spending wallet guidance to incorporate BOLT 12 offers and splicing technology for improved Lightning Network functionality. The changes reflect current wallet capabilities and provide a more streamlined approach to Bitcoin transactions.

  • Adds BOLT 12 offers to unified payment requests alongside lightning invoices and on-chain addresses
  • Replaces submarine swap mechanism with splicing for simplified balance management
  • Updates BIP21 references to BIP(3)21 to reflect the extended standard

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

ConorOkus and others added 3 commits September 12, 2025 11:37
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@ConorOkus ConorOkus mentioned this pull request Sep 12, 2025
Copy link
Contributor

@yashrajd yashrajd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As mentioned in #1191, very cool to see splicing starting to be added to guidance now that all lightning implementations support it (i think).

IIUC splicing is pretty cool tech addressing following use-cases:

  1. modify channel size without closing-reopening
  2. (receive) lightning payments larger than receive limit
  3. (receive) on-chain payments into the existing lightning channel so a single lightning-only balance can be maintained.

Currently (73ae18a) the PR starts by tackling point (3).

I do think the critical use-case might end up being (2), since

  • as lightning adoption increases, this scenario will be faced by more and more users
  • splicing on-chain fees are likely to be orders of magnitude higher than usual routing fees, which would be a nasty surprise if the user is not informed properly

Would like to see content added/updated at appropriate places in the Guide regarding these such as:

This wallet utilizes 'swap addresses' for all on-chain transactions. These are used to facilitate the transfer of received Bitcoin into the user's Lightning balance. Consequently, the wallet maintains a single Lightning balance, avoiding the need for a separate on-chain balance. This simplifies the user experience and is trust-minimized and non-custodial, courtesy of [submarine swaps](https://thebitcoinmanual.com/articles/btc-submarine-swaps/). We cover these more in our [lightning services]({{ "/guide/how-it-works/lightning-services/#swaps" | relative_url }}) and receiving pages.

As unified requests [aren't widely supported yet](https://bitcoinqr.dev/), and users may want to request just from lightning or on-chain, they have options to share the lightning invoice or on-chain address independently.
This wallet utilizes **splicing** for all on-chain transactions. Splicing allows the seamless transfer of received Bitcoin into the user's Lightning balance without maintaining a separate on-chain balance. As a result, the wallet presents a single Lightning balance, greatly simplifying the user experience. This approach is trust-minimized and non-custodial, as channel capacity can be increased or decreased directly on-chain without relying on external swap services. We cover these more in our [lightning liquidity]({{ "/guide/how-it-works/liquidity" | relative_url }}) and receiving pages.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is existing language, but "for all on-chain transactions" tripped me up. I assume it only means receive-only?

Since added text mentions lightning liquidity and receiving pages, content will also have to be added/updated on those pages.

Suggested change
This wallet utilizes **splicing** for all on-chain transactions. Splicing allows the seamless transfer of received Bitcoin into the user's Lightning balance without maintaining a separate on-chain balance. As a result, the wallet presents a single Lightning balance, greatly simplifying the user experience. This approach is trust-minimized and non-custodial, as channel capacity can be increased or decreased directly on-chain without relying on external swap services. We cover these more in our [lightning liquidity]({{ "/guide/how-it-works/liquidity" | relative_url }}) and receiving pages.
This wallet utilizes **splicing** for on-chain transactions. Splicing allows the seamless transfer of received Bitcoin into the user's Lightning balance without maintaining a separate on-chain balance. As a result, the wallet presents a single Lightning balance, greatly simplifying the user experience. This approach is trust-minimized and non-custodial, as channel capacity can be increased or decreased directly on-chain without relying on external swap services. We cover this in detail in our [lightning liquidity]({{ "/guide/how-it-works/liquidity" | relative_url }}) and receiving pages.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, if the full balance is always on lightning, then a splice would also be needed for sending, no? To get the ₿ out of the channel?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question. This being the Requesting page, shouldn't the commentary be restricted to receiving anyways? On this front, this is a bit of a nit.

(disclaimer: lightning is not my wheelhouse, so I'd love to know what you and others who understand this better, think.)

Re: the meat of your question:

My understanding is that one of the main benefits of splicing for on-chain, is that it increases your channel size, which is strictly good, which also benefits other use cases. But using splicing for on-chain sends will reduce channel size, which is not desirable. For e.g. this might make subsequent lightning receives (use case 2 above) more likely, to require splicing with associated on-chain cost.

Perhaps swaps is an alternative approach that could be used (retained?) for on-chain sends. I know there are issues (costs, third party reliance?) with this too. I've asked Phoenix on twitter, let's see if they respond.

Copy link
Contributor

@yashrajd yashrajd Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update: phoenix uses splice outs, but also – https://x.com/phoenixwallet/status/1970891555704799740

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reducing channel size can be desirable, no? When I have a big balance and want to move it to cold storage or so?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good point, and a proper splice out use-case... (i wonder if there should be a proper flow for this to allow users to do this?)..,

### Payment link

Payment links use a BIP21 [URI]({{ "/guide/how-it-works/payment-request-formats/#uniform-resource-identifier-uris-schemes" | relative_url }}) `bitcoin:` which makes these readable by other bitcoin applications. These can be included as part of a button or hyperlink. Also see the [wallet selector UI pattern]({{ "/guide/how-it-works/wallet-selector/" | relative_url }}).
Payment links use a BIP(3)21 [URI]({{ "/guide/how-it-works/payment-request-formats/#uniform-resource-identifier-uris-schemes" | relative_url }}) `bitcoin:` which makes these readable by other bitcoin applications. These can be included as part of a button or hyperlink. Also see the [wallet selector UI pattern]({{ "/guide/how-it-works/wallet-selector/" | relative_url }}).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"BIP(3)21" tripped me up since I didn't know about BIP321, but it might be just me.

The linked page (payment request formats) only mentions BIP21, so this could be updated to mention and link to BIP321.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably fine to just write BIP21 here. The (3) part reads funny, and BIP21 covers the relevant functionality.

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.

3 participants