TYPE 0x0704 · COMPOUND FAMILY

PTLC

Point Time Locked Contract. Combines a Schnorr signature against a single signing key with a relative timelock (CSV) in a single block. Collapses the ADAPTOR_SIG + CSV two-block pattern for payment-channel constructions. The "adaptor" mechanics — encrypting and decrypting the signature against the adaptor point T — are entirely off-chain (v0.7+); on-chain the spend reveals a normal Schnorr signature that the counterparty extracts the adaptor secret from. There is no on-chain adaptor point and no PREIMAGE field.

Compound Non-Invertible
PTLC ADAPTOR PT + SIG VERIFY + CSV CHECK Adaptor sig + timelock: all three must pass
FieldData TypeSizeSideDescription
timelock NUMERIC 1-4 B Conditions Relative timelock in blocks (BIP 68 sequence value).
pubkey PUBKEY 32-33 B Witness Single signing pubkey. Identity is bound at MLSC-proof level via merkle_pub_key.
signature SIGNATURE 64-65 B Witness Schnorr signature (size strictly enforced 64-65 B). The adaptor decryption happens off-chain before broadcast; on-chain this verifies as a plain Schnorr sig against pubkey.

PubkeyCountForBlock = 1 (single signing key). The witness layout is SIG_WITNESS[PUBKEY, SIGNATURE]; there is no PREIMAGE field on PTLC.

1. ResolvePubkeyCommitments(block): must yield exactly 1 PUBKEY. Also locate the witness SIGNATURE and conditions NUMERIC. Fewer than 1 PUBKEY, or SIGNATURE/NUMERIC missing → ERROR
2. Strict size check on the SIGNATURE: must be 64-65 B (Schnorr range). PTLC has no SCHEME field, so ECDSA's 8-72 B and PQ scheme sizes are rejected. Out of range → ERROR
3. Dispatch VerifySigWithScheme(pubkey, sig, scheme=null, ...). ERROR → propagate ERROR; not SATISFIED → UNSATISFIED
4. Then run the CSV check: ReadNumeric the timelock; undecodable → ERROR
5. If SEQUENCE_LOCKTIME_DISABLE_FLAG is set → SATISFIED immediately. Range guard: out of uint32 → UNSATISFIED. CheckSequence fails → UNSATISFIED; passes → SATISFIED
ConditionResult
PUBKEY, SIGNATURE, or NUMERIC missing; or NUMERIC undecodableERROR
SIGNATURE size outside 64-65 B (Schnorr range)ERROR
Signature verification failsUNSATISFIED
SEQUENCE_LOCKTIME_DISABLE_FLAG set after a valid signatureSATISFIED
Timelock out of uint32 range, or CheckSequence failsUNSATISFIED
Signature valid AND timelock satisfiedSATISFIED
Conditions (committed in the rung leaf)
{
  "type": "PTLC",
  "inverted": false,
  "fields": [
    { "type": "NUMERIC", "value": 144 }
  ]
}
Witness (input)
{
  "type": "PTLC",
  "inverted": false,
  "fields": [
    { "type": "PUBKEY", "hex": "02abc1... 33-byte signing pubkey" },
    { "type": "SIGNATURE", "hex": "e4f2a1... 64-65 B Schnorr sig (already adaptor-decrypted)" }
  ]
}
Scriptless Payment Channels
PTLC replaces HTLCs in payment channels, using adaptor signatures instead of hash locks. The spending transaction reveals the adaptor secret, enabling the counterparty to claim on the other side without on-chain hash preimage exposure.
Privacy-Preserving Routing
Unlike HTLC-based routing where the same hash appears across all hops, PTLC routing uses different adaptor points per hop. This prevents correlation attacks across the payment path.