') + ')', '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('^' + ".*" + ', '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" + ', '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('^' + ".*" + ', '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); } })(); })(); Start verifying gossip data via bitcoind RPC by tnull · Pull Request #428 · lightningdevkit/ldk-node · GitHub
Skip to content

Start verifying gossip data via bitcoind RPC - #428

Merged
tnull merged 1 commit into
lightningdevkit:mainfrom
tnull:2025-01-start-verifying-gossip
Jan 21, 2025
Merged

Start verifying gossip data via bitcoind RPC#428
tnull merged 1 commit into
lightningdevkit:mainfrom
tnull:2025-01-start-verifying-gossip

Conversation

@tnull

@tnulltnull commented Jan 7, 2025

Copy link
Copy Markdown
Collaborator

Based on #426.
Closes#377.

So far, we did not verify gossip data received via the peer-to-peer network. As a small fix in the latest LDK release allows us properly set the gossip verifier, we do so, and start verifying gossip when the bitcoind RPC gossip source is set.

@tnulltnull added this to the 0.5 milestone Jan 7, 2025
@tnull
tnullforce-pushed the 2025-01-start-verifying-gossip branch from a1ce26e to d4626f8CompareJanuary 7, 2025 13:00
@tnull
tnullforce-pushed the 2025-01-start-verifying-gossip branch from d4626f8 to 85912fdCompareJanuary 16, 2025 09:29
Comment threadsrc/gossip.rs
So far, we did not verify gossip data received via the peer-to-peer
network. As a small fix in the latest LDK release allows us properly set
the gossip verifier, we do so, and start verifying gossip when the
bitcoind RPC gossip source is set.
@tnull
tnullforce-pushed the 2025-01-start-verifying-gossip branch from 85912fd to b774b33CompareJanuary 17, 2025 08:46
@tnull

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main after #426 landed.

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

Not a super expert on ldk-node code but LGTM. If we don't already, we might consider adding docs for RPC users to suggest they bump rpcworkqueue above the default (honestly the default is absurdly low...)

@tnull

Copy link
Copy Markdown
CollaboratorAuthor

Not a super expert on ldk-node code but LGTM. If we don't already, we might consider adding docs for RPC users to suggest they bump rpcworkqueue above the default (honestly the default is absurdly low...)

Ah, good point. I'm gonna land this but will make sure to add such a note when dealing with the slow-to-retrieve mempool issue soon.

@tnull
tnull merged commit b388ee1 into lightningdevkit:mainJan 21, 2025
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.

Start verifying gossip for the bitcoind RPC backend

3 participants

@tnull@TheBlueMatt@rustaceanrob