Skip to content

Add bLIP 55: Webhook Registration (LSPS5) - #55

Merged
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5
Jul 29, 2025
Merged

Add bLIP 55: Webhook Registration (LSPS5) #55
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5

Conversation

@tnull

@tnulltnull commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

Based on #52.

In typical mobile environments, a program that is not currently being focused on by the user will be suspended, with all its TCP connections dropped.

This specification provides a way for a mobile client to register some specific webhook by which the LSP can signal a push notification to the application developer server, which will in turn convert the push notification to one that it itself signs and can send to the mobile OS developer server.

The given protocol is based on LSPS0/bLIP 50 and has been previously stabilized by the LSP Spec group.

As previously discussed on multiple occasions, the LSP Spec group is however moving to a bLIP-centric process, which is why we 'upstream' these previously-stabilized specifications here.

(cc the original author @ZmnSCPxj-jr)

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, a reference implementation section would be useful.

Comment threadblip-0055.md Outdated
@tnull

Copy link
Copy Markdown
ContributorAuthor

Same here, a reference implementation section would be useful.

Hmm, good point in this case, as there is no implementation of this protocol as of today. We plan to add support to lightning-liquidity (which should be a comparatively small task), but haven't come around to do so yet. I assume this means the bLIP would need to remain in the accepted state for now?

@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased after #55 landed.

@t-bast

Copy link
Copy Markdown
Contributor

Needs a rebase and this should be good to go?

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Needs a rebase and this should be good to go?

Ah, I though we'd wanted to wait with this until a reference implementation is available?

@t-bast

Copy link
Copy Markdown
Contributor

Ah, I though we'd wanted to wait with this until a reference implementation is available?

Good point, if there is one that is being worked on then it's better to wait!

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Good point, if there is one that is being worked on then it's better to wait!

Yes, there is work-in-progress, will give an update here once that has been merged!

@martinsaposnic

Copy link
Copy Markdown
Contributor

hey @t-bast@tnull , just pushed a reference implementation for this PR. lightningdevkit/rust-lightning#3662

Comment threadblip-0055.md
"app_names": ["My LSPS-Compliant Lightning Wallet", "Another Wallet With The Same Signing Device"],
"max_webhooks": 42
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a particular reason why this doesn't also include the webhook URLs? Including them might make it more ergonomic to work with

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed on the spec call, I have no strong opinion on whether to include the URLs here or not. I think there might have been some privacy concerns if apps include some identifiers in the URLs, as these would leak to other apps registering webhooks. Then again, if you have the apps already share a Lightning wallet, it's probably fine for them to learn about each other, too?

@tnull

Copy link
Copy Markdown
ContributorAuthor

I now updated this PR to:

a) make it clear HTTPS is mandatory
b) drop the custom replay protection, as we assume network-level replay attacks are mitigated by using HTTPS
c) Fixed some links in the document

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

@tnull
tnull requested a review from t-bastJuly 28, 2025 09:50
@t-bast

Copy link
Copy Markdown
Contributor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from d0330fb to 4aa1dd8CompareJuly 29, 2025 09:09
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

Ah, good point. Now added a corresponding section and squashed the fixup commits while I was at it:

diff --git a/blip-0055.md b/blip-0055.md
index facc1f1..f1dc372 100644
--- a/blip-0055.md+++ b/blip-0055.md@@ -48,4 +48,11 @@ signs and can send to the mobile OS developer server.
This bLIP is licensed under the MIT license.
+## Reference Implementation++A reference implementation of this protocol can be found as part of the+[`lightning-liquidity`][] crate.++[`lightning-liquidity`]: https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity+
## Protocol

In typical mobile environments, a program that is not currently
being focused on by the user will be suspended, with all its
TCP connections dropped.
This specification provides a way for a mobile client to
register some specific webhook by which the LSP can signal a
push notification to the application developer server, which
will in turn convert the push notification to one that it itself
signs and can send to the mobile OS developer server.
The given protocol is based on LSPS0/bLIP 50 and has been previously
stabilized by the LSP Spec group.
As previously discussed on multiple occasions, the LSP Spec
group is however moving to a bLIP-centric process, which is why we
'upstream' these previously-stabilized specifications here.
@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from 4aa1dd8 to fbd9b0bCompareJuly 29, 2025 09:11

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

@t-bast
t-bast merged commit 7d97847 into lightning:masterJul 29, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

@martinsaposnic

Copy link
Copy Markdown
Contributor

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

sounds good, will update that today

Sign up for freeto 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

@tnull@t-bast@martinsaposnic
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add bLIP 55: Webhook Registration (LSPS5) by tnull · Pull Request #55 · lightning/blips · GitHub
Skip to content

Add bLIP 55: Webhook Registration (LSPS5) - #55

Merged
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5
Jul 29, 2025
Merged

Add bLIP 55: Webhook Registration (LSPS5) #55
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5

Conversation

@tnull

@tnulltnull commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

Based on #52.

In typical mobile environments, a program that is not currently being focused on by the user will be suspended, with all its TCP connections dropped.

This specification provides a way for a mobile client to register some specific webhook by which the LSP can signal a push notification to the application developer server, which will in turn convert the push notification to one that it itself signs and can send to the mobile OS developer server.

The given protocol is based on LSPS0/bLIP 50 and has been previously stabilized by the LSP Spec group.

As previously discussed on multiple occasions, the LSP Spec group is however moving to a bLIP-centric process, which is why we 'upstream' these previously-stabilized specifications here.

(cc the original author @ZmnSCPxj-jr)

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, a reference implementation section would be useful.

Comment threadblip-0055.md Outdated
@tnull

Copy link
Copy Markdown
ContributorAuthor

Same here, a reference implementation section would be useful.

Hmm, good point in this case, as there is no implementation of this protocol as of today. We plan to add support to lightning-liquidity (which should be a comparatively small task), but haven't come around to do so yet. I assume this means the bLIP would need to remain in the accepted state for now?

@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased after #55 landed.

@t-bast

Copy link
Copy Markdown
Contributor

Needs a rebase and this should be good to go?

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Needs a rebase and this should be good to go?

Ah, I though we'd wanted to wait with this until a reference implementation is available?

@t-bast

Copy link
Copy Markdown
Contributor

Ah, I though we'd wanted to wait with this until a reference implementation is available?

Good point, if there is one that is being worked on then it's better to wait!

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Good point, if there is one that is being worked on then it's better to wait!

Yes, there is work-in-progress, will give an update here once that has been merged!

@martinsaposnic

Copy link
Copy Markdown
Contributor

hey @t-bast@tnull , just pushed a reference implementation for this PR. lightningdevkit/rust-lightning#3662

Comment threadblip-0055.md
"app_names": ["My LSPS-Compliant Lightning Wallet", "Another Wallet With The Same Signing Device"],
"max_webhooks": 42
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a particular reason why this doesn't also include the webhook URLs? Including them might make it more ergonomic to work with

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed on the spec call, I have no strong opinion on whether to include the URLs here or not. I think there might have been some privacy concerns if apps include some identifiers in the URLs, as these would leak to other apps registering webhooks. Then again, if you have the apps already share a Lightning wallet, it's probably fine for them to learn about each other, too?

@tnull

Copy link
Copy Markdown
ContributorAuthor

I now updated this PR to:

a) make it clear HTTPS is mandatory
b) drop the custom replay protection, as we assume network-level replay attacks are mitigated by using HTTPS
c) Fixed some links in the document

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

@tnull
tnull requested a review from t-bastJuly 28, 2025 09:50
@t-bast

Copy link
Copy Markdown
Contributor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from d0330fb to 4aa1dd8CompareJuly 29, 2025 09:09
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

Ah, good point. Now added a corresponding section and squashed the fixup commits while I was at it:

diff --git a/blip-0055.md b/blip-0055.md
index facc1f1..f1dc372 100644
--- a/blip-0055.md+++ b/blip-0055.md@@ -48,4 +48,11 @@ signs and can send to the mobile OS developer server.
This bLIP is licensed under the MIT license.
+## Reference Implementation++A reference implementation of this protocol can be found as part of the+[`lightning-liquidity`][] crate.++[`lightning-liquidity`]: https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity+
## Protocol

In typical mobile environments, a program that is not currently
being focused on by the user will be suspended, with all its
TCP connections dropped.
This specification provides a way for a mobile client to
register some specific webhook by which the LSP can signal a
push notification to the application developer server, which
will in turn convert the push notification to one that it itself
signs and can send to the mobile OS developer server.
The given protocol is based on LSPS0/bLIP 50 and has been previously
stabilized by the LSP Spec group.
As previously discussed on multiple occasions, the LSP Spec
group is however moving to a bLIP-centric process, which is why we
'upstream' these previously-stabilized specifications here.
@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from 4aa1dd8 to fbd9b0bCompareJuly 29, 2025 09:11

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

@t-bast
t-bast merged commit 7d97847 into lightning:masterJul 29, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

@martinsaposnic

Copy link
Copy Markdown
Contributor

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

sounds good, will update that today

Sign up for freeto 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

@tnull@t-bast@martinsaposnic
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add bLIP 55: Webhook Registration (LSPS5) by tnull · Pull Request #55 · lightning/blips · GitHub
Skip to content

Add bLIP 55: Webhook Registration (LSPS5) - #55

Merged
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5
Jul 29, 2025
Merged

Add bLIP 55: Webhook Registration (LSPS5) #55
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5

Conversation

@tnull

@tnulltnull commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

Based on #52.

In typical mobile environments, a program that is not currently being focused on by the user will be suspended, with all its TCP connections dropped.

This specification provides a way for a mobile client to register some specific webhook by which the LSP can signal a push notification to the application developer server, which will in turn convert the push notification to one that it itself signs and can send to the mobile OS developer server.

The given protocol is based on LSPS0/bLIP 50 and has been previously stabilized by the LSP Spec group.

As previously discussed on multiple occasions, the LSP Spec group is however moving to a bLIP-centric process, which is why we 'upstream' these previously-stabilized specifications here.

(cc the original author @ZmnSCPxj-jr)

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, a reference implementation section would be useful.

Comment threadblip-0055.md Outdated
@tnull

Copy link
Copy Markdown
ContributorAuthor

Same here, a reference implementation section would be useful.

Hmm, good point in this case, as there is no implementation of this protocol as of today. We plan to add support to lightning-liquidity (which should be a comparatively small task), but haven't come around to do so yet. I assume this means the bLIP would need to remain in the accepted state for now?

@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased after #55 landed.

@t-bast

Copy link
Copy Markdown
Contributor

Needs a rebase and this should be good to go?

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Needs a rebase and this should be good to go?

Ah, I though we'd wanted to wait with this until a reference implementation is available?

@t-bast

Copy link
Copy Markdown
Contributor

Ah, I though we'd wanted to wait with this until a reference implementation is available?

Good point, if there is one that is being worked on then it's better to wait!

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Good point, if there is one that is being worked on then it's better to wait!

Yes, there is work-in-progress, will give an update here once that has been merged!

@martinsaposnic

Copy link
Copy Markdown
Contributor

hey @t-bast@tnull , just pushed a reference implementation for this PR. lightningdevkit/rust-lightning#3662

Comment threadblip-0055.md
"app_names": ["My LSPS-Compliant Lightning Wallet", "Another Wallet With The Same Signing Device"],
"max_webhooks": 42
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a particular reason why this doesn't also include the webhook URLs? Including them might make it more ergonomic to work with

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed on the spec call, I have no strong opinion on whether to include the URLs here or not. I think there might have been some privacy concerns if apps include some identifiers in the URLs, as these would leak to other apps registering webhooks. Then again, if you have the apps already share a Lightning wallet, it's probably fine for them to learn about each other, too?

@tnull

Copy link
Copy Markdown
ContributorAuthor

I now updated this PR to:

a) make it clear HTTPS is mandatory
b) drop the custom replay protection, as we assume network-level replay attacks are mitigated by using HTTPS
c) Fixed some links in the document

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

@tnull
tnull requested a review from t-bastJuly 28, 2025 09:50
@t-bast

Copy link
Copy Markdown
Contributor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from d0330fb to 4aa1dd8CompareJuly 29, 2025 09:09
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

Ah, good point. Now added a corresponding section and squashed the fixup commits while I was at it:

diff --git a/blip-0055.md b/blip-0055.md
index facc1f1..f1dc372 100644
--- a/blip-0055.md+++ b/blip-0055.md@@ -48,4 +48,11 @@ signs and can send to the mobile OS developer server.
This bLIP is licensed under the MIT license.
+## Reference Implementation++A reference implementation of this protocol can be found as part of the+[`lightning-liquidity`][] crate.++[`lightning-liquidity`]: https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity+
## Protocol

In typical mobile environments, a program that is not currently
being focused on by the user will be suspended, with all its
TCP connections dropped.
This specification provides a way for a mobile client to
register some specific webhook by which the LSP can signal a
push notification to the application developer server, which
will in turn convert the push notification to one that it itself
signs and can send to the mobile OS developer server.
The given protocol is based on LSPS0/bLIP 50 and has been previously
stabilized by the LSP Spec group.
As previously discussed on multiple occasions, the LSP Spec
group is however moving to a bLIP-centric process, which is why we
'upstream' these previously-stabilized specifications here.
@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from 4aa1dd8 to fbd9b0bCompareJuly 29, 2025 09:11

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

@t-bast
t-bast merged commit 7d97847 into lightning:masterJul 29, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

@martinsaposnic

Copy link
Copy Markdown
Contributor

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

sounds good, will update that today

Sign up for freeto 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

@tnull@t-bast@martinsaposnic
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add bLIP 55: Webhook Registration (LSPS5) by tnull · Pull Request #55 · lightning/blips · GitHub
Skip to content

Add bLIP 55: Webhook Registration (LSPS5) - #55

Merged
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5
Jul 29, 2025
Merged

Add bLIP 55: Webhook Registration (LSPS5) #55
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5

Conversation

@tnull

@tnulltnull commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

Based on #52.

In typical mobile environments, a program that is not currently being focused on by the user will be suspended, with all its TCP connections dropped.

This specification provides a way for a mobile client to register some specific webhook by which the LSP can signal a push notification to the application developer server, which will in turn convert the push notification to one that it itself signs and can send to the mobile OS developer server.

The given protocol is based on LSPS0/bLIP 50 and has been previously stabilized by the LSP Spec group.

As previously discussed on multiple occasions, the LSP Spec group is however moving to a bLIP-centric process, which is why we 'upstream' these previously-stabilized specifications here.

(cc the original author @ZmnSCPxj-jr)

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, a reference implementation section would be useful.

Comment threadblip-0055.md Outdated
@tnull

Copy link
Copy Markdown
ContributorAuthor

Same here, a reference implementation section would be useful.

Hmm, good point in this case, as there is no implementation of this protocol as of today. We plan to add support to lightning-liquidity (which should be a comparatively small task), but haven't come around to do so yet. I assume this means the bLIP would need to remain in the accepted state for now?

@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased after #55 landed.

@t-bast

Copy link
Copy Markdown
Contributor

Needs a rebase and this should be good to go?

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Needs a rebase and this should be good to go?

Ah, I though we'd wanted to wait with this until a reference implementation is available?

@t-bast

Copy link
Copy Markdown
Contributor

Ah, I though we'd wanted to wait with this until a reference implementation is available?

Good point, if there is one that is being worked on then it's better to wait!

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Good point, if there is one that is being worked on then it's better to wait!

Yes, there is work-in-progress, will give an update here once that has been merged!

@martinsaposnic

Copy link
Copy Markdown
Contributor

hey @t-bast@tnull , just pushed a reference implementation for this PR. lightningdevkit/rust-lightning#3662

Comment threadblip-0055.md
"app_names": ["My LSPS-Compliant Lightning Wallet", "Another Wallet With The Same Signing Device"],
"max_webhooks": 42
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a particular reason why this doesn't also include the webhook URLs? Including them might make it more ergonomic to work with

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed on the spec call, I have no strong opinion on whether to include the URLs here or not. I think there might have been some privacy concerns if apps include some identifiers in the URLs, as these would leak to other apps registering webhooks. Then again, if you have the apps already share a Lightning wallet, it's probably fine for them to learn about each other, too?

@tnull

Copy link
Copy Markdown
ContributorAuthor

I now updated this PR to:

a) make it clear HTTPS is mandatory
b) drop the custom replay protection, as we assume network-level replay attacks are mitigated by using HTTPS
c) Fixed some links in the document

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

@tnull
tnull requested a review from t-bastJuly 28, 2025 09:50
@t-bast

Copy link
Copy Markdown
Contributor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from d0330fb to 4aa1dd8CompareJuly 29, 2025 09:09
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

Ah, good point. Now added a corresponding section and squashed the fixup commits while I was at it:

diff --git a/blip-0055.md b/blip-0055.md
index facc1f1..f1dc372 100644
--- a/blip-0055.md+++ b/blip-0055.md@@ -48,4 +48,11 @@ signs and can send to the mobile OS developer server.
This bLIP is licensed under the MIT license.
+## Reference Implementation++A reference implementation of this protocol can be found as part of the+[`lightning-liquidity`][] crate.++[`lightning-liquidity`]: https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity+
## Protocol

In typical mobile environments, a program that is not currently
being focused on by the user will be suspended, with all its
TCP connections dropped.
This specification provides a way for a mobile client to
register some specific webhook by which the LSP can signal a
push notification to the application developer server, which
will in turn convert the push notification to one that it itself
signs and can send to the mobile OS developer server.
The given protocol is based on LSPS0/bLIP 50 and has been previously
stabilized by the LSP Spec group.
As previously discussed on multiple occasions, the LSP Spec
group is however moving to a bLIP-centric process, which is why we
'upstream' these previously-stabilized specifications here.
@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from 4aa1dd8 to fbd9b0bCompareJuly 29, 2025 09:11

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

@t-bast
t-bast merged commit 7d97847 into lightning:masterJul 29, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

@martinsaposnic

Copy link
Copy Markdown
Contributor

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

sounds good, will update that today

Sign up for freeto 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

@tnull@t-bast@martinsaposnic
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add bLIP 55: Webhook Registration (LSPS5) by tnull · Pull Request #55 · lightning/blips · GitHub
Skip to content

Add bLIP 55: Webhook Registration (LSPS5) - #55

Merged
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5
Jul 29, 2025
Merged

Add bLIP 55: Webhook Registration (LSPS5) #55
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5

Conversation

@tnull

@tnulltnull commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

Based on #52.

In typical mobile environments, a program that is not currently being focused on by the user will be suspended, with all its TCP connections dropped.

This specification provides a way for a mobile client to register some specific webhook by which the LSP can signal a push notification to the application developer server, which will in turn convert the push notification to one that it itself signs and can send to the mobile OS developer server.

The given protocol is based on LSPS0/bLIP 50 and has been previously stabilized by the LSP Spec group.

As previously discussed on multiple occasions, the LSP Spec group is however moving to a bLIP-centric process, which is why we 'upstream' these previously-stabilized specifications here.

(cc the original author @ZmnSCPxj-jr)

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, a reference implementation section would be useful.

Comment threadblip-0055.md Outdated
@tnull

Copy link
Copy Markdown
ContributorAuthor

Same here, a reference implementation section would be useful.

Hmm, good point in this case, as there is no implementation of this protocol as of today. We plan to add support to lightning-liquidity (which should be a comparatively small task), but haven't come around to do so yet. I assume this means the bLIP would need to remain in the accepted state for now?

@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased after #55 landed.

@t-bast

Copy link
Copy Markdown
Contributor

Needs a rebase and this should be good to go?

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Needs a rebase and this should be good to go?

Ah, I though we'd wanted to wait with this until a reference implementation is available?

@t-bast

Copy link
Copy Markdown
Contributor

Ah, I though we'd wanted to wait with this until a reference implementation is available?

Good point, if there is one that is being worked on then it's better to wait!

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Good point, if there is one that is being worked on then it's better to wait!

Yes, there is work-in-progress, will give an update here once that has been merged!

@martinsaposnic

Copy link
Copy Markdown
Contributor

hey @t-bast@tnull , just pushed a reference implementation for this PR. lightningdevkit/rust-lightning#3662

Comment threadblip-0055.md
"app_names": ["My LSPS-Compliant Lightning Wallet", "Another Wallet With The Same Signing Device"],
"max_webhooks": 42
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a particular reason why this doesn't also include the webhook URLs? Including them might make it more ergonomic to work with

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed on the spec call, I have no strong opinion on whether to include the URLs here or not. I think there might have been some privacy concerns if apps include some identifiers in the URLs, as these would leak to other apps registering webhooks. Then again, if you have the apps already share a Lightning wallet, it's probably fine for them to learn about each other, too?

@tnull

Copy link
Copy Markdown
ContributorAuthor

I now updated this PR to:

a) make it clear HTTPS is mandatory
b) drop the custom replay protection, as we assume network-level replay attacks are mitigated by using HTTPS
c) Fixed some links in the document

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

@tnull
tnull requested a review from t-bastJuly 28, 2025 09:50
@t-bast

Copy link
Copy Markdown
Contributor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from d0330fb to 4aa1dd8CompareJuly 29, 2025 09:09
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

Ah, good point. Now added a corresponding section and squashed the fixup commits while I was at it:

diff --git a/blip-0055.md b/blip-0055.md
index facc1f1..f1dc372 100644
--- a/blip-0055.md+++ b/blip-0055.md@@ -48,4 +48,11 @@ signs and can send to the mobile OS developer server.
This bLIP is licensed under the MIT license.
+## Reference Implementation++A reference implementation of this protocol can be found as part of the+[`lightning-liquidity`][] crate.++[`lightning-liquidity`]: https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity+
## Protocol

In typical mobile environments, a program that is not currently
being focused on by the user will be suspended, with all its
TCP connections dropped.
This specification provides a way for a mobile client to
register some specific webhook by which the LSP can signal a
push notification to the application developer server, which
will in turn convert the push notification to one that it itself
signs and can send to the mobile OS developer server.
The given protocol is based on LSPS0/bLIP 50 and has been previously
stabilized by the LSP Spec group.
As previously discussed on multiple occasions, the LSP Spec
group is however moving to a bLIP-centric process, which is why we
'upstream' these previously-stabilized specifications here.
@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from 4aa1dd8 to fbd9b0bCompareJuly 29, 2025 09:11

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

@t-bast
t-bast merged commit 7d97847 into lightning:masterJul 29, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

@martinsaposnic

Copy link
Copy Markdown
Contributor

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

sounds good, will update that today

Sign up for freeto 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

@tnull@t-bast@martinsaposnic
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add bLIP 55: Webhook Registration (LSPS5) by tnull · Pull Request #55 · lightning/blips · GitHub
Skip to content

Add bLIP 55: Webhook Registration (LSPS5) - #55

Merged
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5
Jul 29, 2025
Merged

Add bLIP 55: Webhook Registration (LSPS5) #55
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5

Conversation

@tnull

@tnulltnull commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

Based on #52.

In typical mobile environments, a program that is not currently being focused on by the user will be suspended, with all its TCP connections dropped.

This specification provides a way for a mobile client to register some specific webhook by which the LSP can signal a push notification to the application developer server, which will in turn convert the push notification to one that it itself signs and can send to the mobile OS developer server.

The given protocol is based on LSPS0/bLIP 50 and has been previously stabilized by the LSP Spec group.

As previously discussed on multiple occasions, the LSP Spec group is however moving to a bLIP-centric process, which is why we 'upstream' these previously-stabilized specifications here.

(cc the original author @ZmnSCPxj-jr)

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, a reference implementation section would be useful.

Comment threadblip-0055.md Outdated
@tnull

Copy link
Copy Markdown
ContributorAuthor

Same here, a reference implementation section would be useful.

Hmm, good point in this case, as there is no implementation of this protocol as of today. We plan to add support to lightning-liquidity (which should be a comparatively small task), but haven't come around to do so yet. I assume this means the bLIP would need to remain in the accepted state for now?

@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased after #55 landed.

@t-bast

Copy link
Copy Markdown
Contributor

Needs a rebase and this should be good to go?

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Needs a rebase and this should be good to go?

Ah, I though we'd wanted to wait with this until a reference implementation is available?

@t-bast

Copy link
Copy Markdown
Contributor

Ah, I though we'd wanted to wait with this until a reference implementation is available?

Good point, if there is one that is being worked on then it's better to wait!

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Good point, if there is one that is being worked on then it's better to wait!

Yes, there is work-in-progress, will give an update here once that has been merged!

@martinsaposnic

Copy link
Copy Markdown
Contributor

hey @t-bast@tnull , just pushed a reference implementation for this PR. lightningdevkit/rust-lightning#3662

Comment threadblip-0055.md
"app_names": ["My LSPS-Compliant Lightning Wallet", "Another Wallet With The Same Signing Device"],
"max_webhooks": 42
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a particular reason why this doesn't also include the webhook URLs? Including them might make it more ergonomic to work with

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed on the spec call, I have no strong opinion on whether to include the URLs here or not. I think there might have been some privacy concerns if apps include some identifiers in the URLs, as these would leak to other apps registering webhooks. Then again, if you have the apps already share a Lightning wallet, it's probably fine for them to learn about each other, too?

@tnull

Copy link
Copy Markdown
ContributorAuthor

I now updated this PR to:

a) make it clear HTTPS is mandatory
b) drop the custom replay protection, as we assume network-level replay attacks are mitigated by using HTTPS
c) Fixed some links in the document

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

@tnull
tnull requested a review from t-bastJuly 28, 2025 09:50
@t-bast

Copy link
Copy Markdown
Contributor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from d0330fb to 4aa1dd8CompareJuly 29, 2025 09:09
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

Ah, good point. Now added a corresponding section and squashed the fixup commits while I was at it:

diff --git a/blip-0055.md b/blip-0055.md
index facc1f1..f1dc372 100644
--- a/blip-0055.md+++ b/blip-0055.md@@ -48,4 +48,11 @@ signs and can send to the mobile OS developer server.
This bLIP is licensed under the MIT license.
+## Reference Implementation++A reference implementation of this protocol can be found as part of the+[`lightning-liquidity`][] crate.++[`lightning-liquidity`]: https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity+
## Protocol

In typical mobile environments, a program that is not currently
being focused on by the user will be suspended, with all its
TCP connections dropped.
This specification provides a way for a mobile client to
register some specific webhook by which the LSP can signal a
push notification to the application developer server, which
will in turn convert the push notification to one that it itself
signs and can send to the mobile OS developer server.
The given protocol is based on LSPS0/bLIP 50 and has been previously
stabilized by the LSP Spec group.
As previously discussed on multiple occasions, the LSP Spec
group is however moving to a bLIP-centric process, which is why we
'upstream' these previously-stabilized specifications here.
@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from 4aa1dd8 to fbd9b0bCompareJuly 29, 2025 09:11

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

@t-bast
t-bast merged commit 7d97847 into lightning:masterJul 29, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

@martinsaposnic

Copy link
Copy Markdown
Contributor

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

sounds good, will update that today

Sign up for freeto 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

@tnull@t-bast@martinsaposnic
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add bLIP 55: Webhook Registration (LSPS5) by tnull · Pull Request #55 · lightning/blips · GitHub
Skip to content

Add bLIP 55: Webhook Registration (LSPS5) - #55

Merged
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5
Jul 29, 2025
Merged

Add bLIP 55: Webhook Registration (LSPS5) #55
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5

Conversation

@tnull

@tnulltnull commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

Based on #52.

In typical mobile environments, a program that is not currently being focused on by the user will be suspended, with all its TCP connections dropped.

This specification provides a way for a mobile client to register some specific webhook by which the LSP can signal a push notification to the application developer server, which will in turn convert the push notification to one that it itself signs and can send to the mobile OS developer server.

The given protocol is based on LSPS0/bLIP 50 and has been previously stabilized by the LSP Spec group.

As previously discussed on multiple occasions, the LSP Spec group is however moving to a bLIP-centric process, which is why we 'upstream' these previously-stabilized specifications here.

(cc the original author @ZmnSCPxj-jr)

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, a reference implementation section would be useful.

Comment threadblip-0055.md Outdated
@tnull

Copy link
Copy Markdown
ContributorAuthor

Same here, a reference implementation section would be useful.

Hmm, good point in this case, as there is no implementation of this protocol as of today. We plan to add support to lightning-liquidity (which should be a comparatively small task), but haven't come around to do so yet. I assume this means the bLIP would need to remain in the accepted state for now?

@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased after #55 landed.

@t-bast

Copy link
Copy Markdown
Contributor

Needs a rebase and this should be good to go?

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Needs a rebase and this should be good to go?

Ah, I though we'd wanted to wait with this until a reference implementation is available?

@t-bast

Copy link
Copy Markdown
Contributor

Ah, I though we'd wanted to wait with this until a reference implementation is available?

Good point, if there is one that is being worked on then it's better to wait!

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Good point, if there is one that is being worked on then it's better to wait!

Yes, there is work-in-progress, will give an update here once that has been merged!

@martinsaposnic

Copy link
Copy Markdown
Contributor

hey @t-bast@tnull , just pushed a reference implementation for this PR. lightningdevkit/rust-lightning#3662

Comment threadblip-0055.md
"app_names": ["My LSPS-Compliant Lightning Wallet", "Another Wallet With The Same Signing Device"],
"max_webhooks": 42
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a particular reason why this doesn't also include the webhook URLs? Including them might make it more ergonomic to work with

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed on the spec call, I have no strong opinion on whether to include the URLs here or not. I think there might have been some privacy concerns if apps include some identifiers in the URLs, as these would leak to other apps registering webhooks. Then again, if you have the apps already share a Lightning wallet, it's probably fine for them to learn about each other, too?

@tnull

Copy link
Copy Markdown
ContributorAuthor

I now updated this PR to:

a) make it clear HTTPS is mandatory
b) drop the custom replay protection, as we assume network-level replay attacks are mitigated by using HTTPS
c) Fixed some links in the document

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

@tnull
tnull requested a review from t-bastJuly 28, 2025 09:50
@t-bast

Copy link
Copy Markdown
Contributor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from d0330fb to 4aa1dd8CompareJuly 29, 2025 09:09
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

Ah, good point. Now added a corresponding section and squashed the fixup commits while I was at it:

diff --git a/blip-0055.md b/blip-0055.md
index facc1f1..f1dc372 100644
--- a/blip-0055.md+++ b/blip-0055.md@@ -48,4 +48,11 @@ signs and can send to the mobile OS developer server.
This bLIP is licensed under the MIT license.
+## Reference Implementation++A reference implementation of this protocol can be found as part of the+[`lightning-liquidity`][] crate.++[`lightning-liquidity`]: https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity+
## Protocol

In typical mobile environments, a program that is not currently
being focused on by the user will be suspended, with all its
TCP connections dropped.
This specification provides a way for a mobile client to
register some specific webhook by which the LSP can signal a
push notification to the application developer server, which
will in turn convert the push notification to one that it itself
signs and can send to the mobile OS developer server.
The given protocol is based on LSPS0/bLIP 50 and has been previously
stabilized by the LSP Spec group.
As previously discussed on multiple occasions, the LSP Spec
group is however moving to a bLIP-centric process, which is why we
'upstream' these previously-stabilized specifications here.
@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from 4aa1dd8 to fbd9b0bCompareJuly 29, 2025 09:11

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

@t-bast
t-bast merged commit 7d97847 into lightning:masterJul 29, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

@martinsaposnic

Copy link
Copy Markdown
Contributor

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

sounds good, will update that today

Sign up for freeto 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

@tnull@t-bast@martinsaposnic
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add bLIP 55: Webhook Registration (LSPS5) by tnull · Pull Request #55 · lightning/blips · GitHub
Skip to content

Add bLIP 55: Webhook Registration (LSPS5) - #55

Merged
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5
Jul 29, 2025
Merged

Add bLIP 55: Webhook Registration (LSPS5) #55
t-bast merged 1 commit into
lightning:masterfrom
tnull:2024-12-add-lsps5

Conversation

@tnull

@tnulltnull commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

Based on #52.

In typical mobile environments, a program that is not currently being focused on by the user will be suspended, with all its TCP connections dropped.

This specification provides a way for a mobile client to register some specific webhook by which the LSP can signal a push notification to the application developer server, which will in turn convert the push notification to one that it itself signs and can send to the mobile OS developer server.

The given protocol is based on LSPS0/bLIP 50 and has been previously stabilized by the LSP Spec group.

As previously discussed on multiple occasions, the LSP Spec group is however moving to a bLIP-centric process, which is why we 'upstream' these previously-stabilized specifications here.

(cc the original author @ZmnSCPxj-jr)

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same here, a reference implementation section would be useful.

Comment threadblip-0055.md Outdated
@tnull

Copy link
Copy Markdown
ContributorAuthor

Same here, a reference implementation section would be useful.

Hmm, good point in this case, as there is no implementation of this protocol as of today. We plan to add support to lightning-liquidity (which should be a comparatively small task), but haven't come around to do so yet. I assume this means the bLIP would need to remain in the accepted state for now?

@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased after #55 landed.

@t-bast

Copy link
Copy Markdown
Contributor

Needs a rebase and this should be good to go?

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Needs a rebase and this should be good to go?

Ah, I though we'd wanted to wait with this until a reference implementation is available?

@t-bast

Copy link
Copy Markdown
Contributor

Ah, I though we'd wanted to wait with this until a reference implementation is available?

Good point, if there is one that is being worked on then it's better to wait!

@tnull

tnull commented Jan 6, 2025

Copy link
Copy Markdown
ContributorAuthor

Good point, if there is one that is being worked on then it's better to wait!

Yes, there is work-in-progress, will give an update here once that has been merged!

@martinsaposnic

Copy link
Copy Markdown
Contributor

hey @t-bast@tnull , just pushed a reference implementation for this PR. lightningdevkit/rust-lightning#3662

Comment threadblip-0055.md
"app_names": ["My LSPS-Compliant Lightning Wallet", "Another Wallet With The Same Signing Device"],
"max_webhooks": 42
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a particular reason why this doesn't also include the webhook URLs? Including them might make it more ergonomic to work with

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed on the spec call, I have no strong opinion on whether to include the URLs here or not. I think there might have been some privacy concerns if apps include some identifiers in the URLs, as these would leak to other apps registering webhooks. Then again, if you have the apps already share a Lightning wallet, it's probably fine for them to learn about each other, too?

@tnull

Copy link
Copy Markdown
ContributorAuthor

I now updated this PR to:

a) make it clear HTTPS is mandatory
b) drop the custom replay protection, as we assume network-level replay attacks are mitigated by using HTTPS
c) Fixed some links in the document

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

@tnull
tnull requested a review from t-bastJuly 28, 2025 09:50
@t-bast

Copy link
Copy Markdown
Contributor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from d0330fb to 4aa1dd8CompareJuly 29, 2025 09:09
@tnull

Copy link
Copy Markdown
ContributorAuthor

I also want to note that the reference implementation has been merged on the LDK side (see lightningdevkit/rust-lightning#3662), so we should be able to proceed with this PR (cc @t-bast).

Why don't you include a link to the implementation as a reference implementation? That could be quite useful for people implementing such a proposal from scratch to be able to look at actual code to clarify details.

Ah, good point. Now added a corresponding section and squashed the fixup commits while I was at it:

diff --git a/blip-0055.md b/blip-0055.md
index facc1f1..f1dc372 100644
--- a/blip-0055.md+++ b/blip-0055.md@@ -48,4 +48,11 @@ signs and can send to the mobile OS developer server.
This bLIP is licensed under the MIT license.
+## Reference Implementation++A reference implementation of this protocol can be found as part of the+[`lightning-liquidity`][] crate.++[`lightning-liquidity`]: https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity+
## Protocol

In typical mobile environments, a program that is not currently
being focused on by the user will be suspended, with all its
TCP connections dropped.
This specification provides a way for a mobile client to
register some specific webhook by which the LSP can signal a
push notification to the application developer server, which
will in turn convert the push notification to one that it itself
signs and can send to the mobile OS developer server.
The given protocol is based on LSPS0/bLIP 50 and has been previously
stabilized by the LSP Spec group.
As previously discussed on multiple occasions, the LSP Spec
group is however moving to a bLIP-centric process, which is why we
'upstream' these previously-stabilized specifications here.
@tnull
tnullforce-pushed the 2024-12-add-lsps5 branch from 4aa1dd8 to fbd9b0bCompareJuly 29, 2025 09:11

@t-bastt-bast left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

@t-bast
t-bast merged commit 7d97847 into lightning:masterJul 29, 2025
@tnull

Copy link
Copy Markdown
ContributorAuthor

LGTM: note that the README at https://github.com/lightningdevkit/rust-lightning/tree/main/lightning-liquidity doesn't mention that LSPS5 is implemented, you may want to update that?

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

@martinsaposnic

Copy link
Copy Markdown
Contributor

Ah, thanks for pointing that out. (cc @martinsaposnic, mind including that in one of the follow-ups?)

sounds good, will update that today

Sign up for freeto 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

@tnull@t-bast@martinsaposnic