LPsLux Proposals
Precompiles
LP-4840

Verkle / IPA Commitment Precompile (Family Root)

Draft

Native precompile family root for Verkle trees + IPA (Inner Product Argument) polynomial commitments. Covers Verkle tree proof verification, IPA-based state proofs, and Verkle state-transition primitives. Chain-level state-management consumers (state tree backend, EIP-6800-style state transitions) link here for the underlying primitive.

Category
Core
Created
2026-05-18

Provenance

Family root for the Verkle / IPA commitment primitive, consolidated into the 4xxx unified-crypto range per NUMBER-PLAN-2026-05-18.md (sub-range 4800-4899, ZK / STARK / SNARK family). Supersedes the following legacy slots, which now carry permanent pointer stubs:

  • LP-3550 — Verkle proof verification precompile
  • LP-3661 — BadgerDB + Verkle optimization (storage-layer companion; consumers should reference this primitive plus the chain-level state spec at LP-3701/3702 successors)
  • LP-3701 — Verkle trees for state management
  • LP-3702 — Verkle state transition (EIP-6800)

The 35xx slots are retained as permanent pointers to this LP so external links continue to resolve.

Abstract

Verkle trees (Kuszmaul 2018; Buterin 2021) replace Merkle Patricia Tries with vector-commitment trees whose proofs are constant-size (~1 KB) regardless of state size. The underlying commitment scheme is an Inner Product Argument (IPA — Bünz, Bootle, Boneh, et al. 2018) or KZG (LP-4880) over a Pedersen-style commitment basis (LP-119, luxfi/crypto/commit/pedersen). This LP pins the primitive-level spec for:

  1. IPA commitment / proof / verify — Pedersen-style vector commitments with logarithmic-round halving prover, constant-size proof verifier.
  2. Verkle multi-proof verification — single-call verification of multi-key witnesses against a Verkle root commitment.
  3. Witness / state-diff format — canonical encoding of a Verkle execution witness (accessed keys + values + IPA multi-proof) for stateless validators and cross-chain bridges.

The chain-level state-management consumers of this primitive (C-Chain state tree backend, EIP-6800-style state transitions, light clients, cross-chain bridges) link to this LP for the primitive contract and to their own chain specs (C-Chain identity 1xxx, storage backend LPs in 3xxx for C-Chain Solidity, etc.) for the chain-level integration.

Range placement

Per the chain-letter IA lock (CHAIN-IA-2026-05-18.md) and NUMBER-PLAN-2026-05-18.md §4800-4899, all ZK / SNARK / STARK / commitment-scheme primitives live in 4xxx (sub-range 4800-4899). Verkle / IPA is reserved at slot 4840 in NUMBER-PLAN; this LP fills that reservation as the family-root spec. Chain-level state management built on top of Verkle stays in the consumer chain's range (C-Chain Solidity = 3xxx; primary-network state management is core protocol in 100-999).

Reference implementations

  • IPA library: luxfi/crypto/commit/ipa
  • Pedersen basis: luxfi/crypto/commit/pedersen (LP-119)
  • Verkle tree: luxfi/go-verkle (external import — github.com/luxfi/go-verkle)
  • Storage-layer adapter: luxfi/database (BadgerDB / Pebble backend)
  • KZG alternative: LP-4880 (KZG4844 blob commitments)

Open questions

  • IPA vs KZG default for Verkle state trees (IPA is post-quantum-safer per LP-0099 §PQ defaults; KZG is faster to verify but needs trusted setup — see LP-4880).
  • Per-precompile gas-cost model for IPA multi-proof verification (scales with key count and proof depth).
  • Verkle-aware compaction strategy for the storage backend (formerly documented in LP-3661; lives at luxfi/database adapter spec).
  • Stateless-client witness format finalization (formerly documented in LP-3702; lives in the C-Chain state-transition spec at LP-3xxx).

Copyright and related rights waived via CC0.