ZUL://DOCSPRIVACY LAYER 2 — SETTLED ON SOLANA
INDEX
CHAIN — /docs/chain/state-commitment

State commitment

The SVM has no native state trie — Solana validators never need one. A settling L2 does: withdrawals must be provable on L1 against a compact commitment to the entire account state. ZUL fills that gap with a sparse Merkle tree (SMT) over blake3.

The tree

STATE SMT
leaf key    = account pubkey (32 bytes)
leaf value  = blake3(account)   // lamports, owner, data, flags
node hash   = blake3(left || right)
state_root  = root, included in every block header
  • Sparse: the keyspace is all 2^256 pubkeys; empty subtrees collapse to known default hashes, so only existing accounts cost anything.
  • Incremental: after each block only the accounts touched by that block re-hash, updating log-depth paths instead of rebuilding the tree.
  • Pinned across languages: the Anchor settlement program verifies SMT inclusion proofs with the same blake3 layout, and a cross-test pins the L1 implementation byte-for-byte to the node implementation — the kind of dual-implementation pair that drifts silently if untested.

What the root buys

USEHOW
Withdrawal claimsAn exit proves its L2 balance/burn record exists under a settled root — L1 verifies the Merkle path. See Withdrawals & claims.
Public verifiabilityAnyone replaying DA batches can recompute the root and compare it to what the sequencer settled — the basis of the stage-0 procedural challenge. See Trust model.
Light verificationPer-account state proofs against a 32-byte root, without holding the full account set.
WHY NOT A LATTICE HASH

Solana's newer accumulator-style account hashing was considered and rejected: it produces a commitment but not practical inclusion proofs, and withdrawals live or die on inclusion proofs.

Note the chain has two Merkle trees with different jobs: this blake3 SMT over public account state, and the Poseidon commitment tree inside the shielded pool (Notes & commitments). Different hash functions because different verifiers: blake3 is fast on CPUs, Poseidon is cheap inside zk circuits.