08

V0.5 Testnet · Trial decryption

Finding your notes

Nothing on-chain says which notes are yours — your wallet works it out by itself, from public events. This is how Noid mode shows you a private balance.

On your device

  1. 1Scans every NoteCreated(poolId, commitment, encryptedNote) event.
  2. 2Tries to decrypt each encryptedNote with your encPriv. A failure just means “not mine”.
  3. 3On success, recomputes Poseidon(1, amount, r, yourUserCommitment) and checks it equals the emitted commitment — so a note you can decrypt but don’t own is ignored.
  4. 4Computes the note’s nullifier and checks the NullifierSpent events: spent notes are skipped.
  5. 5What’s left is your unspent note set. Its sum is your private balance.

Encrypted notes are emitted as events rather than kept in contract storage: events are far cheaper, and only wallets ever need to read them.

Privacy with accountability

Menoid is built on the idea that you choose who sees your activity: privacy by default, transparency by choice. In V0.5 the encryption key opens the notes you receive — but a nullifier is made with sk, so proving what you spent would mean handing over spending power. V1 fixes exactly this, with a separate nullifier key (nk) and an outgoing viewing key (ovk): full viewing keys that show everything and spend nothing.

Viewing keys in V1 →