Skip to content

bLIP: move to bits 266/267, link the taproot extension BOLT, and three notes - #1

Merged
davelund110 merged 1 commit into
davelund110:independent-secretsfrom
DarkWebDivingClub:independent-secrets-review
Oct 9, 2026
Merged

davelund110 merged 1 commit into
davelund110:independent-secretsfrom
DarkWebDivingClub:independent-secrets-review

Conversation

@dukeh3

@dukeh3 dukeh3 commented Oct 9, 2026

Copy link
Copy Markdown

Review of independent-secrets. The crypto holds up — I checked both
load-bearing claims and they're right — so this is the mechanical half
only. The judgement calls are below the diff, for you to take or leave.

In the diff

Bits 264/265 are already taken. lightning/blips#73
(option_path_queries, @brh28) claims them — open since 2026-07-15,
not a draft, mergeable_state=clean. The trap is that bLIP 2 on
master only lists merged reservations, so 262/263 → 729 looks like
open space while 28 open PRs are quietly staking claims in it. Surveying
every open PR that touches blip-0002.md:

Bits Claimed by
264/265 lightning#73 path queries
266/267 free
268/269 free
270/271 #56 pluggable channel factories
560/561 #36 on-the-fly funding
562/563 #41 funding fee credit
826/827 #70 RGB channels
828/829 #72 RGB disaster recovery

Moved to 266/267, the lowest uncontested pair. Worth re-checking at
PR time regardless.

Simple taproot channels isn't a proposal any more. lightning/bolts#995
merged on 2026-05-04 as bolt-simple-taproot.md. The section
called it "the simple taproot channel proposal" twice, unlinked. Now
refers to the extension BOLT and links it. Your description of its
nonce scheme is accurate against the merged text — a second shachain
HMAC'd from the revocation root — and this helps the argument: you're
amending something normative, not speculating against a draft.

Plus a comma splice in Per-commitment points, and the bLIP 2 row
padded to the table's columns.

Not in the diff — your call as champion

1. Unbounded receiver storage is the objection you'll get. The
Rationale spends one sentence on it: "adds to existing storage rather
than creating a new kind."
True of LDK and CLN, but it undersells the
case — the shachain exists precisely so secrets are O(1) while the rest
is pruneable. The commitment number stays 48 bits, so the ceiling is
2^48 x 32 B ~ 9 PB, with no cap to negotiate and no MAY fail the channel escape. The only out is not setting the bit, which line 36's
SHOULD pushes against. A paragraph conceding the growth and naming
that opt-out as deliberate would close the hole before someone opens it.

2. Static channel backups silently stop being able to punish. The
Rationale notes an SCB with the compact representation "can still punish
any state revoked by a seed-based peer" — and never states the converse.
Against an independent-secrets peer, a restored node can't derive any
secret it didn't persist, so breach punishment is gone. That belongs in
Backwards Compatibility, which currently covers only the downgrade
hazard.

3. Any bit above 255 costs 34 bytes in channel_type. This would be
the first merged bLIP to define a T-context bit (no merged bLIP uses
one; only lightning#70 also tries). The highest channel_type bit in use today is
option_zeroconf at 50/51, so the vector is <= 7 bytes; bit 266 needs
267 bits, so 34. And it's unavoidable — bLIP 2 reserves 0-255 for the
BOLTs. Either concede it in the Rationale, or treat it as an argument
for going straight to the BOLTs, which Universality already gestures
at. Multi-signer nodes need every peer to accept this anyway.

One thing I can't fix from here

a36ae6f is authored Claude <noreply@anthropic.com> and carries
Co-Authored-By and Claude-Session trailers, while the bLIP's
Author: is you. That needs an amend on your side before the upstream
PR — it'll be the first thing a bLIP editor sees.

Conformance is otherwise clean, for the record: preamble fields and
order match bLIP 4/32/42, the Specification-before-Motivation layout
matches bLIP 4 and 25, CC0 is one of the two bLIP 1 permits, and
Context: INT is right — T is a real BOLT 9 letter and INT is
exactly what option_anchors, option_scid_alias and
option_zeroconf use. Expect someone to query the I anyway: bLIP 2's
own prose glosses it as the BOLT 11 context while half its rows mean
init. That inconsistency is upstream's, not yours.

Bits 264/265 are already claimed by lightning#73
(option_path_queries), open since 2026-07-15 and mergeable. Only merged
reservations show in bLIP 2 on master, so the next-free pair reads as
264/265 when it is not. Of the pairs above 263, 266/267 and 268/269 are
the only ones no open PR claims; 270/271 goes to lightning#56.

Simple taproot channels is no longer a proposal: lightning/bolts#995
merged on 2026-05-04 as bolt-simple-taproot.md. Refer to the extension
BOLT and link it, and reflow the paragraph.

Also fix a comma splice in Per-commitment points, and pad the bLIP 2
row to the table's columns.
@dukeh3

dukeh3 commented Oct 9, 2026

Copy link
Copy Markdown
Author

@davelund110 — review of independent-secrets, against your branch (not upstream; nothing has been sent to lightning/blips).

The one that needs action regardless of the rest: bits 264/265 are already claimed by lightning/blips#73, open since July and mergeable. bLIP 2 on master only lists merged reservations, so the pair looks free when it is not. Moved to 266/267.

The crypto checks out — the shachain/SHA256 argument and the MuSig2 nonce-to-key-share leak are both right. Three judgement calls are in the PR description rather than the diff, since they are yours as champion.

One I could not fix from here: a36ae6f is authored Claude <noreply@anthropic.com> with Co-Authored-By trailers while the Author: is you — needs an amend on your side before any upstream PR.

@davelund110
davelund110 merged commit 6fdd4df into davelund110:independent-secrets Oct 9, 2026

davelund110 commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Thanks René, great review! 264/265 would have clashed with lightning#73, so that was a real catch. Merged, and the lnd and CLN branches are on 266/267 too. I've added your three notes to the bLIP (storage growth, static backups, the 34-byte channel_type), and the commits are now in my name.

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.

2 participants