Architecture
Murk has a small set of components. The chain is the source of truth; everything else is a convenience.
The pieces
| Component | Role | Trust |
|---|---|---|
| Solana program | Holds the vault, the Merkle tree of commitments, and the nullifier set. Verifies every ZK proof on-chain and moves funds. | The security anchor. |
| Circuits | The zero-knowledge programs (deposit, transfer, withdraw, swap, consolidate) proven client-side. | Sound given a proper trusted setup. |
| Wallet (browser) | Derives keys, decrypts your notes, builds Merkle paths, and generates proofs locally. Nothing secret leaves it. | You. |
| Relayer | Optionally submits your proof + pays gas, reimbursed by an in-proof fee. Cannot forge a spend or read note contents. | Convenience; non-custodial. |
| Indexer | Serves a public projection of on-chain events (leaves, nullifiers, encrypted blobs) so wallets sync fast. | Cache of on-chain data. |
The flow of a private action
You (browser) Relayer Solana program Indexer
───────────── ─────── ────────────── ───────
select notes + build Merkle path
prove locally (ZK) ──submit──► pay gas + sign ──► verify proof on-chain
encrypt output notes spend nullifiers
append commitments
emit encrypted blobs ──► ingest events
scan + decrypt ◄─────────────────────────────────────────────────────── serve notes
Two-transaction spends
A private spend is delivered in two transactions: the spend itself (which records the proof's binding) and a delivery transaction that posts the encrypted note ciphertexts, verified on-chain against the proof. This keeps note delivery trustless — the ciphertext is recoverable from the chain alone, with no off-chain server required.
What lives where
- On-chain (permanent, public): commitments, nullifiers, encrypted note blobs, the vault balance.
- In your browser (session, private): spend key, decoded notes, viewing key.
- In local storage (device, encrypted): UI preferences, an encrypted activity log, note-classification tags.
The key property: you can rebuild your entire balance from the chain alone. See Self-custody & recovery.