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
nullifierderived 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 proofthat the input note is in the tree and yours — proving membership without revealing which leaf.
What the explorer sees
| On the public ledger | Visible? |
|---|---|
| A commitment was added | Yes — but it is an opaque hash |
| A nullifier was spent | Yes — but it links to no address |
| Amount, asset, cost basis | No |
| Who owns which note | No |
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.