Lux Proposals
← All proposals
LP-0300Final

Status

Final. This LP is normative. Any future schema ID, TypeKind byte,

ShapeKind byte, or precompile slot allocation MUST be added here first;

the consuming LP MUST reference (not duplicate) the assignment.

Activated at the genesis of the new final Lux network:

2025-12-25 16:20 Pacific (unix 1766708400). LP-300 itself is a

meta-registry — it ships no wire change, only authoritative

documentation. Final from genesis.

Abstract

The LP corpus allocates schema IDs, TypeKind bytes, ShapeKind bytes,

and EVM precompile slots in fragments. LP-186 claims 0xC0..0xCB for

the 12 chains-VMs. LP-201 claims 0xD0..0xDF for the 16 P2P stream

types. LP-208 originally claimed 0xF0..0xFF for DAG mempool, then

honestly reclaimed 0xE0..0xE1 after the LP-218 rollup range

appeared. LP-211 claims 0xE2..0xE7 for cross-shard 2PC. LP-218

shipped Draft claiming 0xE0..0xEF for rollup envelopes — which

overlaps LP-208 *and* LP-211. LP-214 light client claims 0xF0..0xF2.

LP-219 reuses LP-211's 0xE2..0xE7 at the rollup tier. LP-0120 owns

the PQ precompile range 0x012201..0x012208 and LP-218/LP-220 attach

P3Q wrappers at three of those slots. LP-078 owns the broad EVM

precompile suite (0x0100, 0x0200..xxx, 0x0300..xx, 0x0500..xx,

0x0700, 0x0800..xx, 0x0900..xx, 0x9010..0x9080 DEX, 0x9200..04

privacy, 0xB002 KZG). LP-0011 owns federation registry slots

0x011001 and 0x011002.

This LP collapses every allocation into one master table. The

allocation namespaces are orthogonal: a TypeKind byte does not collide

with a precompile slot because they live in different address spaces;

the master table is partitioned by namespace. Conflicts inside a

namespace are resolved here — LP-300 wins over any consuming LP that

disagrees. The single most consequential conflict (LP-208 vs LP-211

vs LP-218 all claiming bytes inside 0xE0..0xEF) is resolved per the

LP-214 canonical handoff: LP-208 takes 0xE0..0xE1, LP-211 takes

0xE2..0xE7, LP-218 takes 0xE8..0xEF (shifted), LP-214 takes

0xF0..0xF2.

Allocation namespaces

Four orthogonal allocation namespaces. Each row of the master table

lives in exactly one namespace; cross-namespace collisions are

impossible by construction.

| # | Namespace | Width | Authority | Carrier |
|---|---|---|---|---|
| 1 | TypeKind byte | 1 byte (0x00–0xFF) | LP-200 / LP-022 | byte 0 of every ZAP envelope on the wire |
| 2 | ShapeKind byte | 1 byte (0x00–0xFF), namespaced under each TypeKind | LP-200 / LP-022 | byte 1 of every ZAP envelope (per TypeKind table) |
| 3 | Precompile slot | uint16 / uint24 / uint160 | LP-078 (broad) + LP-0120 (PQ) | EVM precompile address |
| 4 | Genesis assetID / chainID | uint32 / uint160 | LP-019, LP-099, LP-134 | per-chain genesis blob (out of scope of LP-300) |

LP-300 is normative for namespaces 1, 2, and 3. Namespace 4 is owned

by the genesis / numbering LPs and is referenced here only to disclaim

overlap.

The terms "schema ID" and "TypeKind byte" are used interchangeably

throughout the LP corpus; they name the same byte. "Kind" alone is

ambiguous and avoided in LP-300.

Master Table

One row per allocation. The "Status" column reflects the consuming

LP's status; LP-300 itself is Final and pins the assignment.

Namespace 1 — TypeKind byte (ZAP schema ID)

| Hex | Owner LP | Purpose | Status | Verified |
|---|---|---|---|---|
| 0x00 | reserved | Reserved — null/illegal envelope | Reserved | 2026-06-03 |
| 0x01 | LP-182 | QuasarCert (consensus wire) | Final | 2026-06-03 |
| 0x02 | LP-182 | QBlock (consensus wire) | Final | 2026-06-03 |
| 0x03 | LP-182 | WitnessProof (consensus wire) | Final | 2026-06-03 |
| 0x04 | LP-182 | MagnetarAggregateCert (consensus wire) | Final | 2026-06-03 |
| 0x05 | LP-182 | PolarisLegs (consensus wire) | Final | 2026-06-03 |
| 0x06 | LP-182 | QuasarSig (consensus wire) | Final | 2026-06-03 |
| 0x07 | LP-182 | EpochBundle (consensus wire) | Final | 2026-06-03 |
| 0x08 | LP-182 | PrismCut (consensus wire) | Final | 2026-06-03 |
| 0x09 | LP-182 | StakeWeightedCut (consensus wire) | Final | 2026-06-03 |
| 0x0A | LP-182 | TxAuthEnvelope (consensus wire) | Final | 2026-06-03 |
| 0x0B | LP-182 | PQPermit (consensus wire) | Final | 2026-06-03 |
| 0x0C | LP-182 | DAGVertex (consensus wire) | Final | 2026-06-03 |
| 0x0D | LP-182 | PolicyCert (consensus wire) | Final | 2026-06-03 |
| 0x0E–0x0F | LP-182 | Reserved for future consensus-wire types | Reserved | 2026-06-03 |
| 0x10–0xBF | reserved | Protocol-level future use — DO NOT ALLOCATE without LP-300 amendment | Reserved | 2026-06-03 |
| 0xC0 | LP-186 | aivm chains-VM wire | Draft | 2026-06-03 |
| 0xC1 | LP-186 | bridgevm chains-VM wire | Draft | 2026-06-03 |
| 0xC2 | LP-186 | dexvm chains-VM wire | Draft | 2026-06-03 |
| 0xC3 | LP-186 | evm chains-VM wire (chains-side glue) | Draft | 2026-06-03 |
| 0xC4 | LP-186 | graphvm chains-VM wire | Draft | 2026-06-03 |
| 0xC5 | LP-186 | identityvm chains-VM wire | Draft | 2026-06-03 |
| 0xC6 | LP-186 | keyvm chains-VM wire | Draft | 2026-06-03 |
| 0xC7 | LP-186 | oraclevm chains-VM wire | Draft | 2026-06-03 |
| 0xC8 | LP-186 | quantumvm chains-VM wire | Draft | 2026-06-03 |
| 0xC9 | LP-186 | relayvm chains-VM wire | Draft | 2026-06-03 |
| 0xCA | LP-186 | thresholdvm chains-VM wire | Draft | 2026-06-03 |
| 0xCB | LP-186 | zkvm chains-VM wire | Draft | 2026-06-03 |
| 0xCC–0xCF | LP-186 | Reserved for future chains-VM additions | Reserved | 2026-06-03 |
| 0xD0 | LP-201 | ConsensusVote (P2P stream type) | Draft | 2026-06-03 |
| 0xD1 | LP-201 | ConsensusProposal (P2P stream type) | Draft | 2026-06-03 |
| 0xD2 | LP-201 | ConsensusCert (P2P stream type — mirrors 0x01 QuasarCert) | Draft | 2026-06-03 |
| 0xD3 | LP-201 | BlockRequest (P2P stream type) | Draft | 2026-06-03 |
| 0xD4 | LP-201 | BlockResponse (P2P stream type) | Draft | 2026-06-03 |
| 0xD5 | LP-201 | TxGossip (P2P stream type) | Draft | 2026-06-03 |
| 0xD6 | LP-201 | TxRequest (P2P stream type) | Draft | 2026-06-03 |
| 0xD7 | LP-201 | TxResponse (P2P stream type) | Draft | 2026-06-03 |
| 0xD8 | LP-201 | FilterAdvertise (P2P bloom-filter gossip) | Draft | 2026-06-03 |
| 0xD9 | LP-201 | SnapshotAdvertise (P2P state-sync gossip) | Draft | 2026-06-03 |
| 0xDA | LP-201 | ChunkRequest (P2P content-addressed fetch) | Draft | 2026-06-03 |
| 0xDB | LP-201 | ChunkResponse (P2P content-addressed fetch) | Draft | 2026-06-03 |
| 0xDC | LP-201 | PeerInfo (P2P signed peer record) | Draft | 2026-06-03 |
| 0xDD | LP-201 | DHTFindNode (Kademlia) | Draft | 2026-06-03 |
| 0xDE | LP-201 | DHTFindValue (Kademlia) | Draft | 2026-06-03 |
| 0xDF | LP-201 | DHTStore (Kademlia) | Draft | 2026-06-03 |
| 0xE0 | LP-208 | DAGHeader (DAG mempool) — reclaimed from prior 0xF0 claim | Draft | 2026-06-03 |
| 0xE1 | LP-208 | DAGBody (DAG mempool) — reclaimed from prior 0xF1 claim | Draft | 2026-06-03 |
| 0xE2 | LP-211 | CrossShardTxGroup — also reused by LP-219 at rollup tier | Draft | 2026-06-03 |
| 0xE3 | LP-211 | CrossShardDispatch — also reused by LP-219 at rollup tier | Draft | 2026-06-03 |
| 0xE4 | LP-211 | CrossShardPrepareAck — also reused by LP-219 at rollup tier | Draft | 2026-06-03 |
| 0xE5 | LP-211 | CrossShardRefuseAck — also reused by LP-219 at rollup tier | Draft | 2026-06-03 |
| 0xE6 | LP-211 | CrossShardCommitNotify — also reused by LP-219 at rollup tier | Draft | 2026-06-03 |
| 0xE7 | LP-211 | CrossShardAbortNotify — also reused by LP-219 at rollup tier | Draft | 2026-06-03 |
| 0xE8 | LP-218 | RollupBatchTx (Z-Chain rollup substrate) — shifted from prior 0xE0 claim | Draft | 2026-06-03 |
| 0xE9 | LP-218 | RollupChallengeTx — shifted from prior 0xE1 claim | Draft | 2026-06-03 |
| 0xEA | LP-218 | RollupExitTx — shifted from prior 0xE2 claim | Draft | 2026-06-03 |
| 0xEB | LP-218 | RollupGenesisTx — shifted from prior 0xE3 claim | Draft | 2026-06-03 |
| 0xEC | LP-218 / LP-219 | RollupAggregateBatch — LP-219 TxKind 0x44 lives in this envelope | Draft | 2026-06-03 |
| 0xED–0xEF | LP-218 | Reserved for future rollup-VM envelopes (sequencer rotation, cross-rollup commit, etc.) | Reserved | 2026-06-03 |
| 0xF0 | LP-214 | LightClientBlockHeaderRequest | Draft | 2026-06-03 |
| 0xF1 | LP-214 | LightClientStateProofRequest | Draft | 2026-06-03 |
| 0xF2 | LP-214 | LightClientCertProof | Draft | 2026-06-03 |
| 0xF3–0xFF | reserved | Reserved for future framing — DO NOT ALLOCATE without LP-300 amendment | Reserved | 2026-06-03 |

Namespace 2 — ShapeKind byte (TxKind, per TypeKind)

The ShapeKind byte is the discriminator at byte 1 of the envelope,

namespaced under each TypeKind. LP-300 records only the cross-LP

ShapeKinds that are visible at the consensus/wire boundary. Per-VM

TxKind tables (e.g., dexvm OrderTx / CancelTx / SwapTx) are

internal to the owning chains-VM and are documented in LP-186 plus

the per-VM wire files; they are NOT re-listed here.

| TypeKind | ShapeKind | Owner LP | Purpose | Status |
|---|---|---|---|---|
| 0xE8 | 0x40 | LP-218 | RollupBatchTx body kind | Draft |
| 0xE9 | 0x41 | LP-218 | RollupChallengeTx body kind | Draft |
| 0xEA | 0x42 | LP-218 | RollupExitTx body kind | Draft |
| 0xEB | 0x43 | LP-218 | RollupGenesisTx body kind | Draft |
| 0xEC | 0x44 | LP-219 | RollupAggregateBatch body kind (cross-rollup atomic) | Draft |
| 0xF0 | 0x50 | LP-214 | LightClientBlockHeaderRequest body kind | Draft |
| 0xF1 | 0x51 | LP-214 | LightClientStateProofRequest body kind | Draft |
| 0xF2 | 0x52 | LP-214 | LightClientCertProof body kind | Draft |

ShapeKind values under TypeKinds 0xC0..0xCB (chains-VM) are

delegated to LP-186 and the owning chains-VM. ShapeKind values under

TypeKinds 0xD0..0xDF (P2P) are degenerate — each P2P TypeKind has

exactly one shape — so no separate ShapeKind table is needed there.

Namespace 3 — EVM Precompile slot

EVM precompiles live in three disjoint address bands:

LP-300 catalogs every currently-allocated slot below.

Classical EVM core + Ethereum-compat (LP-078 band)

| Slot | Owner LP | Name | Purpose | Status |
|---|---|---|---|---|
| 0x000B | LP-078 | BLS12-381 G1 add | EIP-2537 | Final |
| 0x000C | LP-078 | BLS12-381 G1 scalar mul | EIP-2537 | Final |
| 0x000D | LP-078 | BLS12-381 G1 MSM | EIP-2537 | Final |
| 0x0100 | LP-078 | secp256r1 / P-256 | EIP-7212 (RIP-7212) | Final |
| 0x0300 | LP-078 | AI mining | LP-009 family | Draft |
| 0x0300..01 | LP-078 / LP-127 | TEE attestation (NVTrust GPU, SGX, SEV-SNP, TDX) | LP-127 | Draft |
| 0x0300..10 | LP-078 | AI compute marketplace | LP-130 | Draft |
| 0x0300..20 | LP-078 | Quasar Verkle tree verify | LP-026 | Draft |
| 0x0300..21 | LP-078 | Quasar BLS12-381 sig verify | LP-075 | Draft |
| 0x0300..22 | LP-078 | Quasar BLS12-381 aggregate | LP-075 | Draft |
| 0x0300..23 | LP-078 | Quasar Pulsar consensus verify | LP-073 | Draft |
| 0x0300..24 | LP-078 | Quasar hybrid PQ verify | LP-217 | Draft |
| 0x0440 | LP-078 | Bridge gateway | LP-017 | Draft |
| 0x0441 | LP-078 | Cross-chain routing | LP-017 | Draft |
| 0x0442 | LP-078 | Bridge message verification | LP-017 | Draft |
| 0x0443 | LP-078 | Bridge liquidity pools | LP-017 | Draft |
| 0x0500..04 | LP-078 / LP-126 | BLAKE3 | LP-011 | Draft |
| 0x0500..05 | LP-078 / LP-069 | Poseidon2 | LP-069 | Draft |
| 0x0500..06 | LP-078 / LP-119 | Pedersen (BN254) | LP-119 | Draft |
| 0x0500..07 | LP-078 / LP-111 | Baby Jubjub | LP-111 | Draft |
| 0x0500..08 | LP-078 / LP-113 | Pasta (Pallas + Vesta) | LP-113 | Draft |
| 0x0500..10 | LP-078 | On-chain GraphQL query | LP-128 | Draft |
| 0x0500..11 | LP-078 | GraphQL subscribe | LP-128 | Draft |
| 0x0500..12 | LP-078 | GraphQL cache | LP-128 | Draft |
| 0x0500..13 | LP-078 | GraphQL index | LP-128 | Draft |
| 0x0700 | LP-078 / LP-066 | FHE / TFHE ops | LP-066 | Draft |
| 0x0800..02 | LP-078 / LP-154 | FROST EdDSA threshold | LP-154 | Draft |
| 0x0800..03 | LP-078 / LP-155 | CGGMP21 ECDSA threshold | LP-155 | Draft |
| 0x0900 | LP-078 | Generic ZK verify | LP-037 | Draft |
| 0x0901 | LP-078 / LP-0120 | Groth16 verifier | LP-037 | Draft |
| 0x0902 | LP-078 | PLONK verifier | LP-037 | Draft |
| 0x0903 | LP-078 | fflonk verifier | LP-037 | Draft |
| 0x0904 | LP-078 | Halo2 verifier | LP-037 | Draft |
| 0x0A00..01 | LP-078 / LP-125 | sr25519 (Schnorrkel/Ristretto) | LP-125 | Draft |
| 0x3211..00 | LP-078 / LP-124 | Ed25519 | LP-124 | Draft |
| 0x3213 | LP-078 / LP-131 | VRF (ECVRF-Edwards25519-SHA512, RFC 9381) | LP-131 | Draft |
| 0x6010 | LP-078 | Teleport (cross-chain) | LP-016 | Draft |
| 0x9010 | LP-078 | LXPool — Uniswap v4 PoolManager | LP-032 | Draft |
| 0x9011 | LP-078 | LXOracle — price aggregation | LP-032 | Draft |
| 0x9012 | LP-078 | LXRouter — swap router | LP-032 | Draft |
| 0x9013 | LP-078 | LXHooks — hook registry | LP-032 | Draft |
| 0x9014 | LP-078 | LXFlash — flash accounting | LP-032 | Draft |
| 0x9020 | LP-078 | LXBook — CLOB orderbook | LP-032 | Draft |
| 0x9030 | LP-078 | LXVault — custody + margin | LP-032 | Draft |
| 0x9040 | LP-078 | LXPrice — derived pricing | LP-032 | Draft |
| 0x9050 | LP-078 | LXLend — lending pool | LP-032 | Draft |
| 0x9060 | LP-078 | LXRepayer — self-repaying loans | LP-032 | Draft |
| 0x9070 | LP-078 | LXLiquidator — liquidation engine | LP-032 | Draft |
| 0x9080 | LP-078 | LXTransmuter — debt→collateral | LP-032 | Draft |
| 0x9200 | LP-078 / LP-122 | HPKE seal | LP-122 | Draft |
| 0x9202 | LP-078 | Ring signature verify (LSAG) | — | Draft |
| 0x9203 | LP-078 / LP-114 | X25519 DH | LP-114 | Draft |
| 0x9204 | LP-078 / LP-112 | Curve25519 raw point ops | LP-112 | Draft |
| 0x9201 | LP-078 / LP-121 | ECIES | LP-121 | Deprecated |
| 0x9210 | LP-078 / LP-116 | AES-256-GCM | LP-116 | Deprecated |
| 0x9211 | LP-078 / LP-117 | ChaCha20-Poly1305 | LP-117 | Deprecated |
| 0xB002 | LP-078 / LP-118 | KZG / EIP-4844 blob commitments | LP-118 | Draft |

Federation registry (LP-0011 band)

| Slot | Owner LP | Name | Purpose | Status |
|---|---|---|---|---|
| 0x011001 | LP-0011 | FederationRegistry resolver | Brand sovereignty discovery (LP-0010 family) | Draft |
| 0x011002 | LP-0011 | BrandConfigStore | Append-only commit log for federation records | Draft |
| 0x011003..0x011FFF | LP-0011 | Reserved for federation expansion | Reserved | 2026-06-03 |

Post-quantum precompile registry (LP-0120 band)

This is the canonical PQ precompile registry. LP-218 / LP-220 attach

the unified P3Q verifier family at the single slot 0x012205

(kind-byte dispatch: 0x01 Pulsar, 0x02 Corona, 0x03 Magnetar).

The raw primitive slots 0x012204, 0x012206, 0x012207 remain LP-0120

property for non-rollup-batch use. LP-221 owns the STARK-FRI verifier

at 0x012220.

| Slot | Owner LP | Name | Purpose | Status |
|---|---|---|---|---|
| 0x012201 | LP-0120 / LP-072 | ML-KEM-768 | FIPS 203 KEM (Module-LWE) | Draft |
| 0x012202 | LP-0120 / LP-070 | ML-DSA single-party | FIPS 204 signature | Draft |
| 0x012203 | LP-0120 / LP-071 | SLH-DSA-192f | FIPS 205 hash-based signature | Draft |
| 0x012204 | LP-0120 / LP-073 | Pulsar | Module-LWE threshold (ML-DSA-65 byte-equal) | Draft |
| 0x012205 | LP-218 / LP-220 | P3Q unified verifier family | Kind-byte dispatch (0x01 Pulsar / 0x02 Corona / 0x03 Magnetar) — one slot, one ABI, one audit surface | Draft |
| 0x012206 | LP-0120 | Corona (raw primitive) | Module-LWE threshold; LP-220's P3Q-Corona wrapper lives at 0x012205 kind=0x02, NOT here | Draft |
| 0x012207 | LP-0120 / LP-181 | Magnetar (raw primitive) | SLH-DSA threshold (public-DKG MPC); LP-220's P3Q-Magnetar wrapper lives at 0x012205 kind=0x03, NOT here | Draft |
| 0x012208 | LP-0120 | HQC | NIST PQC4 code-based KEM (family-disjoint from ML-KEM) | Draft |
| 0x012209..0x0121FF | LP-0120 | Reserved for PQ extensions | Reserved | 2026-06-03 |
| 0x012220 | LP-221 | STARK-FRI verifier (Plonky3 PQ-only fork) | Dedicated spec — relocated from 0x012205 on 2026-06-03 per LP-218 §"Slot history: STARK-FRI rename" | Draft |
| 0x2221 | LP-078 / LP-115 | X-Wing (X25519 ∥ ML-KEM-768) | Hybrid KEM | Draft |
| 0x2222 | LP-0120 / LP-4930 | X-Wing+ (X25519 ∥ ML-KEM-768 ∥ HQC) | Extended hybrid KEM with code-family backup | Draft |

Lux EVM-style stateful precompile range (LP-078 / LP-3520 band)

| Slot | Owner LP | Name | Purpose | Status |
|---|---|---|---|---|
| 0x0200..0001 | LP-3520 | DeployerAllowList | Contract deployment permissions | Final |
| 0x0200..0002 | LP-3520 | TxAllowList | Transaction submission permissions | Final |
| 0x0200..0003 | LP-3520 | FeeManager | Dynamic fee configuration | Draft |
| 0x0200..0004 | LP-3520 | NativeMinter | Native token minting | Final |
| 0x0200..0005 | LP-3520 | RewardManager | Validator reward distribution | Final |
| 0x0200..0006 | LP-3520 | ML-DSA (legacy stateful slot) | Superseded by LP-0120 0x012202 for FIPS 204 verify | Deprecated |
| 0x0200..0007 | LP-3520 | SLH-DSA (legacy stateful slot) | Superseded by LP-0120 0x012203 for FIPS 205 verify | Deprecated |
| 0x0200..0008 | LP-3520 | Warp | Cross-chain BLS messaging | Draft |
| 0x0200..000A | LP-3520 | Quasar consensus cert verify | LP-0110 / LP-0120 | Draft |
| 0x0200..000B | LP-3520 | Corona (legacy stateful slot) | Superseded by LP-0120 0x012206 | Deprecated |
| 0x0200..000C | LP-3520 / LP-154 | FROST threshold | LP-154 | Draft |
| 0x0200..000D | LP-3520 / LP-155 | CGGMP21 threshold | LP-155 | Draft |

Reserved future precompile blocks

| Slot range | Status | Notes |
|---|---|---|
| 0x0010..0x00FF | Reserved | Ethereum precompile expansion |
| 0x010000..0x010FFF | Reserved | Future Lux core precompiles |
| 0x013000..0x01FFFF | Reserved | Future PQ precompile extensions |
| 0x020000..0x02FFFF | Reserved | Future stateful precompile blocks (per-VM precompile clusters) |

Conflict resolution policy

LP-300 is the single source of truth. The following policy governs all

future allocations and resolves all existing conflicts.

Adding a new allocation

1. The proposer opens a PR against LP-300 listing the requested

slot(s), the consuming LP number, and a one-line purpose.

2. The PR is merged BEFORE the consuming LP can be promoted past

"Draft" status. A consuming LP at "Final" without a matching

LP-300 row is itself in violation.

3. The consuming LP's "Wire schemas" or "Precompile slot" section

references LP-300 by row; it does not re-state the allocation.

Resolving overlap

If two LPs claim overlapping ranges:

1. The LP-300 maintainer arbitrates. The default rule: the

chronologically earlier "Final" claim wins; the later claim

relocates to the next free range.

2. The losing LP is amended to point at its new range, and an

"Activation marker" note is added to LP-300 stating "Was

<old range>; moved to <new range> per LP-300 §<section>".

3. Pre-activation (before unix 1766708400), reshuffles are free

because no production wire bytes have shipped. Post-activation,

reshuffles require a network upgrade.

Existing conflicts resolved by LP-300

LP-300 resolves three pre-existing conflicts in the 0xE0..0xFF

band. All three resolutions land via the canonical handoff

recorded in LP-214 §"Wire schemas".

| Conflict | Resolution | Consuming LP must amend? |
|---|---|---|
| LP-208 claimed 0xF0..0xFF (DAGHeader at 0xF0, DAGBody at 0xF1); LP-214 also claimed 0xF0..0xF2 | LP-208 → 0xE0..0xE1; LP-214 keeps 0xF0..0xF2 | Yes — LP-208 §"Schema ID allocation" |
| LP-218 claimed 0xE0..0xEF (rollup envelopes at 0xE0/0xE1/0xE2/0xE3); LP-211 also claimed 0xE2..0xE7 | LP-218 → 0xE8..0xEF; LP-211 keeps 0xE2..0xE7; LP-219 keeps its reuse of 0xE2..0xE7 at rollup tier | Yes — LP-218 §"Wire schemas" |
| LP-218 §"Wire schemas" and LP-219 §"Schema-ID allocation map" both describe the dual-use of 0xE2..0xE7 | LP-211 is the canonical owner of 0xE2..0xE7; LP-219's reuse is namespaced by ShapeKind (TxKind 0x44) and treated as a ShapeKind-level extension, not a TypeKind-level reclamation | Yes — LP-219 §"Schema-ID allocation (no collision)" |

Cooldown for deprecation

When an allocation is marked Deprecated, the slot is NOT immediately

reusable. A one-year cooldown applies before re-allocation, to give

node operators and indexers time to drop the old code paths.

The currently-deprecated rows (LP-078 ECIES 0x9201, AES 0x9210,

ChaCha20-Poly1305 0x9211; LP-3520 stateful ML-DSA 0x0200..0006

and SLH-DSA 0x0200..0007 and Corona 0x0200..000B) entered

deprecation on 2026-05-18 per AUDIT-2026-05-18.md and become

re-allocatable on 2027-05-18.

Cross-referencing pattern

Every consuming LP's "Wire schemas" / "Schema IDs" / "Precompile

slot" section is now informative-only. The canonical form is:


This LP allocates the following schema IDs (registered in LP-300):
- 0xD0 ConsensusVote
- 0xD1 ConsensusProposal
- ...
For the master allocation map see LP-300 §Master Table.

LPs MUST NOT duplicate the master table; they reference it. A

consuming LP that adds a new ID MUST amend LP-300 in the same PR.

Reserved / future ranges

These ranges are deliberately held aside. Allocate only via an

LP-300 amendment.

TypeKind reservations

Precompile reservations

Cross-references — LPs that allocate in this registry

Each consuming LP gets a one-line summary. The full allocation lives

in §Master Table.

| LP | What it allocates | Namespace |
|---|---|---|
| LP-022 | ZAP magic + msg-type byte (Handshake 0x01 through StateSync 0x50) — the underlying wire protocol; the TypeKind discriminator builds on this | TypeKind / framing |
| LP-073 | Pulsar threshold-sig precompile at 0x012204 (raw primitive; LP-218 wraps as P3Q-Pulsar at 0x012205) | Precompile |
| LP-078 | The broad EVM precompile suite: classical curves, AI, DEX (LX Suite), hashing, FHE, ZK, threshold sigs, KZG | Precompile |
| LP-127 | TEE attestation precompile at 0x0300..01 | Precompile |
| LP-131 | VRF precompile at 0x3213 | Precompile |
| LP-181 | Magnetar threshold SLH-DSA precompile at 0x012207 (raw primitive; LP-220 wraps as P3Q-Magnetar at same slot) | Precompile |
| LP-182 | Consensus-wire TypeKinds 0x01..0x0D (QuasarCert through PolicyCert) | TypeKind |
| LP-186 | Chains-VM TypeKinds 0xC0..0xCB (12 VMs) plus their per-VM ShapeKind tables (delegated) | TypeKind + ShapeKind |
| LP-201 | P2P stream-type TypeKinds 0xD0..0xDF (16 message types) | TypeKind |
| LP-208 | DAG mempool TypeKinds 0xE0..0xE1 (DAGHeader, DAGBody) — reclaimed from prior 0xF0/0xF1 claim | TypeKind |
| LP-209 | Mysticeti ordering — consumes LP-208 / LP-201 TypeKinds; allocates no new TypeKinds | (consumes only) |
| LP-210 | Block-STM parallel execution — consumes only; allocates no new TypeKinds | (consumes only) |
| LP-211 | Cross-shard 2PC TypeKinds 0xE2..0xE7 (6 messages) | TypeKind |
| LP-214 | Light-client TypeKinds 0xF0..0xF2 (3 messages) plus ShapeKinds 0x50..0x52 | TypeKind + ShapeKind |
| LP-217 | Cert profile modes — no new TypeKinds; modulates which cert leg verifiers run | (consumes only) |
| LP-218 | Rollup-VM TypeKinds 0xE8..0xEF (shifted from 0xE0..0xE3); P3Q precompile wrapper at 0x012205 | TypeKind + ShapeKind + Precompile |
| LP-219 | Rollup-to-rollup atomic — reuses LP-211 0xE2..0xE7 at the rollup tier (ShapeKind-level extension, TxKind 0x44 inside the LP-218 rollup envelope) | ShapeKind |
| LP-220 | P3Q-Corona and P3Q-Magnetar kinds (0x02, 0x03) on the unified P3Q slot 0x012205 (no separate wrapper slots — earlier draft's 0x012206/0x012207 claim was vacated) | Precompile |
| LP-0011 | Federation registry slots 0x011001 (resolver) and 0x011002 (store) | Precompile |
| LP-0120 | PQ precompile registry 0x012201..0x012208 (canonical PQ slot owner) | Precompile |
| LP-3520 | Lux EVM-style stateful precompile range 0x0200..0001..000D | Precompile |
| LP-221 | STARK-FRI verifier precompile at 0x012220 (Plonky3 PQ-only fork); relocated from 0x012205 on 2026-06-03 per LP-218 §"Slot history: STARK-FRI rename". Crypto-migration tracker numbers (LP-4800 / LP-4820) refer to the same surface for legacy paperwork only. | Precompile |
| LP-4900 | Aurora cert profile — composes Pulsar (0x012204) + Corona (0x012206) | (consumes only) |
| LP-4910 | Polaris cert profile — composes Pulsar (0x012204) + Corona (0x012206) + Magnetar (0x012207) | (consumes only) |
| LP-4930 | X-Wing+ KEM combiner at 0x2222 | Precompile |

Out of scope (Namespace 4 — genesis assetID / chainID)

LP-300 does NOT normalize:

These live in their own LPs because they are content-addressed

(derived from genesis blobs), not statically allocated. A future

LP-301 could collapse them into a sibling registry if a single

source of truth becomes useful; today the per-LP ownership is

correct.

Activation marker

LP-300 itself is Final from genesis (unix 1766708400,

2025-12-25T16:20:00-08:00) because it is a meta-registry, not a wire

change. The first time the consuming LPs (LP-208, LP-211, LP-214,

LP-218, LP-219, LP-220) cross activation in production, LP-300 is

the binding map. Any disagreement between this LP and a consuming LP

is resolved in favour of LP-300; the consuming LP must be amended in

a follow-up PR.

Reference Implementation

References