Updated April 2026Selective Disclosure

How proof generation works in Kloak

Selective disclosure turns a wallet-held payment receipt into a shareable proof statement without forcing the proof owner to reveal more than the workflow requires.

Receipt ownership

Proof generation is tied to the receipt the wallet actually owns.

>>

The wallet that holds the payer receipt can generate payer-side proofs.

>>

The wallet that holds the receiver receipt can generate receiver-side proofs.

>>

The backend no longer depends on stored payer identity to decide who can create a proof.

Proof types

Different workflows need different statements, so Kloak supports multiple proof shapes.

Proof typeWhat it revealsBest fit
BasicThat the payment existsGeneral compliance checks when exact amount is not needed
AmountThe exact amountWhen the reviewer must see the full total
ThresholdThat the amount met or exceeded a floorMinimum-spend or threshold-style checks
Time-boundThat the payment happened within a chosen rangeReporting periods and timing-bound workflows

Reuse, duplicates, and revocation

Proofs are reusable documents, not one-time spends.

Reusable by design

The same payment can support multiple different valid proof statements over time, such as a basic proof first and an amount or threshold proof later.

Duplicate guard

Kloak blocks only exact duplicate active proofs for the same statement. If that proof is revoked later, the same statement can be generated again.

Stored proof data

Stored proof data is minimized to avoid turning the backend into a copy of hidden payment facts.

>>

Basic proofs do not store hidden exact amount or exact timestamp by default.

>>

Threshold proofs store the threshold statement, not the hidden exact amount.

>>

Time-bound proofs store the disclosed range, not the hidden exact timestamp.

>>

Proof payloads are encrypted at rest.