Selective Disclosure

Selective disclosure lets users prove properties about funds without exposing their full transaction graph.

Patterns

  • View key sharing — grant read-only access to an auditor or counterparty for a time-bound window.
  • Negative-set proof — prove coins are not from a disallowed set (sanctioned clusters) without revealing the actual path.
  • Payment receipt — prove "I paid invoice X" by binding a memo hash or invoice id in the proof.

Example: payment receipt (JSON artifact)

{
  "type": "murena.payment_receipt.v1",
  "invoice": "inv_23K9",
  "amount": "10",
  "memo_hash": "0x1a9f...e2",
  "root": "0xabc...123",
  "nullifiers": ["0x0f..", "0xa1.."],
  "proof": "base64:AAAA...",
  "publicSignals": ["0x...", "0x..."]
}

Verify via API

curl -s https://api.murena.so/v1/proofs/verify \
  -H 'Content-Type: application/json' \
  -d @receipt.json

If valid, the verifier returns a receipt with on-chain signature/slot you can attach to invoices.

UX

  • Wallet toggle: Private/Public.
  • "Share proof" → generates an artifact or view link with expiry.
  • Merchant SDK: verify locally, optionally pin a receipt on-chain.