TYPE 0x0705 · COMPOUND FAMILY

CLTV_SIG

Signature verification combined with an absolute timelock (CLTV) in a single block. Collapses the common SIG + CLTV two-block pattern, saving 8 bytes on wire.

Compound Non-Invertible
CLTV_SIG SIG VERIFY + CLTV CHECK Both must pass for block to be SATISFIED
FieldData TypeSizeSideDescription
scheme SCHEME 1 B Conditions Signature scheme selector (Schnorr, ECDSA, or PQ)
locktime NUMERIC 1-4 B Conditions Absolute locktime (block height)
pubkey PUBKEY 32-33 B Witness Public key (verified via Merkle leaf)
signature SIGNATURE 64-65 B Witness Schnorr signature (64B) or with sighash byte (65B)

Public key folded into Merkle leaf via merkle_pub_key (PubkeyCountForBlock = 1). No key field in conditions.

1. Locate the witness PUBKEY, SIGNATURE, and conditions NUMERIC (locktime); any missing → ERROR. PUBKEY identity is bound at MLSC-proof level via merkle_pub_key.
2. Read the optional conditions SCHEME; if absent, default to Schnorr.
3. Dispatch VerifySigWithScheme(PUBKEY, SIGNATURE, scheme, ...). Sig size checks fire here. Invalid → the underlying result.
4. Then run the CLTV check (mirrors CLTV block): ReadNumeric the locktime; undecodable → ERROR
5. Range guard: locktime < 0 or > 0xFFFFFFFFUNSATISFIED
6. CheckLockTime(uint32_t(locktime)); BIP-65 height/MTP discrimination fires inside (value < LOCKTIME_THRESHOLD = 500000000 is height, ≥ is MTP). Fails → UNSATISFIED; passes → SATISFIED
ConditionResult
PUBKEY, SIGNATURE, or NUMERIC missing; or NUMERIC undecodableERROR
Signature verification failsUNSATISFIED
Locktime out of uint32 range, or CheckLockTime failsUNSATISFIED
Signature valid AND locktime reachedSATISFIED
Conditions (committed in the rung leaf)
{
  "type": "CLTV_SIG",
  "inverted": false,
  "fields": [
    { "type": "SCHEME", "value": 1 },
    { "type": "NUMERIC", "value": 850000 }
  ]
}
Witness (input)
{
  "type": "CLTV_SIG",
  "inverted": false,
  "fields": [
    { "type": "PUBKEY", "hex": "02abc1...33 bytes" },
    { "type": "SIGNATURE", "hex": "30440...64 bytes" }
  ]
}
Time-Locked Rewards
Mining pool payouts locked until a specific block height. The recipient has the key but cannot spend until the chain reaches the committed height, enforcing vesting schedules on-chain.
Scheduled Payments
Pre-signed transactions that become valid at a future date. Combined with a signature in one block, the payment is authorized but time-gated.
Refund Paths in HTLCs
The refund branch of an atomic swap uses CLTV_SIG: if the counterparty doesn't claim within the absolute deadline, the original sender can reclaim funds with their signature.