Legacy P2TR script-path (Taproot) wrapped as a typed Ladder Script block. This is the critical block — taproot script-path is the primary inscription/data-embedding vector today. The revealed script leaf must be valid Ladder Script conditions.
Legacy Non-Invertible| Field | Data Type | Size | Side | Description |
|---|---|---|---|---|
| hash256 | HASH256 | 32 B | Conditions | Merkle root of the script tree. Node-computed — the node derives this from the PREIMAGE (script leaf). Raw hash input is rejected. |
| preimage | PREIMAGE | var | Witness | Revealed script leaf (serialised Ladder Script conditions) — provided by the user. The node derives HASH256 from this data at creation time. |
| [inner witness] | var | var | Witness | Witness fields required to satisfy the revealed leaf conditions |
Public key folded into Merkle leaf via merkle_pub_key (PubkeyCountForBlock = 1). No key field in conditions.
Conditions side (in scriptPubKey):
Witness side (in input witness):
Witness size depends on the revealed script leaf and its witness fields.
| Condition | Result |
|---|---|
| Missing HASH256 or PREIMAGE | ERROR |
| HASH256 wrong size or Merkle leaf pubkey count mismatch | ERROR |
| SHA256(PREIMAGE) != HASH256 (Merkle root) | UNSATISFIED |
| PREIMAGE fails to deserialize as Ladder conditions | ERROR |
| Inner conditions evaluation fails | UNSATISFIED |
| Recursion depth > 2 | ERROR |
| Inner conditions satisfied | SATISFIED |
{
"type": "P2TR_SCRIPT_LEGACY",
"inverted": false,
"fields": [
{ "type": "HASH256", "hex": "e3b0c4...32 bytes (Merkle root)" },
{ "type": "PUBKEY", "hex": "02abc1...33 bytes (internal key)" }
]
}{
"type": "P2TR_SCRIPT_LEGACY",
"inverted": false,
"fields": [
{ "type": "PREIMAGE", "hex": "01020304...serialised Ladder conditions (revealed leaf)" },
{ "type": "PUBKEY", "hex": "02abc1...33 bytes" },
{ "type": "SIGNATURE", "hex": "e5f6a7...64 bytes" }
]
}