TYPE 0x0103 · TIMELOCK FAMILY

CLTV

Absolute timelock in blocks (BIP 65). Transaction cannot be included until block height reaches the specified value.

Timelock Invertible
CLTV locktime INVALID SPENDABLE block_height ≥ locktime → SATISFIED
FieldData TypeSizeSideDescription
locktimeNUMERIC1-4 BConditionsAbsolute block height. BIP 65's height/time switch (LOCKTIME_THRESHOLD = 500000000) lives inside CheckLockTime — for CLTV, encode a value < 500000000.

No witness fields required — evaluation uses the current block height from the evaluation context.

0x0103 0 1 NUMERIC · 3B Conditions = 4 + 5 = 9 bytes
0x0103 0 0 Witness = 4 bytes (empty block)
Total 15 bytes
1.Read the conditions NUMERIC field as an int64 locktime_val. If absent or undecodable → ERROR
2.Range check: if locktime_val < 0 or locktime_val > 0xFFFFFFFFUNSATISFIED (guards the narrowing cast to uint32_t).
3.Call sig_checker.CheckLockTime(uint32_t(locktime_val)); this delegates to BIP 65 semantics (height vs MTP discriminated by </≥ LOCKTIME_THRESHOLD). Fails → UNSATISFIED; passes → SATISFIED
ConditionResult
NUMERIC field missing or undecodableERROR
locktime_val negative or > 0xFFFFFFFF (uint32 range guard)UNSATISFIED
CheckLockTime fails (block height < locktime, or input nSequence is final)UNSATISFIED
CheckLockTime passes (block height ≥ locktime)SATISFIED
Conditions (locked until block 850000)
{
  "type": "CLTV",
  "inverted": false,
  "fields": [
    { "type": "NUMERIC", "value": 850000 }
  ]
}

This locks the UTXO until block 850,000 is reached. Any transaction attempting to spend it before that height will be rejected by consensus.

locktime = 850000

Block 849999: 849999 < 850000 → UNSATISFIED
Block 850000: 850000 ≥ 850000 → SATISFIED
Block 900000: 900000 ≥ 850000 → SATISFIED
Future-Dated Payments
Funds locked until a future block height, creating a hard floor on when they can move. The recipient can see the payment on-chain but cannot spend it until the specified height is reached.
Vesting Schedules
Token grants that unlock at specific block heights, ensuring milestone-based disbursement without requiring a trusted intermediary. Each tranche is a separate UTXO with its own CLTV value.
Time-Locked Escrow
Escrow outputs that cannot be released before a specific block height, giving both parties a deterministic settlement window anchored to consensus rather than wall-clock time.