Skip to content

channelmonitor: Persist force-close broadcast preference - #3893

Closed
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563
Closed

channelmonitor: Persist force-close broadcast preference#3893
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563

Conversation

@martinsaposnic

Copy link
Copy Markdown
Contributor

fixes#1563

Add allow_automated_broadcast flag to ChannelMonitor to prevent automatic commitment transaction broadcasting when channel was previously force-closed with should_broadcast=false.

Fixes unsafe broadcast on startup when ChannelManager finds orphaned monitors that were intentionally closed without broadcasting.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 26, 2025

Copy link
Copy Markdown

👋 I see @joostjager was un-assigned.
If you'd like another reviewer assignemnt, please click here.

Comment threadlightning/src/chain/channelmonitor.rs Outdated
@martinsaposnic
martinsaposnic marked this pull request as draft June 26, 2025 16:26
@martinsaposnic
martinsaposnic marked this pull request as ready for review June 26, 2025 16:37
Add allow_automated_broadcast flag to ChannelMonitor to prevent
automatic commitment transaction broadcasting when channel was
previously force-closed with should_broadcast=false.
Fixes unsafe broadcast on startup when ChannelManager finds
orphaned monitors that were intentionally closed without
broadcasting.
@codecov

codecovBot commented Jun 26, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.34711% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.77%. Comparing base (15724ec) to head (1eefa37).
⚠️ Report is 1768 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/ln/reload_tests.rs97.72%0 Missing and 2 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3893 +/- ##
==========================================
- Coverage 89.65% 88.77% -0.89% 
==========================================
Files 164 164 Lines 134659 117502 -17157 Branches 134659 117502 -17157 ==========================================
- Hits 120731 104313 -16418 + Misses 11248 10846 -402 + Partials 2680 2343 -337 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnulltnull 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.

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

@TheBlueMatt@martinsaposnic Any thoughts how to resolve this?

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

It seems should_broadcast: false can still be passed to ChannelForceClosed in #3881 (see https://github.com/lightningdevkit/rust-lightning/pull/3881/files#diff-8d28e96b6f27edb9a9739b2dce334f8906ec906155d421a7b5b02aa8e6c96057R5336-R5338). Also, the ChannelManager deserialization logic that re-emits the event with should_broadcast: true when encountering an orphaned ChannelMonitor (https://github.com/lightningdevkit/rust-lightning/blob/main/lightning/src/ln/channelmanager.rs#L14840) remains unchanged in #3881 .

Unless there’s a follow up plan to refactor that path as well, the bug addressed in this PR could still occur even after #3881 is merged.

I’m still getting familiar with this part of the codebase, so let me know if I’ve misunderstood anything @tnull

cc @TheBlueMatt

@TheBlueMatt

TheBlueMatt commented Jun 27, 2025

Copy link
Copy Markdown
Collaborator

#3881 doesn't attempt to "fix" the issue, but rather remove the issue by just calling the API itself a bug and deciding that we don't want have the ability to force-close a channel without broadcasting at all (only setting the skip-broadcasting flag in cases where the channel was never opened, and, indeed, not being perfect about it but its not a major issue at that point, vs today where a user took an action implying they are running with stale state and we broadcasted their state anyway!).

Instead, I was hoping that we could transition the "I have stale state and want to reclaim my funds without broadcasting that state" logic to a new flow entirely (what was started in #2943) which is basically just "here's a pile of ChannelMonitors and info to connect to peers so that we can get peer backups, please ask peers to close and get back whatever we can". This is a much cleaner API than the current "please start without connecting to peers, force-close-without-broadcasting, then connect to peers and then run normally" suggested flow, which can go wrong in several ways, eg if the channel got force-closed somehow on startup or on a reorg.

I was suggesting we go ahead and remove the existing flow because I don't actually think anyone has ever implemented it, though I admit getting a new flow in place might take some time (@adi2011 seems to have slowed down his contribution sadly). I certainly don't have a super strong opinion, though its also probably the case that doing a non-peer-storage-utilizing MVP of the new flow may be quite simple (just a ChainMonitor wrapper that tells all the ChannelMonitors to not broadcast the latest state).

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @joostjager! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@joostjager
joostjager removed their request for review June 30, 2025 11:13
@joostjager

Copy link
Copy Markdown
Contributor

Unassigned myself as reviewer, as there are open design questions.

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #3881 that was merged and fixed the issue

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.

Don't Always Broadcast latest state on startup if we'd previously closed-without-broadcast

5 participants

@martinsaposnic@ldk-reviews-bot@TheBlueMatt@joostjager@tnull
, '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" + '
channelmonitor: Persist force-close broadcast preference by martinsaposnic · Pull Request #3893 · lightningdevkit/rust-lightning · GitHub
Skip to content

channelmonitor: Persist force-close broadcast preference - #3893

Closed
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563
Closed

channelmonitor: Persist force-close broadcast preference#3893
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563

Conversation

@martinsaposnic

Copy link
Copy Markdown
Contributor

fixes#1563

Add allow_automated_broadcast flag to ChannelMonitor to prevent automatic commitment transaction broadcasting when channel was previously force-closed with should_broadcast=false.

Fixes unsafe broadcast on startup when ChannelManager finds orphaned monitors that were intentionally closed without broadcasting.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 26, 2025

Copy link
Copy Markdown

👋 I see @joostjager was un-assigned.
If you'd like another reviewer assignemnt, please click here.

Comment threadlightning/src/chain/channelmonitor.rs Outdated
@martinsaposnic
martinsaposnic marked this pull request as draft June 26, 2025 16:26
@martinsaposnic
martinsaposnic marked this pull request as ready for review June 26, 2025 16:37
Add allow_automated_broadcast flag to ChannelMonitor to prevent
automatic commitment transaction broadcasting when channel was
previously force-closed with should_broadcast=false.
Fixes unsafe broadcast on startup when ChannelManager finds
orphaned monitors that were intentionally closed without
broadcasting.
@codecov

codecovBot commented Jun 26, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.34711% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.77%. Comparing base (15724ec) to head (1eefa37).
⚠️ Report is 1768 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/ln/reload_tests.rs97.72%0 Missing and 2 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3893 +/- ##
==========================================
- Coverage 89.65% 88.77% -0.89% 
==========================================
Files 164 164 Lines 134659 117502 -17157 Branches 134659 117502 -17157 ==========================================
- Hits 120731 104313 -16418 + Misses 11248 10846 -402 + Partials 2680 2343 -337 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnulltnull 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.

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

@TheBlueMatt@martinsaposnic Any thoughts how to resolve this?

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

It seems should_broadcast: false can still be passed to ChannelForceClosed in #3881 (see https://github.com/lightningdevkit/rust-lightning/pull/3881/files#diff-8d28e96b6f27edb9a9739b2dce334f8906ec906155d421a7b5b02aa8e6c96057R5336-R5338). Also, the ChannelManager deserialization logic that re-emits the event with should_broadcast: true when encountering an orphaned ChannelMonitor (https://github.com/lightningdevkit/rust-lightning/blob/main/lightning/src/ln/channelmanager.rs#L14840) remains unchanged in #3881 .

Unless there’s a follow up plan to refactor that path as well, the bug addressed in this PR could still occur even after #3881 is merged.

I’m still getting familiar with this part of the codebase, so let me know if I’ve misunderstood anything @tnull

cc @TheBlueMatt

@TheBlueMatt

TheBlueMatt commented Jun 27, 2025

Copy link
Copy Markdown
Collaborator

#3881 doesn't attempt to "fix" the issue, but rather remove the issue by just calling the API itself a bug and deciding that we don't want have the ability to force-close a channel without broadcasting at all (only setting the skip-broadcasting flag in cases where the channel was never opened, and, indeed, not being perfect about it but its not a major issue at that point, vs today where a user took an action implying they are running with stale state and we broadcasted their state anyway!).

Instead, I was hoping that we could transition the "I have stale state and want to reclaim my funds without broadcasting that state" logic to a new flow entirely (what was started in #2943) which is basically just "here's a pile of ChannelMonitors and info to connect to peers so that we can get peer backups, please ask peers to close and get back whatever we can". This is a much cleaner API than the current "please start without connecting to peers, force-close-without-broadcasting, then connect to peers and then run normally" suggested flow, which can go wrong in several ways, eg if the channel got force-closed somehow on startup or on a reorg.

I was suggesting we go ahead and remove the existing flow because I don't actually think anyone has ever implemented it, though I admit getting a new flow in place might take some time (@adi2011 seems to have slowed down his contribution sadly). I certainly don't have a super strong opinion, though its also probably the case that doing a non-peer-storage-utilizing MVP of the new flow may be quite simple (just a ChainMonitor wrapper that tells all the ChannelMonitors to not broadcast the latest state).

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @joostjager! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@joostjager
joostjager removed their request for review June 30, 2025 11:13
@joostjager

Copy link
Copy Markdown
Contributor

Unassigned myself as reviewer, as there are open design questions.

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #3881 that was merged and fixed the issue

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.

Don't Always Broadcast latest state on startup if we'd previously closed-without-broadcast

5 participants

@martinsaposnic@ldk-reviews-bot@TheBlueMatt@joostjager@tnull
, '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('^' + ".*" + ' channelmonitor: Persist force-close broadcast preference by martinsaposnic · Pull Request #3893 · lightningdevkit/rust-lightning · GitHub
Skip to content

channelmonitor: Persist force-close broadcast preference - #3893

Closed
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563
Closed

channelmonitor: Persist force-close broadcast preference#3893
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563

Conversation

@martinsaposnic

Copy link
Copy Markdown
Contributor

fixes#1563

Add allow_automated_broadcast flag to ChannelMonitor to prevent automatic commitment transaction broadcasting when channel was previously force-closed with should_broadcast=false.

Fixes unsafe broadcast on startup when ChannelManager finds orphaned monitors that were intentionally closed without broadcasting.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 26, 2025

Copy link
Copy Markdown

👋 I see @joostjager was un-assigned.
If you'd like another reviewer assignemnt, please click here.

Comment threadlightning/src/chain/channelmonitor.rs Outdated
@martinsaposnic
martinsaposnic marked this pull request as draft June 26, 2025 16:26
@martinsaposnic
martinsaposnic marked this pull request as ready for review June 26, 2025 16:37
Add allow_automated_broadcast flag to ChannelMonitor to prevent
automatic commitment transaction broadcasting when channel was
previously force-closed with should_broadcast=false.
Fixes unsafe broadcast on startup when ChannelManager finds
orphaned monitors that were intentionally closed without
broadcasting.
@codecov

codecovBot commented Jun 26, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.34711% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.77%. Comparing base (15724ec) to head (1eefa37).
⚠️ Report is 1768 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/ln/reload_tests.rs97.72%0 Missing and 2 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3893 +/- ##
==========================================
- Coverage 89.65% 88.77% -0.89% 
==========================================
Files 164 164 Lines 134659 117502 -17157 Branches 134659 117502 -17157 ==========================================
- Hits 120731 104313 -16418 + Misses 11248 10846 -402 + Partials 2680 2343 -337 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnulltnull 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.

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

@TheBlueMatt@martinsaposnic Any thoughts how to resolve this?

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

It seems should_broadcast: false can still be passed to ChannelForceClosed in #3881 (see https://github.com/lightningdevkit/rust-lightning/pull/3881/files#diff-8d28e96b6f27edb9a9739b2dce334f8906ec906155d421a7b5b02aa8e6c96057R5336-R5338). Also, the ChannelManager deserialization logic that re-emits the event with should_broadcast: true when encountering an orphaned ChannelMonitor (https://github.com/lightningdevkit/rust-lightning/blob/main/lightning/src/ln/channelmanager.rs#L14840) remains unchanged in #3881 .

Unless there’s a follow up plan to refactor that path as well, the bug addressed in this PR could still occur even after #3881 is merged.

I’m still getting familiar with this part of the codebase, so let me know if I’ve misunderstood anything @tnull

cc @TheBlueMatt

@TheBlueMatt

TheBlueMatt commented Jun 27, 2025

Copy link
Copy Markdown
Collaborator

#3881 doesn't attempt to "fix" the issue, but rather remove the issue by just calling the API itself a bug and deciding that we don't want have the ability to force-close a channel without broadcasting at all (only setting the skip-broadcasting flag in cases where the channel was never opened, and, indeed, not being perfect about it but its not a major issue at that point, vs today where a user took an action implying they are running with stale state and we broadcasted their state anyway!).

Instead, I was hoping that we could transition the "I have stale state and want to reclaim my funds without broadcasting that state" logic to a new flow entirely (what was started in #2943) which is basically just "here's a pile of ChannelMonitors and info to connect to peers so that we can get peer backups, please ask peers to close and get back whatever we can". This is a much cleaner API than the current "please start without connecting to peers, force-close-without-broadcasting, then connect to peers and then run normally" suggested flow, which can go wrong in several ways, eg if the channel got force-closed somehow on startup or on a reorg.

I was suggesting we go ahead and remove the existing flow because I don't actually think anyone has ever implemented it, though I admit getting a new flow in place might take some time (@adi2011 seems to have slowed down his contribution sadly). I certainly don't have a super strong opinion, though its also probably the case that doing a non-peer-storage-utilizing MVP of the new flow may be quite simple (just a ChainMonitor wrapper that tells all the ChannelMonitors to not broadcast the latest state).

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @joostjager! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@joostjager
joostjager removed their request for review June 30, 2025 11:13
@joostjager

Copy link
Copy Markdown
Contributor

Unassigned myself as reviewer, as there are open design questions.

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #3881 that was merged and fixed the issue

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.

Don't Always Broadcast latest state on startup if we'd previously closed-without-broadcast

5 participants

@martinsaposnic@ldk-reviews-bot@TheBlueMatt@joostjager@tnull
, '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('^' + ".*" + ' channelmonitor: Persist force-close broadcast preference by martinsaposnic · Pull Request #3893 · lightningdevkit/rust-lightning · GitHub
Skip to content

channelmonitor: Persist force-close broadcast preference - #3893

Closed
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563
Closed

channelmonitor: Persist force-close broadcast preference#3893
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563

Conversation

@martinsaposnic

Copy link
Copy Markdown
Contributor

fixes#1563

Add allow_automated_broadcast flag to ChannelMonitor to prevent automatic commitment transaction broadcasting when channel was previously force-closed with should_broadcast=false.

Fixes unsafe broadcast on startup when ChannelManager finds orphaned monitors that were intentionally closed without broadcasting.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 26, 2025

Copy link
Copy Markdown

👋 I see @joostjager was un-assigned.
If you'd like another reviewer assignemnt, please click here.

Comment threadlightning/src/chain/channelmonitor.rs Outdated
@martinsaposnic
martinsaposnic marked this pull request as draft June 26, 2025 16:26
@martinsaposnic
martinsaposnic marked this pull request as ready for review June 26, 2025 16:37
Add allow_automated_broadcast flag to ChannelMonitor to prevent
automatic commitment transaction broadcasting when channel was
previously force-closed with should_broadcast=false.
Fixes unsafe broadcast on startup when ChannelManager finds
orphaned monitors that were intentionally closed without
broadcasting.
@codecov

codecovBot commented Jun 26, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.34711% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.77%. Comparing base (15724ec) to head (1eefa37).
⚠️ Report is 1768 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/ln/reload_tests.rs97.72%0 Missing and 2 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3893 +/- ##
==========================================
- Coverage 89.65% 88.77% -0.89% 
==========================================
Files 164 164 Lines 134659 117502 -17157 Branches 134659 117502 -17157 ==========================================
- Hits 120731 104313 -16418 + Misses 11248 10846 -402 + Partials 2680 2343 -337 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnulltnull 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.

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

@TheBlueMatt@martinsaposnic Any thoughts how to resolve this?

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

It seems should_broadcast: false can still be passed to ChannelForceClosed in #3881 (see https://github.com/lightningdevkit/rust-lightning/pull/3881/files#diff-8d28e96b6f27edb9a9739b2dce334f8906ec906155d421a7b5b02aa8e6c96057R5336-R5338). Also, the ChannelManager deserialization logic that re-emits the event with should_broadcast: true when encountering an orphaned ChannelMonitor (https://github.com/lightningdevkit/rust-lightning/blob/main/lightning/src/ln/channelmanager.rs#L14840) remains unchanged in #3881 .

Unless there’s a follow up plan to refactor that path as well, the bug addressed in this PR could still occur even after #3881 is merged.

I’m still getting familiar with this part of the codebase, so let me know if I’ve misunderstood anything @tnull

cc @TheBlueMatt

@TheBlueMatt

TheBlueMatt commented Jun 27, 2025

Copy link
Copy Markdown
Collaborator

#3881 doesn't attempt to "fix" the issue, but rather remove the issue by just calling the API itself a bug and deciding that we don't want have the ability to force-close a channel without broadcasting at all (only setting the skip-broadcasting flag in cases where the channel was never opened, and, indeed, not being perfect about it but its not a major issue at that point, vs today where a user took an action implying they are running with stale state and we broadcasted their state anyway!).

Instead, I was hoping that we could transition the "I have stale state and want to reclaim my funds without broadcasting that state" logic to a new flow entirely (what was started in #2943) which is basically just "here's a pile of ChannelMonitors and info to connect to peers so that we can get peer backups, please ask peers to close and get back whatever we can". This is a much cleaner API than the current "please start without connecting to peers, force-close-without-broadcasting, then connect to peers and then run normally" suggested flow, which can go wrong in several ways, eg if the channel got force-closed somehow on startup or on a reorg.

I was suggesting we go ahead and remove the existing flow because I don't actually think anyone has ever implemented it, though I admit getting a new flow in place might take some time (@adi2011 seems to have slowed down his contribution sadly). I certainly don't have a super strong opinion, though its also probably the case that doing a non-peer-storage-utilizing MVP of the new flow may be quite simple (just a ChainMonitor wrapper that tells all the ChannelMonitors to not broadcast the latest state).

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @joostjager! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@joostjager
joostjager removed their request for review June 30, 2025 11:13
@joostjager

Copy link
Copy Markdown
Contributor

Unassigned myself as reviewer, as there are open design questions.

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #3881 that was merged and fixed the issue

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.

Don't Always Broadcast latest state on startup if we'd previously closed-without-broadcast

5 participants

@martinsaposnic@ldk-reviews-bot@TheBlueMatt@joostjager@tnull
, '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" + ' channelmonitor: Persist force-close broadcast preference by martinsaposnic · Pull Request #3893 · lightningdevkit/rust-lightning · GitHub
Skip to content

channelmonitor: Persist force-close broadcast preference - #3893

Closed
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563
Closed

channelmonitor: Persist force-close broadcast preference#3893
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563

Conversation

@martinsaposnic

Copy link
Copy Markdown
Contributor

fixes#1563

Add allow_automated_broadcast flag to ChannelMonitor to prevent automatic commitment transaction broadcasting when channel was previously force-closed with should_broadcast=false.

Fixes unsafe broadcast on startup when ChannelManager finds orphaned monitors that were intentionally closed without broadcasting.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 26, 2025

Copy link
Copy Markdown

👋 I see @joostjager was un-assigned.
If you'd like another reviewer assignemnt, please click here.

Comment threadlightning/src/chain/channelmonitor.rs Outdated
@martinsaposnic
martinsaposnic marked this pull request as draft June 26, 2025 16:26
@martinsaposnic
martinsaposnic marked this pull request as ready for review June 26, 2025 16:37
Add allow_automated_broadcast flag to ChannelMonitor to prevent
automatic commitment transaction broadcasting when channel was
previously force-closed with should_broadcast=false.
Fixes unsafe broadcast on startup when ChannelManager finds
orphaned monitors that were intentionally closed without
broadcasting.
@codecov

codecovBot commented Jun 26, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.34711% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.77%. Comparing base (15724ec) to head (1eefa37).
⚠️ Report is 1768 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/ln/reload_tests.rs97.72%0 Missing and 2 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3893 +/- ##
==========================================
- Coverage 89.65% 88.77% -0.89% 
==========================================
Files 164 164 Lines 134659 117502 -17157 Branches 134659 117502 -17157 ==========================================
- Hits 120731 104313 -16418 + Misses 11248 10846 -402 + Partials 2680 2343 -337 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnulltnull 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.

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

@TheBlueMatt@martinsaposnic Any thoughts how to resolve this?

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

It seems should_broadcast: false can still be passed to ChannelForceClosed in #3881 (see https://github.com/lightningdevkit/rust-lightning/pull/3881/files#diff-8d28e96b6f27edb9a9739b2dce334f8906ec906155d421a7b5b02aa8e6c96057R5336-R5338). Also, the ChannelManager deserialization logic that re-emits the event with should_broadcast: true when encountering an orphaned ChannelMonitor (https://github.com/lightningdevkit/rust-lightning/blob/main/lightning/src/ln/channelmanager.rs#L14840) remains unchanged in #3881 .

Unless there’s a follow up plan to refactor that path as well, the bug addressed in this PR could still occur even after #3881 is merged.

I’m still getting familiar with this part of the codebase, so let me know if I’ve misunderstood anything @tnull

cc @TheBlueMatt

@TheBlueMatt

TheBlueMatt commented Jun 27, 2025

Copy link
Copy Markdown
Collaborator

#3881 doesn't attempt to "fix" the issue, but rather remove the issue by just calling the API itself a bug and deciding that we don't want have the ability to force-close a channel without broadcasting at all (only setting the skip-broadcasting flag in cases where the channel was never opened, and, indeed, not being perfect about it but its not a major issue at that point, vs today where a user took an action implying they are running with stale state and we broadcasted their state anyway!).

Instead, I was hoping that we could transition the "I have stale state and want to reclaim my funds without broadcasting that state" logic to a new flow entirely (what was started in #2943) which is basically just "here's a pile of ChannelMonitors and info to connect to peers so that we can get peer backups, please ask peers to close and get back whatever we can". This is a much cleaner API than the current "please start without connecting to peers, force-close-without-broadcasting, then connect to peers and then run normally" suggested flow, which can go wrong in several ways, eg if the channel got force-closed somehow on startup or on a reorg.

I was suggesting we go ahead and remove the existing flow because I don't actually think anyone has ever implemented it, though I admit getting a new flow in place might take some time (@adi2011 seems to have slowed down his contribution sadly). I certainly don't have a super strong opinion, though its also probably the case that doing a non-peer-storage-utilizing MVP of the new flow may be quite simple (just a ChainMonitor wrapper that tells all the ChannelMonitors to not broadcast the latest state).

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @joostjager! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@joostjager
joostjager removed their request for review June 30, 2025 11:13
@joostjager

Copy link
Copy Markdown
Contributor

Unassigned myself as reviewer, as there are open design questions.

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #3881 that was merged and fixed the issue

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.

Don't Always Broadcast latest state on startup if we'd previously closed-without-broadcast

5 participants

@martinsaposnic@ldk-reviews-bot@TheBlueMatt@joostjager@tnull
, '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('^' + ".*" + ' channelmonitor: Persist force-close broadcast preference by martinsaposnic · Pull Request #3893 · lightningdevkit/rust-lightning · GitHub
Skip to content

channelmonitor: Persist force-close broadcast preference - #3893

Closed
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563
Closed

channelmonitor: Persist force-close broadcast preference#3893
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563

Conversation

@martinsaposnic

Copy link
Copy Markdown
Contributor

fixes#1563

Add allow_automated_broadcast flag to ChannelMonitor to prevent automatic commitment transaction broadcasting when channel was previously force-closed with should_broadcast=false.

Fixes unsafe broadcast on startup when ChannelManager finds orphaned monitors that were intentionally closed without broadcasting.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 26, 2025

Copy link
Copy Markdown

👋 I see @joostjager was un-assigned.
If you'd like another reviewer assignemnt, please click here.

Comment threadlightning/src/chain/channelmonitor.rs Outdated
@martinsaposnic
martinsaposnic marked this pull request as draft June 26, 2025 16:26
@martinsaposnic
martinsaposnic marked this pull request as ready for review June 26, 2025 16:37
Add allow_automated_broadcast flag to ChannelMonitor to prevent
automatic commitment transaction broadcasting when channel was
previously force-closed with should_broadcast=false.
Fixes unsafe broadcast on startup when ChannelManager finds
orphaned monitors that were intentionally closed without
broadcasting.
@codecov

codecovBot commented Jun 26, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.34711% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.77%. Comparing base (15724ec) to head (1eefa37).
⚠️ Report is 1768 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/ln/reload_tests.rs97.72%0 Missing and 2 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3893 +/- ##
==========================================
- Coverage 89.65% 88.77% -0.89% 
==========================================
Files 164 164 Lines 134659 117502 -17157 Branches 134659 117502 -17157 ==========================================
- Hits 120731 104313 -16418 + Misses 11248 10846 -402 + Partials 2680 2343 -337 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnulltnull 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.

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

@TheBlueMatt@martinsaposnic Any thoughts how to resolve this?

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

It seems should_broadcast: false can still be passed to ChannelForceClosed in #3881 (see https://github.com/lightningdevkit/rust-lightning/pull/3881/files#diff-8d28e96b6f27edb9a9739b2dce334f8906ec906155d421a7b5b02aa8e6c96057R5336-R5338). Also, the ChannelManager deserialization logic that re-emits the event with should_broadcast: true when encountering an orphaned ChannelMonitor (https://github.com/lightningdevkit/rust-lightning/blob/main/lightning/src/ln/channelmanager.rs#L14840) remains unchanged in #3881 .

Unless there’s a follow up plan to refactor that path as well, the bug addressed in this PR could still occur even after #3881 is merged.

I’m still getting familiar with this part of the codebase, so let me know if I’ve misunderstood anything @tnull

cc @TheBlueMatt

@TheBlueMatt

TheBlueMatt commented Jun 27, 2025

Copy link
Copy Markdown
Collaborator

#3881 doesn't attempt to "fix" the issue, but rather remove the issue by just calling the API itself a bug and deciding that we don't want have the ability to force-close a channel without broadcasting at all (only setting the skip-broadcasting flag in cases where the channel was never opened, and, indeed, not being perfect about it but its not a major issue at that point, vs today where a user took an action implying they are running with stale state and we broadcasted their state anyway!).

Instead, I was hoping that we could transition the "I have stale state and want to reclaim my funds without broadcasting that state" logic to a new flow entirely (what was started in #2943) which is basically just "here's a pile of ChannelMonitors and info to connect to peers so that we can get peer backups, please ask peers to close and get back whatever we can". This is a much cleaner API than the current "please start without connecting to peers, force-close-without-broadcasting, then connect to peers and then run normally" suggested flow, which can go wrong in several ways, eg if the channel got force-closed somehow on startup or on a reorg.

I was suggesting we go ahead and remove the existing flow because I don't actually think anyone has ever implemented it, though I admit getting a new flow in place might take some time (@adi2011 seems to have slowed down his contribution sadly). I certainly don't have a super strong opinion, though its also probably the case that doing a non-peer-storage-utilizing MVP of the new flow may be quite simple (just a ChainMonitor wrapper that tells all the ChannelMonitors to not broadcast the latest state).

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @joostjager! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@joostjager
joostjager removed their request for review June 30, 2025 11:13
@joostjager

Copy link
Copy Markdown
Contributor

Unassigned myself as reviewer, as there are open design questions.

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #3881 that was merged and fixed the issue

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.

Don't Always Broadcast latest state on startup if we'd previously closed-without-broadcast

5 participants

@martinsaposnic@ldk-reviews-bot@TheBlueMatt@joostjager@tnull
, '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); } })(); })(); channelmonitor: Persist force-close broadcast preference by martinsaposnic · Pull Request #3893 · lightningdevkit/rust-lightning · GitHub
Skip to content

channelmonitor: Persist force-close broadcast preference - #3893

Closed
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563
Closed

channelmonitor: Persist force-close broadcast preference#3893
martinsaposnic wants to merge 1 commit into
lightningdevkit:mainfrom
martinsaposnic:issue-1563

Conversation

@martinsaposnic

Copy link
Copy Markdown
Contributor

fixes#1563

Add allow_automated_broadcast flag to ChannelMonitor to prevent automatic commitment transaction broadcasting when channel was previously force-closed with should_broadcast=false.

Fixes unsafe broadcast on startup when ChannelManager finds orphaned monitors that were intentionally closed without broadcasting.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 26, 2025

Copy link
Copy Markdown

👋 I see @joostjager was un-assigned.
If you'd like another reviewer assignemnt, please click here.

Comment threadlightning/src/chain/channelmonitor.rs Outdated
@martinsaposnic
martinsaposnic marked this pull request as draft June 26, 2025 16:26
@martinsaposnic
martinsaposnic marked this pull request as ready for review June 26, 2025 16:37
Add allow_automated_broadcast flag to ChannelMonitor to prevent
automatic commitment transaction broadcasting when channel was
previously force-closed with should_broadcast=false.
Fixes unsafe broadcast on startup when ChannelManager finds
orphaned monitors that were intentionally closed without
broadcasting.
@codecov

codecovBot commented Jun 26, 2025

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.34711% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.77%. Comparing base (15724ec) to head (1eefa37).
⚠️ Report is 1768 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/ln/reload_tests.rs97.72%0 Missing and 2 partials ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #3893 +/- ##
==========================================
- Coverage 89.65% 88.77% -0.89% 
==========================================
Files 164 164 Lines 134659 117502 -17157 Branches 134659 117502 -17157 ==========================================
- Hits 120731 104313 -16418 + Misses 11248 10846 -402 + Partials 2680 2343 -337 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnulltnull 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.

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

@TheBlueMatt@martinsaposnic Any thoughts how to resolve this?

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

This seems to conflict with the changes in #3881 which entirely removes the 'force close without broadcasting' case.

It seems should_broadcast: false can still be passed to ChannelForceClosed in #3881 (see https://github.com/lightningdevkit/rust-lightning/pull/3881/files#diff-8d28e96b6f27edb9a9739b2dce334f8906ec906155d421a7b5b02aa8e6c96057R5336-R5338). Also, the ChannelManager deserialization logic that re-emits the event with should_broadcast: true when encountering an orphaned ChannelMonitor (https://github.com/lightningdevkit/rust-lightning/blob/main/lightning/src/ln/channelmanager.rs#L14840) remains unchanged in #3881 .

Unless there’s a follow up plan to refactor that path as well, the bug addressed in this PR could still occur even after #3881 is merged.

I’m still getting familiar with this part of the codebase, so let me know if I’ve misunderstood anything @tnull

cc @TheBlueMatt

@TheBlueMatt

TheBlueMatt commented Jun 27, 2025

Copy link
Copy Markdown
Collaborator

#3881 doesn't attempt to "fix" the issue, but rather remove the issue by just calling the API itself a bug and deciding that we don't want have the ability to force-close a channel without broadcasting at all (only setting the skip-broadcasting flag in cases where the channel was never opened, and, indeed, not being perfect about it but its not a major issue at that point, vs today where a user took an action implying they are running with stale state and we broadcasted their state anyway!).

Instead, I was hoping that we could transition the "I have stale state and want to reclaim my funds without broadcasting that state" logic to a new flow entirely (what was started in #2943) which is basically just "here's a pile of ChannelMonitors and info to connect to peers so that we can get peer backups, please ask peers to close and get back whatever we can". This is a much cleaner API than the current "please start without connecting to peers, force-close-without-broadcasting, then connect to peers and then run normally" suggested flow, which can go wrong in several ways, eg if the channel got force-closed somehow on startup or on a reorg.

I was suggesting we go ahead and remove the existing flow because I don't actually think anyone has ever implemented it, though I admit getting a new flow in place might take some time (@adi2011 seems to have slowed down his contribution sadly). I certainly don't have a super strong opinion, though its also probably the case that doing a non-peer-storage-utilizing MVP of the new flow may be quite simple (just a ChainMonitor wrapper that tells all the ChannelMonitors to not broadcast the latest state).

@ldk-reviews-bot

Copy link
Copy Markdown

🔔 1st Reminder

Hey @joostjager! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@joostjager
joostjager removed their request for review June 30, 2025 11:13
@joostjager

Copy link
Copy Markdown
Contributor

Unassigned myself as reviewer, as there are open design questions.

@martinsaposnic

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #3881 that was merged and fixed the issue

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.

Don't Always Broadcast latest state on startup if we'd previously closed-without-broadcast

5 participants

@martinsaposnic@ldk-reviews-bot@TheBlueMatt@joostjager@tnull