Verkle / IPA Commitment Precompile (Family Root)
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.
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:
- IPA commitment / proof / verify — Pedersen-style vector commitments with logarithmic-round halving prover, constant-size proof verifier.
- Verkle multi-proof verification — single-call verification of multi-key witnesses against a Verkle root commitment.
- 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/databaseadapter spec). - Stateless-client witness format finalization (formerly documented in LP-3702; lives in the C-Chain state-transition spec at LP-3xxx).
Copyright
Copyright and related rights waived via CC0.