ADAPTOR_SIG
Adaptor signature verification. Verifies a Schnorr signature that has been "adapted" off-chain by combining a presig with an adaptor secret t (where T = t·G). On-chain the block sees a single signing key + the completed signature; the adaptor point T and secret t are off-chain machinery. Enables scriptless-script atomic protocols without hash locks.
Signature Non-Invertible| Field | Data Type | Size | Side | Description |
|---|---|---|---|---|
| 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) |
Single signing pubkey folded into Merkle leaf via merkle_pub_key (PubkeyCountForBlock = 1). v0.7 dropped the second "adaptor point" slot — T = t·G is needed only for off-chain witness extraction, not for on-chain consensus, since the adapted sig verifies as a normal Schnorr against the signing key. No key fields in conditions.
F26: the conditions field count is exactly zero. Any spurious conditions field on an ADAPTOR_SIG block is rejected at fund time by createrungtx and at consensus by the wire-format deserialiser.
Conditions side (no implicit fields — ADAPTOR_SIG conditions carry no per-block bytes; the signing pubkey is folded into the rung leaf via merkle_pub_key):
Witness side (in input witness):
Witness reveals only the signing pubkey + the adapted Schnorr signature; no adaptor point. The adapted sig is a regular Schnorr signature verified against the signing pubkey.
EvalAdaptorSigBlock runs.
ResolvePubkeyCommitments must return exactly 1 pubkey. FindField(SIGNATURE) must succeed. If either fails → ERROR
VerifySigWithScheme dispatches to Schnorr verify. The adapted signature, having been completed off-chain by adding the adaptor secret, verifies as an ordinary Schnorr signature against the signing pubkey. Verification fails → UNSATISFIED
| Condition | Result |
|---|---|
| Witness pubkey count != 1, or SIGNATURE missing | ERROR |
| SIGNATURE size outside 64-65 bytes (Schnorr only) | ERROR |
| Schnorr verification of adapted signature fails | UNSATISFIED |
| Adapted signature valid | SATISFIED |
{
"type": "ADAPTOR_SIG",
"inverted": false,
"fields": [
]
}{
"type": "ADAPTOR_SIG",
"inverted": false,
"fields": [
{ "type": "PUBKEY", "hex": "02abc1...33 bytes (signing key)" },
{ "type": "SIGNATURE", "hex": "e5f71b...64 bytes (adapted)" }
]
}