Block Reference
ADAPTOR_SIG
Signature Family
TYPE 0x0003 · SIGNATURE FAMILY

ADAPTOR_SIG

Adaptor signature verification. Requires a signing key, an adaptor point, and an adapted signature. Enables scriptless scripts and atomic protocols without hash locks.

Signature Non-Invertible
ADAPTOR_SIG ADAPTOR PT + SIG VERIFY Adapted signature verified against signing key + adaptor point
FieldData TypeSizeSideDescription
signing_key PUBKEY 32-33 B Witness Signing public key (x-only 32B or compressed 33B). The adaptor point is NOT revealed in the witness — the adaptor secret is applied off-chain to produce the adapted signature.
signature SIGNATURE 64-65 B Witness Adapted Schnorr signature (the completed adaptor signature)

Both public keys folded into Merkle leaf via merkle_pub_key (PubkeyCountForBlock = 2). No key fields in conditions.

Conditions side (in scriptPubKey):

0x0003 0 2 COMMIT (key) · 32B COMMIT (adaptor) · 32B = 72 bytes

Witness side (in input witness):

0x0003 0 2 KEY · 32B SIGNATURE · 64B = 104 bytes
Total (conditions + witness) 178 bytes

Minimal case with x-only keys and 64-byte Schnorr adapted signature.

1. Verify both witness pubkeys (signing_key and adaptor_point) against Merkle leaf (merkle_pub_key). If either mismatches → UNSATISFIED
2. Verify adaptor_point is a valid 32-byte x-only point on the curve. If invalid → UNSATISFIED
3. Verify adapted SIGNATURE against signing_key with adaptor_point. If invalid → UNSATISFIED
4. Adapted signature valid → SATISFIED
ConditionResult
Missing PUBKEY or SIGNATURE in witnessERROR
Fewer than 2 pubkeys in Merkle leaf (PubkeyCountForBlock = 2)ERROR
Adaptor point not valid x-only pointERROR
Signing key commitment mismatchUNSATISFIED
Adaptor point commitment mismatchUNSATISFIED
Adapted signature verification failsUNSATISFIED
Adapted signature validSATISFIED
Conditions (scriptPubKey)
{
  "type": "ADAPTOR_SIG",
  "inverted": false,
  "fields": [
    { "type": "PUBKEY", "hex": "02abc1...33 bytes (signing key)" },
    { "type": "PUBKEY", "hex": "03def2...33 bytes (adaptor point)" }
  ]
}
Witness (input)
{
  "type": "ADAPTOR_SIG",
  "inverted": false,
  "fields": [
    { "type": "PUBKEY", "hex": "02abc1...33 bytes (signing key)" },
    { "type": "SIGNATURE", "hex": "e5f71b...64 bytes (adapted)" }
  ]
}
DLC Oracle Contracts
Discreet Log Contracts use adaptor signatures to bind payouts to oracle attestations. The oracle's adaptor point commits to a future event outcome. When the oracle signs the outcome, the adapted signature becomes completable, enabling trustless settlement.
Scriptless Scripts
Adaptor signatures enable conditional payments without revealing any script on-chain. The spending transaction looks like a normal single-sig spend, but the act of completing the adaptor reveals a secret scalar to the counterparty.
Atomic Swaps Without Hash Locks
Cross-chain atomic swaps using adaptor signatures instead of HTLCs. Both parties create adaptor signatures with the same adaptor point. Completing one swap leg reveals the adaptor secret, enabling the other leg. More private than hash-lock swaps.
← MULTISIG MUSIG_THRESHOLD →