TYPE 0x0906 · LEGACY FAMILY
P2TR_LEGACY
Legacy P2TR key-path (Taproot) wrapped as a typed Ladder Script block. Key-path spend — same evaluation as SIG block. Closes key-path data surfaces.
Legacy Non-InvertibleLadder Diagram
Fields
| Field | Data Type | Size | Side | Description |
|---|---|---|---|---|
| scheme | SCHEME | 1 B | Conditions | Signature scheme identifier (optional, Schnorr default) |
| pubkey | PUBKEY | 32 B | Witness | X-only public key (Taproot key-path) |
| signature | SIGNATURE | 64-65 B | Witness | Schnorr signature over the transaction sighash |
Public key folded into Merkle leaf via merkle_pub_key (PubkeyCountForBlock = 1). No key field in conditions.
Wire Format Breakdown
Conditions side (committed in the rung leaf):
0x0906
0
1
SCHEME · 1B
≈ 7 bytes
Witness side (in input witness):
0x0906
0
2
PUBKEY · 33B
SIGNATURE · 64B
= 105 bytes
Total (conditions + witness)
144 bytes
With rung overhead included. Compressed pubkey (33B) case.
Evaluation Logic
1.
Locate the witness PUBKEY and SIGNATURE; either missing → ERROR. Pubkey identity is bound at MLSC-proof level via merkle_pub_key.
2.
Read the optional conditions SCHEME (default Schnorr).
3.
Dispatch VerifySigWithScheme(pubkey, sig, scheme, ...) through the Ladder
LadderSigChecker. The result is the block result.
Return Values
| Condition | Result |
|---|---|
| Missing PUBKEY or SIGNATURE | ERROR |
| Signature size out of range for the resolved scheme | ERROR |
| Signature verification fails | UNSATISFIED |
| Signature valid | SATISFIED |
JSON Wire Format
Conditions (committed in the rung leaf)
{
"type": "P2TR_LEGACY",
"inverted": false,
"fields": [
{ "type": "SCHEME", "hex": "01" }
]
}Witness (input)
{
"type": "P2TR_LEGACY",
"inverted": false,
"fields": [
{ "type": "PUBKEY", "hex": "02abc1...33 bytes" },
{ "type": "SIGNATURE", "hex": "e5f6a7...64 bytes" }
]
}Notes
- Key-path only — for script-path see P2TR_SCRIPT_LEGACY (0x0907).
- Public key is folded into the Merkle leaf via merkle_pub_key. The user supplies PUBKEY and the node incorporates it into the leaf hash automatically.
- Delegates to EvalSigBlock internally.
- Closes key-path data surfaces while preserving Taproot's key-path efficiency.
Use Cases
Taproot Key-Path Migration
Wraps taproot key-path spends. For script-path, see P2TR_SCRIPT_LEGACY.
PQ-Ready Key Path
Key-path spend with SCHEME field enabling post-quantum signature migration.