ZUL://DOCSPRIVACY LAYER 2 — SETTLED ON SOLANA
INDEX
INTRODUCTION — /docs/architecture

Architecture

ZUL is three layers of software: the node (a Rust sequencer that is the chain), the L1 programs on Solana (settlement, bridge vaults, DA log), and the web stack (TypeScript SDK, indexer, explorer, bridge UI).

SYSTEM SHAPE
   wallet + TS SDK        explorer (Next.js)       indexer worker
          \                      |                      /
           v                     v                     v
   +-----------------------------------------------------------+
   | ZUL node (Rust, single sequencer)                          |
   |   JSON-RPC server (Solana RPC subset + WebSocket)          |
   |   mempool -> SVM executor -> block producer                |
   |   account store (redb) + state SMT (blake3)                |
   |   shielded pool builtin (Groth16 verify, Poseidon notes)   |
   |   bridge watcher (L1 deposits)  |  batcher (L1 posting)    |
   +-----------------------------------------------------------+
              |  state roots + DA batches          ^  deposits
              v                                    |
   +-----------------------------------------------------------+
   | Solana L1                                                  |
   |   settlement program  |  bridge vaults  |  DA log          |
   +-----------------------------------------------------------+

The node

The node is a Rust workspace organized by role. Every component below is a workspace member with its own test suite:

COMPONENTROLE
primitivesBlock and genesis types, hashing, configuration.
storeAccounts in a redb key-value store, block storage, the blockhash queue (last 150 hashes), and the state SMT with incremental updates for touched accounts.
executorThe SVM integration: a transaction batch processor wired to the account store, sysvar maintenance, preloaded builtin and BPF programs.
privacyThe shielded pool builtin: instruction parsing, Groth16 verification, Poseidon hashing, the depth-26 commitment tree, the nullifier set, and pool vaults.
rpcHTTP + WebSocket JSON-RPC, a working subset of the Solana RPC surface. See JSON-RPC API.
bridgeThe L1 deposit watcher (deposit events → L2 mint transactions) and the batcher that posts state roots and DA chunks.
nodeThe sequencer binary: config, genesis, the block production loop, the built-in faucet, shutdown.

The L1 programs

Two Anchor programs on Solana receive everything the chain commits to: the settlement program stores batch records and verifies withdrawal claims against posted state roots, and the DA log program is a noop whose instruction data carries zstd-compressed batch chunks. Bridge vault instructions live with settlement. Details in Settlement batches and Data availability.

The web stack

A TypeScript SDK wraps a standard Solana connection pointed at the L2 RPC and adds the bridge and shielded clients. A dedicated indexerwalks blocks into Postgres for the explorer. Because the RPC speaks Solana's protocol, existing Solana tooling works against ZUL largely unchanged.