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.

results matching ""

    No results matching ""