Skip to content

bLIP-56: Pluggable Channel Factories. - #56

Open
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac
Open

bLIP-56: Pluggable Channel Factories.#56
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac

Conversation

@ZmnSCPxj-jr

@ZmnSCPxj-jrZmnSCPxj-jr commented Dec 2, 2024

Copy link
Copy Markdown

Channel factories are a way of scaling Bitcoin by hosting offchain channels, not directly onchain, but in another offchain mechanism. The hosting mechanism is called a channel factory. The channel factory can change the funding amounts of channels inside the factory, without any onchain transactions.

This pluggable channel factory protocol is a proposal by which base node software can handle channel state, while letting external code handle state of the channel factory. As far as the node software is concerned, the channel is a "0-conf" channel whose funding transaction never seems to confirm, even though the state is actually backed by an offchain mechanism that ensures that the channel can be unilaterally closed in the worst-case scenario.

When the channel factory wants to change the funding amounts of hosted channels, the node software acts as if a splice operation is being performed, which changes the funding amount (or not changes it, if it is other channels in the same factory that are changed but not this one). When the channel factory offchain mechanism has settled to a new state, it is as if a splice transaction was successfully deeply confirmed.

@ZmnSCPxj-jr

Copy link
Copy Markdown
Author

Updated blip number to 56, as per PR number.

@ZmnSCPxj-jrZmnSCPxj-jr changed the title blip-XX: Pluggable Channel Factories.bLIP-56: Pluggable Channel Factories.Dec 2, 2024
@t-bast

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

@tnull

tnull commented Dec 13, 2024

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

Hmm, I'm a bit confused about exact process (also related to #55), as bLIP-01 states:

Reference Implementation -- The reference implementation must be completed before any bLIP is given status "Final", but it need not be completed before the bLIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code. The final implementation must include test code and documentation appropriate for the Lightning protocol.

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

@t-bast

Copy link
Copy Markdown
Contributor

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

@tnull

Copy link
Copy Markdown
Contributor

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

Alright, makes sense, thanks for clarifying!

@8144225309

8144225309 commented Apr 14, 2026

Copy link
Copy Markdown

Currently a small team is building SuperScalar wallet on top of this blip56 design with a cln plugin specific to SuperScalar to keep blip56 neutral and application agnostic.

Any input, requested changes, feature requests, comments or concerns are greatly appreciated while we are still early in the development process for this bLIP-56 implementation. Thanks!

bLIP-56 Fork of Core Lightning:
https://github.com/8144225309/lightning/tree/blip-56
SuperScalar-CLN Plugin:
https://github.com/8144225309/superscalar-cln
WIP SuperScalar Wallet:
https://github.com/8144225309/superscalar-wallet
Original SuperScalar-CLI (implementation reference):
https://github.com/8144225309/SuperScalar
SuperScalar Docs:
https://www.superscalar.win
https://github.com/8144225309/superscalar-docs

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.

4 participants

@ZmnSCPxj-jr@t-bast@tnull@8144225309
, '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" + '
bLIP-56: Pluggable Channel Factories. by ZmnSCPxj-jr · Pull Request #56 · lightning/blips · GitHub
Skip to content

bLIP-56: Pluggable Channel Factories. - #56

Open
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac
Open

bLIP-56: Pluggable Channel Factories.#56
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac

Conversation

@ZmnSCPxj-jr

@ZmnSCPxj-jrZmnSCPxj-jr commented Dec 2, 2024

Copy link
Copy Markdown

Channel factories are a way of scaling Bitcoin by hosting offchain channels, not directly onchain, but in another offchain mechanism. The hosting mechanism is called a channel factory. The channel factory can change the funding amounts of channels inside the factory, without any onchain transactions.

This pluggable channel factory protocol is a proposal by which base node software can handle channel state, while letting external code handle state of the channel factory. As far as the node software is concerned, the channel is a "0-conf" channel whose funding transaction never seems to confirm, even though the state is actually backed by an offchain mechanism that ensures that the channel can be unilaterally closed in the worst-case scenario.

When the channel factory wants to change the funding amounts of hosted channels, the node software acts as if a splice operation is being performed, which changes the funding amount (or not changes it, if it is other channels in the same factory that are changed but not this one). When the channel factory offchain mechanism has settled to a new state, it is as if a splice transaction was successfully deeply confirmed.

@ZmnSCPxj-jr

Copy link
Copy Markdown
Author

Updated blip number to 56, as per PR number.

@ZmnSCPxj-jrZmnSCPxj-jr changed the title blip-XX: Pluggable Channel Factories.bLIP-56: Pluggable Channel Factories.Dec 2, 2024
@t-bast

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

@tnull

tnull commented Dec 13, 2024

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

Hmm, I'm a bit confused about exact process (also related to #55), as bLIP-01 states:

Reference Implementation -- The reference implementation must be completed before any bLIP is given status "Final", but it need not be completed before the bLIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code. The final implementation must include test code and documentation appropriate for the Lightning protocol.

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

@t-bast

Copy link
Copy Markdown
Contributor

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

@tnull

Copy link
Copy Markdown
Contributor

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

Alright, makes sense, thanks for clarifying!

@8144225309

8144225309 commented Apr 14, 2026

Copy link
Copy Markdown

Currently a small team is building SuperScalar wallet on top of this blip56 design with a cln plugin specific to SuperScalar to keep blip56 neutral and application agnostic.

Any input, requested changes, feature requests, comments or concerns are greatly appreciated while we are still early in the development process for this bLIP-56 implementation. Thanks!

bLIP-56 Fork of Core Lightning:
https://github.com/8144225309/lightning/tree/blip-56
SuperScalar-CLN Plugin:
https://github.com/8144225309/superscalar-cln
WIP SuperScalar Wallet:
https://github.com/8144225309/superscalar-wallet
Original SuperScalar-CLI (implementation reference):
https://github.com/8144225309/SuperScalar
SuperScalar Docs:
https://www.superscalar.win
https://github.com/8144225309/superscalar-docs

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.

4 participants

@ZmnSCPxj-jr@t-bast@tnull@8144225309
, '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('^' + ".*" + ' bLIP-56: Pluggable Channel Factories. by ZmnSCPxj-jr · Pull Request #56 · lightning/blips · GitHub
Skip to content

bLIP-56: Pluggable Channel Factories. - #56

Open
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac
Open

bLIP-56: Pluggable Channel Factories.#56
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac

Conversation

@ZmnSCPxj-jr

@ZmnSCPxj-jrZmnSCPxj-jr commented Dec 2, 2024

Copy link
Copy Markdown

Channel factories are a way of scaling Bitcoin by hosting offchain channels, not directly onchain, but in another offchain mechanism. The hosting mechanism is called a channel factory. The channel factory can change the funding amounts of channels inside the factory, without any onchain transactions.

This pluggable channel factory protocol is a proposal by which base node software can handle channel state, while letting external code handle state of the channel factory. As far as the node software is concerned, the channel is a "0-conf" channel whose funding transaction never seems to confirm, even though the state is actually backed by an offchain mechanism that ensures that the channel can be unilaterally closed in the worst-case scenario.

When the channel factory wants to change the funding amounts of hosted channels, the node software acts as if a splice operation is being performed, which changes the funding amount (or not changes it, if it is other channels in the same factory that are changed but not this one). When the channel factory offchain mechanism has settled to a new state, it is as if a splice transaction was successfully deeply confirmed.

@ZmnSCPxj-jr

Copy link
Copy Markdown
Author

Updated blip number to 56, as per PR number.

@ZmnSCPxj-jrZmnSCPxj-jr changed the title blip-XX: Pluggable Channel Factories.bLIP-56: Pluggable Channel Factories.Dec 2, 2024
@t-bast

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

@tnull

tnull commented Dec 13, 2024

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

Hmm, I'm a bit confused about exact process (also related to #55), as bLIP-01 states:

Reference Implementation -- The reference implementation must be completed before any bLIP is given status "Final", but it need not be completed before the bLIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code. The final implementation must include test code and documentation appropriate for the Lightning protocol.

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

@t-bast

Copy link
Copy Markdown
Contributor

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

@tnull

Copy link
Copy Markdown
Contributor

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

Alright, makes sense, thanks for clarifying!

@8144225309

8144225309 commented Apr 14, 2026

Copy link
Copy Markdown

Currently a small team is building SuperScalar wallet on top of this blip56 design with a cln plugin specific to SuperScalar to keep blip56 neutral and application agnostic.

Any input, requested changes, feature requests, comments or concerns are greatly appreciated while we are still early in the development process for this bLIP-56 implementation. Thanks!

bLIP-56 Fork of Core Lightning:
https://github.com/8144225309/lightning/tree/blip-56
SuperScalar-CLN Plugin:
https://github.com/8144225309/superscalar-cln
WIP SuperScalar Wallet:
https://github.com/8144225309/superscalar-wallet
Original SuperScalar-CLI (implementation reference):
https://github.com/8144225309/SuperScalar
SuperScalar Docs:
https://www.superscalar.win
https://github.com/8144225309/superscalar-docs

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.

4 participants

@ZmnSCPxj-jr@t-bast@tnull@8144225309
, '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('^' + ".*" + ' bLIP-56: Pluggable Channel Factories. by ZmnSCPxj-jr · Pull Request #56 · lightning/blips · GitHub
Skip to content

bLIP-56: Pluggable Channel Factories. - #56

Open
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac
Open

bLIP-56: Pluggable Channel Factories.#56
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac

Conversation

@ZmnSCPxj-jr

@ZmnSCPxj-jrZmnSCPxj-jr commented Dec 2, 2024

Copy link
Copy Markdown

Channel factories are a way of scaling Bitcoin by hosting offchain channels, not directly onchain, but in another offchain mechanism. The hosting mechanism is called a channel factory. The channel factory can change the funding amounts of channels inside the factory, without any onchain transactions.

This pluggable channel factory protocol is a proposal by which base node software can handle channel state, while letting external code handle state of the channel factory. As far as the node software is concerned, the channel is a "0-conf" channel whose funding transaction never seems to confirm, even though the state is actually backed by an offchain mechanism that ensures that the channel can be unilaterally closed in the worst-case scenario.

When the channel factory wants to change the funding amounts of hosted channels, the node software acts as if a splice operation is being performed, which changes the funding amount (or not changes it, if it is other channels in the same factory that are changed but not this one). When the channel factory offchain mechanism has settled to a new state, it is as if a splice transaction was successfully deeply confirmed.

@ZmnSCPxj-jr

Copy link
Copy Markdown
Author

Updated blip number to 56, as per PR number.

@ZmnSCPxj-jrZmnSCPxj-jr changed the title blip-XX: Pluggable Channel Factories.bLIP-56: Pluggable Channel Factories.Dec 2, 2024
@t-bast

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

@tnull

tnull commented Dec 13, 2024

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

Hmm, I'm a bit confused about exact process (also related to #55), as bLIP-01 states:

Reference Implementation -- The reference implementation must be completed before any bLIP is given status "Final", but it need not be completed before the bLIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code. The final implementation must include test code and documentation appropriate for the Lightning protocol.

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

@t-bast

Copy link
Copy Markdown
Contributor

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

@tnull

Copy link
Copy Markdown
Contributor

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

Alright, makes sense, thanks for clarifying!

@8144225309

8144225309 commented Apr 14, 2026

Copy link
Copy Markdown

Currently a small team is building SuperScalar wallet on top of this blip56 design with a cln plugin specific to SuperScalar to keep blip56 neutral and application agnostic.

Any input, requested changes, feature requests, comments or concerns are greatly appreciated while we are still early in the development process for this bLIP-56 implementation. Thanks!

bLIP-56 Fork of Core Lightning:
https://github.com/8144225309/lightning/tree/blip-56
SuperScalar-CLN Plugin:
https://github.com/8144225309/superscalar-cln
WIP SuperScalar Wallet:
https://github.com/8144225309/superscalar-wallet
Original SuperScalar-CLI (implementation reference):
https://github.com/8144225309/SuperScalar
SuperScalar Docs:
https://www.superscalar.win
https://github.com/8144225309/superscalar-docs

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.

4 participants

@ZmnSCPxj-jr@t-bast@tnull@8144225309
, '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" + ' bLIP-56: Pluggable Channel Factories. by ZmnSCPxj-jr · Pull Request #56 · lightning/blips · GitHub
Skip to content

bLIP-56: Pluggable Channel Factories. - #56

Open
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac
Open

bLIP-56: Pluggable Channel Factories.#56
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac

Conversation

@ZmnSCPxj-jr

@ZmnSCPxj-jrZmnSCPxj-jr commented Dec 2, 2024

Copy link
Copy Markdown

Channel factories are a way of scaling Bitcoin by hosting offchain channels, not directly onchain, but in another offchain mechanism. The hosting mechanism is called a channel factory. The channel factory can change the funding amounts of channels inside the factory, without any onchain transactions.

This pluggable channel factory protocol is a proposal by which base node software can handle channel state, while letting external code handle state of the channel factory. As far as the node software is concerned, the channel is a "0-conf" channel whose funding transaction never seems to confirm, even though the state is actually backed by an offchain mechanism that ensures that the channel can be unilaterally closed in the worst-case scenario.

When the channel factory wants to change the funding amounts of hosted channels, the node software acts as if a splice operation is being performed, which changes the funding amount (or not changes it, if it is other channels in the same factory that are changed but not this one). When the channel factory offchain mechanism has settled to a new state, it is as if a splice transaction was successfully deeply confirmed.

@ZmnSCPxj-jr

Copy link
Copy Markdown
Author

Updated blip number to 56, as per PR number.

@ZmnSCPxj-jrZmnSCPxj-jr changed the title blip-XX: Pluggable Channel Factories.bLIP-56: Pluggable Channel Factories.Dec 2, 2024
@t-bast

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

@tnull

tnull commented Dec 13, 2024

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

Hmm, I'm a bit confused about exact process (also related to #55), as bLIP-01 states:

Reference Implementation -- The reference implementation must be completed before any bLIP is given status "Final", but it need not be completed before the bLIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code. The final implementation must include test code and documentation appropriate for the Lightning protocol.

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

@t-bast

Copy link
Copy Markdown
Contributor

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

@tnull

Copy link
Copy Markdown
Contributor

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

Alright, makes sense, thanks for clarifying!

@8144225309

8144225309 commented Apr 14, 2026

Copy link
Copy Markdown

Currently a small team is building SuperScalar wallet on top of this blip56 design with a cln plugin specific to SuperScalar to keep blip56 neutral and application agnostic.

Any input, requested changes, feature requests, comments or concerns are greatly appreciated while we are still early in the development process for this bLIP-56 implementation. Thanks!

bLIP-56 Fork of Core Lightning:
https://github.com/8144225309/lightning/tree/blip-56
SuperScalar-CLN Plugin:
https://github.com/8144225309/superscalar-cln
WIP SuperScalar Wallet:
https://github.com/8144225309/superscalar-wallet
Original SuperScalar-CLI (implementation reference):
https://github.com/8144225309/SuperScalar
SuperScalar Docs:
https://www.superscalar.win
https://github.com/8144225309/superscalar-docs

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.

4 participants

@ZmnSCPxj-jr@t-bast@tnull@8144225309
, '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('^' + ".*" + ' bLIP-56: Pluggable Channel Factories. by ZmnSCPxj-jr · Pull Request #56 · lightning/blips · GitHub
Skip to content

bLIP-56: Pluggable Channel Factories. - #56

Open
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac
Open

bLIP-56: Pluggable Channel Factories.#56
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac

Conversation

@ZmnSCPxj-jr

@ZmnSCPxj-jrZmnSCPxj-jr commented Dec 2, 2024

Copy link
Copy Markdown

Channel factories are a way of scaling Bitcoin by hosting offchain channels, not directly onchain, but in another offchain mechanism. The hosting mechanism is called a channel factory. The channel factory can change the funding amounts of channels inside the factory, without any onchain transactions.

This pluggable channel factory protocol is a proposal by which base node software can handle channel state, while letting external code handle state of the channel factory. As far as the node software is concerned, the channel is a "0-conf" channel whose funding transaction never seems to confirm, even though the state is actually backed by an offchain mechanism that ensures that the channel can be unilaterally closed in the worst-case scenario.

When the channel factory wants to change the funding amounts of hosted channels, the node software acts as if a splice operation is being performed, which changes the funding amount (or not changes it, if it is other channels in the same factory that are changed but not this one). When the channel factory offchain mechanism has settled to a new state, it is as if a splice transaction was successfully deeply confirmed.

@ZmnSCPxj-jr

Copy link
Copy Markdown
Author

Updated blip number to 56, as per PR number.

@ZmnSCPxj-jrZmnSCPxj-jr changed the title blip-XX: Pluggable Channel Factories.bLIP-56: Pluggable Channel Factories.Dec 2, 2024
@t-bast

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

@tnull

tnull commented Dec 13, 2024

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

Hmm, I'm a bit confused about exact process (also related to #55), as bLIP-01 states:

Reference Implementation -- The reference implementation must be completed before any bLIP is given status "Final", but it need not be completed before the bLIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code. The final implementation must include test code and documentation appropriate for the Lightning protocol.

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

@t-bast

Copy link
Copy Markdown
Contributor

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

@tnull

Copy link
Copy Markdown
Contributor

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

Alright, makes sense, thanks for clarifying!

@8144225309

8144225309 commented Apr 14, 2026

Copy link
Copy Markdown

Currently a small team is building SuperScalar wallet on top of this blip56 design with a cln plugin specific to SuperScalar to keep blip56 neutral and application agnostic.

Any input, requested changes, feature requests, comments or concerns are greatly appreciated while we are still early in the development process for this bLIP-56 implementation. Thanks!

bLIP-56 Fork of Core Lightning:
https://github.com/8144225309/lightning/tree/blip-56
SuperScalar-CLN Plugin:
https://github.com/8144225309/superscalar-cln
WIP SuperScalar Wallet:
https://github.com/8144225309/superscalar-wallet
Original SuperScalar-CLI (implementation reference):
https://github.com/8144225309/SuperScalar
SuperScalar Docs:
https://www.superscalar.win
https://github.com/8144225309/superscalar-docs

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.

4 participants

@ZmnSCPxj-jr@t-bast@tnull@8144225309
, '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('^' + ".*" + ' bLIP-56: Pluggable Channel Factories. by ZmnSCPxj-jr · Pull Request #56 · lightning/blips · GitHub
Skip to content

bLIP-56: Pluggable Channel Factories. - #56

Open
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac
Open

bLIP-56: Pluggable Channel Factories.#56
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac

Conversation

@ZmnSCPxj-jr

@ZmnSCPxj-jrZmnSCPxj-jr commented Dec 2, 2024

Copy link
Copy Markdown

Channel factories are a way of scaling Bitcoin by hosting offchain channels, not directly onchain, but in another offchain mechanism. The hosting mechanism is called a channel factory. The channel factory can change the funding amounts of channels inside the factory, without any onchain transactions.

This pluggable channel factory protocol is a proposal by which base node software can handle channel state, while letting external code handle state of the channel factory. As far as the node software is concerned, the channel is a "0-conf" channel whose funding transaction never seems to confirm, even though the state is actually backed by an offchain mechanism that ensures that the channel can be unilaterally closed in the worst-case scenario.

When the channel factory wants to change the funding amounts of hosted channels, the node software acts as if a splice operation is being performed, which changes the funding amount (or not changes it, if it is other channels in the same factory that are changed but not this one). When the channel factory offchain mechanism has settled to a new state, it is as if a splice transaction was successfully deeply confirmed.

@ZmnSCPxj-jr

Copy link
Copy Markdown
Author

Updated blip number to 56, as per PR number.

@ZmnSCPxj-jrZmnSCPxj-jr changed the title blip-XX: Pluggable Channel Factories.bLIP-56: Pluggable Channel Factories.Dec 2, 2024
@t-bast

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

@tnull

tnull commented Dec 13, 2024

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

Hmm, I'm a bit confused about exact process (also related to #55), as bLIP-01 states:

Reference Implementation -- The reference implementation must be completed before any bLIP is given status "Final", but it need not be completed before the bLIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code. The final implementation must include test code and documentation appropriate for the Lightning protocol.

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

@t-bast

Copy link
Copy Markdown
Contributor

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

@tnull

Copy link
Copy Markdown
Contributor

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

Alright, makes sense, thanks for clarifying!

@8144225309

8144225309 commented Apr 14, 2026

Copy link
Copy Markdown

Currently a small team is building SuperScalar wallet on top of this blip56 design with a cln plugin specific to SuperScalar to keep blip56 neutral and application agnostic.

Any input, requested changes, feature requests, comments or concerns are greatly appreciated while we are still early in the development process for this bLIP-56 implementation. Thanks!

bLIP-56 Fork of Core Lightning:
https://github.com/8144225309/lightning/tree/blip-56
SuperScalar-CLN Plugin:
https://github.com/8144225309/superscalar-cln
WIP SuperScalar Wallet:
https://github.com/8144225309/superscalar-wallet
Original SuperScalar-CLI (implementation reference):
https://github.com/8144225309/SuperScalar
SuperScalar Docs:
https://www.superscalar.win
https://github.com/8144225309/superscalar-docs

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.

4 participants

@ZmnSCPxj-jr@t-bast@tnull@8144225309
, '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); } })(); })(); bLIP-56: Pluggable Channel Factories. by ZmnSCPxj-jr · Pull Request #56 · lightning/blips · GitHub
Skip to content

bLIP-56: Pluggable Channel Factories. - #56

Open
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac
Open

bLIP-56: Pluggable Channel Factories.#56
ZmnSCPxj-jr wants to merge 1 commit into
lightning:masterfrom
ZmnSCPxj-jr:pluggable-chanfac

Conversation

@ZmnSCPxj-jr

@ZmnSCPxj-jrZmnSCPxj-jr commented Dec 2, 2024

Copy link
Copy Markdown

Channel factories are a way of scaling Bitcoin by hosting offchain channels, not directly onchain, but in another offchain mechanism. The hosting mechanism is called a channel factory. The channel factory can change the funding amounts of channels inside the factory, without any onchain transactions.

This pluggable channel factory protocol is a proposal by which base node software can handle channel state, while letting external code handle state of the channel factory. As far as the node software is concerned, the channel is a "0-conf" channel whose funding transaction never seems to confirm, even though the state is actually backed by an offchain mechanism that ensures that the channel can be unilaterally closed in the worst-case scenario.

When the channel factory wants to change the funding amounts of hosted channels, the node software acts as if a splice operation is being performed, which changes the funding amount (or not changes it, if it is other channels in the same factory that are changed but not this one). When the channel factory offchain mechanism has settled to a new state, it is as if a splice transaction was successfully deeply confirmed.

@ZmnSCPxj-jr

Copy link
Copy Markdown
Author

Updated blip number to 56, as per PR number.

@ZmnSCPxj-jrZmnSCPxj-jr changed the title blip-XX: Pluggable Channel Factories.bLIP-56: Pluggable Channel Factories.Dec 2, 2024
@t-bast

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

@tnull

tnull commented Dec 13, 2024

Copy link
Copy Markdown
Contributor

I think we should wait for a reference implementation, indicating that this will actually be used in practice before merging this bLIP. But it's fine to keep the PR open to guide future implementers!

Hmm, I'm a bit confused about exact process (also related to #55), as bLIP-01 states:

Reference Implementation -- The reference implementation must be completed before any bLIP is given status "Final", but it need not be completed before the bLIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code. The final implementation must include test code and documentation appropriate for the Lightning protocol.

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

@t-bast

Copy link
Copy Markdown
Contributor

Wouldn't this indicate that bLIPs would get accepted (read: merged) in Draft status if they meet the other criteria, and could advance to Proposed/Final once the reference implmentation is finished?

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

@tnull

Copy link
Copy Markdown
Contributor

True, but if there is an implementation (or potentially multiple) that are in-progress: the goal of merging early in draft is mainly when more than one implementations are in-progress and they want to make sure they're building on the same foundations. I believe that we shouldn't accept bLIPs that nobody is actually implementing: if this is just a research protocol that should be iterated on before someone actually wants to use it, delving bitcoin is a better place.

Alright, makes sense, thanks for clarifying!

@8144225309

8144225309 commented Apr 14, 2026

Copy link
Copy Markdown

Currently a small team is building SuperScalar wallet on top of this blip56 design with a cln plugin specific to SuperScalar to keep blip56 neutral and application agnostic.

Any input, requested changes, feature requests, comments or concerns are greatly appreciated while we are still early in the development process for this bLIP-56 implementation. Thanks!

bLIP-56 Fork of Core Lightning:
https://github.com/8144225309/lightning/tree/blip-56
SuperScalar-CLN Plugin:
https://github.com/8144225309/superscalar-cln
WIP SuperScalar Wallet:
https://github.com/8144225309/superscalar-wallet
Original SuperScalar-CLI (implementation reference):
https://github.com/8144225309/SuperScalar
SuperScalar Docs:
https://www.superscalar.win
https://github.com/8144225309/superscalar-docs

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.

4 participants

@ZmnSCPxj-jr@t-bast@tnull@8144225309