btcpayserver / btcpayserver/app

LSP Integration

Open
#121 4 comments 0 reactions 0 assignees View on GitHub
LDK
Dominant language
HTML
Stars
22
Forks
23
PR merge metrics
No merged PRs in 30d

Description

We're aiming to do this one in Q1/Q2. It heavily depends on when LDK team ships C# bindings for [lighting-liquidity](https://github.com/lightningdevkit/lightning-liquidity) which would allow us to support any LSP specs compliant [LSP.](https://github.com/BitcoinAndLightningLayerSpecs/)

I am starting this issue, so we could begin to discuss the desired UX around LSPs, as this is potentially going to be the hardest concept to agree on, as currently there doesn't seem to be once size fit all approach.

In order to receive a payment, a new node needs to be connected to the network. [LSP's ](https://bitcoin.design/guide/how-it-works/lightning-services/#:~:text=lsp) help facilitate that, but since the capital is being locked up in channels, obviously they want to charge a fee for this service. This fee currently, can be charged either upfront, or after the payment. Both approaches have different trade-offs which I attempted to illustrate here:
Screenshot 2024-11-30 at 23 05 08

My opinion is that slapping LSP terminology together with channels and all of this aka this style, isn't suitable for our target audience.

Screenshot 2024-11-30 at 22 09 35

On the other hand, abstracting things away could mean that fees for payments would end up being higher, which is arguably even the worse UX especially for our target audience, retail merchants who often deal with low margins and are very fee sensitive.

What I would like to propose is some sort of combination of both approaches, and this is where I'd really like to have some discussions on whether or not it's achievable. To get to the point, our whole idea with the app is that end-user, retail merchant is onboarded by an ambassador which hosts infrastructure required, but is **never** custodian to merchants funds.

Another consideration we have to add into equation is that we believe most ambassadors would ideally want to charge some sort of fee for the technical IT support they're providing for the merchant, hence we're introducing membership subscriptions.

What I would like to explore is the idea of having LSP01 (the cost-effective option) which is completely abstracted from the merchant, but not the ambassador. Ambassador could ask during the merchant onboarding (which we expect to be in person in most cases) approximate expected revenue, and inalculate that [into the membership plan](https://github.com/btcpayserver/btcpayserver/issues/6447) for the merchant, or basically offer subscription plan based on the expected, and later actual revenue.

For example, if you're onboarding someone to your BTCPay Server, and you're charging them certain fee for that, I wonder if you could simply in agreement A) Select default LSP B) pay for channel on behalf of the merchant you're onboarding.

This way technicalities are abstracted from the end user (hooray), the most cost-effective option is selected (hooray), but there are some costs for the ambassadors themselves, especially in scenario of a free trial, where ambassador gives X days to a merchant before they commit to a subscription, the upfront LSP cost is customer acquisition cost in a way for ambassadors.

Screenshot 2024-11-30 at 23 28 54

I believe this is something both @Kukks and @NicolasDorier mentioned in different contexts, so I am logging it in.

For this to be achievable, we'd of course have to fully flash out https://github.com/btcpayserver/btcpayserver/issues/6447 and ensure all the cases are covered there, and hopefully bring LSP integration somehow into the BTCPay Server itself.

I cannot think of many downsides but, I guess this model would heavily be dependable on the **[Membership Plugin.](https://docs.google.com/document/d/1Gia61z-UpWVX-8LEw2B_8xaXeS9VvALH-pZ6hchlDIg/edit?tab=t.0#heading=h.ygp2279zer57)** We could however, design the app in which this can be a happy path, but then user could change LSP's from the dropdown and PAY for the channel upfront, or they click skip in which case they would be opting for JIT or manual channel opening.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading issue #6447 and the linked Membership Plugin document, then review the LSP01, JIT, and manual channel-opening flows described here. Clarify the desired merchant and ambassador UX, dependency on LDK C# bindings, fee ownership, and implementation scope; the work is done when the approach and cases are agreed well enough to define implementation tasks.

Written by the indexing model from the issue text.

Assessment

Domain
design, payments
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.