Protocol

Shielded pool

The shielded pool is the ZK core of Cowl. It is where your assets stop being public numbers and become private notes that only your keys can read.

How it works

When you shield funds, the deposit becomes a note and a commitment — a hash of that note — is added to a Merkle tree on Robinhood Chain. The tree records that some note exists. It reveals nothing about the amount or the owner.

To spend or trade, you publish three things:

  • A nullifier derived from the note, which marks it spent and blocks double-spends.
  • New commitments for the output notes (your change, the counterparty’s receipt).
  • A ZK proof that the input note is in the tree and yours — proving membership without revealing which leaf.

What the explorer sees

On the public ledgerVisible?
A commitment was addedYes — but it is an opaque hash
A nullifier was spentYes — but it links to no address
Amount, asset, cost basisNo
Who owns which noteNo

Your shielded portfolio

Your balance is the sum of the notes your viewing keycan decrypt. Cost basis, size, and unrealized P&L are computed client-side from those notes. No wallet-watcher can reconstruct your book, because the book never existed in the clear.

Hygiene at the edge

Privacy inside the pool is strong. The one place metadata can leak is the boundary — the moment you shield or unshield. A few habits keep the edge clean:

  • Prefer round, common amounts over an oddly specific figure that fingerprints you.
  • Let time pass between shielding and your first shielded action.
  • Unshield to a fresh address, not the one you deposited from — otherwise you draw the link yourself.
The link you draw yourself
Cowl cannot un-leak an amount you match on both sides of the boundary. If you shield 4,137.22 USDG and unshield 4,137.22 USDG minutes later to your funding wallet, you have connected the two ends for anyone watching. Break the pattern.