TYPE 0x0502 · ANCHOR FAMILY

ANCHOR_CHANNEL

v0.7+ pure-marker channel anchor. Carries an optional commitment_number NUMERIC and nothing else. The v0.6 design also embedded local/remote channel pubkeys, but no consumer ever validated them — they were a 66 B/spend silent data channel (closed audit finding E-002). Future Lightning consumers needing channel keys should compose ANCHOR_CHANNEL with a SIG/MULTISIG block, or extend the spec with an ANCHOR_CHANNEL_KEYED variant whose keys are sig-validated.

Anchor Non-Invertible
ANCHOR_CHANNEL commitment_number commitment_number absent OR > 0 → SATISFIED
FieldData TypeSizeSideDescription
commitment_numberNUMERIC1-4 BConditionsChannel commitment number. Optional — the evaluator only inspects it if present, and rejects undecodable or ≤ 0 values. Omitting it makes the block a bare marker that always satisfies.

PubkeyCountForBlock = 0 (v0.7+). No PUBKEY in conditions or witness, and no witness fields at all.

0x0502 0 1 NUMERIC · 3B Conditions ≈ 9 bytes
0x0502 0 0 Witness = 4 bytes (empty block)
Total ≈ 13 bytes
1.Look for a NUMERIC field via FindField(block, NUMERIC). If absent, fall through to step 3.
2.If present, ReadNumeric it. If undecodable or value ≤ 0UNSATISFIED
3.Otherwise → SATISFIED. There are no pubkey, signature, or hash checks; the block is a marker.
ConditionResult
NUMERIC present but undecodable, or value ≤ 0UNSATISFIED
NUMERIC absent, or NUMERIC present and > 0SATISFIED
Conditions (channel state anchor)
{
  "type": "ANCHOR_CHANNEL",
  "inverted": false,
  "fields": [
    { "type": "NUMERIC", "value": 42 }
  ]
}

Anchors a marker for commitment #42. Channel identity (local/remote keys) is not bound by this block in v0.7+; if you need binding, compose this block with a SIG/MULTISIG block whose signatures consume the channel keys.

Lightning Channel Commitment Marker
Pin a monotonically increasing commitment number into a transaction so observers can sequence channel updates. Channel identity (the local/remote keys) is enforced by a co-located SIG or MULTISIG block in the same rung — ANCHOR_CHANNEL itself does not bind keys.
Composite Channel Anchor
Combine ANCHOR_CHANNEL with a 2-of-2 MULTISIG over the channel keys to get a fully bound channel anchor. The MULTISIG enforces both signatures; ANCHOR_CHANNEL records the agreed commitment number alongside.