Skip to content

Fix stock LDK public channel announcements - #10

Draft
bitwalt wants to merge 1 commit into
masterfrom
codex/issue-9-stock-ldk-interop
Draft

Fix stock LDK public channel announcements#10
bitwalt wants to merge 1 commit into
masterfrom
codex/issue-9-stock-ldk-interop

Conversation

@bitwalt

@bitwalt bitwalt commented Aug 6, 2026

Copy link
Copy Markdown
Member

Fixes #12.

Root cause

RGB-LDK serialized the optional RGB contract ID into every BOLT 7 channel announcement, including an explicit absent marker for vanilla channels. Stock LDK signs the standard message without that byte, so RLN verified its peer signature against different bytes and force-closed the channel.

What changed

  • Keep vanilla channel announcements byte-identical to BOLT 7 by omitting the RGB field when no contract is present.
  • Accept standard stock-LDK announcements that end after the funding keys.
  • Preserve support for the existing RGB extension and legacy absent marker.
  • Pin RLN to the updated rust-lightning interoperability branch.
  • Extend the stock-LDK fixture with announced-channel support and an end-to-end regression that mines through the announcement exchange, verifies the channel remains public/ready/usable, pays both ways, and closes cooperatively.

Impact

Announced vanilla channels with stock-LDK peers can complete the announcement-signature exchange without a destructive force-close.

Validation

  • cargo check -p lightning --features electrum
  • cargo fmt --package rgb-lightning-node -- --check
  • cargo fmt --manifest-path src/test/interoperability/ldk-node/Cargo.toml -- --check
  • cargo check --manifest-path src/test/interoperability/ldk-node/Cargo.toml
  • cargo check --all-targets
  • git diff --check

The focused rust-lightning unit-test target is currently blocked by unrelated pre-existing test-build failures in the fork; the production library and the full RLN target graph compile successfully. The announced-channel regression runs in the dedicated interoperability workflow.

@bitwalt
bitwalt force-pushed the codex/issue-9-stock-ldk-interop branch 3 times, most recently from 3299022 to aada3bd Compare August 7, 2026 07:19
@bitwalt bitwalt changed the title Fix stock LDK inbound channel interoperability Fix stock LDK channel interoperability in both directions Aug 7, 2026
@bitwalt
bitwalt force-pushed the codex/issue-9-stock-ldk-interop branch 5 times, most recently from c6be73a to 9f4ee8d Compare August 7, 2026 10:12
@bitwalt
bitwalt force-pushed the master branch 3 times, most recently from f11d78d to 82503a5 Compare August 10, 2026 19:35
@bitwalt
bitwalt force-pushed the codex/issue-9-stock-ldk-interop branch from 9f4ee8d to 16bd3e1 Compare August 11, 2026 09:12
@bitwalt bitwalt changed the title Fix stock LDK channel interoperability in both directions Fix stock LDK public channel announcements Aug 11, 2026
@bitwalt
bitwalt force-pushed the codex/issue-9-stock-ldk-interop branch from 16bd3e1 to a3c8c35 Compare August 11, 2026 09:19
@bitwalt
bitwalt force-pushed the codex/issue-9-stock-ldk-interop branch from a3c8c35 to fcafff6 Compare August 11, 2026 15:39
Sign up for free to 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.

channel_announcement carries contract_id, so announced channels with stock-LDK peers force-close

1 participant