TYPE 0x0901 · LEGACY FAMILY
P2PK_LEGACY
Legacy P2PK (pay-to-public-key) wrapped as a typed Ladder Script block. Same evaluation as SIG — Merkle leaf pubkey verified, then signature check. Closes arbitrary data surfaces.
Legacy
Non-Invertible
Ladder Diagram
P2PK_LEGACY
SIG VERIFY
Delegates to EvalSigBlock internally
Fields
Field Data Type Size Side Description
scheme
SCHEME
1 B
Conditions
Signature scheme identifier (optional, 0x00 = Schnorr default)
pubkey
PUBKEY
32-33 B
Witness
Public key (x-only 32B or compressed 33B)
signature
SIGNATURE
64-65 B
Witness
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 (in scriptPubKey):
0x0901
0
2
SCHEME · 1B
= 7 bytes
Witness side (in input witness):
0x0901
0
2
PUBKEY · 33B
SIGNATURE · 64B
= 105 bytes
Total (conditions + witness)
144 bytes
With rung overhead included. Compressed pubkey (33B) case.
Evaluation Logic
1.
Verify witness PUBKEY against Merkle leaf (merkle_pub_key). If mismatch → UNSATISFIED
2.
Route by SCHEME field (Schnorr / ECDSA / PQ). Default is Schnorr.
3.
Verify SIGNATURE against PUBKEY. If invalid → UNSATISFIED
4.
Signature valid → SATISFIED
Return Values
Condition Result
Missing PUBKEY or SIGNATURE ERROR
Merkle leaf pubkey count mismatch ERROR
Merkle leaf verification fails UNSATISFIED
Signature fails UNSATISFIED
Signature valid SATISFIED
JSON Wire Format
Conditions (scriptPubKey)
{
"type" : "P2PK_LEGACY" ,
"inverted" : false ,
"fields" : [
{ "type" : "PUBKEY" , "hex" : "02abc1...33 bytes" },
{ "type" : "SCHEME" , "hex" : "01" }
]
}
Witness (input)
{
"type" : "P2PK_LEGACY" ,
"inverted" : false ,
"fields" : [
{ "type" : "PUBKEY" , "hex" : "02abc1...33 bytes" },
{ "type" : "SIGNATURE" , "hex" : "e5f6a7...64 bytes" }
]
}
Notes
Delegates to EvalSigBlock internally. All signature schemes supported via SCHEME field.
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.
Wraps legacy P2PK semantics — no new data surfaces.
All signature schemes (Schnorr, ECDSA, PQ) supported via the SCHEME routing field.
Closes the arbitrary data surface present in raw P2PK outputs.
Use Cases
Legacy P2PK Migration
Wrap existing P2PK outputs in typed Ladder blocks. Same spending semantics with anti-spam protection.
Composable Key Spending
Combine with timelocks, hash locks, or covenants on other rungs. Legacy key-spending with full Ladder Script composability.